Seguindo a sequência do primeiro post
Integrar Contadores EDP com Tasmota (Parte 1/2)
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 }}"
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
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
nesta flow só vamos precisar de alterar o http request node
na Url vão mudar para o vosso IP
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
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
1 - Integrar Contadores EDP com Tasmota
2 - Integrar Contadores EDP com Homeassistant