Não é preciso estar na rede inteligente.
Mas o pedido é feito via e-redes.pt.
Além que tem ter a ordem de activar a porta HAN.
Os “técnicos” só cumprem ordens.
Não é preciso estar na rede inteligente.
Mas o pedido é feito via e-redes.pt.
Além que tem ter a ordem de activar a porta HAN.
Os “técnicos” só cumprem ordens.
Olá a todos.
Ontem actualizei o HA para a versão 2023.10 e apareceram problemas na leitura dos dados do contador E-REDES. Fizeram altercações no modbus, depois de remover da configuração as linhas “count:1” agora alguns valores não são lidos correctamente. Já alguém conseguiu resolver o problema? Encontrei várias pessoas com a mesma queixa (https://github.com/home-assistant/core/issues/101421). Alguma dica? Ou será melhor reverter para a versão 2023.9.2.
Que device RS485 estas a usar para ler o contador ?
Com a ajuda do @nikito7 que desenvolveu um custom_components modbus que faz Bypass_Size_Check , parece que está a funcionar…ainda em teste, até agora parece que está ok.
Bruno, estou com o mesmo problema :
Invalid config
The following integrations and platforms could not be set up:
** modbus*
Please check your config and [logs].
Alguém com dica para resolver ?
EDIT : confirmo que depois de retirar count=1 continua a nao funcionar para mim…
[https://github.com/nikito7/easyhan/blob/dev/bridge/custom-ha/Bypass_Size_Check.md]
Sensors uint32
- name: "EB2 38 uint32 c1"
unique_id: eb2_demo38_c1
slave: 1
address: 38
input_type: input
##
data_type: custom
count: 1
structure: ">L"
##
precision: 2
scale: 0.001
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
Eu tenho um elfin EE11A.
Obrigado… com a solução do @nikito7 ([https://github.com/nikito7/easyhan/blob/dev/bridge/custom-ha/Bypass_Size_Check.md]) esta a ler valores
@amadeumagalhaes.
Eu estou a usar HA no docker. Entrei no docker (docker exec -it hass bash) e executei os comandos no ficheiro partilhado pelo nikito7 (https://github.com/nikito7/easyhan/blob/dev/bridge/custom-ha/Bypass_Size_Check.md). Depois modifiquei no yaml a entrada ‘data_type: custom’ e adicionei o
structure: “>L”
Boa tarde,
executei o comando que tens no link através do terminal no HASS OS e alterei as configurações de um dos sensores como tens especificado, mas dá-me este erro:
Configuração inválida!
Invalid config for [modbus]: EB2 Import: Size of structure is 4 bytes but count: 1
is 2 bytes @ data[‘modbus’][0][‘sensors’][3]. Got {‘name’: ‘EB2 Import’, ‘unique_id’: ‘eb2_import’, ‘slave’: 1, ‘address’: 22, ‘input_type’: ‘input’, ‘count’: 1, ‘data_type’: ‘custom’, ‘structure’: ‘>L’, ‘precision’: 2, ‘scale’: 0.001, ‘unit_of_measurement’: ‘kWh’, ‘device_class’: ‘energy’, ‘state_class’: ‘total_increasing’, ‘scan_interval’: 15}. (See /config/configuration.yaml, line 35).
Alguém me consegue ajudar com isto?
Vê se tens modbus em /config/custom_components/
Devem ter mudado alguma coisa.
Esse erro é noutro sitio
Boas,
Podes por favor indicar como fazes para obter o clock? Eu tentei com a seguinte config e nepias…
- name: "EDP clock demo"
unique_id: eb2_clock_demo
slave: 1
address: 1
input_type: input
count: 1
data_type: custom
structure: ">H7BhB"
Segunda questão para quem souber os meus sensores do contador estão sempre a dar valores e logo a seguir dão “Unavailable” e andam nisto constantemente.
Video que demonstra o problema
A minha config é a seguinte:
# Contador edp
modbus:
- name: edp_box_1
type: serial
method: rtu
port: /dev/ttyUSB0
baudrate: 9600
stopbits: 1
bytesize: 8
parity: N
delay: 1
timeout: 5
retries: 5
retry_on_empty: true
message_wait_milliseconds: 200
sensors:
- name: 'EDP Box - Frequencia'
scan_interval: 5
slave: 1
address: 127
input_type: input
unit_of_measurement: 'Hz'
#count: 1
scale: 0.1
offset: 0
precision: 2
# long unsigned
data_type: uint16
unique_id: edpfreq
- name: 'EDP Box - Tensao'
scan_interval: 5
slave: 1
address: 108
input_type: input
unit_of_measurement: 'V'
#count: 1
scale: 0.1
offset: 0
precision: 1
# long unsigned
data_type: uint16
device_class: voltage
unique_id: edpvoltage
- name: 'EDP Box - Corrente'
scan_interval: 5
slave: 1
address: 109
input_type: input
unit_of_measurement: 'A'
#count: 1
scale: 0.1
offset: 0
precision: 1
# long unsigned
data_type: uint16
device_class: current
unique_id: edpcurrent
- name: "EDP Box - Potencia Ativa"
slave: 1
address: 121
#address: 115
input_type: input
count: 1
data_type: custom
structure: ">L"
unit_of_measurement: 'W'
device_class: power
unique_id: edppowera
- name: 'EDP Box - Fator de Potencia'
scan_interval: 5
slave: 1
address: 123
input_type: input
unit_of_measurement: 'p.u.'
#count: 1
scale: 0.001
offset: 0
precision: 3
# long unsigned
data_type: uint16
device_class: power_factor
unique_id: edppowerf
- name: 'ICP State L1'
## 0 para disconectado - 1 para conectado - 2 para preparado a reconectar
scan_interval: 5
slave: 1
address: 132
input_type: input
count: 1
data_type: custom
structure: ">Bx"
unique_id: edpstatel1
- name: 'Tariff L1'
## 1 para Vazio - 2 para Ponta - 3 para Cheia
scan_interval: 10
slave: 1
address: 11
input_type: input
count: 1
data_type: custom
structure: ">Bx"
unique_id: edptarifl1
- name: "EDP Box - Total Vazio"
scan_interval: 30
slave: 1
address: 38
input_type: input
count: 1
data_type: custom
structure: ">L"
precision: 3
scale: 0.001
unit_of_measurement: kWh
device_class: 'energy'
state_class: total_increasing
unique_id: edpenergyv
- name: "EDP Box - Total Ponta"
scan_interval: 10
slave: 1
address: 39
input_type: input
count: 1
data_type: custom
structure: ">L"
precision: 3
scale: 0.001
unit_of_measurement: kWh
device_class: 'energy'
state_class: total_increasing
unique_id: edpenergyp
- name: "EDP Box - Total Cheia"
scan_interval: 10
slave: 1
address: 40
input_type: input
count: 1
data_type: custom
structure: ">L"
precision: 3
scale: 0.001
unit_of_measurement: kWh
device_class: 'energy'
state_class: total_increasing
unique_id: edpenergyt
- name: "EDP Serial Number"
slave: 1
address: 2
input_type: input
count: 10 # Assuming 10 registers of 2 bytes each result in 20 bytes
data_type: string
#structure: ">20s" # Use struct format for 20 bytes of data
scan_interval: 10
unique_id: edpserialn # Unique ID for the sensor
- name: "EDP clock demo"
unique_id: eb2_clock_demo
slave: 1
address: 1
input_type: input
count: 1
data_type: custom
structure: ">H7BhB"
sensor:
## EDP BOX Tarifa - MODBUS
- platform: template
sensors:
edp_box_tarifa:
friendly_name: 'EDP Box - Tarifa'
icon_template: "{{ 'mdi:counter' }}"
value_template: >-
{% set x = states('sensor.tariff_l1')|string %}
{% if x == "1" %}
{{ "Vazio" }}
{% elif x == "2" %}
{{ "Ponta" }}
{% elif x == "3" %}
{{ "Cheia" }}
{% else %}
{{ x }}
{% endif %}
## EDP BOX Estado ICP - MODBUS
- platform: template
sensors:
edp_box_estado_icp:
friendly_name: 'EDP Box - Estado ICP'
icon_template: "{{ 'mdi:flash' }}"
value_template: >-
{% set x = states('sensor.icp_state_l1')|string %}
{% if x == "0" %}
{{ "Desligado" }}
{% elif x == "1" %}
{{ "Ligado" }}
{% elif x == "2" %}
{{ "Preparado para religacao" }}
{% else %}
{{ x }}
{% endif %}
Rtu tweak: 12 bytes
Mas não recomendo.
Não é a forma certa de o fazer.
Tudo o que tem mais de 2 bytes é count 1. Non-standard.
Apenas o Modbus TCP não tem essa limitação, por sorte.
Tens algum programa que permita testar comunicação TCP, para enviar pedidos e verificar respostas?
Estou a usar isto, mas recebo algumas respostas estranhas…\x02i , …\x00)\
import socket
server_ip = "192.168.1.139"
server_port = 9502
try:
# Create a socket connection to the Modbus TCP server
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((server_ip, server_port))
# Send the Modbus TCP request packet
#s.send(request_packet)
# transIDf\protoID\Lenght \uId\fun\firsREG\num_REG\
s.send(b'\x00\x01\x00\x02\x00\x06\x01\x04\x00\x07\x00\x01') # (6C volt ; 0B tarifa; 07 interface; 0C POT MAX 6900 ; 26,27,28 energia)
# transIDf\protoID\Lenght \uId\fun\nºby\Regist1\RegistX\
# reply \x00\x01\x00\x02\x00\x06\x01\x04\x00 \x2C\x00\x01\x01
# Receive the response (adjust the buffer size as needed)
response = s.recv(1024)
# Print the raw response bytes (you'll need to parse the response accordingly)
print("Raw Response" , response)
except Exception as e:
print("Error:", e)
Encontrei um free e portable como gosto , qModMaster
Sim uso esse também.
Apenas para leituras:
[https://github.com/nikito7/edpbox-dev/tree/dev/modbus/moacir]
Não lhe deu nenhum erro quando executou o script?
Provavelmente não conseguiu aceder a core-master/homeassistant/components/modbus/
Isso faz download de um zip do HA core
Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt