emsesp / EMS-ESP32

ESP32 firmware to read and control EMS and Heatronic compatible equipment such as boilers, thermostats, solar modules, and heat pumps
https://emsesp.github.io/docs
GNU Lesser General Public License v3.0
627 stars 107 forks source link

Improvment: Get current error state or alarm as a entity #1693

Closed mattfro closed 3 months ago

mattfro commented 7 months ago

I know there is at the moment Last know error code, which is really nice.

But I would like to have the active or current alarm code, because I want to use a template in homeassistant that shows what the error code is or means which is currently active:

example:

This is for rego 3000 maybe other systems also...

Would this be a possible improvement?

proddy commented 7 months ago

the error code is fetched on EMS-ESP startup and when there's a change. You can try and force the fetch yourself using the scheduler, and send a read request to 0x10 or 0x11. To test using the console and read 8 10 or read 8 11 and see if it brings back the correct value.

MichaelDvP commented 7 months ago

The last error shows start and end of the error, if end is noted as now the error is still active. But you can also try a custom entity with BF message. On error a device send the 0xBF message with offset 8/9 the error-number. offset 0 is the device-id, offset 1 the product-id, offset 5/6/7 the 3 bytes ASCII (e.g. A11). For the error number use a custom entity with USHORT and offset 8. But you have to create it for each device connected to the bus. The other fields are also known, see Norberts1 list: https://github.com/norberts1/hometop_HT3/blob/master/HT3/docu/HT_EMS_Bus_messages.pdf

proddy commented 7 months ago

@MichaelDvP as a possible new addition, we could add a new command called 'read' to each device, so you can 'boiler/read' with value '12' (for example) from the Scheduler. Not related to this issue but got me thinking

MichaelDvP commented 7 months ago

@mattfro To map all errors you have a lot to do. The errorcodes in https://www.manualslib.de/manual/258240/Buderus-Logamatic-Ems.html fills 280 pages.

@proddy I think this is mainly a system/send command with a few less parameters, or same as a custom entity RAW. Don't know if it helpfull. The read will response the whole telegram and still has to be interpreted by the user.

mattfro commented 7 months ago

I have the whole list already in hass, or almost all. I took it from Bosch webpage added in to hass. I could use the last know error code, but then I would need to grep a part from the entity so I only get that code.

Or I will try with the read as proddy mentioned, to see what I get.

Around 150 lines... I used some good texteditors to fetch and modify it so I could in the end just copy paste it to a template in hass.

mattfro commented 7 months ago

Done similar to a Nibe heatpump(esp-nibe) integration in hass also. Some work, but not that bad :)

Anyways, thanks... will try later today or tomorrow(when I most likely have more time to test)

MichaelDvP commented 7 months ago

Hmm, i've checked the BF/BE telegrams, they are not readable, i get only <empty> back. So they are only broadcasted on an error event (set/unset) @mattfro for the errorcode in last_error you can create a custom entity device 0x08, type-id 0xC2, offset 8, USHORT. if offset 15 (UINT) is < 128 the error is still active. ems/ht3 boilers uses telegrams 0x10 (blocking errors) and 0x11 (locking errors) and hve C2 emty, but i think you have only C2.

mattfro commented 7 months ago

Does it help If I get logs when I will mess with the remotetemp and most likely will get an alarm? :) Going to try that reset alarm custom entity at the same point :)