Aller au contenu

Quick App - Pilotage climatisation PAC Mitsubishi en local avec ESP32


Messages recommandés

Posté(e)

Ah oui ESPEasy ça me dit quelque chose, c'est pas tout jeune je crois.
Quand Home Assistant est arrivé, ils ont intégré nativement ESPHome qui est issu des mêmes équipes, après son passage ça a un peu balayé tous les anciens projets j'ai l'impression (Tasmota, etc...)

 

Pour le reste, je ne pourrai pas t'aider beaucoup plus...

Si tu veux attaquer ESPHome via l'API REST, c'est possible, c'est ce que j'ai utilisé dans la première version de mon QuickApp, mais il y a pas mal de limitations, comme l'absence de mise à jour en temps réel (il faut interroger à intervalle régulier), pas de contrôle de la vitesse du ventilateur (bug non corrigé), ni de l'orientation des ailettes (non prévu à priori).

Tu peux t'aider de la doc que tu as peut être déjà : https://esphome.io/web-api/index.html

Ce sont de simples requêtes GET et POST.

Voici 2 exemples en ligne de commande issus de mes notes pendants mes tests, en supposant que le le composant climate s'appelle split_mitsubshi (configuré dans le fichier YAML envoyé vers l'ESP32 lors de la compilation de ESPHome) :

curl "http://1.2.3.4/climate/split_mitsubishi/set?mode=OFF" -X POST --data-raw true
curl "http://1.2.3.4/climate/split_mitsubishi/set?target_temperature=20.5" -X POST --data-raw true

 

Posté(e)

Oui beaucoup de projet son resté sur le bas coté avec EspHome

D'un coté c'est bien que tout soit uniforme, de l'autre ce serai bien que EspHome soit natif chez toute les solutions domotique...

 

Alors c'est exactement ce que je veux, de simple requête GET et POST, de préférence GET pour le taper direct avec l'URL.

Dans mes contrôles je n'ai pas besoin de beaucoup de fonction, juste la température le mode "chauffage & clim", et on/off.

 

La ventilation est gérer directement en automatique sur le split, et pour les retours du split vers jeedom je peux faire une requête toute les 15 min cela ne me dérange pas.

 

Par contre j'ai essayé de taper

http://1.2.3.4/climate/split_mitsubishi/set?mode=OFF

Ou 

 

http://1.2.3.4/climate/split_mitsubishi/set?target_temperature=20.5

Mais cela me met une page 404 : Cette page du site 192.168.1.x est introuvable

 

Merci pour ton aide !

 

 

Posté(e)

Tu as lu la doc ?

Parce que c'est indiqué clairement :

- GET c'est pour lire

- POST pour écrire
C'est de l'API REST assez standard.

Posté(e)

Oui j'ai lu la doc, mais j'avoue ne pas avoir tout compris ...

Que ce soit les GET pour lire ou les post pour écrire rien n'y fait ...

 

Posté(e)

Commence déjà par les requête de type GET (avec ton navigateur, tout simplement) pour lire le statut du module.
Si ça ne répond pas, c'est peut être parce que tu n'as pas saisis le bon nom de ton composant Climate, comme dit plus haut, ça se configure dans le fichier YAML.

Posté(e) (modifié)

Bon déjà

http://192.168.1.80/climate/split_room/ 

ça fonctionne :

J'ai ça en retour

{"id":"climate-split_room","mode":"OFF","max_temp":"31.0","min_temp":"16.0","step":0.5,"action":"OFF","state":"OFF","fan_mode":"OFF","swing_mode":"OFF","current_temperature":"NA","target_temperature":"21.0"}

 

 

EDIT : 

Pour faire un post voici la commande :

curl "http://192.168.1.80/climate/split_room/set?target_temperature=25" -X POST --data-raw true

 

Modifié par micka260
Posté(e) (modifié)

Du coup voici les POST :

 

 

Changement de température :

curl "http://192.168.1.80/climate/split_room/set?target_temperature=23" -X POST --data-raw true


Changement de mode :

curl "http://192.168.1.80/climate/split_room/set?mode=HEAT" -X POST --data-raw true
curl "http://192.168.1.80/climate/split_room/set?mode=COOL" -X POST --data-raw true
curl "http://192.168.1.80/climate/split_room/set?mode=OFF" -X POST --data-raw true

Reste à arriver à intégrer les GET et POST dans Jeedom maintenant :) mais tu m'as bien assez aidé comme ça !

Je vais aller voir sur le forum Jeedom pour voir comment faire cela, et bien sur je viendrais mettre la solution ici :2:

 

Pour la récupération des informations en GET c'était facile, c'est un fichier JSON

image.thumb.png.9362216894e869c9d29420a17c2f3779.png

Modifié par micka260
  • Like 1
Posté(e) (modifié)

Alors pour l'intégration dans Jeedom : 

Il y a la solution via MQTT qui j'ai écartés car elle nécessite de re programmer les modules.

 

La solution retenu est via des commandes GET pour la récupération des informations et des commandes POST pour l'envoie des requetes.

Les fichiers de configuration de l'ESP sont ceux utilisées dans le TUTO précédemment au Chapitre 3 : 

 

mitsubishi-room.yaml

secrets.yaml

 

Une fois vos modules configuré j'ai fixé l'adresse IP dans le DHCP, dans mon cas :

192.168.1.80

 

Une fois que vous êtes ici vous pouvez suivre ce qu'il suit pour l'intégration a Jeedom :

image.thumb.png.ae83ba5a5a9d098b97fb2f2d95f84da2.png

 

Il ne faut pas tenir compte du nom : mitsubishi-salon, mais bien du nom Split Room pour configurer les commandes.

Vous pouvez donc aller à cette adresse

http://192.168.1.80/climate/split_room

Qui vous donne un fichier JSON 

Dans mon cas :

{"id":"climate-split_room","mode":"OFF","max_temp":"31.0","min_temp":"16.0","step":0.5,"action":"OFF","state":"OFF","fan_mode":"OFF","swing_mode":"OFF","current_temperature":"NA","target_temperature":"nan"}

Il est important de comprendre qu'ici il s'agit des informations du panneau de contrôle dans un fichier JSON pour la suite.

Ensuite pour les commandes nous allons utiliser les commande POST.

 

La commande s'écrit ainsi : 

curl "http://192.168.1.80/climate/split_room/set?CeQuOnVeuxModifier=Valeur" -X POST --data-raw true

 

Pour modifier la température à 25°C

curl "http://192.168.1.80/climate/split_room/set?target_temperature=25" -X POST --data-raw true

Pour modifier le mode de fonctionnement

curl "http://192.168.1.80/climate/split_room/set?mode=COOL" -X POST --data-raw true

Prendre les "nom" dans le fichier JSON et forcer la valeur par le POST

 

On passe à Jeedom :

 

Sous Jeedom vous allez avoir besoin de deux Plugin, Script et Virtuel

 

On va commencer par créer un virtuel qui nous permettra d'avoir un curseur pour le réglage de la température :

Créer votre virtuel ainsi :

 

image.png.f3b4d9025fef97fc92aa3416de18c324.png

image.thumb.png.818de8597029ad09c37b8e1c61916775.png

 

Ce virtuel n'a pour but que d'avoir une valeur sous forme de curseur, plus facilement exploitable par la suite.

 

Nous allons maintenant créer le Script dans le plugin Script :

 image.png.a9b3e4d67279df9cb0c3b671182e18d1.png

 

La récupération sur le JSON se fera ainsi :

image.thumb.png.250c9cd0413da17fd097ef64a576d739.png

image.thumb.png.5ce1a3e30b8a8211683304054d8f447a.png

 

Pour les POST nous allons les mettre dans le même virtuel :

image.thumb.png.20be98b3609d962b12b5aca5ae7a7046.png

 

Seul le POST de la température demande d'avoir un lien avec le virtuel que nous venons de créer :

image.thumb.png.548c59884d101fe0d4ae50d4a6b63f05.png

 

Ce qui nous donne une configuration complète du script ainsi

image.thumb.png.445a3b928c0c56faf579abeff6d2d699.png

 

Il ne reste plus qu'a fait un petit Scénario qui permet d'envoyer la commande de la consigne lorsque nous modifions la valeur sur le curseur :

Dans le déclencheur ce sera la modification de la valeur de notre virtuel :

image.thumb.png.679aee3799954b150aecfdef5271fa73.png

 

Et dans l'action, l'envoie de la commande de la consigne sur le Script :

image.png.9022b5f4501b3d4bba20870be5ca0d32.png

 

Je remercie tout ceux qui m'on aidé pour arriver à ce résultat, ici et sur le forum officiel Jeedom également :) 

Modifié par micka260
  • Like 1
Posté(e) (modifié)

Pour éviter d'arrêter la machine maintenant : 

 

1285600539_Capturedcran2024-02-2311_48_37.thumb.png.fc83335df94bf7a7317b58d5a28935ad.png

 

 

1- J'ai récupéré ce connecteur sur une ancienne pac Ajtech
    Est ce que la taille du connecteur semble-être correcte (épaisseur environ 4mm, largeur 10mm, profondeur 8mm)
    Les couleurs de fils semblent ne pas être en bonne place, mais je vais en souder d'autres quelques cm après le connecteur)

 

2-Pour l'installation et configuration de ESPHome sur le module ESP32
    Est-on obligé de faire avec le module connecté au port CN105, ou peut-on le faire sur table connecté en usb sur une machine (Windows ou Linux)  en simulant l'alim envoyé par le connecteur CN105.
    Autrement dit sans le TXD et RXD .

Modifié par henri-allauch
Posté(e)

Sur la première page il y a la référence du connecteur officiel "PAP-05V-S", et le PDF des spécifications complètes en téléchargement, dont voici un extrait :

 

large.JST_Housing_PAP-05V-S_Dimensions.png.84010b34f8fca7d3bf9fb4905d045877.png

 

Si tu as un pied à coulisse tu peux vérifier si ça correspond exactement à ton connecteur, notamment pour sa largeur qu'on n'arrive pas à deviner sur la photo.

 

Pour la correspondance des couleurs c'est pas trop grave, l'important est de s'y retrouver.

Mais normalement, avec une petite pointe, tu peux déclipser les contacts métalliques pour les sortir du boitier en plastique blanc, puis les réinsérer dans l'ordre désiré.

 

  • Thanks 1
Posté(e)

Merci

J'avais vu les côtes des pinoches mais pas celles du connecteur.

Je viens de vérifier avec un pied à coulisse et ça correspond. 

 

As tu un avis pour ma deuxième question (installation EspHome)? 

Posté(e)

Désolé j'ai oublié de répondre à la seconde question.
 

Bien sûr, tu peux faire toute la config avec l'ESP32 attaché et alimenté en USB par le PC.

De toute façon lors de la première compilation du programme, pour l'envoyer sur l'ESP32, il doit obligatoirement être connecté en USB au PC, et c'est bien par ce port qu'il va tirer son alimentation (en 5V)

  • Thanks 1
Posté(e) (modifié)

Bon sous linux c'est un peu different pour installer esphome . je ferais une trace complète quand cela fonctionnera .

 

tout à l'air OK jusqu'a 17:27:33 

[17:22:42][C][wifi:577]: WiFi:
[17:22:42][C][wifi:409]:   Local MAC: E4:65:B8:71:34:1C
[17:22:42][C][wifi:414]:   SSID: 'XXXXX'
[17:22:42][C][wifi:415]:   IP Address: 192.168.1.120
[17:22:42][C][wifi:417]:   BSSID: 2C:08:23:3F:49:52
[17:22:42][C][wifi:418]:   Hostname: 'test'

17:22:42][C][wifi:425]:   Subnet: 255.255.255.0
[17:22:42][C][wifi:426]:   Gateway: 192.168.1.1
[17:22:42][C][wifi:427]:   DNS1: 192.168.1.1
[17:22:42][C][wifi:428]:   DNS2: 0.0.0.0
[17:22:42][C][logger:447]: Logger:
[17:22:42][C][logger:448]:   Level: DEBUG
[17:22:42][C][logger:449]:   Log Baud Rate: 115200
[17:22:42][C][logger:451]:   Hardware UART: UART0
[17:22:42][C][captive_portal:088]: Captive Portal:
[17:22:42][C][mdns:115]: mDNS:
[17:22:42][C][mdns:116]:   Hostname: test
[17:22:43][C][ota:096]: Over-The-Air Updates:
[17:22:43][C][ota:097]:   Address: test.local:3232
[17:22:43][C][ota:100]:   Using Password.
[17:22:43][C][ota:103]:   OTA version: 2.
[17:22:43][C][api:139]: API Server:
[17:22:43][C][api:140]:   Address: test.local:6053
[17:22:43][C][api:144]:   Using noise encryption: NO
c[17:27:33][ota:117]: Boot seems successful, resetting boot loop counter.
[17:27:33][D][esp32.preferences:114]: Saving 1 preferences to flash...
[17:27:33][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
 

A ce niveau le Ping sur sur 192.168.1.120  c'est OK

 

Ça attend 10 minutes  puis 


[17:37:42][E][api:128]: No client connected to API. Rebooting...
[17:37:42][app:127]: Forcing a reboot...
[17:37:42][W][wifi_esp32:458]: Event: Disconnected ssid='RWLB6M' bssid=2C:08:23:3F:49:52 reason='Association Leave'
[17:37:42]ets Jul 29 2019 12:21:46
[17:37:42]

 

 

Et cela recommence 10 minute puis Boot ... 

Donc la partie Test ne se termine pas  ???

 

No client connected to API. Rebooting... C'est la fin normale du TEST ?

 

Modifié par henri-allauch
Posté(e) (modifié)

Le reboot est normal, car dans le YAML, l'API native est activée, donc il s'attend à une connexion.
 

Dans ton cas, tant que tu ne connectes pas le QuickApp sur ton module (ce que tu peux faire même sans être connecté au port CN105), le module rebootera à intervalle régulier avec le message "No client connected to API. Rebooting..."

 

C'est une sorte de watchdog intégré, les développeurs d'ESPHome ont pensé à tout :)

 

Modifié par Lazer
Posté(e)

Ah OK merci ... je vais continuer au delà de la partie TEST ..

 

Donc pour installer esphome sur linux ubuntu 22.04 

 

J'ai suivi : https://esphome.io/guides/installing_esphome.html 

 

--Version de Python
henri@maclinux:~$ python3 --version
Python 3.10.12

 

--Install the python3-venv 
henri@maclinux:~$ sudo apt install python3.10-venv

 

-- Création d'un environnement virtuel pour ESPHome et ses dépendances
henri@maclinux:~$ python3 -m venv venv
henri@maclinux:~$ source venv/bin/activate
(venv) henri@maclinux:~$

 

--Install esphome
(venv) henri@maclinux:~$ pip3 install esphome

 

--Version esphome   (/home/henri/venv/bin/esphome  version)
(venv) henri@maclinux:~$ esphome version       
Version: 2024.2.0

---To set this permanently, you can run echo 'export PATH=$PATH:$HOME/.local/bin' >> $HOME/.bashrc, then log out and back in.

 

je n'ai pas dans la précipitation créée un répertoire pour esphome comme le précise ta méthode ( mais je rangerai cela )

Donc pour le moment test.yaml est naturellement présent sur ma home directory

ainsi q'un repertoire venv ( Virtual environnent) contient dans bin esphome 

 


(venv) henri@maclinux:~$ 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 firmware. Yay!

============= STEP 1 =============

 

ET ici cela démarre comme décrit au début de tes explications

 

 

 

  • Like 1
Posté(e)

Pour installer le  mitsubishi-salon.yam  il m'a simplement fallu ajouter le Paquet git  

 

Puis la commande esphome run mitsubishi-salon.yaml est passée 

La seule Erreur : 
[10:49:43][C][MitsubishiHeatPump:467]: Connection to HeatPump failed. Marking MitsubishiHeatPump component as failed.
[10:49:43][E][component:113]: Component esphome.coroutine was marked as failed.
[10:49:43][MitsubishiHeatPump:063]: ESPHome MitsubishiHeatPump version 2.4.1
Mais ça a l'air OK

 

L'accès par un navigateur est OK

et le QuickApp semble en attente -- Normal l'ESP32 n'est pas dans le Split 

 

La trace

[24.02.2024] [11:01:55] [TRACE] [QA_MITSUBISHI_141]: QuickApp Mitsubishi v2.00 - Initialization - Parent device
[24.02.2024] [11:01:55] [TRACE] [QA_MITSUBISHI_141]:
[24.02.2024] [11:01:55] [DEBUG] [QA_MITSUBISHI_141]: Using tools library v2.30
[24.02.2024] [11:01:55] [DEBUG] [QA_MITSUBISHI_141]: Using ESPHome library v2.00
[24.02.2024] [11:01:56] [DEBUG] [QA_MITSUBISHI_141]: ESPHome library v2.00 successfully initialized
[24.02.2024] [11:01:56] [TRACE] [QA_MITSUBISHI_141]: Add "thermostatFanMode" interface to device
[24.02.2024] [11:01:56] [TRACE] [QA_MITSUBISHI_141]:
[24.02.2024] [11:01:56] [TRACE] [QA_MITSUBISHI_141]: QuickApp Mitsubishi v2.00 - Initialization - Parent device
[24.02.2024] [11:01:56] [TRACE] [QA_MITSUBISHI_141]:
[24.02.2024] [11:01:56] [DEBUG] [QA_MITSUBISHI_141]: Using tools library v2.30
[24.02.2024] [11:01:56] [DEBUG] [QA_MITSUBISHI_141]: Using ESPHome library v2.00
[24.02.2024] [11:01:56] [DEBUG] [QA_MITSUBISHI_141]: ESPHome library v2.00 successfully initialized
[24.02.2024] [11:01:56] [DEBUG] [QA_MITSUBISHI_141]: ESPHome URL : tcp://192.168.1.99:6053
[24.02.2024] [11:01:56] [DEBUG] [QA_MITSUBISHI_141]: Refresh interval : 60 seconds
[24.02.2024] [11:01:56] [DEBUG] [QA_MITSUBISHI_141]: Using internal temperature sensor
[24.02.2024] [11:02:00] [DEBUG] [QA_MITSUBISHI_141]: Found mitsubishi-salon ESPHome 2024.2.0 running on Espressif wemos_d1_mini32
[24.02.2024] [11:02:01] [DEBUG] [QA_MITSUBISHI_141]: Name = Split Salon - Object ID = split_salon - Unique ID = mitsubishi-salonclimatesplit_salon
[24.02.2024] [11:02:01] [DEBUG] [QA_MITSUBISHI_141]: Set heatingThermostatSetpointCapabilitiesMax property to 31.0
[24.02.2024] [11:02:01] [DEBUG] [QA_MITSUBISHI_141]: Set coolingThermostatSetpointCapabilitiesMax property to 31.0
[24.02.2024] [11:02:01] [DEBUG] [QA_MITSUBISHI_141]: Set heatingThermostatSetpointCapabilitiesMin property to 16.0
[24.02.2024] [11:02:01] [DEBUG] [QA_MITSUBISHI_141]: Set coolingThermostatSetpointCapabilitiesMin property to 16.0
[24.02.2024] [11:02:01] [DEBUG] [QA_MITSUBISHI_141]: Found user-defined service set_remote_temperature(temperature)
[24.02.2024] [11:02:01] [DEBUG] [QA_MITSUBISHI_141]: Found user-defined service use_internal_temperature()
[24.02.2024] [11:02:01] [TRACE] [QA_MITSUBISHI_141]: Create child device "Temperature split" of type "com.fibaro.temperatureSensor"...
[24.02.2024] [11:02:01] [TRACE] [QA_MITSUBISHI_141]: QuickApp Mitsubishi - Initialization - Child device #143 Temperature split QuickApp
[24.02.2024] [11:02:01] [DEBUG] [QA_MITSUBISHI_141]: QuickApp child device #143 "Temperature split" of type "com.fibaro.temperatureSensor" created successfully
[24.02.2024] [11:02:03] [TRACE] [QA_MITSUBISHI_141]: Split Salon mode changed from to Off
[24.02.2024] [11:02:03] [WARNING] [QA_MITSUBISHI_141]: Split Salon fan mode "Off" not supported

 

 

Voila un grand merci @Lazer pour ce travail colossal partagé.

  • Like 1
Posté(e) (modifié)

Merci @Lazer pour cette description, j'ai réalisé 3 cartes ESP32 :-)

Maintenant, je me pose la question de savoir si les différents modes de swing peuvent être ajoutés à la QuickApp ? Ce serait bien :-)
Donc le mode swing plus les positions manuelles des verticales et horizontal vanes.

 

Merci,

Rik

 

climate:
  - platform: mitsubishi_heatpump
    name: ${friendly_name}
    id: hp

 

    horizontal_vane_select:
      name: Horizontal Vane
    vertical_vane_select:
      name: Vertical Vane 

 

 

Scherm­afbeelding 2024-02-25 om 21.03.14.png

Scherm­afbeelding 2024-02-25 om 21.03.41.png

Modifié par Rik Bastiaens
Posté(e)

Génial, merci pour l'info.

 

En revanche je ne vais pas faire la modification du QuickApp tout de suite, j'ai d'autres sujets sur le feu là, mais je garde ça sous le coude.

 

Par ailleurs je vois que ce change n'est pas encore intégré à la branche principale du projet, avec un peu de chance ça le sera bientôt.

Posté(e)

@henri-allauch j'arrive un peu après la guerre, mais dans mon c'est ce que j'ai fais je n'ai toujours rien de connecté sur mes cassettes je suis full USB pour l'alimentation et les tests. (Je n'ai pas encore reçu les connecteurs)

 

Pour les mises a jour du module ESP cela pourra se faire sans débrancher le module et sans passer par la case réinjection USB ?

  • Thanks 1
×
×
  • Créer...