Inversor solar EPEVER UP HI integração via MODBUS

Pessoal,

Fiz a integração do inversor solar Epever UP HI no Home Assistant, via modbus e usando o cabo usb-serial que acompanha o inversor.

Estou conseguindo ler os status que me interessam (protocolo do fabricante é extenso e nem tudo interessa);

Abaixo a modificação no arquivo configuration.yaml

modbus:

  • name: modbus_hub
    type: serial
    port: /dev/ttyACM0
    baudrate: 115200
    bytesize: 8
    method: rtu
    parity: N
    stopbits: 1
    sensors:

    #Utilidade (rede concessionária de energia)

    • unique_id: modbus_hub_Tensão_da_Rede_10_0x3500
      name: “Tensão da Rede”
      unit_of_measurement: V
      slave: 10
      address: 0x3500
      input_type: input
      scale: 0.01
      precision: 2

    • unique_id: modbus_hub_Corrente_da_Rede_10_0x3501
      name: “Corrente da Rede”
      unit_of_measurement: A
      slave: 10
      address: 0x3501
      input_type: input
      scale: 0.01
      precision: 2

    • unique_id: modbus_hub_Potência_da_Rede_10_0x3502
      name: “Potência da Rede”
      unit_of_measurement: W
      slave: 10
      address: 0x3502
      input_type: input
      scale: 0.1
      precision: 0
      data_type: int32
      swap: word

    • unique_id: modbus_hub_Estado_da_Rede_10_0x3511
      name: “Estado da Rede”
      slave: 10
      address: 0x3511
      input_type: input
      #0:Normal, 1:Entrada baixa; 2:Entrada alta, 3: Não conectado

    • unique_id: modbus_hub_Total_da_Rede_10_0x350F
      name: “Total da Rede”
      unit_of_measurement: kWh
      slave: 10
      address: 0x350F
      input_type: input
      scale: 0.01
      precision: 2
      data_type: int32
      swap: word

    #Array Fotovoltaica

    • unique_id: modbus_hub_Tensão_do_PV_10_0x3549
      name: “Tensão do PV”
      unit_of_measurement: V
      slave: 10
      address: 0x3549
      input_type: input
      scale: 0.01
      precision: 2

    • unique_id: modbus_hub_Corrente_do_PV_10_0x354A
      name: “Corrente do PV”
      unit_of_measurement: A
      slave: 10
      address: 0x354A
      input_type: input
      scale: 0.01
      precision: 2

    • unique_id: modbus_hub_Potência_do_PV_10_0x354B
      name: “Potência do PV”
      unit_of_measurement: W
      slave: 10
      address: 0x354B
      input_type: input
      scale: 0.01
      precision: 2
      data_type: int32
      swap: word

    • unique_id: modbus_hub_Total_do_PV_10_0x3557
      name: “Total do PV”
      unit_of_measurement: kWh
      slave: 10
      address: 0x3557
      input_type: input
      scale: 0.01
      precision: 2
      data_type: int32
      swap: word

    #Carga

    • unique_id: modbus_hub_Tensão_da_Carga_10_0x3521
      name: “Tensão da Carga”
      unit_of_measurement: V
      slave: 10
      address: 0x3521
      input_type: input
      scale: 0.01
      precision: 2

    • unique_id: modbus_hub_Corrente_da_Carga_10_0x3522
      name: “Corrente da Carga”
      unit_of_measurement: A
      slave: 10
      address: 0x3522
      input_type: input
      scale: 0.01
      precision: 2

    • unique_id: modbus_hub_Total_da_Carga_10_0x3530
      name: “Total da Carga”
      unit_of_measurement: kWh
      slave: 10
      address: 0x3530
      input_type: input
      scale: 0.01
      precision: 2
      data_type: int32
      swap: word

    #Bateria

    • unique_id: modbus_hub_Tensão_da_Bateria_10_0x3580
      name: “Tensão da Bateria”
      unit_of_measurement: V
      slave: 10
      address: 0x3580
      input_type: input
      scale: 0.01
      precision: 2

    • unique_id: modbus_hub_Corrente_da_Bateria_10_0x3581
      name: “Corrente da Bateria”
      unit_of_measurement: A
      slave: 10
      address: 0x3581
      input_type: input
      scale: 0.01
      precision: 2

    • unique_id: modbus_hub_Capacidade_da_Bateria_10_0x3586
      name: “Capacidade da Bateria”
      unit_of_measurement: “%”
      slave: 10
      address: 0x3586
      input_type: input
      scale: 1

    • unique_id: modbus_hub_Temperatura_da_Bateria_10_0x3512
      name: “Temperatura da Bateria”
      unit_of_measurement: “°C”
      slave: 10
      address: 0x3512
      input_type: input
      scale: 0.01

    • unique_id: modbus_hub_Estado_da_Bateria_10_0x3553
      name: “Estado da Bateria”
      slave: 10
      address: 0x3553
      input_type: input
      #0:Normal, 1:Sobretensão, 2:Subtensão, 3:Desconexão por subtensão, 4:Falha

Fiz conforme a documentacao do fabricante (UP-HI communication protocol V8.5).

Minha dúvida é como fazer aparecer no dashboard, no lugar de um número, o seu significado.

Ex: ESTADO DA BATERIA

  - unique_id: modbus_hub_Estado_da_Bateria_10_0x3553
    name: "Estado da Bateria"
    slave: 10
    address: 0x3553
    input_type: input
    #0:Normal, 1:Sobretensão, 2:Subtensão, 3:Desconexão por subtensão, 4:Falha

Aparece assim no dashboard (Aparece o numero “0” e eu gostaria de transformar esse “0” em “normal”):

image

Alguma dica?

1 Like

O que vc precisa se chama transformação ou mapa de valores, talvez consiga fazer no Grafana. Inclusive eu andei pesquisando poucas pessoas falam sobre o Grafana.

Esse modelo de objeto é uma máquina de estados, no caso vc possuem os estados conhecidos como números para poupar espaço nas transmissões, mas acredito que sem o Grafana também seja possível para fazer.

Vou tentar replicar esse problema com outro objeto, se conseguir resolver eu trago as respostas.

No Grafana, integrado com HA para exibir 2 estados On e Off. Eu apenas coloquei a tranformação como String, e no Value Mappings também troquei os valores de 0 para Off e 1 para On.

Não precisa usar as duas configurações, mas são as que eu conheço.


Obrigado, Rogério.

Vou tentar fazer aqui.

Eu já usei o Grafana com InfluxDb seguindo um tutorial do LNPBR (https://www.youtube.com/watch?v=ICe967Fnt0Y).

Não sabia que dava pra fazer isso que você está sugerindo.