Integrar Contador EDP ZIV com Homeassistant (Parte 2/3)

Seguindo a sequência do primeiro post

Integrar Contador EDP ZIV com Tasmota (Parte 1/3)

Vamos agora integrar o Tasmota com o Home Assistant usando uma diferente abordagem

Vamos criar o nosso próprio device usando o MQTT e NodeRed usando a abordagem do nosso amigo @pmfernandes .
Vamos criar tópicos no MQTT onde vamos adicionar toda a informação para personalizar os nossos sensores e retirar a informação pretendida

para este tutorial vamos necessitar de

  • NodeRed
  • Integracao MQTT

Vamos à consola do contador e vamos analisar o exemplo de este código

a partir deste código conseguimos ver o nosso payload de json

"ZIV":{"ZIV_Power":328}

mais tarde iremos retirar a informação de cada MQTT menssagem usando o

"value_template":" {{ value_json.ZIV.ZIV_Power|int }}"
:slight_smile:

Vamos começar por criar um ficheiro com o nome de edp.ziv.yaml
ficheiro este que será posto na pasta /config/www
dentro deste ficheiro vamos colocar o seguinte
Atençao se tiverem topicos e payloads diferentes vão ter de configurar de acordo com o vosso setup

Criamos o nosso device

devices:
  - device: '{"manufacturer": "Encarnacao","identifiers": ["7ae29cde-e902-4342-8e3a-883b6b091234"],"model": "ZIV","name": "Contador EDP ZIV","sw_version": "1.0.0.0"}'

de seguida vamos criar os nosso tópicos, onde iremos personalizar o nosso sensor e ir buscar os dados pretendidos

  - topic: homeassistant/sensor/edp_contador_voltage/config
    payload: '{"name": "EDP ZIV Contador Voltage","state_topic": "tele/edp_ziv_contador/SENSOR","value_template":" {{ value_json.ZIV.ZIV_Power|int }}","unit_of_measurement": "V","unique_id": "b357d05e-30af-4f82-ae31-3ee225746a89","device_class":"voltage","device": ##device##}'
    retain: true

:warning: Atenção como referido acima vao ter de configurar de acordo com os vossos setups, as partes mais importantes que terão de estar de acordo como o vosso setup é

"state_topic": "tele/edp_ziv_contador/SENSOR"
"value_template":" {{ value_json.ZIV.ZIV_Power|int }}"

agora é fazer o codigo para todos os sensores que queremos integrar no HA
no final quando tudo estiver concluído, teremos o seguinte código:

devices:
  - device: '{"manufacturer": "Encarnacao","identifiers": ["7ae29cde-e902-4e72-8e3a-883b6b091234"],"model": "ZIV","name": "Contador EDP ZIV","sw_version": "1.0.0.0"}'
    topics:
      - topic: homeassistant/sensor/edp_contador_voltage/config
        payload: '{"name": "EDP ZIV Contador Voltage","state_topic": "tele/edp_ziv_contador/SENSOR","value_template":" {{ value_json.ZIV.ZIV_Voltage|int }}","unit_of_measurement": "V","unique_id": "b357d05e-30af-4f82-ae31-3ee225746a89","device_class":"voltage","device": ##device##}'
        retain: true
        
      - topic: homeassistant/sensor/edp_contador_current/config
        payload: '{"name": "EDP ZIV Contador Amps","state_topic": "tele/edp_ziv_contador/SENSOR","value_template":" {{ value_json.ZIV.ZIV_Current|float }}","unit_of_measurement": "A","unique_id": "b357d05e-30af-4f82-ae31-3ee225746132","device_class":"current","device": ##device##}'
        retain: true

      - topic: homeassistant/sensor/edp_contador_power_factor/config
        payload: '{"name": "EDP ZIV Contador Power_Factor","state_topic": "tele/edp_ziv_contador/SENSOR","value_template":" {{ value_json.ZIV.ZIV_PFactor|float }}","unit_of_measurement": "Pf","unique_id": "b357d05e-323f-4f82-ae31-3ee225746132","device_class":"power_factor","device": ##device##}'
        retain: true
        
      - topic: homeassistant/sensor/edp_contador_active_power/config
        payload: '{"name": "EDP ZIV Contador Watts","state_topic": "tele/edp_ziv_contador/SENSOR","value_template":" {{ value_json.ZIV.ZIV_Power|int }}","unit_of_measurement": "W","unique_id": "b334d05e-323f-4f82-ae31-3ee225746132","device_class":"power","device": ##device##}'
        retain: true

      - topic: homeassistant/sensor/edp_contador_frequency/config
        payload: '{"name": "EDP ZIV Contador Frequency","state_topic": "tele/edp_ziv_contador/SENSOR","value_template":" {{ value_json.ZIV.ZIV_Frequency|float }}","unit_of_measurement": "Hz","icon":"mdi:pulse","unique_id": "b334d05e-323f-4f82-ae31-3ee223446132","device": ##device##}'
        retain: true

      - topic: homeassistant/sensor/edp_contador_energia_vazio/config
        payload: '{"name": "EDP ZIV Contador Vazio","state_topic": "tele/edp_ziv_contador/SENSOR","value_template":" {{ value_json.ZIV.ZIV_Energy_Vazio|int }}","unit_of_measurement": "kWh","icon":"mdi:transmission-tower","unique_id": "b334d05e-323f-4f82-ae31-3ee223434132","device": ##device##}'
        retain: true
        
      - topic: homeassistant/sensor/edp_contador_energia_ponta/config
        payload: '{"name": "EDP ZIV Contador Ponta","state_topic": "tele/edp_ziv_contador/SENSOR","value_template":" {{ value_json.ZIV.ZIV_Energy_Ponta|int }}","unit_of_measurement": "kWh","icon":"mdi:transmission-tower","unique_id": "b334d05e-323f-4f82-ae31-3e3453446132","device": ##device##}'
        retain: true
        
      - topic: homeassistant/sensor/edp_contador_energia_cheia/config
        payload: '{"name": "EDP ZIV Contador Cheia","state_topic": "tele/edp_ziv_contador/SENSOR","value_template":" {{ value_json.ZIV.ZIV_Energy_Cheia|int }}","unit_of_measurement": "kWh","icon":"mdi:transmission-tower","unique_id": "b334d05e-323f-4f82-ae22-3e3453446132","device": ##device##}'
        retain: true 


      - topic: homeassistant/sensor/edp_contador_energia_total/config
        payload: '{"name": "EDP ZIV Contador Total","state_topic": "tele/edp_ziv_contador/SENSOR","value_template":" {{ value_json.ZIV.ZIV_Energy_TOTAL|int }}","unit_of_measurement": "kWh","icon":"mdi:transmission-tower","unique_id": "b334d05e-323f-4f82-ae31-3e3451116132","device": ##device##}'
        retain: true

de seguida vamos adicionar o seguinte no configuration.yaml para nos permiter aceder à localização do ficheiro criado

homeassistant:
  allowlist_external_dirs:
    - /config/www

vamos agora preparar a nossa flow no NodeRed a qual nos vai enviar o código criado para nos criar o device com os sensores:

[{"id":"e4d3168d.32cc48","type":"yaml","z":"588bf003.f0a66","property":"payload","name":"","x":730,"y":1260,"wires":[["debd4fe0.ed1c2"]]},{"id":"eac49781.60a6e8","type":"change","z":"588bf003.f0a66","name":"Prepare Message to Publish","rules":[{"t":"set","p":"topic","pt":"msg","to":"payload.topic","tot":"msg"},{"t":"set","p":"retain","pt":"msg","to":"payload.retain","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"payload.payload","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"##device##","fromt":"str","to":"deviceInformation","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":1340,"wires":[["fd8efc62.36f71"]]},{"id":"16852818.c21ca8","type":"inject","z":"588bf003.f0a66","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":270,"y":1260,"wires":[["f9faa267.55683"]]},{"id":"a4efe830.f2f6d8","type":"splitter","z":"588bf003.f0a66","name":"Topics | Splitter","property":"payload.topics","x":560,"y":1340,"wires":[["eac49781.60a6e8"]]},{"id":"355f7b1a.fd2bc4","type":"change","z":"588bf003.f0a66","name":"Save Device Information","rules":[{"t":"set","p":"deviceInformation","pt":"msg","to":"payload.device","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":1340,"wires":[["a4efe830.f2f6d8"]]},{"id":"debd4fe0.ed1c2","type":"splitter","z":"588bf003.f0a66","name":"Devices | Splitter","property":"payload.devices","x":910,"y":1260,"wires":[["355f7b1a.fd2bc4"]]},{"id":"fd8efc62.36f71","type":"mqtt out","z":"588bf003.f0a66","name":"","topic":"","qos":"","retain":"","broker":"afc49ed5.67b27","x":1020,"y":1340,"wires":[]},{"id":"f9faa267.55683","type":"http request","z":"588bf003.f0a66","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.1.100:8123/local/edp_ziv.yaml","tls":"","persist":false,"proxy":"","authType":"","x":560,"y":1260,"wires":[["e4d3168d.32cc48"]]},{"id":"afc49ed5.67b27","type":"mqtt-broker","name":"","broker":"192.168.1.100","port":"1883","tls":"","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

vão precisar de instalar a node splitter node-red-contrib-splitter

1
nesta flow só vamos precisar de alterar o http request node
1

na Url vão mudar para o vosso IP
:warning: Atencão para quem usa duckdns vao ter de por a url com https

vamos fazer um deploy para actualizar as mudanças no NR

e vamos clicar no inject node para enviar a informação
1

vamos agora às integrações e na integracao MQTT ver se tudo correu bem, se sim já devemos ter lá o nosso próprio device

Este tutorial é a parte 2 de 3 partes

1 - Integrar Contador EDP ZIV com Tasmota
2 - Integrar Contador EDP ZIV com Homeassistant
3 - Apresentação gráfica de dados no lovelace (to do)

3 Likes

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


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