Reading data on Daikin/Rotex P1/P2 control bus possible

Any interest in reading the data on the Daikin P1/P2 control bus?

(there was some interest on the old forum: Interface to Daikin Inverter system).

Using some simple circuitry and an Arduino Uno you can now read the data on the P1/P2 bus, and try to read things like temperature, flow, and derive COP values. The necessary code and documenation is now available under GitHub - Arnold-n/P1P2Serial: Monitor and control Daikin/Rotex (hybrid/Altherma) heat pumps via the 2-wire P1/P2 thermostat interface with an ATmega328P, ESP8266, and electronics. The P1P2Serial library and P1P2Monitor program perform low-level bus operation, the P1P2-bridge-esp8266 program interprets data from/to MQTT supporting Home Assistant MQTT discovery. P1P2Serial may also be used for other Japanese Home Bus System based standards: DIII-NET (F1/F2) bus, Mitsubishi M-Net bus, Toshiba TCC-Link, Hitachi H-link, Panasonic/Sanyo SIII-Net, Haier, York, and others..

Please share your results, as different heat pumps use different protocols on the bus.

Thanks for your contribution to the Arduino community!

I have a few suggestions:

  • Change the repository name to match the library name: P1P2Serial. You can do this from here: https://github.com/Arnold-n/P1P2Monitor/settings. I think structuring the repository as an Arduino library with the monitor as an example sketch will make it easier to use and more flexible for the users.
  • Move P1P2Monitor.ino to the examples/P1P2Monitor folder. This will allow the user to access that sketch via File > Examples > {library name} > P1P2Monitor after installing the library.
  • Use the correct file extension .py for your Python files, instead of the incorrect .pi extension.

If you'd like, I'm happy to submit pull requests for the latter two (not having the permission level to do the first).

pert:
I have a few suggestions:

Thanks for your feedback! I have implemented your suggestions.

Looks good!

Arnold-n:
Using some simple circuitry and an Arduino Uno you can now read the data on the P1/P2 bus,

Can you share some circuitry examples? I want to explore this.

Thanks

Tcmoreno:
Can you share some circuitry examples? I want to explore this.

Thanks

I have just seen them in Github.

Hello,

I would like to thank very much Arnold-n for this project and his interface.

I have an heating pump Daikin EHVZ08S18CB3V which is designed to manage 2 heating zones.
I also use Jeedom to monitor my KNX bus.

I tested the P1P2Monitor.ino on the serial monitor. I found that the character strings are correct and without errors (see attachement).

I actually don't understand wich material configuration and options are needed in order to use the MQTT protocol.
Is it possible to use any internet shield whith an arduino uno (wifi is not activated in my home) ?

Jeedom is able to manage a MQTT client.

Thanks if someone can help.

I apologize for these questions, but I am really a beginer in programming.

P1P2.txt (1.35 KB)

Jbpa:
I would like to thank very much Arnold-n for this project and his interface.

I actually don't understand wich material configuration and options are needed in order to use the MQTT protocol.
Is it possible to use any internet shield with an arduino uno (wifi is not activated in my home) ?

Thanks if someone can help.

Thanks for your feedback. Currently there is no MQTT client support on the Arduino Uno itself, it is only supported via an ESP8266/Arduino Uno combi.

One approach is to use a W5500 internet shield on the Arduino Uno and add MQTT client support to the P1P2Monitor code (currently the code for the W5500 only supports json output format over udp). I do not know whether this will still fit in the Arduino Uno.

Another approach is to have a USB host device (such as a Raspberry Pi) channel the "MQTT-like" messages from the Arduino Uno USB serial interface to a MQTT client, or to translate the serial raw code to MQTT messages on the USB host device.

Both approaches are on my TODO list, but may take some time before they hit github.

I succeeded to get all the informations sent by the arduino, through the USB port of my home automation PC with the following command :
cat /dev/ttyACM0 | mosquitto_pub -h localhost -t P1P2 -l
I set this command as service, and this is working.

I had to use the JSON file format and to remove the characters "J "of the output string.

I tried to use the ethernet connection (with an Uno and a W5100 shield). I saw the UDP packets, but MQTT is based on TCP. I was unable to use it.

I don't understand how to send command to the heating pump (if JSON file format could be use, for example). I noted that the reading some values are trigered by a command (power consumption and production...)

Hello,

On the Jeedom forum, a user asked me how to switch On/Off the heating pump and the DHW.
I searched in the documentation and I could'nt answer him.
I would like to know witch character string must be written on the serial port in order to do that.
Is it possible to use MQTT or the JSON format ?

Thank you very much for this work. I would be happy to provide a feedback of my EHVZ08S18CB3V.

Hi Jbpa,
Sorry for the late reply. You can send instructions over serial much like you would over mqtt, just as separate lines over serial (ending with newline):

  • <first line may be ignored, so flush input buffer>
    L1 < start as auxiliary controller>
    Z1
    Z0

If your system uses another parameter than the preconfigured parameter, select another parameter by, for example,
P31 <set param to control heating to 0x31>
L1
Hope this works!