Integração Solax

Tenho tudo a funcionar por Modbus

@Serendib, eu tenho um X1 - 3000 com a pen wifi, ligado a um meter SDM230 (modbus) e tentei integrar o meter com o HA. A integração funciona bem sempre que o inversor está off (durante a noite), pois assim que ele arranca e começa a fazer pedidos ao meter, ambos ficam baralhados (HA e SolaxCloud). Como fizeste a tua integração?

Ora, por uma questão de coerência não misturei os sensores Shelly que já disparavam em kWh com os novos criados a partir da integração que permite conversão W para kWh.

Então criei sensores com templates para pegar nos valores negativos (consumo da rede) e passei para positivos. E ignorei os negativos. Depois com a integração passei de W para kWh.
Na injeção na rede foi só pegar nos positivos e ignorar os negativos e depois com a integração mais uma vez W para kWh.

Com as potências que entram e saem das baterias exatamente a mesma coisa.

Basicamente foi isto

Boa tarde tenho inversor solax x1 3.0kw com pen wi-fi tudo a funcionar com solax cloud, instalei um meter chint ddsu666 com ligação rj45 (rs485) ao inversor de acordo com instruções do fabricante mas dá sempre “meter fault”.
Após pesquisa já precebi que a ligação é modbus, mas faltam alguns paramentros que são programáveis no chint.
modbus -ok
8n1 - ok a seguir é programável e 0-99 ( qual é ??) não tenho essa informação no manual solax
baud3 (9600) está certo?

O meu não é chint é eastron. Mas se puder ajudar diga, posso tentar ver os parâmetros do meu.

Boa tarde, se poder enviar os parametros que aparecem no visor agradecia.
ricardomatias76@gmail.com

Bom dia,
Sempre que reinicio o HA e o inversor está desligado o valor do Solar aparece com o valor total e não o parcial do dia. Se não tivesse reiniciado o HA o valor que aparecia era 4.8 kWh. Alguém com problemas deste género? Obrigado
image

Penso que já respondi no Facebook mas é causado por um erro de programação no template sensor que foi usado, ao não lidar com o estado ‘unavailable’.

Na versão HA de Novembro já se pode utilizar os sensores da Solax directamente e esses não sofrem desse mal.

Eu uso a integração do wills106 para o solax via modbus e não conseguia usar este cartão do reptilex por falta de entidades então desenvolvi templates para calcular as entidades em falta.
Está no forum do wils106 em https://github.com/wills106/homsassistant-solax-modbus/discussions/31
para quem estiver interessado!

Posso dizer que este cartão é excelente.

Para Quem Quiser Segue aqui a minha integração com SolaxCloud

homeassistant:
 
  customize:
    #From grid consumption
    sensor.solax_x1_consumeenergy:
      state_class: total_increasing
      device_class: energy

    #Solar Production Today
    sensor.solax_x1_yieldtoday:
      state_class: total_increasing
      device_class: energy

    #Total Production Since Reset
    sensor.solax_x1_yieldtotal:
      state_class: total_increasing
      device_class: energy

    #grid return
    sensor.solax_x1_feedinenergy:
      state_class: total_increasing
      device_class: energy

    #Current Power Grid Injection
    sensor.solax_x1_feedinpower:
      state_class: measurement
      device_class: power

    #Current Solar Production
    sensor.solax_x1_acpower:
      state_class: measurement
      device_class: power

sensor:
  - platform: rest
    resource: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=<tokenId>&sn=SXXXXXXXX
    method: GET
    name: "Solax X1"
    scan_interval: 15
    json_attributes_path: "$.result"
    json_attributes:
      - yieldtoday
      - yieldtotal
      - acpower
      - uploadTime
      - inverterStatus
      - feedinpower
      - feedinenergy
      - consumeenergy
    value_template: "1" # dummy value, not used; avoids the "State max length is 255 characters" error
  - platform: template
    sensors:
      solax_x1_yieldtoday:
        friendly_name: "Solax X1 yieldtoday"
        value_template: "{{ state_attr('sensor.solax_x1', 'yieldtoday') }}"
        unit_of_measurement: "kWh"

      solax_x1_consumeenergy:
        friendly_name: "Solax X1 consumeenergy"
        value_template: >-
          {%  if (state_attr('sensor.solax_x1', 'consumeenergy')| float | round(2)) > 0 -%}
            {{ (state_attr('sensor.solax_x1', 'consumeenergy')| float | round(2))}}
          {%- endif %}
        availability_template: >-
          {{ state_attr('sensor.solax_x1', 'consumeenergy') not in ['unknown', 'unavailable', '0', '0.0']}}
        unit_of_measurement: "kWh"

      solax_x1_yieldtotal:
        friendly_name: "Solax X1 yieldtotal"
        value_template: >-
          {%  if (state_attr('sensor.solax_x1', 'yieldtotal')| float | round(2)) > 0 -%}
            {{ (state_attr('sensor.solax_x1', 'yieldtotal')| float | round(2))}}
          {%- endif %}
        availability_template: >-
          {{ state_attr('sensor.solax_x1', 'yieldtotal') not in ['unknown', 'unavailable', '0', '0.0']}}
        unit_of_measurement: "kWh"

      solax_x1_acpower:
        friendly_name: "Solax X1 acpower"
        value_template: "{{ state_attr('sensor.solax_x1', 'acpower') }}"
        unit_of_measurement: "Wh"

      solax_x1_feedinenergy:
        friendly_name: "Solax X1 feedinenergy"
        value_template: >-
          {%  if (state_attr('sensor.solax_x1', 'feedinenergy')| float | round(2)) > 0 -%}
            {{ (state_attr('sensor.solax_x1', 'feedinenergy')| float | round(2))}}
          {%- endif %}
        availability_template: >-
          {{ state_attr('sensor.solax_x1', 'feedinenergy') not in ['unknown', 'unavailable', '0', '0.0']}}
        unit_of_measurement: "kWh"

      solax_x1_feedinpower:
        friendly_name: "Solax X1 feedinpower"
        value_template: "{{ state_attr('sensor.solax_x1', 'feedinpower') }}"
        unit_of_measurement: "Wh"

      solax_x1_upload_time:
        friendly_name: "Solax X1 upload time"
        value_template: "{{ state_attr('sensor.solax_x1', 'uploadTime') }}"
      solax_x1_status:
        friendly_name: "Solax X1 status"
        value_template: >
          {% if state_attr('sensor.solax_x1', 'inverterStatus') == '100' %}Wait
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '101' %}Check
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '102' %}Normal
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '103' %}Fault
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '104' %}Permanent Fault
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '105' %}Update
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '106' %}EPS Check
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '107' %}EPS
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '108' %}Self-test
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '109' %}Idle
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '110' %}Standby
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '111' %}Pv Wake Up Bat
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '112' %}Gen Check
          {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '113' %}Gen Run
          {% else %}Offline{% endif %}

Boa tarde a todos,

depois de muito ler e testar consegui finalmente meter a integracao via cloud API a funcionar no HA, tudo funcionar e a retorna valores excepto… o energy dashboard mas o estranho é que o sensor que reporta para o dashboard e que foi escolhido para ser a origem dos valores para solar e bat reportam valores, o energy monitor é que simplesmente não assume.
Fiz muito code scaveging aqui e ali (obrigado @Pedro_Simoes pelo exemplo que serviu para arrancar) mas não consigo perceber o porquê de nao ter valores reportados, se me permitem vou partilhar o codigo que tenho e peço a vossa ajuda a tentar perceber o que posso ter feito errado.

sensor.yaml
#########################################################
#                                                       #
#                  SOLAX CLOUD                          #
#                                                       #
#########################################################
- platform: rest
  resource: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=202107222229290883025811&sn=SWR2DB3TPJ
  method: GET
  name: "Solax X1"
  scan_interval: 180
  json_attributes_path: "$.result"
  json_attributes:
    - yieldtoday
    - yieldtotal
    - acpower
    - feedinenergy
    - feedinpower
    - consumeenergy
    - powerdc1
    - powerdc2
    - batPower
    - soc
    - uploadTime
    - inverterStatus
  value_template: "1" # dummy value, not used; avoids the "State max length is 255 characters" error
- platform: template
  sensors:
    solax_x1_yieldtoday:
      friendly_name: "Solax X1-Hybrid-G3 yieldtoday"
      value_template: "{{ state_attr('sensor.solax_x1', 'yieldtoday') }}"
      unit_of_measurement: "kWh"

    solax_x1_yieldtotal:
      friendly_name: "Solax X1-Hybrid-G3 yieldtotal"
      value_template: >-
        {%  if (state_attr('sensor.solax_x1', 'yieldtotal')| float | round(2)) > 0 -%}
          {{ (state_attr('sensor.solax_x1', 'yieldtotal')| float | round(2))}}
        {%- endif %}
      availability_template: >-
        {{ state_attr('sensor.solax_x1', 'yieldtotal') not in ['unknown', 'unavailable', '0', '0.0']}}
      unit_of_measurement: "kWh"

    solax_x1_ac:
      friendly_name: "Solax X1-Hybrid-G3 acpower"
      unit_of_measurement: "W"
      value_template: "{{ state_attr('sensor.solax_x1', 'acpower') }}"

    solax_x1_feedin:
      friendly_name: "Solax X1-Hybrid-G3 feedinpower"
      unit_of_measurement: "W"
      value_template: "{{ state_attr('sensor.solax_x1', 'feedinpower') }}"

    solax_x1_feedinenergy:
      friendly_name: "Solax X1-Hybrid-G3 feedinenergy"
      value_template: >-
        {%  if (state_attr('sensor.solax_x1', 'feedinenergy')| float | round(2)) > 0 -%}
          {{ (state_attr('sensor.solax_x1', 'feedinenergy')| float | round(2))}}
        {%- endif %}
      availability_template: >-
        {{ state_attr('sensor.solax_x1', 'feedinenergy') not in ['unknown', 'unavailable', '0', '0.0']}}
      unit_of_measurement: "kWh"

    solax_x1_dc1:
      friendly_name: "Solax X1-Hybrid-G3 powerdc1"
      value_template: "{{ state_attr('sensor.solax_x1', 'powerdc1') }}"
      unit_of_measurement: "W"

    solax_x1_dc2:
      friendly_name: "Solax X1-Hybrid-G3 powerdc2"
      value_template: "{{ state_attr('sensor.solax_x1', 'powerdc2') }}"
      unit_of_measurement: "W"

    solax_x1_soc:
      friendly_name: "Solax X1-Hybrid-G3 battery"
      value_template: "{{ state_attr('sensor.solax_x1', 'soc') }}"
      unit_of_measurement: "%"

    #Solar output of Hybrid inverter
    solax_x1_solar:
      friendly_name: "Solax X1-Hybrid-G3 solar"
      value_template: >
        {% if (state_attr('sensor.solax_x1', 'powerdc1') | float) > 0 and 
              (state_attr('sensor.solax_x1', 'powerdc2') | float ) > 0 %}
          {{ (((states('sensor.solax_x1_ac') | float ) - (states('sensor.battery_out') | float) 
          + (states('sensor.battery_in') | float)) | float | abs) }}
        {% else %}
          0
        {% endif %}
      unit_of_measurement: "W"

    #A/C output of Hybrid inverter
    solax_x1_now:
      friendly_name: "Solax X1-Hybrid-G3 now"
      value_template: "{{ (states('sensor.solax_x1_ac') | float ) }}"
      unit_of_measurement: "W"

    solax_x1_batpower:
      friendly_name: "Solax X1-Hybrid-G3 batPower"
      value_template: "{{ state_attr('sensor.solax_x1', 'batPower') }}"
      unit_of_measurement: "W"

    solax_x1_upload_time:
      friendly_name: "Solax X1-Hybrid-G3 upload time"
      value_template: "{{ state_attr('sensor.solax_x1', 'uploadTime') }}"

    solax_x1_status:
      friendly_name: "Solax X1-Hybrid-G3 status"
      value_template: >
        {% if state_attr('sensor.solax_x1', 'inverterStatus') == '100' %}Wait
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '101' %}Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '102' %}Normal
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '103' %}Fault
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '104' %}Permanent Fault
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '105' %}Update
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '106' %}EPS Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '107' %}EPS
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '108' %}Self-test
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '109' %}Idle
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '110' %}Standby
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '111' %}Pv Wake Up Bat
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '112' %}Gen Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '113' %}Gen Run
        {% else %}Offline{% endif %}

    # Calculate power in and out
    battery_in:
      friendly_name: Battery in
      unit_of_measurement: W
      value_template: >
        {% if (states('sensor.solax_x1_batpower') | float ) > 0  %}
          {{ (states('sensor.solax_x1_batpower') | float | abs) }}
        {% else %}
          0
        {% endif %}

    battery_out:
      friendly_name: Battery out
      unit_of_measurement: W
      value_template: >
        {% if (states('sensor.solax_x1_batpower') | float ) < 0  %}
          {{ (states('sensor.solax_x1_batpower') | float | abs) }}
        {% else %}
          0
        {% endif %}

    house_load:
      friendly_name: House Load
      value_template: >
        {% if (states('sensor.solar_now') | float ) == 0  %}
          {{ (states('sensor.solax_x1_now') | float) 
        + (states('sensor.grid_in') | float) - (states('sensor.grid_out') | float) }}
        {% else %}
          {{ (states('sensor.total_ac_now') | float) 
        + (states('sensor.grid_in') | float) - (states('sensor.grid_out') | float) }}
        {% endif %}
      unit_of_measurement: W

    # Grid power in and out
    grid_out:
      friendly_name: Grid out
      unit_of_measurement: W
      value_template: >
        {% if (states('sensor.solax_x1_feedin') | float ) > 0  %}
          {{ (states('sensor.solax_x1_feedin') | float | abs)}}
        {% else %}
          0
        {% endif %}
    grid_in:
      friendly_name: Grid in
      value_template: >
        {% if (states('sensor.solax_x1_feedin') | float ) < 0  %}
          {{ (states('sensor.solax_x1_feedin') | float | abs) }}
        {% else %}
          0
        {% endif %}
      unit_of_measurement: W

# Integrating Export and Import Grid
- platform: integration
  source: sensor.grid_in
  name: total_grid_in
  unit_prefix: k
  round: 2
  method: left
- platform: integration
  source: sensor.grid_out
  name: total_grid_out
  unit_prefix: k
  round: 2
  method: left
- platform: integration
  source: sensor.battery_in
  name: total_battery_in
  unit_prefix: k
  round: 2
  method: left
- platform: integration
  source: sensor.battery_out
  name: total_battery_out
  unit_prefix: k
  round: 2
  method: left
- platform: integration
  source: sensor.house_load
  name: total_house_load
  unit_prefix: k
  round: 2
  method: left
- platform: integration
  source: sensor.solar_now
  name: total_solar
  unit_prefix: k
  round: 2
  method: left
customize.yaml
sensor.total_grid_out:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"
sensor.total_grid_in:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"
sensor.total_battery_out:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"
sensor.total_battery_in:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"
sensor.total_house_load:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"
sensor.total_solar:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"

isto tudo por sua vez reporta o seguinte

Boa tarde a todos,

depois de muito ler e testar consegui finalmente meter a integracao via cloud API a funcionar no HA, tudo funcionar e a retorna valores excepto… o energy dashboard mas o estranho é que o sensor que reporta para o dashboard e que foi escolhido para ser a origem dos valores para solar e bat reportam valores, o energy monitor é que simplesmente não assume.
Fiz muito code scaveging aqui e ali (obrigado @Pedro_Simoes pelo exemplo que serviu para arrancar) mas não consigo perceber o porquê de nao ter valores reportados, se me permitem vou partilhar o codigo que tenho e peço a vossa ajuda a tentar perceber o que posso ter feito errado.

sensor.yaml
#########################################################
#                                                       #
#                  SOLAX CLOUD                          #
#                                                       #
#########################################################
- platform: rest
  resource: https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=XXXXXX&sn=YYYYYYY
  method: GET
  name: "Solax X1"
  scan_interval: 180
  json_attributes_path: "$.result"
  json_attributes:
    - yieldtoday
    - yieldtotal
    - acpower
    - feedinenergy
    - feedinpower
    - consumeenergy
    - powerdc1
    - powerdc2
    - batPower
    - soc
    - uploadTime
    - inverterStatus
  value_template: "1" # dummy value, not used; avoids the "State max length is 255 characters" error
- platform: template
  sensors:
    solax_x1_yieldtoday:
      friendly_name: "Solax X1-Hybrid-G3 yieldtoday"
      value_template: "{{ state_attr('sensor.solax_x1', 'yieldtoday') }}"
      unit_of_measurement: "kWh"

    solax_x1_yieldtotal:
      friendly_name: "Solax X1-Hybrid-G3 yieldtotal"
      value_template: >-
        {%  if (state_attr('sensor.solax_x1', 'yieldtotal')| float | round(2)) > 0 -%}
          {{ (state_attr('sensor.solax_x1', 'yieldtotal')| float | round(2))}}
        {%- endif %}
      availability_template: >-
        {{ state_attr('sensor.solax_x1', 'yieldtotal') not in ['unknown', 'unavailable', '0', '0.0']}}
      unit_of_measurement: "kWh"

    solax_x1_ac:
      friendly_name: "Solax X1-Hybrid-G3 acpower"
      unit_of_measurement: "W"
      value_template: "{{ state_attr('sensor.solax_x1', 'acpower') }}"

    solax_x1_feedin:
      friendly_name: "Solax X1-Hybrid-G3 feedinpower"
      unit_of_measurement: "W"
      value_template: "{{ state_attr('sensor.solax_x1', 'feedinpower') }}"

    solax_x1_feedinenergy:
      friendly_name: "Solax X1-Hybrid-G3 feedinenergy"
      value_template: >-
        {%  if (state_attr('sensor.solax_x1', 'feedinenergy')| float | round(2)) > 0 -%}
          {{ (state_attr('sensor.solax_x1', 'feedinenergy')| float | round(2))}}
        {%- endif %}
      availability_template: >-
        {{ state_attr('sensor.solax_x1', 'feedinenergy') not in ['unknown', 'unavailable', '0', '0.0']}}
      unit_of_measurement: "kWh"

    solax_x1_dc1:
      friendly_name: "Solax X1-Hybrid-G3 powerdc1"
      value_template: "{{ state_attr('sensor.solax_x1', 'powerdc1') }}"
      unit_of_measurement: "W"

    solax_x1_dc2:
      friendly_name: "Solax X1-Hybrid-G3 powerdc2"
      value_template: "{{ state_attr('sensor.solax_x1', 'powerdc2') }}"
      unit_of_measurement: "W"

    solax_x1_soc:
      friendly_name: "Solax X1-Hybrid-G3 battery"
      value_template: "{{ state_attr('sensor.solax_x1', 'soc') }}"
      unit_of_measurement: "%"

    #Solar output of Hybrid inverter
    solax_x1_solar:
      friendly_name: "Solax X1-Hybrid-G3 solar"
      value_template: >
        {% if (state_attr('sensor.solax_x1', 'powerdc1') | float) > 0 and 
              (state_attr('sensor.solax_x1', 'powerdc2') | float ) > 0 %}
          {{ (((states('sensor.solax_x1_ac') | float ) - (states('sensor.battery_out') | float) 
          + (states('sensor.battery_in') | float)) | float | abs) }}
        {% else %}
          0
        {% endif %}
      unit_of_measurement: "W"

    #A/C output of Hybrid inverter
    solax_x1_now:
      friendly_name: "Solax X1-Hybrid-G3 now"
      value_template: "{{ (states('sensor.solax_x1_ac') | float ) }}"
      unit_of_measurement: "W"

    solax_x1_batpower:
      friendly_name: "Solax X1-Hybrid-G3 batPower"
      value_template: "{{ state_attr('sensor.solax_x1', 'batPower') }}"
      unit_of_measurement: "W"

    solax_x1_upload_time:
      friendly_name: "Solax X1-Hybrid-G3 upload time"
      value_template: "{{ state_attr('sensor.solax_x1', 'uploadTime') }}"

    solax_x1_status:
      friendly_name: "Solax X1-Hybrid-G3 status"
      value_template: >
        {% if state_attr('sensor.solax_x1', 'inverterStatus') == '100' %}Wait
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '101' %}Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '102' %}Normal
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '103' %}Fault
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '104' %}Permanent Fault
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '105' %}Update
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '106' %}EPS Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '107' %}EPS
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '108' %}Self-test
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '109' %}Idle
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '110' %}Standby
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '111' %}Pv Wake Up Bat
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '112' %}Gen Check
        {% elif state_attr('sensor.solax_x1', 'inverterStatus') == '113' %}Gen Run
        {% else %}Offline{% endif %}

    # Calculate power in and out
    battery_in:
      friendly_name: Battery in
      unit_of_measurement: W
      value_template: >
        {% if (states('sensor.solax_x1_batpower') | float ) > 0  %}
          {{ (states('sensor.solax_x1_batpower') | float | abs) }}
        {% else %}
          0
        {% endif %}

    battery_out:
      friendly_name: Battery out
      unit_of_measurement: W
      value_template: >
        {% if (states('sensor.solax_x1_batpower') | float ) < 0  %}
          {{ (states('sensor.solax_x1_batpower') | float | abs) }}
        {% else %}
          0
        {% endif %}

    house_load:
      friendly_name: House Load
      value_template: >
        {% if (states('sensor.solar_now') | float ) == 0  %}
          {{ (states('sensor.solax_x1_now') | float) 
        + (states('sensor.grid_in') | float) - (states('sensor.grid_out') | float) }}
        {% else %}
          {{ (states('sensor.total_ac_now') | float) 
        + (states('sensor.grid_in') | float) - (states('sensor.grid_out') | float) }}
        {% endif %}
      unit_of_measurement: W

    # Grid power in and out
    grid_out:
      friendly_name: Grid out
      unit_of_measurement: W
      value_template: >
        {% if (states('sensor.solax_x1_feedin') | float ) > 0  %}
          {{ (states('sensor.solax_x1_feedin') | float | abs)}}
        {% else %}
          0
        {% endif %}
    grid_in:
      friendly_name: Grid in
      value_template: >
        {% if (states('sensor.solax_x1_feedin') | float ) < 0  %}
          {{ (states('sensor.solax_x1_feedin') | float | abs) }}
        {% else %}
          0
        {% endif %}
      unit_of_measurement: W

# Integrating Export and Import Grid
- platform: integration
  source: sensor.grid_in
  name: total_grid_in
  unit_prefix: k
  round: 2
  method: left
- platform: integration
  source: sensor.grid_out
  name: total_grid_out
  unit_prefix: k
  round: 2
  method: left
- platform: integration
  source: sensor.battery_in
  name: total_battery_in
  unit_prefix: k
  round: 2
  method: left
- platform: integration
  source: sensor.battery_out
  name: total_battery_out
  unit_prefix: k
  round: 2
  method: left
- platform: integration
  source: sensor.house_load
  name: total_house_load
  unit_prefix: k
  round: 2
  method: left
- platform: integration
  source: sensor.solar_now
  name: total_solar
  unit_prefix: k
  round: 2
  method: left
customize.yaml
sensor.total_grid_out:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"
sensor.total_grid_in:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"
sensor.total_battery_out:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"
sensor.total_battery_in:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"
sensor.total_house_load:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"
sensor.total_solar:
  last_reset: "2021-10-10T00:00:00+00:00"
  state_class: measurement
  device_class: energy
  value_template: "{{value|round(2)}}"

isto tudo por sua vez reporta o seguinte

pelo quadro da para perceber que tanto as entidades como os sensores estao a reportar valores mas quando vamos ao monitor aparece tudo a 0 e ele nem desenha os valores de producao solar ou energia da bateria.

Bom dia,

O teu inversor é o Solax X1 Hibrid G3?
Porque não usas esta integração https://github.com/wills106/homeassistant-solax-modbus , em que consegues ter valores em tempo real e não de 5 em 5 minutos?

Bom dia @fmmsfz

Esse será o plano assim que tiver accesso via modbus, sei que a porta está em uso no inverter para comunicação entre o mesmo a bateria e sei que existe algures um ponto de comunicação ligado algures mas não tenho acesso a ele, ja contactei a equipa que fez a instalação mas ainda nao tive resposta, até la a opção que tenho infelizmente é esta, obviamente não é perfeita mas sempre é alguma coisa.

Bom dia,
São coisas diferentes… confirma se o teu inversor, na parte de baixo, não tem lá uma
Entrada LAN (não utilizada)

eu tambem pensava que seriam coisas diferentes mas depois de ver o que tenho ligado e consultar o manual fiquei sem perceber porque não tenho acesso


como pode ver a porta LAN está ocupada com 2 cabos (a entrada com o cabo preto e cabo branco)
a ligação à bateria foi confusão minha, é outro cabo que sai de outro lado mas a porta LAN está a ser usada agora… onde é que não consigo descobrir.

afinal descobri, consegui seguir o cabo branco e estava ligado ao quadro geral da casa, no ultimo ponto de saida para a rede a isto

Pois, provavelmente eles utilizaram essa porta para monitorizar o consumo/injeção na rede.
Mas já abriu a tampa branca da frente, para verificar se estão a utilizar efetivamente a entrada LAN? Aquele cabo preto também vai para o mesmo local do branco?

acabei de validar, o preto vai ligar algures ao modulo de bateria enquanto que o branco vai ligar o SDM230 no quadro geral para monitorização completa.
provavelmente terei de ir buscar os dados ao SDM de alguma maneira mas não estou a ver como vou ligar isto a um rj45 e ao router.

Antes de mais, confirma se eles estão a utilizar a porta LAN ou a DRM no inversor, para isso tens de retirar a tampa (com o devido cuidado)


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade