OpenEnergyMonitor Community

Hack my Heat Pump and publish data onto emoncms

It is an EHBX08CB3V. I don’t know what other HP models it is compatible with.

Your inside box is newer and has a x5m conector witch is for dc connection. Mine doesn’t have it .Like @aideen said only newer models from BB series can be read.

giving some additional information here - some of the commands I got with Wireshark decoding the tcpdump and listening the BRP069A62 websocket traffic.
Indeed, the websocket is the only option there and sending JSON strings.
As for my case, as the Daikin Altherma is in LWT control mode (not Room Temperature), there are no commands seen to monitor/control LWT configuration. So for my case, I only get to play with my Domestic Hot Water values. Below are some commands I harvested out from the websocket traffic. This is not a final list, there was a lot about as well about DWH schedule etc, yet not being the main interest I omitted it.


How to play with it - google for “websocket client”, connect to ws:// (or any other IP your Daikin LAN device is running). Note the /mca in the end

If you are interested in the Python code connceting and gathering some parameter value, let me know.


Hello Tarmo,

I have a BRP069A61 connected to an indoor unit EHVX08S23D6V.
I contacted Daikin and they told me that the communication protocol of the Gateway is DIII-Net (proprietary).
The only thing I have managed to do with the module is to connect it to the Daikin Controller APP, but this is not very useful and provides very little information.
I have unsuccessfully tried the “man in the middle” method with the APP + tPacketCapture. But I have no idea how it works.
I am very interested in your discoveries, and the rest of the parameters that can be obtained or modified.
If you have more information on how to contact the BRP069A61 / 62 I will thank you very much.
I can not understand how the protocol syntax that you comment works, could you give me an example?
Thank you very much in advance!


If you are interested in the Python code connceting and gathering some parameter value, let me know.

Can it be possible to share your python code ? and a little explanation of each ws query you use ?

Thanks for your work !



I have a BRP069A62 connected to a Altherma LT EHVX16S26CB9W (LWT control too). Thanks to your explanation I can connect to the websocket of the altherma, but then how get sensors values ?

I want to monitor all temperatures (outdoor, leaving and returning temp, DHW) and electric power consomption.


Hi guys, how defrost energy is caculated ?
For generated energy I use 4200(J/kg K) x 1000(kg/L) x Flow(L/min) / 60000 (m3/s)/(L/min) x DeltaTemp
In defrost it will have negative Delta temperature and real defrost begins a several seconds sooner if I check heats pump stats.
I did some decoding of Panasonic Aquarea H series heat pump and can get all data via CN-CNT connector.

1 Like

I’m able to do some calls in python right now (to get the water temp.) but i still need a explanation of what can do each ws described above.

Thanks in advance,


couple of months ago I used wireshark to sniff some traffic from BRP069A62. I have spend a lot of time trying to dig more data… I have more or less discovered the whole structure of the websocket server. This is what I found on my Altherma LT.

In the attachment you can find a simple xls table with more or less complete structure of the websocket server I gave up at the end of the second unit (errors, child lock etc.) but the addresses are similar to the ones from the first unit. How to read the table? For example line 25 means that model number of the unit 1 is available at


As you can see, there are two “units” (just like in the Daikin Control APP).
/[0]/MNAE/1/ is the heating unit
/[0]/MNAE/2/ is the hot water tank

If you operate in LTW mode, the heating unit (/[0]/MNAE/1/) is NOT available (just like in the Daikin Control APP). The hot water tank is available, but in different address (did not check, but I guess it will be /[0]/MNAE/1/)

All values are readable, some are writeable. Sorry, I did not systematically record which of them are writeable, but I think that only addresses within “Operation” are writeable.

I am able to read (sensors like tank temperature, outdoor temp) and write (set target temp, turn on/off heating etc.) from and to the websocket server using Node Red (noides websocket in, websocket out). If you are interested, I can post my flow.

And here are the bad news: Unfortunatelly, additional data like flow, inbound and outbound AWT are nowhere to be found :frowning: Or at least I did not found them. All (or almost all) data (readable sensors from the websocket server) and commands (writeable to the websocket server) available on the BRP069A62 are already available through the Daikin Controller APP.

websocket Daikin.pdf (73.7 KB)

1 Like

You only needed to ask (as per the FAQ). You can now.

1 Like

Many heat pumps just don’t have UARTS (byond JTAG headers). Still, one can get at the operational data with the IR remote and display. The TX/RX pins described above sound like the scheme on my unit (an air to air unit). Also, that wifi connector they sell … dont think it has any more functionality than the remote! Anyhow, thought i’d share my project, it hacks IR protocol and display interface and routes data as MQTT client with ESP8266. It works with Senville, Mr.Cool, Pioneer, Lennox, and some Daiken i expect. Basically, all brands using same hardware (there are a bunch)

Some pics in the wiki

Thanks for your suggestion, but it seems that your solution is sepcific to air-to-air units with IR remote. Regarding the TX/RX pins, you seem to be refering to the post by relghuar about S403 and S21 connectors ( Hack my Heat Pump and publish data onto emoncms )

My unit is air-to-water unit Daikin Altherma EHVX. It does not have a IR remote (and as far as I know there are no S403 / S21 connectors on my unit either).

At the moment I can get data from the heatpump using the wired LAN adapter BRP069A62 through websocket and Node Red. In fact, it is fairly easy (no HW hack required), but you only get very limited set of data.

Another possibility described by Emiliano_Maina is the CAN Bus. Unfortunatelly, CAN Bus is only available at Daikin Altherma units (EHSH/EHSX) which use Rotex hardware (RoCon boards). Unfortunatelly, my unit does not have the CAN Bus.

For my Daikin Altherma LT unit the only possibility is to hack the P1/P2 connector. This is a 2-wire proprietary interface which is used for connecting Daikin controller and expensive 3rd party adapters (RTD adapters for modbus, KLIC-DD adapters for KNX).

The most serious attempt to hack the P1/P2 interface came few years ago from some Italian guys here:

They used oscilloscope to analyse the interface. They found out that the P1/P2 interface uses the Home Bus System (HBS) communication protocol specified in the ET-2101 standard by the Electronic Industries Association of Japan. And they got stuck here because they were not able to find details about the ET-2101 HBS protocol…

I was actually able to find some details about the ET-2101 HBS protocol in this document:

(see chapter 4: Extended HBS communication protocol starting at page 107).

But I do not have skills to analyse the P1/P2 interface myself…

For those who want to play with BRP069A62 and websocket, I would recommed using Node Red.

It is fairly easy to read sensors and issue command to the unit, but as already mentioned, you only get the very basic data (the same data available through the Android Daikin Controler App).

Here is my flow (for Room Temperature mode). Do not forget to change the IP address in the websocket node. Sorry the flow is still a bit messy, but you will still get a basic idea how the websocket communication with LAN adapter works.:

[{"id":"7916defc.b11688","type":"tab","label":"Daikin 2","disabled":false,"info":""},{"id":"dbab4c0e.0d7f4","type":"debug","z":"7916defc.b11688","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":2450,"y":680,"wires":[]},{"id":"10f6ac81.c2c5e3","type":"change","z":"7916defc.b11688","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"m2m:rsp\"].pc[\"m2m:cin\"].con","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":180,"wires":[["dbab4c0e.0d7f4"]]},{"id":"40631846.3fe738","type":"json","z":"7916defc.b11688","name":"","property":"payload","action":"str","pretty":false,"x":1490,"y":300,"wires":[["6d502435.2c2174"]]},{"id":"6d502435.2c2174","type":"switch","z":"7916defc.b11688","name":"","property":"payload[\"m2m:rsp\"].fr","propertyType":"msg","rules":[{"t":"eq","v":"/[0]/MNAE/1/Sensor/IndoorTemperature/la","vt":"str"},{"t":"eq","v":"/[0]/MNAE/1/Sensor/OutdoorTemperature/la","vt":"str"},{"t":"eq","v":"/[0]/MNAE/2/Sensor/TankTemperature/la","vt":"str"},{"t":"eq","v":"/[0]/MNAE/1/Operation/TargetTemperature/la","vt":"str"},{"t":"eq","v":"/[0]/MNAE/2/Operation/TargetTemperature/la","vt":"str"},{"t":"eq","v":"/[0]/MNAE/2/UnitStatus/ReheatState/la","vt":"str"},{"t":"eq","v":"/[0]/MNAE/1/Operation/Power/la","vt":"str"},{"t":"eq","v":"/[0]/MNAE/2/Operation/Power/la","vt":"str"},{"t":"eq","v":"/[0]/MNAE/2/Operation/Powerful/la","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":10,"x":1650,"y":300,"wires":[["10f6ac81.c2c5e3"],["b4677899.c48018"],["b1d25218.05391"],["335c84f6.a0b244"],["747bf93f.042af8"],["9f5e02dd.1e6a"],["d906f42c.8661b"],["8d7b605c.5bfba"],["954c74a3.275e98"],["f7477e47.75c33"]],"outputLabels":["1 Indoor Temp","","","","","","","",null,""]},{"id":"4a281ecf.138be","type":"websocket in","z":"7916defc.b11688","name":"Daikin","server":"","client":"8ef83237.4e642","x":1330,"y":300,"wires":[["40631846.3fe738"]]},{"id":"55391ba3.bf7154","type":"status","z":"7916defc.b11688","name":"","scope":["4a281ecf.138be"],"x":160,"y":360,"wires":[["c895eac4.5e3e88"]]},{"id":"b4677899.c48018","type":"change","z":"7916defc.b11688","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"m2m:rsp\"].pc[\"m2m:cin\"].con","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":240,"wires":[["dbab4c0e.0d7f4"]]},{"id":"b1d25218.05391","type":"change","z":"7916defc.b11688","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"m2m:rsp\"].pc[\"m2m:cin\"].con","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":300,"wires":[["dbab4c0e.0d7f4"]]},{"id":"335c84f6.a0b244","type":"change","z":"7916defc.b11688","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"m2m:rsp\"].pc[\"m2m:cin\"].con","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":360,"wires":[["dbab4c0e.0d7f4"]]},{"id":"747bf93f.042af8","type":"change","z":"7916defc.b11688","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"m2m:rsp\"].pc[\"m2m:cin\"].con","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":420,"wires":[["dbab4c0e.0d7f4"]]},{"id":"9f5e02dd.1e6a","type":"change","z":"7916defc.b11688","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"m2m:rsp\"].pc[\"m2m:cin\"].con","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":480,"wires":[["dbab4c0e.0d7f4"]]},{"id":"25839005.de279","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":2,\"to\":\"/[0]/MNAE/1/Sensor/IndoorTemperature/la\",\"fr\":\"/S\",\"rqi\":\"ynutj\"}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"1/Sensor/IndoorTemperature","x":1020,"y":180,"wires":[["e9238fd3.6c8288"]]},{"id":"e1cfb13a.c2eec","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":2,\"to\":\"/[0]/MNAE/1/Sensor/OutdoorTemperature/la\",\"fr\":\"/S\",\"rqi\":\"jcmiz\"}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"1/Sensor/OutdoorTemperature","x":1030,"y":240,"wires":[["e9238fd3.6c8288"]]},{"id":"797d0e59.3910b8","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":2,\"to\":\"/[0]/MNAE/2/Sensor/TankTemperature/la\",\"fr\":\"/S\",\"rqi\":\"awmvw\"}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"2/Sensor/TankTemperature","x":1020,"y":300,"wires":[["e9238fd3.6c8288"]]},{"id":"baa14c24.cc059","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":2,\"to\":\"/[0]/MNAE/1/Operation/TargetTemperature/la\",\"fr\":\"/S\",\"rqi\":\"rcxag\"}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"1/Operation/TargetTemperature","x":1030,"y":360,"wires":[["e9238fd3.6c8288"]]},{"id":"63fbdae5.f21214","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":2,\"to\":\"/[0]/MNAE/2/Operation/TargetTemperature/la\",\"fr\":\"/S\",\"rqi\":\"jhntt\"}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"2/Operation/TargetTemperature","x":1030,"y":420,"wires":[["e9238fd3.6c8288"]]},{"id":"5be1f665.6ea008","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":2,\"to\":\"/[0]/MNAE/2/UnitStatus/ReheatState/la\",\"fr\":\"/S\",\"rqi\":\"vbmuy\"}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"2/UnitStatus/ReheatState","x":1010,"y":480,"wires":[["e9238fd3.6c8288"]]},{"id":"88277fd2.46de48","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":2,\"to\":\"/[0]/MNAE/1/Operation/Power/la\",\"fr\":\"/S\",\"rqi\":\"qyfud\"}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"1/Operation/Power","x":990,"y":540,"wires":[["e9238fd3.6c8288"]]},{"id":"d906f42c.8661b","type":"change","z":"7916defc.b11688","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"m2m:rsp\"].pc[\"m2m:cin\"].con","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"on","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"standby","fromt":"str","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":540,"wires":[["dbab4c0e.0d7f4"]]},{"id":"990e3305.f5c728","type":"inject","z":"7916defc.b11688","name":"1min","topic":"","payload":"true","payloadType":"bool","repeat":"60","crontab":"","once":false,"onceDelay":0.1,"x":310,"y":300,"wires":[["6e753022.1c65c"]]},{"id":"1d989609.73ab6a","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":1,\"to\":\"/[0]/MNAE/1/Operation/Power\",\"fr\":\"/S\",\"rqi\":\"bhktc\",\"ty\":4,\"pc\":{\"m2m:cin\":{\"con\":\"on\",\"cnf\":\"text/plain:0\"}}}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"1/Operation /Power ON","x":770,"y":780,"wires":[["e9238fd3.6c8288"]]},{"id":"894bbdfe.41f6e","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":1,\"to\":\"/[0]/MNAE/1/Operation/Power\",\"fr\":\"/S\",\"rqi\":\"bhktc\",\"ty\":4,\"pc\":{\"m2m:cin\":{\"con\":\"standby\",\"cnf\":\"text/plain:0\"}}}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"1/Operation /Power OFF","x":770,"y":720,"wires":[["e9238fd3.6c8288"]]},{"id":"6e753022.1c65c","type":"trigger","z":"7916defc.b11688","op1":"true","op2":"","op1type":"bool","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"trigger","x":590,"y":360,"wires":[["25839005.de279","e1cfb13a.c2eec","797d0e59.3910b8","baa14c24.cc059","63fbdae5.f21214","5be1f665.6ea008","88277fd2.46de48","7b70d1c9.6bcbe8","a635a681.30807"]]},{"id":"c895eac4.5e3e88","type":"switch","z":"7916defc.b11688","name":"","property":"status.text","propertyType":"msg","rules":[{"t":"eq","v":"connected","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":310,"y":360,"wires":[["6e753022.1c65c"]]},{"id":"6756f209.40f33c","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":1,\"to\":\"/[0]/MNAE/2/Operation/Power\",\"fr\":\"/S\",\"rqi\":\"cgeci\",\"ty\":4,\"pc\":{\"m2m:cin\":{\"con\":\"standby\",\"cnf\":\"text/plain:0\"}}}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"2/Operation/Power OFF","x":770,"y":840,"wires":[["e9238fd3.6c8288"]]},{"id":"893e56a2.101e78","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":1,\"to\":\"/[0]/MNAE/2/Operation/Power\",\"fr\":\"/S\",\"rqi\":\"cgeci\",\"ty\":4,\"pc\":{\"m2m:cin\":{\"con\":\"on\",\"cnf\":\"text/plain:0\"}}}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"2/Operation/Power ON","x":760,"y":900,"wires":[["e9238fd3.6c8288"]]},{"id":"7b70d1c9.6bcbe8","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":2,\"to\":\"/[0]/MNAE/2/Operation/Power/la\",\"fr\":\"/S\",\"rqi\":\"tmroa\"}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"2/Operation/Power","x":990,"y":600,"wires":[["e9238fd3.6c8288"]]},{"id":"8d7b605c.5bfba","type":"change","z":"7916defc.b11688","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"m2m:rsp\"].pc[\"m2m:cin\"].con","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"on","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"standby","fromt":"str","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":600,"wires":[["dbab4c0e.0d7f4"]]},{"id":"56268606.4b69d","type":"websocket out","z":"7916defc.b11688","name":"Daikin","server":"","client":"8ef83237.4e642","x":1470,"y":620,"wires":[]},{"id":"f7477e47.75c33","type":"debug","z":"7916defc.b11688","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1670,"y":620,"wires":[]},{"id":"a635a681.30807","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":2,\"to\":\"/[0]/MNAE/2/Operation/Powerful/la\",\"fr\":\"/S\",\"rqi\":\"zlyhz\"}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"2/Operation/Powerful","x":1000,"y":660,"wires":[["e9238fd3.6c8288"]]},{"id":"d39f83b6.e60d9","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":1,\"to\":\"/[0]/MNAE/2/Operation/Powerful\",\"fr\":\"/S\",\"rqi\":\"amwam\",\"ty\":4,\"pc\":{\"m2m:cin\":{\"con\":0,\"cnf\":\"text/plain:0\"}}}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"2/Operation/Powerful OFF","x":770,"y":960,"wires":[["e9238fd3.6c8288"]]},{"id":"70d2d8da.df4c9","type":"trigger","z":"7916defc.b11688","op1":"{\"m2m:rqp\":{\"op\":1,\"to\":\"/[0]/MNAE/2/Operation/Powerful\",\"fr\":\"/S\",\"rqi\":\"ibwib\",\"ty\":4,\"pc\":{\"m2m:cin\":{\"con\":1,\"cnf\":\"text/plain:0\"}}}}","op2":"","op1type":"json","op2type":"nul","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"2/Operation/Powerful ON","x":770,"y":1020,"wires":[["e9238fd3.6c8288"]]},{"id":"e9238fd3.6c8288","type":"delay","z":"7916defc.b11688","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1330,"y":620,"wires":[["56268606.4b69d"]]},{"id":"954c74a3.275e98","type":"change","z":"7916defc.b11688","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[\"m2m:rsp\"].pc[\"m2m:cin\"].con","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"num","to":"on","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"num","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1900,"y":660,"wires":[["dbab4c0e.0d7f4"]]},{"id":"99fcf1ed.0300b8","type":"inject","z":"7916defc.b11688","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":520,"y":720,"wires":[["894bbdfe.41f6e"]]},{"id":"cd028f03.9f113","type":"inject","z":"7916defc.b11688","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":520,"y":780,"wires":[["1d989609.73ab6a"]]},{"id":"844a112e.e980f8","type":"inject","z":"7916defc.b11688","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":520,"y":840,"wires":[["6756f209.40f33c"]]},{"id":"3825c7d3.1975e8","type":"inject","z":"7916defc.b11688","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":520,"y":900,"wires":[["893e56a2.101e78"]]},{"id":"c5f9b60.c1d2cc8","type":"inject","z":"7916defc.b11688","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":520,"y":960,"wires":[["d39f83b6.e60d9"]]},{"id":"bd568056.a9d358","type":"inject","z":"7916defc.b11688","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":520,"y":1020,"wires":[["70d2d8da.df4c9"]]},{"id":"8ef83237.4e642","type":"websocket-client","z":"","path":"ws://","wholemsg":"false"}]
1 Like

Oh yeh, air-water heat pumps are controlled quite differently. thanks for sharing details! Wish i had one … don’t like forced air.

I gather that Daikin has four different control protocols, and most devices include only one:

  • S403 (aircons?)
  • S21 (aircons)
  • F1/F2 (large scale)
  • P1/P2 (small scale domestic)

It can be hard to work out which interface each device has. I have an Altherma LT (EHBH08CB), so I’m mainly interested in controlling that. It has a P1/P2 interface (the only one of these four which is mentioned in the Installer manual).

The Daikin Control Systems catalogue lists a number of Modbus (RS485) interfaces and the devices which they are compatible with (on page 132). I’m surprised that the Altherma HT and LT have different interface units (RTD-W and RTD-LT/CA respectively), given that both have P1/P2 interfaces. I suspect this has something to do with the additional non-Modbus controls on these units (e.g. resistance and voltage control of fan speeds, which would only apply to an aircon unit) and that the Modbus part of these interfaces might be identical, but I’m not sure.

Given one of these interface units, attached by a pair of wires to the P1/P2 connector on the hydrobox/indoor unit (in parallel with the built-in controller), one should be able to connect a PC, Raspberry Pi or Arduino to the Modbus interface (with a suitable adaptor) and read all sensors (and change all settings) from there.

From the above answers, it seems that a BRP069A61/62 LAN controller may provide an easier interface (HTTP/websockets), and also integrate with a PV system (without extra programming). However it requires a wired LAN connection (not wi-fi), which I don’t have anywhere near the hydrobox. A powerline network would probably work, but less reliably.

There is some documentation of the RTD-W’s Modbus registers here. I would expect the RTD-LT/CA to have similar registers, as the hydrobox/indoor unit functions are very similar.

The Control Systems catalogue (page 133) says that the flow rate can be monitored by Modbus using the RTD-LT/CA (for Altherma LT), but not using the RTD-W (for Altherma HT).

1 Like

I know only very little about S403, S21, F1/F2 interfaces. I have learned few things about P1/P2 (in theory, I did not hack it in practice). So here it is, in one place if anyone wants to try to hack it:

Alternate Mark Inversion (bipolar signaling) . If you want to see some real screenshots from oscilloscope, have a look here:
In addition, the P1/P2 interface is powered (15V DC).
So you can not simply connect it to Arduino or Raspberry. You need to convert the signal first. Fortunatelly, there are chips specifically designed for this conversion:
MM1192 and also MM1007 and MM1034. Out of these three, MM1192 seems to be the most advanced. I have a BRP069A62 LAN controller and MM1192 is in there…
MM1192 can be bought on for $2.
But I do not know how to do the wiring and there is no application circuit example in the specs… Can anyone please have a look at the specs of MM1192 and tell us how to connect it to the P1/P2 interface? And how to read the output?

The P1/P2 interface uses Home Bus System (HBS) protocol developed in Japan ini 1980s. It is specified in document ET-2101 issued by the Electronic Industries Association of Japan. I did not found the original ET-2101 document, but key details of the HBS protocol are specified in this document: spec_v211e_3.pdf (see chapter 4: Extended HBS communication protocol starting at page 107). Decoding HBS seems to be difficult (according to people who tried to do that), also because there is a constant flow of communication on the bus and it is difficult to isolate iindividual requests and responses.

P1/P2 is applied throughout the whole Daikin portfolio: aircons Sky Air/VRV, split, heatpumps Altherma HT, Altherma LT…
P1/P2 is mainly used for Daikin’s own remote controllers (main controllers of the unit) and for a number of adapters which are basically converters from HBS to another protocol. So you can have:

  • Websocket / HTTP (BRP069A61/62 by Daikin)
  • RS485(Modbus) (RTD-LT/CA, RTD-W and other adapters by Realtime Control Systems)
  • KNX (IntesisBox DK-RC-KNX-1 by Intesis, KLIC-DI by Zennio)
  • All-in-one: RS232(serial),RS485(Modbus),ethernet,KNX(optionally): CooLinkNet by Cool Automation.

Yes, there are some technical differences in the modbus adapters as you pointed out. But all these adapters share something:

  1. connect to P1/P2 interface
  2. they are quite expensive (with the exception of BRP069A62). The Modbus and KNX adapters are meant for corporate clients who can affort to pay the horrendous price. But it is too much for home users.

Unfortunatelly, there is a compatibility issue with modbus adapters. The modbus adapter RTD-LT/CA is only compatible with old Altherma LT units (“CA”), not the new ones (“CB”). So modbus is not an option for me and I have to choose between LAN (BRP069A62) and KNX (KLIC-DI). The LAN adapter is unsufficient (provides only very simple interface, no data about LWT, flow etc.). On the other side, KNX is ovekill for me. Currently, Daikin has nothing to offer to “advanced” home users of Altherma LT who want more than LAN (BRP069A62) but less than KNX (KLIC-DI). That is why I ended up trying to hack P1/P2…

Hi @krakra,

Thanks for the information! I had not thought about using the KNX system very much, as I assumed it would be too expensive. However the KNX KLIC-DA (not KLIC-DI) is actually cheaper than an RTD-* modbus interface: you can buy them for £210 (about €250), which is about £100 more than the LAN Controller, although a KNX interface will also be required. It’s also unfortunate that it only supports a single thermal zone, while my house has two.

I’m still considering an RTD Modbus interface, as it might be cheaper on eBay, and might work better with two thermal zones. How certain are you that the RTD-LT/CA is not compatible at all with the newer Altherma CB models? I know that it is not explicitly listed as compatible in the catalogues, but I’d guess that the P1/P2 protocol is the same and that they should at least partly work together?

I gather from the KLIC-DA documentation that new objects were added in the CB (e.g. energy consumption estimates) which may not be available using a CA-only interface, which is unfortunate.

Thanks, Chris.

How certain are you that the RTD-LT/CA is not compatible at all with the newer Altherma CB models?

I am 100% sure. I have it confirmed from multiple sources, including a Daikin representative.

I’d guess that the P1/P2 protocol is the same and that they should at least partly work together?

I do not know the details. I was only told that RTD-LT/CA is not compatible with new Altherma LT CB.

You can actually buy BRP069A62 for around €130.

Hello everyone,
actually it’s possible to buy the wireless adapter from ebay for under €50 (search for BRP069 or BRP069A43 for example). However there’s about 5 different variants of that with unclear/contradictory compatibility information, so I honestly have no idea which one works with which model. Does anyone know what the actual differences are? Is it just software/protocol related, or is it actually different hardware?
I didn’t have time yet to take my unit apart and try any reverse engineering. When I get to it again, I plan to buy the wifi adapter which seems to have the broadest support and go from there - at least I should be able to trace how exactly it talks to the unit, I hope…

Hi @krakra,

Thanks for the very useful information!

The MM1192 data sheet does not show how to connect it to the HBS, but the simpler MM1007 does, and it is relatively simple to connect. Reverse-engineering the data will be an interesting challenge. I have ordered both the MM1007 and MM1192 to start experimenting.

We have a 8kW Daikin(/Intergas) hybrid Altherma air-water heatpump/natural gas boiler combination. It can be a very energy-efficient combination, but the Daikin version also has its problems, most notably it sometimes defrosts too often, and worse, it sometimes does not detect that a defrost is needed (even though it could measure that the COP dives to near 1.0 when the airflow is completely blocked). Daikin does not provide any support for these problems, so I am looking to tweak it myself. Plan is to first read the messages on the P1P2 bus directly. Your information is very helpful to do that!

Kind regards,