john30 / ebusd

daemon for communication with eBUS heating systems
GNU General Public License v3.0
565 stars 131 forks source link

Some broadcast messages are not decoded #1285

Closed wrongisthenewright closed 2 months ago

wrongisthenewright commented 3 months ago

Description

Some broadcast commands are not decoded.

Hardware: x86_64 platform - Ubuntu 22.04 server, docker-ce, official Docker image

HVAC: Ariston Hybrid system (hp+boiler+other stuffs)

Command options: docker run -d --name=ebusd \ --restart unless-stopped \ --network mynetwork \ -p 8888:8888 \ -p 8008:8008 \ -v /home/oper/Docker/Ebusd/configuration:/etc/ebusd \ -v /home/oper/Docker/Ebusd/scripts:/scripts \ -v /home/oper/Docker/Ebusd/html:/var/ebusd/html \ -v /etc/timezone:/etc/timezone:ro \ -v /etc/localtime:/etc/localtime:ro \ john30/ebusd:latest \ --mqtthost=mosquitto \ --mqttport=1883 \ --mqttuser=REDACTED \ --mqttpass=REDACTED \ --mqttjson \ --mqttint=/etc/ebusd/mqtt-hassio.cfg \ --mqtttopic=ebusd/%circuit/%name \ --enablehex \ --configpath=/etc/ebusd \ -d 192.168.1.166:3333 \ --receivetimeout=5000 \ --latency=20000 \ --pollinterval=30 \ --sendretries=10 \ --acquireretries=5 \ --acquiretimeout=20 \ --log=all:error

Actual behavior

Config file (extract):

b,boiler,boiler_status,Boiler Status,,fe,2010,c04b,boilerstatus,m,UCH,1=standby;2=heating;3=heating hot water;4=water tank;5=circulating;23=manual test;24=comfort;31=gas_circuit_deaeration;36=auto_calibration;51=low_water_pressure;52=no_flame
r,boiler,boiler_status,Boiler Status,,3c,2000,c04b,ign,s,IGN:1,,,,boilerstatus,s,UCH,1=standby;2=heating;3=heating hot water;4=water tank;5=circulating;23=manual test;24=comfort;31=gas_circuit_deaeration;36=auto_calibration;51=low_water_pressure;52=no_flame

The broadcast line didn't decode the message, even if the message itself is correctly read by ebusd. The second line instead get the correct readings (the one asked via ebusctl and the ones sent from other devices on the bus).

ebusctl grab result all | grep c04b
37fe201010c04b0100091901000a1901000b190000 = 16083
313c200002c04b / 020101 = 1: boiler boiler_status
7f3c200002c04b / 020101 = 110: boiler boiler_status
7f3c200002c04b / 020101 = 42: boiler boiler_status

I've tried also to differentiate the circuit name and the parameter name to avoid undocumented conflicts without solving the issue The line was decoded in the past, no changes to the configuration have happened in the meantime, I've tried rebooting all the devices: Ariston HVAC first, the adapter gets rebooted int he same operation being powered by the bus, then the docker, then as a last try the server.

Expected behavior

The first line should decode the message sent every 30 seconds from the appliance, the second one read the same parameter via explicit read operations.

ebusd version

23.3

ebusd arguments

see above

Operating system

Debian 12 (Bookworm) / Ubuntu 22-23 / Raspberry Pi OS 12 (including lite)

CPU architecture

x64

Dockerized

latest

Hardware interface

other

Related integration

TCP (cmdline client like ebusctl or netcat), MQTT Home Assistant via mqtt-hassio.cfg

Logs

docker logs ebusd --since 10m | grep c04b
2024-06-02 22:54:06.773 [update info] received BC cmd: 37fe201010c04b0100091901000a1901000b190000
2024-06-02 22:54:06.773 [update notice] received unknown BC cmd: 37fe201010c04b0100091901000a1901000b190000
2024-06-02 22:54:12.196 [update info] received BC cmd: 37fe201010c04b0100091901000a1901000b190000
2024-06-02 22:54:12.196 [update notice] received unknown BC cmd: 37fe201010c04b0100091901000a1901000b190000
....
wrongisthenewright commented 3 months ago

Just adding some context: as I wrote the message was correctly decoded in the past, I just realized it was missing, it seems the problem begun after a power grid failure last week that "rebooted" everything, from the HVAC system to my home server. Since then I did a full controlled reboot, starting the HVAC system and the now "embedded" adapter and then my home server.

Other broadcast messages are correctly decoded, only that line is skipped (as far as I can tell, other messages are sparsely present on the bus so their missing can be undetected).


grep z1_room_temp_bcast ariston.csv 
b,energymgr,z1_room_temp_bcast,Z1 Room temperature,,fe,2020,7118,room_temp,s,SIN,10,°C,,,,,,,,,,,,,,,,,,,,,,

ebusctl grab result all | grep z1_room_temp_bcast
70fe2020047118e900 = 1257: energymgr z1_room_temp_bcast

What I cannot understand is why the message is grabbed but not matched(?) to the CSV rule and so decoded. As the message is fairly frequent on the bus I tend to exclude the possibility of incomplete/invalid message, is there anyway a simple method to dump raw messages in a dockerized env?

wrongisthenewright commented 2 months ago

It seems it now works...the promlem lied probably on my MQTT broker or in my CSV

image

Issue closed