Development - fullTalgoRythm/Domoticz-evohome GitHub Wiki
If you have an HGI80 / HGS80 then this is probably a good place to do some evohome hacking. The evohome class in domoticz/hardware/evohome.cpp contains details about the messages used to communicate with evohome and the other devices that make up the system.
Debug logging can be turned on by setting m_bDebug=true in evohome.cpp which will allow you to see more detail about your system including the heat demand from the zones and the controller as well as when the relays turn on and off.
If you are a C++ programmer then extending the code should be relatively straightforward.
Adding a new message handler
RegisterDecoder(cmdZoneWindow,boost::bind(&CEvohome::DecodeZoneWindow,this, _1));
Sending a message can be done in a single line of code
AddSendQueue(CEvohomeMsg(CEvohomeMsg::pktreq,GetControllerID(),cmdZoneName).Add(nZone).Add(uint8_t(0)));
Decoding messages
Reading the window function message (3 bytes)
uint8_t nWindow,nMisc;
msg.Get(tsen.EVOHOME2.zone).Get(nWindow).Get(nMisc);
Reading 2 dates 1 after the other starting at offset 10
CEvohomeDate edt,edt2;
msg.Get(edt,10).Get(edt2);
Reading the binding message
uint8_t nDevNo;
uint16_t nCmd;
CEvohomeID idDev;
msg.Get(nDevNo).Get(nCmd).Get(idDev);
This concept could potentially be extended using an container class where you can add objects derived from CEvohomeDataType. You could then iterate through the container calling decode / encode as required to read / write a message.