Pilotage local (hors cloud)
Climatisation Pompe-à-Chaleur split Mitsubishi
Module microcontrôleur ESP32
Présentation :
Ce tutoriel décrit la mise en oeuvre du pilotage local des splits de pompe à chaleur du fabricant Mitsubishi à l'aide d'un module ESP32.
Le fonctionnement est alors totalement indépendant de l'interface Wi-Fi MAC-587IF-E (livrée en standard avec les splits ou en option selon la génération) et connectée à MELCloud.
On peut utiliser le pilotage en local, en cloud, ou les 2, cela ne pose aucun souci, le rafraichissement du statut se fait toujours.
Pour ce faire, un petit module Wemos D1 Mini ESP32 est connecté sur le port CN105 disponible sur tous les splits de la marque.
Dans le cas d'une pompe à chaleur multi-splits reliés à un groupe extérieur unique, il faut installer un module ESP32 sur chaque split.
Les microcontrôleurs ESP32 fonctionnent sous ESPHome, qui est un projet issu de Home Assistant. Ce logiciel n'est pas nécessaire, puisque le QuickApp proposé pour la box Fibaro communique directement avec l'entité ESPHome installée sur le module.
Cela dit, si demain vous migrez votre installation domotique depuis la box Fibaro vers Home Assistant, l'opération n'en sera que plus facile puisque HA reconnait automatiquement les modules ESPHome sur le réseau.
L'intégration [GitHub] geoffdavis / esphome-mitsubishiheatpump est utilisée, qui repose elle-même sur le projet [GitHub] SwiCago / HeatPump.
Pour information, ce port CN105 est prévu par Mitsubishi pour les intégrations locales, hors cloud.
On peut soit y relier des interfaces domotiques conçues par les fabricants partenaires de Mitsubishi (souvent des solutions propriétaires...), soit la télécommande filaire PAR-41MAA avec son petit écran LCD, à fixer sur un mur. Vous avez probablement déjà vu cela dans les bureaux ou hôtels, mais c'est également courant dans les maisons équipées de climatisations gainables.
Sommaire :
Les 4 principales étapes de la mise en oeuvre sont :
Sertissage et soudage des connecteurs JST sur le module ESP32
Installation du module ESP32 dans le split mural
Installation et configuration de ESPHome sur le module ESP32
Installation et utilisation du QuickApp
(pas nécessairement dans cet ordre exact, par exemple la programmation des modules ESP32 avec ESPHome peut être effectué en tout premier)
Liste de courses :
ESP32 Wemos D1 Mini
J'ai utilisé avec succès les 2 références suivantes :
https://www.amazon.fr/gp/product/B08BTLYSTM/
https://fr.aliexpress.com/item/32858054775.html : prendre la version CP2104 drive
J'ai eu l'un des modules dont le Wi-Fi ne fonctionnait pas sur Amazon, l'avantage avec la marque AZDelivery c'est qu'ils assurent un vrai SAV et m'ont envoyé un exemplaire de remplacement sans souci.
Chez Aliexpress c'est moins cher, mais sans garantie, donc il vaut mieux en prendre un petit stock d'avance.
Note : il est possible d'utiliser n'importe quelle autre référence de module ESP8266 ou ESP32, il faudra adapter le montage en conséquence.
L'intérêt du module proposé ici est qu'il supporte une alimentation directe en 5V, qui est la tension délivrée par le port CN105 du split, sans nécessiter de composant de régulation de tension 3.3V.
La page suivante liste les retours d'expériences des utilisateurs : https://github.com/SwiCago/HeatPump/issues/13#issuecomment-1333774865
Connecteur JST série PA
Le connecteur Mitsubishi CN105 est en réalité un connecteur JST de la série PA.
On peut trouver sur Amazon ou Aliexpress des connecteurs déjà sertis, mais la longueur des fils ne le plaisait pas, car cela oblige alors à positionner le module ESP32 dans le boitier d'électronique du split, cependant celui-ci étant entièrement protégé par un carter en alu faisant office de cage de Faraday anti-parasitage, on peut s'attendre à ce que la portée du Wi-Fi soit médiocre.
Cela dit si vous arrivez à trouver un câble qui vous convient, ça vous évitera la fastidieuse étape de sertissage des connecteurs à la main, avec la pince qui va bien.
J'ai donc fait le choix de sertir mes propres connecteurs, sur le fil souple présenté plus loin.
En plus de pouvoir choisir la longueur des fils, cela me permet également de créer une rallonge, à savoir un connecteur branché sur le port CN105 de la carte mère du split, et un connecteur flottant libre en dehors du boitier. Ainsi, si plus tard je souhaite pour une raison ou une autre remplacer le module ESP32, je pourrai le faire très simplement sans devoir démonter à nouveau tout le carter du split mural. Évidemment cette rallonge est optionnelle, il est tout à fait possible de venir connecter le module ESP32 directement sur le port CN105 avec les fils de la longueur adaptée.
A noter que bien que le connecteur propose 5 ports, on n'en utilise en fait que 4.
Donc pour 1 "housing" (le connecteur en plastique blanc), il faut 4 "contacts".
Prévoir un peu de rab de contacts, car j'ai raté quelques sertissages, à cause de ma pince qui n'était pas parfaitement adaptée, et du coup de main à prendre.
Connecteur JST :
Housing PAP-05V-S : https://fr.aliexpress.com/item/1005003975721562.html
Contact SPHD-002T-P0.5 : https://fr.aliexpress.com/item/1005003975795283.html
Rallonge JST
Housing PALR-05VF : https://fr.aliexpress.com/item/1005003975817234.html
Contact SPAL-002T-P0.5 : https://fr.aliexpress.com/item/1005003975680813.html
Retainer PMS-05V-S : https://fr.aliexpress.com/item/1005003975742520.html
Connecteur de base pour le port CN105 :
Connecteur pour la rallonge optionnelle :
Documentation de référence : JST PA Family Series PA-PAF-PAL Connector.pdf
Fil souple 26 AWG
La section 26 AWG convient parfaitement pour le sertissage sur les connecteurs JST.
J'ai utilisé la référence suivante sur Aliexpress, mais après usage il s'avère que ça n'était pas le choix le plus judicieux, car la gaine extérieur en silicone est trop épaisse, et gêne le sertissage et l’insertion des contacts dans les connecteurs.
Je vous conseille donc de trouver un autre modèle de fil, en respectant la section 26 AWG.
https://www.aliexpress.com/item/32872439317.html : prendre la version 26 AWG et couleur Box 1 (bleu, noir, vert, rouge, jaune)... les couleurs ne sont pas imposées, mais respecter le code couleur c'est plus pratique pour s'y retrouver
Pince à sertir
J'ai utilisé une pince à sertir que j'avais en stock, mais qui n'était pas parfaitement adaptée, donc j'ai un peu galéré.
Bien que les photos présentées dans ce tutoriel aient été effectuées avec ma pince, après recherche je pense que le modèle suivant est parfaitement adapté :
IWS-2820 Crimping Tool : https://www.aliexpress.com/item/4000073000826.html : prendre la version IWS-2820
Fer à souder + Étain
Le modèle de votre choix, il s'agit ici de faire des soudures très simples, pas besoin d'un modèle sophistiqué.
En ce qui me concerne j'ai cette station depuis des années, mais qui ne semble plus commercialisée :
Lampe loupe
Optionnel, mais tout de même conseillé si vous n'avez pas une très bonne vue, c'est quand même beaucoup plus pratique pour manipuler les petits connecteurs JST.
Dans la série des outils optionnels, une pince coupante, une pince à dénuder pour l'extrémité des fils, une 3ème main pour tenir l'ESP32 et les fils pendant le soudage, et un petit tapis de soudure en silicone pour protéger votre plan de travail.
Éventuellement, vous aurez également besoin de 2 résistances de pull-up de 10 kΩ chacune ainsi que d'un petit peu de gaine thermorétractable pour la liaison série (voir explications plus loin).
Chapitre 3 : Installation et configuration de ESPHome sur le module ESP32
Introduction : je donne les explications pour un ordinateur fonctionnant sous Windows.
Python
Sous Windows, préalablement à l'installation de ESPHome, il faut commencer par installer Python qui est disponible en téléchargement ici : https://www.python.org/downloads/
J'ai réalisé ce tutoriel avec la version 3.11.1, mais je vous conseille d'utiliser la dernière version disponible au moment de votre installation.
Après téléchargement de l'exécutable, l'installation en elle-même n'appelle aucun commentaire particulier car c'est du type "Next Next Next" dans l'assistant.
Une fois cette opération terminée, ouvrir une fenêtre d'invite de commande pour vérifier la bonne installation :
Microsoft Windows [version 10.0.19045.2251]
(c) Microsoft Corporation. Tous droits réservés.
C:\Users\Lazer> python --version
Python 3.11.1
Installer ensuite les composants wheel et esphome à l'aide des commandes suivantes :
C:\Users\Lazer> pip3 install wheel
Collecting wheel
Downloading wheel-0.38.4-py3-none-any.whl (36 kB)
Installing collected packages: wheel
Successfully installed wheel-0.38.4
C:\Users\Lazer> pip3 install esphome
...
Vérifier la version de ESPHome installée, qui sera plus récente que cette de ce tutoriel :
C:\Users\Lazer> esphome version
Version: 2022.11.5
ESPHome
Documentations de référence :
Installing ESPHome Manually
Getting Started with the ESPHome Command Line
Tout d'abord on crée un répertoire de travail pour ESPHome et on se place dedans :
C:\Users\Lazer> cd Documents
C:\Users\Lazer\Documents> mkdir ESPHome
C:\Users\Lazer\Documents> cd ESPHome
Étape facultative de test :
Cette étape est facultative, néanmoins elle est bien utile pour valider le bon fonctionnement de votre installation, et que le module ESP32 est bien reconnu.
Puis lancer l'assistant à l'aide de la commande suivante, qui va déployer une instance ESPHome de test sur votre microcontrôleur :
name : test
ESP32/ESP8266 : ESP32
board : wemos_d1_mini32 (à adapter si vous utilisez un autre type de module que celui proposé dans ce tuto)
ssid : < le nom de votre réseau Wi-Fi >
PSK : < le mot de passe de votre réseau Wi-Fi >
C:\Users\Lazer\Documents\ESPHome> esphome wizard test.yaml
Hi there!
I m the wizard of ESPHome :)
And I m here to help you get started with ESPHome.
In 4 steps I m going to guide you through creating a basic configuration file for your custom ESP8266/ESP32 firmware. Yay!
============= STEP 1 =============
_____ ____ _____ ______
/ ____/ __ \| __ \| ____|
| | | | | | |__) | |__
| | | | | | _ /| __|
| |___| |__| | | \ \| |____
\_____\____/|_| \_\______|
===================================
First up, please choose a name for your node.
It should be a unique name that can be used to identify the device later.
For example, I like calling the node in my living room livingroom.
(name): test
Great! Your node is now called "test".
============= STEP 2 =============
______ _____ _____
| ____|/ ____| __ \\
| |__ | (___ | |__) |
| __| \___ \| ___/
| |____ ____) | |
|______|_____/|_|
===================================
Now I d like to know what microcontroller you re using so that I can compile firmwares for it.
Are you using an ESP32 or ESP8266 platform? (Choose ESP8266 for Sonoff devices)
Please enter either ESP32 or ESP8266.
(ESP32/ESP8266): ESP32
Thanks! You ve chosen ESP32 as your platform.
Next, I need to know what board you re using.
Please go to http://docs.platformio.org/en/latest/platforms/espressif32.html#boards and choose a board.
(Type esp01_1m for Sonoff devices)
For example "nodemcu-32s".
Options: alksesp32, az-delivery-devkit-v4, bpi-bit, briki_abc_esp32, briki_mbc-wb_esp32, d-duino-32, esp-wrover-kit, esp32-devkitlipo, esp32-evb, esp32-gateway, esp32-poe, esp32-poe-iso, esp32-pro, esp320, esp32cam, esp32dev, esp32doit-devkit-v1, esp32doit-espduino, esp32thing, esp32thing_plus, esp32vn-iot-uno, espea32, espectro32, espino32, etboard, featheresp32, featheresp32-s2, firebeetle32, fm-devkit, frogboard, healtypi4, heltec_wifi_kit_32, heltec_wifi_kit_32_v2, heltec_wifi_lora_32, heltec_wifi_lora_32_V2, heltec_wireless_stick, heltec_wireless_stick_lite, honeylemon, hornbill32dev, hornbill32minima, imbrios-logsens-v1p1, inex_openkb, intorobot, iotaap_magnolia, iotbusio, iotbusproteus, kits-edu, labplus_mpython, lolin32, lolin32_lite, lolin_c3_mini, lolin_d32, lolin_d32_pro, lopy, lopy4, m5stack-atom, m5stack-core-esp32, m5stack-core2, m5stack-coreink, m5stack-fire, m5stack-grey, m5stack-timer-cam, m5stick-c, magicbit, mgbot-iotik32a, mgbot-iotik32b, mhetesp32devkit, mhetesp32minikit, microduino-core-esp32, nano32, nina_w10, node32s, nodemcu-32s, nscreen-32, odroid_esp32, onehorse32dev, oroca_edubot, pico32, piranha_esp32, pocket_32, pycom_gpy, qchip, quantum, s_odi_ultra, sensesiot_weizen, sg-o_airMon, sparkfun_lora_gateway_1-channel, tinypico, ttgo-lora32-v1, ttgo-lora32-v2, ttgo-lora32-v21, ttgo-t-beam, ttgo-t-watch, ttgo-t1, ttgo-t7-v13-mini32, ttgo-t7-v14-mini32, turta_iot_node, vintlabs-devkit-v1, wemos_d1_mini32, wemosbat, wesp32, widora-air, wifiduino32, xinabox_cw02
(board): wemos_d1_mini32
Way to go! You ve chosen wemos_d1_mini32 as your board.
============= STEP 3 =============
__ ___ ______ _
\ \ / (_) ____(_)
\ \ /\ / / _| |__ _
\ \/ \/ / | | __| | |
\ /\ / | | | | |
\/ \/ |_|_| |_|
===================================
In this step, I m going to create the configuration for WiFi.
First, what s the SSID (the name) of the WiFi network test should connect to?
For example "Abraham Linksys".
(ssid): MonWiFi
Thank you very much! You ve just chosen "MonWiFi" as your SSID.
Now please state the password of the WiFi network so that I can connect to it (Leave empty for no password)
For example "PASSWORD42"
(PSK): XXXXX
Perfect! WiFi is now set up (you can create static IPs and so on later).
============= STEP 4 =============
____ _______
/ __ \__ __|/\\
| | | | | | / \\
| | | | | | / /\ \\
| |__| | | |/ ____ \\
\____/ |_/_/ \_\\
===================================
Almost there! ESPHome can automatically upload custom firmwares over WiFi (over the air) and integrates into Home Assistant with a native API.
This can be insecure if you do not trust the WiFi network. Do you want to set a password for connecting to this ESP?
Press ENTER for no password
(password):
DONE! I ve now written a new configuration file to test.yaml
Next steps:
> Follow the rest of the getting started guide:
> https://esphome.io/guides/getting_started_command_line.html#adding-some-features
> to learn how to customize ESPHome and install it to your device.
On découvre qu'un fichier test.yaml, au format YAML, a été automatiquement créé :
C:\Users\Lazer\Documents\ESPHome> dir
12/12/2022 21:34 <DIR> .
12/12/2022 21:34 <DIR> ..
12/12/2022 21:34 <DIR> .esphome
12/12/2022 21:34 406 test.yaml
1 fichier(s) 406 octets
3 Rép(s) 333 484 572 672 octets libres
Il faut maintenant connecter le module ESP32 sur votre ordinateur à l'aide d'un câble USB, puis lancer le Gestionnaire de périphériques de Windows.
Dans cet exemple, le module est reconnu sur le port COM4 :
Lancer ensuite la commande suivante qui compiler, uploader, et exécuter le code ESPHome sur le microcontrôleur.
Lorsqu'il demande le nom du port COM sur lequel est reconnu votre ESP32 connecté, entrer le numéro du choix correspondant, dans mon exemple il s'agit du n°2 pour COM4 :
C:\Users\Lazer\Documents\ESPHome> esphome run test.yaml
...
Found multiple options for uploading, please choose one:
[1] COM1 (USB Serial Port (COM1))
[2] COM4 (Silicon Labs CP210x USB to UART Bridge (COM4))
[3] Over The Air (test.local)
(number): 2
...
[18:00:36][C][wifi:038]: Setting up WiFi...
[18:00:36][C][wifi:051]: Starting WiFi...
[18:00:36][C][wifi:052]: Local MAC: 00:00:00:00:00:00
[18:00:36][D][wifi:428]: Starting scan...
[18:00:42][D][wifi:443]: Found networks:
[18:00:42][I][wifi:487]: - 'MonWiFi' (00:00:00:00:00:00) ▂▄▆█
[18:00:42][D][wifi:488]: Channel: 6
[18:00:42][D][wifi:489]: RSSI: -73 dB
[18:00:42][I][wifi:277]: WiFi Connecting to 'MonWiFi'...
[18:00:45][I][wifi:560]: WiFi Connected!
[18:00:45][C][wifi:382]: Local MAC: 00:00:00:00:00:00
[18:00:45][C][wifi:383]: SSID: 'MonWiFi'
[18:00:45][C][wifi:384]: IP Address: 192.168.1.2
...
J'ai abrégé la sortie d'écran car c'est très long (compilation du code...)
On constate qu'à la fin du processus, il se connecte automatiquement au réseau WiFi et obtient une adresse IP.
Dans une autre fenêtre de commande, on peut par exemple le pinguer pour s'assurer que la communication est OK :
C:\Users\Lazer> ping -n 2 192.168.1.2
Envoi d’une requête 'Ping' 192.168.1.2 avec 32 octets de données :
Réponse de 192.168.1.2 : octets=32 temps=95 ms TTL=255
Réponse de 192.168.1.2 : octets=32 temps=93 ms TTL=255
Statistiques Ping pour 192.168.1.2:
Paquets : envoyés = 2, reçus = 2, perdus = 0 (perte 0%),
Durée approximative des boucles en millisecondes :
Minimum = 93ms, Maximum = 95ms, Moyenne = 94ms
Le module est donc parfaitement opérationnel.
Fin de l'étape facultative de test.
Déploiement configuration ESPHome Mitsubishi
Télécharger les 2 fichiers YAML suivants :
mitsubishi-room.yaml
secrets.yaml
Le premier fichier, mitsubishi-room.yaml, est le fichier de configuration permettant d'utiliser l'intégration Climate avec le composant mitsubishi_heatpump.
Il faut utiliser un fichier différent pour chaque pièce, dans le cas où plusieurs splits sont utilisés dans la maison, afin que chacun soit identifier avec un nom bien distinct.
Dans ce cas, il suffit de remplacer "room" dans le nom du fichier par un nom de pièce plus parlant pour votre installation, par exemple "mitsubishi-salon.yaml" et de modifier les premières lignes du fichier en conséquence :
substitutions:
name: mitsubishi-salon
friendly_name: Split Salon
Le second fichier, secrets.yaml, est le fichier de configuration des mots de passes, dans lequel vous devez au minimum modifier le nom de votre réseau Wi-Fi et son mot de passe afin que le module ESP32 puisse se connecter automatiquement dessus.
wifi_ssid: MonWiFi
wifi_password: MonMotDePasseWiFi
wifi_fallback_ap_password: ESPHomeFallbackSecretAP
ota_password: ESPHomeOTAsecret
Comme pour le test précédent, il faut compiler et envoyer le code ESPHome vers le microcontrôleur ESP32 à l'aide de la commande suivante :
C:\Users\Lazer\Documents\ESPHome> esphome run mitsubishi-room.yaml
Cette opération est à répéter pour chacun des modules à programmer, en les connectant au port USB de votre ordinateur les uns à la suite des autres. Attention le numéro du port COM est susceptible de changer pour chaque carte, bien vérifier ce point dans le Gestionnaire de périphériques.
Après avoir obtenu une adresse IP, le module intègre une interface Web et est donc maintenant directement accessible via un navigateur :
http://192.168.1.2
Une fois cette étape validée, il est possible de déconnecter le module du port USB et d'aller l'installer dans le split et de le connecter sur le port CN105 (éventuellement en utilisant une rallonge comme proposé dans ce tuto, ce qui simplifie l'opération).
Dès qu'il est connecté, le module ESP32 est alimenté le split et se connecte automatiquement au réseau Wi-Fi.
Si la communication série entre ESPHome et le port CN105 du split est opérationnelle, on peut dores et déjà visualiser l'état du split et le piloter en local :
Je vous conseille fortement d'utiliser le serveur DHCP de votre box/routeur Internet pour forcer une adresse IP fixe pour chaque split. En effet, cette adresse IP sera par la suite utilisée par le QuickApp pour piloter chaque split.