Les différentes passerelles, pour ce protocole, existant sur le marchés sont vendues à un prix exorbitant (facilement plus de 100€). Je cherchais donc une autre solution.
La méthode indiquée utilise un arduino uno et le projet suivant : 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.
Le développeur m’a vendu la carte servant d’interface à un prix de 37€, frais de ports inclus, ce qui me revient à environ 50€ au total. Il en assure la vente.
La carte se présente comme ceci :
Les deux fils de bus se connectent sur les broches situées en haut à gauche, la carte s’enfiche sur les broches 0 / +5V et entrées 8 et 9 de l’arduino. Il y a aussi deux broches sur lesquels on peut mettre un cavalier pour rajouter une résistance de terminaison de ligne, en cas de problème pour lire les données.
Pour la connexion du bus, c’est simple, il faut se connecter en parallèle de l’IHM Daikin ; Sur le schéma de raccordement de ma PAC, cela équivaut à l’interface utilisateur P1P2 en option :
La polarité n’a pas d’importance.
Il faut ensuite modifier le sketch arduino P1P2Monitor.ino du répertoire P1P2Serial/example/P1P2Monitor/ :
- commenter (//) la ligne #define MONITORSERIAL décommenter la ligne //#define JSON du fichier P1P2Config.h ;
- supprimer le caractère J et l’espace de la ligne 282 (Serial.print(F(« J {" »)); ) du fichier P1P2Monitor.ino ;
- Pour pouvoir compiler l’ensemble, il faut aussi rajouter la librairie P1P2Serial.h à l’IDE Arduino.
Téléverser le sketch sur l’arduino.
Pour intégrer à Jeedom les valeur lues sur le bus, le plugin JMQTT et la commande mosquitto_pub sont utilisés :
cat /dev/ttyACM0 | /usr/bin/mosquitto_pub -h localhost -t P1P2 --stdin-line
Je fais tourner cette commande en démon, via systemd.
L’arduino est connecté sur le bus USB de mon PC Jeedom, mais il semble possible d’utiliser une liaison wifi.
Le résultat est assez intéressant, je lis les valeurs suivantes :
- Température de départ ;
- Température de retour ;
- Température de l’ECS ;
- Débit du circulateur ;
- Etat compresseur ;
- Etat circulateur ;
- Température extérieure …
Par contre, je n’ai pas encore compris comment envoyer des commandes vers la pompe à chaleur, et notamment si la commande mosquitto_pub pouvait être utilisée.