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.
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
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)