Integrar contadores inteligentes da EDP em Home Assistant

Inicialmente era 11. Usa a ultima. Ou o tiago enganou-se

Só para o mqtt.
…Power_P1,17 – imediato, 1 decimal
…Power_P1,1 – teleperiod, 1 decimal

teleperiod 300s
decimal + 16 = publicar imediatamente

Originalmente os ZiV nao tem 5V, logo a edp teve de inventar, suponho.

Qual seria a vantagem de ter algum código específico só para os ZIV…

No tasmota, site, há meters que precisam inicialmente baudrate 300, para acordarem

Provavelmente não.
E o meu pouco mais tem

#define SML_MAX_VARS 40
#define SML_REPLACE_VARS
#define USE_SCRIPT_GLOBVARS

hxxps://github.com/nikito7/HA_EDP_Box_Trifasico/blob/master/dev/tasmota_920_b1.zip

#define SML_MAX_VARS 40
#define SML_REPLACE_VARS
#define USE_SCRIPT_GLOBVARS
#define USE_SCRIPT_SUB_COMMAND
#define USE_SML_SCRIPT_CMD

:+1: Vou testar , estou interessado em conseguir decoding de mais de 10 registos seguidos, no sentido de reduzir o nº de pedidos no polling, se for possivel para 2 e por consequencia o tempo de actualização, sem estar a mexer muito nos 5 seg. O wemos tem estado a pedir em 3seg. e com 5 pedidos, estou com cerca de 15seg de pool.
O caso mais desfaforavel seriam 30 registos (0x000B ~ 0x0028 ) o outro conjunto teria 25 (0x006C ~ 0x0084 )
Nas gamas de registos que pretendo não está a responder ao nº de registos que solictito, ou há alguma limitação algures , ou estou a fazer alguma coisa mal, acho que não, se no exemplo vires algo mal p.e.f. corrige-me .
ex: para 30 registos na gama (0x000B ~ 0x0028 )
+1,14,m,1,9600,EB,5,30,r0104000B001E
[r raw][add01] [type04] [registo inicial 000B] [nº de registos 001E(30 em hex)]

Se der erro de checksum, invalida tudo.

E provavelmente os registos tem de existir nessa sequência.

Não compensa com o número de xxxxx que vais usar nos decoders.

E… na realidade so interessa o 20 (2 segundos)

Isso está em loop/serie. Um trama de cada vez infinitamente.

Ao pedir 30 registos, provavelmente massacras mais a edpbox

edit:

a implementação do modbus ainda não é uniforme nos contadores.

O tiago teve de inventar para obter o powerfactor (salvoerro)

No meu sagemcom tem funcionado tudo como esperado

edit:

E o protocolo mudou de 00 para 01. Pdf 2020.

Mas não afecta os registers antigos. Pdf 2017.

Sem updates de firmware nada muda nos contadores.

edit:

A sml_var so limita o número de decoders

Os registos existem na sequencia, pelo menos ordenei tudo num xls e parece que está em sequencia.
Testando com simulador de modbus em vez do contador , recebo n registos sem problemas, de facto deve ser qualquer coisa no contador a limitar o nº , ou como pelo meio há registo com diversos formatos (single, unsigned , double, hour, array…etc) dá raia.
.
o powerfactor está em
Instantaneous Values 123 0x007B Instantaneous Power factor {3,{1.0.13.7.0.255},2} Long unsigned - -3

O teu firm , não dá por OTA, vou ter de ir desmontar a “cena” toda , isto já funciona razoavel é mesmo só paranoia de optimizar e para testar o “long” decoding.

Os meus tem todos menos de 500kB

Mas a primeira vez so por usb

Vês o free space


Edit:

Não dá uso aos 4MB

Removi quase tudo para ser possível OTA

Já foi via USB tasmotizer, resultado recebe o pedido mas tb falha ao 11º decoding

16:25:52 MQT: stat/edp_box2/RESULT = {"Time":"2020-12-28T16:25:52","SML":{"CMD":"dump: 1"}}
16:25:56 : 01 04 1e 09 32 00 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
16:25:57 : 00 00 00 aa 17 
+1,14,m,1,9600,EB,5,70,r0104006C000B
1,01041eUUuuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@i0:1,Teste,T1,Test,17

Isso só vai fazer decode do primeiro

Não precisas de qualquer x antes do @

Não sei se isso lida bem com break lines.
aa 17 checksum?

Será tudo UUuu?

Tens de fazer as 11 linhas

UUuu
xxxx UUuu
xxxx xxxx UUuu

b) edit

Isso esta a devolver 15 UUuu
Também é so zeros. Sem info.

c) edit

1e = byte count. Decimal 30. Bate certo

Se pedir 10 registos funciona bem o decode (não ligues aos textos nem aos nomes não tem a haver com o 1º registo que é a tensão.)
Sabes com certeza que o nº de “xxx” tem de coincidir com o tipo de registos

  • Long unsigned (tenho 7 no pedido de 10 ou 11 registos )- xxxx se quiseres ignorar ou UUuu para descodificar
  • Double long unsigned (3 no pedido de 10 e 4 no pedido de 11 registo ) - xxxxxxxx …
    … e por ai fora
+1,14,m,1,9600,EB,5,70,r0104006C000A 
1,01041aUUuuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@i0:1,Potênciaativa,W1,Power_P1,17

Consola:

17:30:06 : 01 04 1a 09 0a 00 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 74 33 

Ou algo muito simples está a escapar-me ou entao é uma limitação do decode, já procurei por limitação mas nao encontro nada

É so estética. O tasmota ignora automaticamente.

Precisas de um decoder por register

1,01041aUUuu@i0:1,P1,W1,P1,17 1,01041axxxxUUuu@i0:1,P2,W2,P2,17 1,01041axxxxxxxxUUuu@i0:1,P3,W3,P3,17

Se houver um register “UUuuUUuu” baralha logo as contas!

Volto a dizer nesses zeros todos da resposta, nao tens aí nada. Se existe. O contador tem limite e apenas te dá ZERO!

Sagemcom

19:09:47 : 01 04 1a 09 0d 00 06 08 ef 00 1c 08 d9 00 4d 00 71 00 00 00 6f 00 00 00 00 00 00 01 92 ea 39 
19:09:48 : 01 04 1a 09 0e 00 06 08 ef 00 1c 08 d9 00 4d 00 71 00 00 00 6f 00 00 00 
19:09:48 : 00 00 00 01 92 15 72 
19:09:49 : 01 04 1a 09 10 00 06 08 f1 00 1c 08 db 00 4d 00 71 00 00 00 70 00 00 00 00 00 
19:09:49 : 00 01 93 04 15 
19:09:50 : 01 04 1a 09 11 00 07 08 f3 00 1c 08 dd 00 4d 00 71 00 00 00 70 00 00 00 00 00 00 01 94 1c f1 
19:09:51 : 01 04 1a 09 12 00 06 08 f2 00 1c 08 dd 00 4d 00 71 00 00 00 70 00 00 00 00 
19:09:51 : 00 00 01 94 3e f7 
19:09:52 : 01 04 1a 09 11 00 06 08 f3 00 1c 08 dc 00 4d 00 71 00 00 00 6f 00 00 00 00 00 
19:09:52 : 00 01 94 0c cd 
19:09:53 : 01 04 1a 09 11 00 06 08 f2 00 1c 08 db 00 4d 00 71 00 00 00 6e 00 00 00 00 
19:09:53 : 00 00 01 93 e2 7f 

Creio que dá zeros pk o me contador é monofasico e a gama de registos que estou a pedir apanha valores de trifasico. A ideia era com um pedido ir do 006C até pelo menos ate ao 007F.
Tudo isto é só mesmo por curiosidade e gosto na descoberta , tb seria para tentar minimizar os pedidos e reduzir o pool, quanto menos pedidos , mais curto é o poll.

image

tenho caso no mesmo pedido ter 3 UU´s , descodifico assim e está a funcionar, lá está até 10 registo parece não haver problema, só no 11º é que encrava e não dá nada., já testei em varios ranges de registos.

1,01040cUUuuUUuuxxxxxxxxxxxxxxxxxxxx@i0:1000,Vazio (1),kWh,Energy_P1_R1,17
1,01040cxxxxxxxxUUuuUUuuxxxxxxxxxxxx@i0:1000,Ponta (2),kWh,Energy_P1_R2,17
1,01040cxxxxxxxxxxxxxxxxUUuuUUuuxxxx@i0:1000,Cheia (3),kWh,Energy_P1_R3,17

Se tens a resposta correta. É bug do tasmota…

Outro assunto

Consegues obter o 7B diretamente?

O tiago recorre ao 7A para obter o 7B.

No sagem consigo obter o 7B diretamente

Ok, há um limite… no decoder

É o máximo que consigo

+1,14,m,1,9600,EB,5,15,r010400770009

1,01041axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxUUuu@i0:10,freq test,Hz,test,1

O 7B nao tentei obter individualmente , como está perto de valores que quero obter e “cabe” nos 10 registos que o decoder consegue lidar, não vejo vantagem em obter individualmente, só iria criar mais um pedido no loop.
image

Tentei com 10 , como descodificou o 1º , assumi que descodificava os outros , mas não tentei descodificar o 10º

+1,14,m,1,9600,EB,5,70,r0104006C000A

1,01041aUUuuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@i0:1,test,T,Test,17

Para o que quero, estou a fazer com 4 pedidos a 2,5 seg, se calhar ainda tiro a tarifa

image

tive a medir is os ZIV tem os 5V

(Nota: vai com CC para @nikito7 @ReDaLeRt que podem dar tb alguma dica e respostas.
O @codedmind sei que tb anda ás voltas com com o EMI da ZIV)

Isso não chega , depois os 5VDC, para este tutorial nem fazem falta para nada.

Com certeza já testaste o seguinte :

  • o “esquema” em bancada, para ter certeza que os pedidos saiem correctos no RS485 , vais precisar outro conversor 485 e FTDI para ligar a um PC. instals o Hterm ,ou melhor, um simulador de modbus para emular o contador)
    Tenho um esquema ai para cima Integrar contadores inteligentes da EDP em Home Assistant e tambem muita coisa no discord que pode ser usado para ver o que se passa no 485.
  • As varias combinacoes de ligação dos “A” e “B”

Algumas ideias/duvidas e possiveis testes a realizar, estes testes acredito que possam ser feitos com PC + conversor USB>485 + soft por ex. hterm:

  • O endereço modbus estará como é referido na doc.tec. da EDP ou seja #1. Teste tentar fazer um pedido broadcast , salvo erro é feito ao endereço #0
  • Estarão as comunicações do EMI com outro baudrate por ex 19200 em vez dos 9600
  • Estarão as comunicações do EMI com setting diferente 8N1 ?

O broadcast só serve para mudar o ID. Não se obtém resposta. Iria criar colisao em múltiplos devices.


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


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