Hack my Heat Pump and publish data onto emoncms

Hi,
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

/[0]/MNAE/1/UnitInfo/ModelNumber/la

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

NOTE:
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.

EDIT:
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) https://github.com/kpishere/homie_heatPump

Some pics in the wiki https://github.com/kpishere/homie_heatPump/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 - #29 by relghuar )

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:
http://www.grix.it/forum/forum_thread.php?ftpage=5&id_forum=1&id_thread=519140&tbackto=/forum/forum_discussioni.php?id_forum=1

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://192.168.1.200/mca","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:

PHYSICAL LAYER
Alternate Mark Inversion (bipolar signaling) Alternate Mark Inversion (AMI) . If you want to see some real screenshots from oscilloscope, have a look here: GRIX.IT FORUM - Help: decodifica protocollo seriale sconosciuto su Elettronica Generale
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 aliexpress.com 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?

COMMUNICATION PROTOCOL
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.

APPLICATION
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…
BR,
rel

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,
Arnold

is this what we are looking for ?
KLIC-DA

Bus KNX to Daikin Altherma LT

REF: ZN1CL-KLIC-DA

https://www.zennio.com/products/clima/klic-da

Hoi Douwe,

Thanks for the reference, and the KLIC-DA indeed supports the Daikin hybrid EHYHBH/EHYHBX models, at least in LWT mode. I don’t think it shows defrosts directlyl, and the number of writable settings is limited to a few basic operation settings (page 21 and 22 of EN manual). I think direct access to the P1P2 bus is more universal, so I will first try that. Reading the P1P2 bus should not be too difficult, but writing the P1P2 bus will be a bit more challenging.

Groeten,
Arnold

I have no experience with electronics, so for me it is still challenge. Could you please check that I understand it correctly? I will be connecting MM1192, here are both specs for reference:

MM1192 and MM1007

I assume that if I only want to read HBS, I have to connect pins 15 (IN 2) and 16 (IN 1) which lead to the “reception circuit”. I guess that “transmission circuit” is for writing to HBS. Pins 15 and 16 need to be connected through 0,022uF capacitor and 33kOhm resistor. Is it enough? The P1/P2 interface is powered (15V DC) and I do not want to fry my MM1192. What about polarity of the P1/P2 interface? I checked an installation manual for my BRP069A62 and it says that polarity of the P1/P2 bus does not matter…

Then I will connect 5V to pin 11 (Vcc) to power the MM1192 and ground to pin 13 (GND). I will read data on pin 1 (Reception DATA OUT).

Is that correct for simply reading the data? For reading the data I got one cheap “Logic Analyzer” (4.51£ 28% OFF|1pcs New Arrival Usb Logic Analyzer 24m 8ch, Mcu Arm Fpga Dsp Debug Tool - Replacement Parts - AliExpress)

I am still waiting for my MM1192. Usually it takes a month from China to Europe.

Your schematic is correct. I would also connect any unused input pins, as this is good practice: pins 5 (RESET) to GND and 6 (DATA IN) to GND.

The polarity of the interface does not matter here, that is why the A is in the AMI protocol.

The 15V will be “dissolved” by the 0.022uF (or 22nF) capacitor. You could add additional diodes to protect the inputs but the data sheet does not prescribe them and these diodes might affect the operation, so I would not do that. The 33kOhm resistors limit the initial current to 15V/(2*33kOhm)=0.25mA anyway.

The capacitors should not be electrolytic, as they have to withstand >20V in either direction. A ceramic type would do.

It would be good to add a simple bypass capacitor for the IC (could also be 22nF) between GND and 5V near the IC.

It is not easy to find the MM1192 for sale. There is no supply via the official channels. Mitsumi (Japan) removed the data sheet for the MM1192 and MM1007 from their website in 2007. So it seems we are purchasing old stock (or perhaps restamped clones). Xlsemi (China) has a data sheet for the XL1192 (www.xlsemi.com/datasheet/XL1192%20datasheet-English.pdf). This is a clone of the MM1192. The data sheet has some more detail than the MM1192 data sheet. The PDF is time-stamped 2017, but nobody sells this chip. Xlsemi does not have a MM1007 clone.

The logic analyzer will help to show whether the circuit works, but not to understand the data. As you discovered the data is not standard serial but each 1-bit is only 50% high on the data out signal (see timing chart on page 4 of the MM1192 data sheet and page 4-5 of the Echonet part III spec). I intend to make a proto shield for a Teensy or for an Arduino (Mega 2560) and adapt the AltSoftSerial library (from PJRC/Teensy’s Paul Stoffregen (https://www.pjrc.com/)).

1 Like

Thanks a lot!

In a pinch, two electrolytics connected back to back i.e. + to +  or  - to -
are the equivalent of a non-polarized capacitor. Connected in that manner, the values need to be
increased. e.g. two 1µf caps in series yields 0.5µf

For caps connected in series the formula is:
image

Today we designed and ordered a PCB (via OSHPark) which should fit both on the Arduino Mega 2560 or on the Arduino Uno. Next step is to adapt the AltSoftSerial library until components and PCBs come in and we can start soldering.

Thanks for the hint - interesting, I didn’t know polarized capacitors allow this operation, but I learned they have an inherent diode function. Some googling learned me interesting new things. Anyway I think I stay with the ceramic capacitor as it is smaller.