Tutorial de como integrar o contador ZIV da EDP com Tasmota.
Neste tutorial vamos abordar um pouco mais sobre a integração dos nossos contadores inteligentes com o Tasmota.
Desde já começamos por agradecer ao @ReDaLeRt , @nikito7 e ao @PDM por terem aberto o caminho para o desenvolvimento e implementação dos nossos contadores inteligentes com o Tasmota para obtenção de dados. Sem eles não teria sido possível ter tido o sucesso com os nossos contadores inteligentes, como temos hoje.
Obrigado !!!
Este Tutorial é especifico para os contadores ZIV, no entanto o mesmo poder-se-á aplicar a outros tipos de contador.
Em resumo, estes são os passos necessários:
1 - Ter um contador inteligente (ZIV)
2 - Ter instalado chicote na porta HAN (Rj12 cabo)
3 - NodeMCU (esp8266)
4 - Conversor RS485 to TTL
5 - Ligaçõoes do NodeMCU com o Conversor RS485 to TTL
6 - Flashar e configurar Tasmota
Em detalhe:
1- Será necessário ter um contador inteligente da EDP, neste caso vamos fazer o setup para os contadores ZIV:
2 - Instalar no contador um chicote RJ12 na porta HAN:
3 - Ter um NodeMCU (esp8266):
4 - Ter um Coversor RS485 to TTL:
5 - Ligações do NodeMCU com o Conversor RS485 to TTL:
no NodeMCU vamos usar o Hardware Serial Pins
A seguir, vamos ligar os 3.3V, GND, RX(GPIO3) e TX(GPIO1) do esp8266 com o 3.3V, GND, RX e TX do conversor RS485 to TTL:
RX ----- RX
TX ----- TX
GND —GND
3.3V ----3.3V
No conversor vamos ligar ao Rj12 da seguinte forma:
ATENÇÃO À POSIÇÃO DA FICHA
B- ----- B- (pin 3 ficha macho Rj 12)
A+ ----- A+ (pin 5 ficha macho Rj 12)
GND —GND (pin 1 ficha macho Rj 12)
6 - Flashar o ESP8266 com Tasmota:
Iremos utilizar uma .bin pré-compilada com o Tasmota, que nos é fornecida pelo o user @nikito7, que está disponível no seu GitHub:
De seguida, vamos configurar o Tasmota recorrendo ao uso de scripts Smart Meter Interface (SMI).
Este script vai-nos ajudar com o protocolo de comunicação MODBUS entre o Tasmota e o contador. Poderão encontrar informações sobre o SMI aqui:
https://tasmota.github.io/docs/Smart-Meter-Interface/
Seguidamente, passaremos à interface do Tasmota para configurar o mesmo com o script:
O próximo passo será colocar o nosso script e gravar conforme abaixo:
>D
>B
=>sensor53 r
smlj=0
tper=20
>S
if upsecs>25
then
smlj=1
endif
>M 1
+1,3,mN2,1,9600,ZIV,1,15,0104006C,r010400260007,r010400790003,0104007F
1,=hVALORES INSTANTANEOS <hr>
1,010404UUuuxxxx@i0:10,Tensão,V,ZIV_Voltage,16
1,010404xxxxUUuu@i0:10,Corrente,A,ZIV_Current,18
1,=h<br>TOTALIZADORES ENERGIA <hr>
1,01041cUUuuUUuuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@i1:1000,Vazio(1),kWh,ZIV_Energy_Vazio,16
1,01041cxxxxxxxxUUuuUUuuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@i1:1000,Ponta(2),kWh,ZIV_Energy_Ponta,16
1,01041cxxxxxxxxxxxxxxxxUUuuUUuuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@i1:1000,Cheia(3),kWh,ZIV_Energy_Cheia,16
1,01041cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxUUuuUUuu@i1:1000,TOTAL(1+2+3),kWh,ZIV_Energy_TOTAL,16
1,=h<br>POTENCIA <hr>
1,01040AUUuuUUuuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@i2:1,Potência,W,ZIV_Power,16
1,01040AxxxxxxxxxxxxxxxxUUuuxxxxxxxxxxxxxxxxxxxx@i2:1000,Fator Potência,Pf,ZIV_PFactor,17
1,=h<br>FREQUENCIA <hr>
1,01040AUUuuxxxx@i3:10,Frequência,Hz,ZIV_Frequency,16
#
Vamos agora tentar perceber um pouco partes do script:
+1 - Número de contadores neste caso 1
3 - O número do GPIO do RX usado no NodeMCU
mN2 - Tipo de comunicação do contador
9600 - Baudrate de comunicação usada
ZIV - É simplesmente o nome de JsonPerfix que vai aparecer no vosso MQTT
1 - O número do GPIO do TX usado no NodeMCU
15 - É o número de de incrementos em que (n * 100ms) de refresh rate , neste caso 1,5 segundos por pedido
0104006C,r010400260007,r010400790003,0104007F - são os vários pedidos que fazemos ao contador neste caso temos 4 pedidos
Mais abaixo no script é onde vamos descodificar a mensagem que o contador nos vais enviar:
1,010404UUuuxxxx@i0:10,Tensão,V,ZIV_Voltage,16
1,010404xxxxUUuu@i0:10,Corrente,A,ZIV_Current,18
Se quisermos fazer um debug aos logs de pedidos, que fazemos ao contador, podemos ir à consola do Tasmota e enviar o seguinte comando para ativar os logs:
Usar o seguinte comando na consola:
sensor53 d1
De seguida, deveremos visualizar o seguinte:
Como podemos observar, na seguinte imagem, temos um code HEX começado por >
e outro começado por :
- A linha que começa com o símbolo
>
corresponde ao nosso pedido que fazemos ao contador - A linha que começa com o símbolo
:
corresponde à resposta que o contador nos vai enviar
Caso obtenhamos resposta do contador deveremos desativar o log com o comando
sensor53 d0
Atenção! Se não desativarmos os logs, não vamos obter os dados em tempo real no GUI do Tasmota
Caso tudo tenha corrido como descrito, devemos ter o resultado final:
Neste tutorial só estamos a pedir ao contador os dados mais usados. Existem outros tipo de dados que podem ser pedidos ao nosso contador.
Seguem abaixo os vários links de informação usados para este tutorial:
https://tasmota.github.io/docs/Smart-Meter-Interface/
Este tutorial é a parte 1 de 2 partes
1 - Integrar Contadores EDP com Tasmota
2 - Integrar Contadores EDP com Homeassistant