Integrar contadores inteligentes da EDP em Home Assistant

Não sei se é “EDP BOX”, estou a usar um ELFIN EW11, o nome EDP BOX veio das instruções que segui e usei o mesmo nome. De qualquer forma as configurações estão coerentes com o documento da especificação do protocolo da e-redes.

O pymodbus não suporta 32bits count 1. 4 bytes de uma só vez.

Obrigado.
Vou tentar seguir isto tentar correr dentro do docker container, não estou muito familiarizado com isto… se conseguir algum resultado informo.
Mais uma vez, obrigado pela ajuda

Podes tentar mas não compensa.

Esp8266 + rs485

Não me vou aventurar por agora. Isso ainda não esta ao meu alcance, não tenho know-how para me aventurar ainda e começar do zero com outra integração em tasmota.
Instalar outra versão Modbus no HA, parece que isso substitui componentes standard to modbus no homeassistant e imagino que iria ter problemas em actualizações ou não saberia resolver problemas que possam surgir.

Como ainda não tenho geração fotovoltaica e só tenho uma fase com tarifa simples, por agora vou usar os sensores que consigo obter no ELFIN e para a potencia activa/consumo momentanio vou usar uma formula num helper com template. Deixo o template para quem tiver com precisar e não se quiser dar ao trabalho:

{% set tensao = states(‘sensor.edp_box_tensao’) | float %}
{% set corrente = states(‘sensor.edp_box_corrente’) | float %}
{% set fator_potencia = states(‘sensor.edp_box_fator_de_potencia’) | float %}
{% set consumo = tensao * corrente * fator_potencia %}
{{ consumo }}

Aparentemente os valores parecem certos, mas não sei se a formula esta correta.

Bom dia,

Estou a usar o dispositivo feito pelo Tiago freire, e de há uns meses para cá deixou de conseguir ir buscar os valores da tensão, corrente, potência activa, entre outros . Mas consegue ler os totalizadores de consumo.

Contador: Landis GYR ZCXe110CRUOL3D2.03 S3 (PLC)

Alguém sabe porque poderá ter acontecido isto e uma possível solução?

Script no dispositivo:

>D 32
pin=0
pout=0
pi_d=0
po_d=0
hr=0
p:pi_m=0
p:po_m=0

;#after sensors init
>BS
smlj=0
tper=30
=>sensor53 r

;#every second
>S
if upsecs>20
and upsecs<30
{
smlj=1
tper=10
}

;#meter definition
>M 1
+1,3,m,1,9300,EB,1,8,r010400010001,r0104006C0007,r010400730007,r0104007A0006,r010400260003,r010400160006,r0104000B0004,r010400840003

1,=hClock
; 01
1,01040CUUuu@i0:1,Year,,Year,0
1,01040Cxxxxuu@i0:1,Month,,Month,0
1,01040Cxxxxxxuu@i0:1,Day,,Day,0
1,01040Cxxxxxxxxxxuu@i0:1,Clock,h,CH,0
1,01040Cxxxxxxxxxxxxuu@i0:1,Clock,m,CM,0
1,01040Cxxxxxxxxxxxxxxuu@i0:1,Clock,s,CS,0

1,=h<hr> Overview
; 6C
1,01040EUUuu@i1:10,Voltage L1,V,Voltage_P1,1
1,01040ExxxxUUuu@i1:10,Current L1,A,Current_P1,1
; 79
1,01041cx8x8x8UUuuUUuu@i2:1,Active Power Import,W,Power_P1,0
; 7A
1,01040eUUuuUUuu@i3:1,Active Power Export,W,Power_Export_P1,0
; 7B
1,01040exxxxxxxxUUuu@i3:1000,Power Factor,pf,PFactor_P1,3
; 7F
1,01040exxxxxxxxxxxxxxxxxxxxxxxxUUuu@i3:10,Frequency_P1,Hz,F,1


1,=h<hr>Energy
; 26
1,01040CUUuuUUuu@i4:1000,T1 Vazio (1),kWh,Energy_P1_R1,1
1,01040CxxxxxxxxUUuuUUuu@i4:1000,T2 Ponta (2),kWh,Energy_P1_R2,1
1,01040CxxxxxxxxxxxxxxxxUUuuUUuu@i4:1000,T3 Cheia (3),kWh,Energy_P1_R3,1
; 16
1,010418UUuuUUuu@i5:1000,Import,kWh,Energy_Imported_P1,3
1,010418xxxxxxxxUUuuUUuu@i5:1000,Export,kWh,Energy_Exported_P1,3

1,=h<hr>

; 0B

1,01040euu@i6:1,Tariff ,,Tariff_P1,0
1,01040exxUUuuUUuu@i6:1000,Contract T1,kVA,Tariff_P1_R1,2
1,01040exxxxxxxxxxUUuuUUuu@i6:1000,Contract T2,kVA,Tariff_P1_R2,2
1,01040exxxxxxxxxxxxxxxxxxUUuuUUuu@i6:1000,Contract T3,kVA,Tariff_P1_R3,2

1,=h<hr>

; 84

1,01040auu@i7:1,DCP,,DCP,0
1,01040axxUUuuUUuu@i7:1,DCP Q,,Q,0
1,01040axxxxxxxxxxUUuuUUuu@i7:100,DCP K,,K,1


#

+1,3,m,1,9300,EB,1,8,r010400010001,r0104006C0007,r010400730007,r0104007A0006,r010400260003,r010400160006,r0104000B0004,r010400840003

Estes pedidos são trifásicos, não funciona em todos os monofásicos


+1,3,mN1,1,9600,EB1,1,15,r010400010001,r0104006C0002,r010400160002,r010400260003,r010400790003,r0104007F0001,r0104000B0007,r01440601

; r01440601 Imp+Exp
; r01440301 Imp

1,=h<br>

; 01

1,01040Cx4xxuu@i0:1,Clock ,h,CH,0
1,01040Cx4xxxxuu@i0:1,Clock ,m,CM,0
1,01040Cx4xxxxxxuu@i0:1,Clock ,s,CS,0

1,=h<br>

; 6C

1,010404UUuu@i1:10,Voltage L1 ,V,VL1,1
1,010404xxxxUUuu@i1:10,Current L1 ,A,CL1,1

1,=h<br>

; 16

1,010408UUuuUUuu@i2:1000,%TE% Total Import ,kWh,TEI,3
1,010408x4UUuuUUuu@i2:1000,%TE% Total Export ,kWh,TEE,3

1,=h<br>

; 26

1,01040CUUuuUUuu@i3:1000,%TE% T1 Vazio ,kWh,TET1,3
1,01040Cx4UUuuUUuu@i3:1000,%TE% T2 Ponta ,kWh,TET2,3
1,01040Cx8UUuuUUuu@i3:1000,%TE% T3 Cheias ,kWh,TET3,3

1,=h<br>

; 79

1,01040aUUuuUUuu@i4:1,%AP% Import ,W,API,0
1,01040ax4UUuuUUuu@i4:1,%AP% Export ,W,APE,0
1,01040ax8UUuu@i4:1000,%PF% ,φ,PF,3

; 7F

1,010402UUuu@i5:10,Frequency ,Hz,FR,1

1,=h<br>

; 0B

1,01041Auu@i6:1,Tarifa,,Tariff,0
1,01041AxxUUuuUUuu@i6:1000,CT1,kVA,CT1,2
1,01041Ax12xxUUuuUUuu@i6:1000,CT4,kVA,CT4,2

1,=h<br>

; lp

; 01441d Imp+Exp
; 014411 Imp

1,01441dUUuu@i7:1,LP Year,,LP1_Y,0
1,01441dxxxxuu@i7:1,LP Month,,LP1_M,0
1,01441dxxxxxxuu@i7:1,LP Day,,LP1_D,0
1,01441dx4xxuu@i7:1,LP Hour,h,LP1_HH,0
1,01441dx4xxxxuu@i7:1,LP Minute,m,LP1_MM,0
;
1,01441dx8x4xxUUuuUUuu@i7:1000,LP Import Inc,kWh,LP3_IMP,3
1,01441dx16xxUUuuUUuu@i7:1000,LP 4,kWh,LP4,3
1,01441dx16x4xxUUuuUUuu@i7:1000,LP 5,kWh,LP5,3
1,01441dx16x8xxUUuuUUuu@i7:1000,LP Export Inc,kWh,LP6_EXP,3

#

Boas!

Andei algum tempo a martelar a minha integração do Elfin com o HA, e finalmente consegui uma configuração que funciona.

Estes erros apareceram depois de uma breaking change que foi introduzina há algumas releses atrás (no modbus), e pelo que tenho visto em vários foruns, tem afetado muita gente. Este erro manifestava-se por não poder definir a propriedade “count” quando se usavam tipos uint

Aqui segue a minha configuração.

Espero que ajude

Obrigado Nikito! Usei este script e funcionou às mil maravilhas!

Agora estou a tentar resolver um problema com reconnects de wifi… Está constantemente a reconectar ao wifi, centenas de vezes ao dia.

Se tiveres um router com band steering pode ser disso.

Ou fraco sinal.

Boa noite a todos.

Provavelmente por ser um nabo, estou a ter problemas a tentar integrar o HAN Module com o Home Assistant OS, para conseguir ver os dados referentes aos sensores dele via MQTT. Ele está bem configurado, o setup está bem feito, consigo que o meu MQTT broker vejas as messages que ele está a enviar (comprovado com o MQTT Explorer), mas agora nao estou a conseguir finalizar a parte de declarar as entities dentro do HA via configuration.yaml (se é que é lá que o devo fazer).

O MQTT broker que tenho é o Mosquitto, com o Addon oficial que se pode instalar diretamente no Home Assistant, e ao acrescentar os conteúdos que vejo nas instruçoes do git, tenho o seguint erro:

Alguém me consegue dar alguns pointers pf? É possível que isto já tenha sido abordado e respondido por aqui, mas nao consegui encontrar.

Obrigado!

Integração tasmota …

Desde já obrigado pela partilha da informação sobre os controladores de leitura da porta HAN dos SmartMeters da e-redes.
Após algum tempo a tentar perceber como “montar” um ESP/HAN consegui colocar a funcionar segundo os principios do tutorial do Tiago.
Consegui colocar a funcionar o script trifásico “basico” do nikito7 do tutorial do Tiago ao Janz B2801 GPRS 2017 com modem GSM ligado.
No entanto, resolvi testar o teu script mais avançado (pois o primeiro não tem energia exportada) e após colocar novos firmares noutro ESP8266 wemos mini D1, não consegui comunicar com o Janz. Mais tarde, percebi que o tutorial do Tiago no esquema de ligações usa softserial. Como tinha tentado também já o script avancado “EB3” do nikito7, reajustei o script para ir buscar as ligações RX/TX aos pinos do softserial. Consegui comunicar com o Janz, mas enquanto que com o script trifásico basico o ESP funcionou durante 4 dias sem problema (ESP8266 → TX/RX softserial), no script do nikito7 o ESP está instavel nas comunicações, embora conseguise ter leituras durante 3 horas em continuo… Para eliminar a instabilidade, decidi passar para o porta 3 RX e porta 1 TX (hardserial). Após alteração fisica e nos scripts “+1,3,m,0,9600,EB,1,…”, quando ligo o cabo rj12 ao Janz, o RX pisca quase em continuo, demonstrando saturação na comunicação. Verifiquei as ligações segundo o tutorial TTL-485 RX <-> RX GPIO3 ESP8266 mini D1 e TTL-485 TX <-> TX GPIO1 ESP8266 mini D1. Segundo o teu comentário, é necessário retirar o resistor junto ao RX. Será este o problema ? Existe algum feedback e uma solução ? Obrigado.

Alguns nodemcu ou wemos não gostam do gpio1 e gpio3 na han.

Led sempre aceso sem a HAN ligada poderá ser esse pull up.

Os novos clones ttl-rs485 não são grande coisa…

Em certos casos é preciso alimentar ttl-rs485 com 5V.


O janz precisa de watchdog.

Pelo menos 4x por dia o Janz bloqueia a porta e é preciso pausar a comunicação 35s.

Para os scripts antigos é usar a V1:
https://u.easyhan.pt/v2/tasmota-4M-v1.bin.gz

Actualmente no easyhan só uso o chip max3485 sem mais nada.
E o pin dir.

+1,3,mN1,1,9600,EB1,1(16),15,r010400010001…

Muito obrigado pelo feedback.

Sim, tens razão sobre o GPIO1/3. Também estive a pesquisar e alguns nodemcu e wemos partilham o hardware serial, criando conflitos…

Em relação ao LED, este apenas fica acesso a piscar rapidamente com intensidade baixa só quando é ligado fisicamente o cabo rj12 há porta do HAN (cabo configurados 1-G 3-A+ 5-B segundo esquema do tutorial do Tiago). Quando desligo o cabo, o RX desliga (o que é normal). Tenho uma ficha fêmea e uso um chicote rj12 fabricado de compra (não cravado manualmente) para evitar ruido.

A ligação entre o ttl-rs485 e wemos é mesmo TX-TX e RX-RX ou tem de ser invertido para TX-RX / RX-TX ?

O TTL-RS485 está a ser alimentado a 3.3v, via wemos, mas posso colocar um regulador 5V->3.3V para estabilizar ou mesmo ligar a 5V.

Actualmente a alimentação é via USB do wemos, porque estou ainda em fase “experimental”. A alimentação irá ser realizada por uma fonte Hi-link de 5V ou 3.3V, pois garante uma alimentação mais estável.

Obrigado pela informação do Janz. De facto estou agora a usar a tasmota-4m-v1.bin
Como estou a fazer tudo do zero, posso colocar o firmware que achares mais adequado ao Janz. Agradeço muito o teu feedback.

Na tua configuração indicas o tx enable (16), GPIO16/WAKE que deve ser devido a usares apenas o max3485, correcto ?

Também li que é possivel usar o swap.serial para ser uma solução com o ESP, mas não é suportada pelo Tasmota.

Uma opinião. Não será melhor usar um ESP32, pois este tem 3 portas série por hardware (ao contrário de 1 do ESP8266 partilhada)? Existe algum firmware tasmota e script para o ESP32 que possa ser aplicado à solução ?

Em ultimo caso arranco a resistência que liga o RX ao controlador série do wemos…

Os meus conhecimentos são básicos e agradeço desde já o vosso feedback. Obrigado.

Podes experimentar gpio 16 e 17.
Ou outros se desactivares o plugin interno.

https://u.easyhan.pt/v2/32/

Obrigado nikito7.

Pelo que percebo da tua resposta, esta é a solução para usar o ESP32, com a UART2-RX(GPIO16) e UART2-TX(GPIO17), que está por defeito no tasmota32.bin.

Vou tentar e dar feedback. Obrigado.

Se atribuires TCP tx a um pin sem uso, o meu plugin fica desliga. Podes depois usar o script.txt e qualquer pin.

Firmware tasmota32 sem plugin incluido, não tenho.

Plugin = V2, C++ modbus.

V1 = modbus no script.

Desde já, muito obrigado pela ajuda.

Coloquei da /v2/32/ o firmware tasmota32.factory.bin no ESP32 DevKit 30pin que tenho. Após isso, fiz o upgrade do firmware tasmota32.bin. Considero que estes são os correctos, pois os outros que estão no teu github são para o ESP32-S e ESP32-C.

No [configure others] mantive: {“NAME”:“ESP32-DevKit”,“GPIO”:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1],“FLAG”:0,“BASE”:1}

[Configure module] Coloquei GPIO1 → TCP Tx e GPIO2-> TCP Rx. O script ficou desactivado (sem dados electricos no menu principal e informa script não activo).

Apaguei no file manager os ficheiros correspondentes ao EB1 e mantive os do EB3 (para o sistema trifasico), realizando o rename do script-E3 para script.

[Configure module] Coloquei GPIO16 → Serial RX (corresponde ao U2_RXD) e no GPIO17 → Serial Tx (corresponde ao U2_TXD).
Atribuir ao GPIO1->none e GPIO3->none, ficando apenas a configuração para os pinos 16 e 17 (quando mantenho atribuido algo ao GPIO1 e GPIO3, não aparece indicações de energia, que considero script parado).

Não liguei o cabo HAN nem configurei o MQTT para apontar para o meu servidor (estou apenas em testes).

Restart → Agora identifico actividade nos leds do TTL-RS485, ligado a porta 16-RX <-> TTL RX e 17<->TTL TX.
Se não atribuir o GPIO16->serial RX / GPIO17-> serial RX, não tenho actividade nos leds do TTL.
Estranho, o led que pisca é o RX…

No entanto o script indica as configurações monofásicas iniciais… Mas o script é do EB3, ou seja trifásico… Acredito que continua a ler no codigo o teu nativo e não editado…

A actividade dos leds do TTL vai-se repetindo após alguns segundos.
Inverti a posição dos pinos da porta serie2 RX <-> TX TTL e serie2 TX <-> RX TTL, o led que pisca é o do TX (que me parece mais correcto…).

Envio as informações da configuração do ESP32… não acredito que esteja OK, pois não aparece as infdrmações correctas…
O facto de atribuirmos os pinos no tasmota ele usa mesmo o hardware serial e não uma emulação por softwareserial ?


Configuração actual:

ESP32-DevKit

Tasmota

NTP 2024-11-19 23:11:15 Heap 106.7 kB
Init 100 % TelePeriod 10 Version 20043
Wifi WifiManager Power 15 dBm Topic edpbox99

EB3 Consumo Net. 0.000 kWh
EB3 Excedente Net. 0.000 kWh

[LP-0000-00.csv] [Charts JS]
Easy HAN ® V2 7.273
CPU Freq 160 MHz

MB Status Error 23s
MB Index 0
MB Serial 8N99
MB Type EB99 / 99
MB Latency 0 ms
MB Timeout 1500 ms
MB Delay Wait 1000 ms
MB Delay Error 35000 ms

Clock 00:00:00

Voltage L1 0.0 V
Current L1 0.0 A
Power Import 0 W
Power Export 0 W
Power Factor 0.000 φ
Frequency 0.0 Hz

Energy T1 Vazio 0.000 kWh
Energy T2 Ponta 0.000 kWh
Energy T3 Cheias 0.000 kWh

Energy Total Import 0.000 kWh
Energy Total Export 0.000 kWh

Diagrama de Carga Load Profile

LP 1 Date 0000-00-00
LP 1 Time 00:00 Z
LP 2 AMR 0
IDs: 0 0 0 0 0 0 0 0

Realtime Netmetering (qs) 0.000 kWh

Contract T1 0.00 kVA
Contract T4 0.00 kVA
Tariff 0

EMI Manufacturer Year 0
EMI ? ??? ??? 0

EMI Firmware:

  1. Core
  2. App
  3. Com

Module parameters
Module type (ESP32-DevKit)
ESP32-DevKit (1)
IO GPIO0 None
TX GPIO1 None
IO GPIO2 None
RX GPIO3 None
IO GPIO4 None
IO GPIO5 None
FL GPIO9 None
FL GPIO10 None
IO GPIO12 None
IO GPIO13 None
IO GPIO14 None
IO GPIO15 None
IO GPIO16 Serial Rx
IO GPIO17 Serial Tx
IO GPIO18 None

edit script

Script enable

D 48

ver=20043
EBx=“EB3”
C=“Net.”
date=""
time=""
clk=""
old=""
wfc=""
wfp=0
cnt=0
wtd=0
hh=0
mm=0

Manage File system
Size 0.320 MB - Free 0.248 MB

[Partition_Manager.tapp ]
[charts.html ]
[charts.min.js ]
[discovery-EB3.txt ]
[script.txt ]
[voltage.html ]
[voltage.min.js ]
[vt-0d.csv ]

Obrigado.


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


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