bonjour, je me lance dans un petit tuto de mes découvertes de pilotage de ma pac hitachi Yutaki Combi 2.0:) voici mes sources et remerciements
il faut donc acheter le module P1P2-ESP-interface (aussi nommé P1P2MQTT bridge) chez Arnold (un peu plus de 100€, pas besoin du module Ethernet. on le reçoit sous 10j, on l’assemble, on le connecte au bus de l’unité intérieur (sur le même bus que la télécommande, peu importe le sens de polarité, éventuellement vérifier qu’il y a bien une tension d’environ 15V continu sur le bus. Attention a connecter PAC hors tension. Dois y avoir moyen de se le faire soit même, attendre que Neuvidor se lance…)
Le module P1P2 émet ainsi un réseau wifi, il faut s’y connecter à l’aide de son téléphone (code wifi P1P2P3P4), on ouvre une page internet à l’adresse http:// 192.168.4.1. On tombe sur le page de configuration du module P1P2 ; on renseigne son reseau wifi, l’adresse ip de sont Home assistant, ainsi que son logon/login mqtt. (voir l’excellente video youtube du journaldethomas sur l’intégration zigbee qui explique très bien comment installer Mosquitto broker).
au bout de qq minute, sous l’intégration Mosquitto vous allez voir apparaitre un appareil P1P2 et tout plein d’entité… qui ne vous servent à rien car par défaut le firmware du module P1P2 est pour du daikin.
Il faut donc flasher 2 nouveaux firmwares dans le module P1P2 : il faut récupérer les 2 firmwares nommé H-Link sous P1P2Serial/Firmware_images at H-link · Arnold-n/P1P2Serial · GitHub et suivre les instructions de la même pages. j’ai un peu galéré donc je résume ici : il y a donc 2 firmwares à télécharger : 1 pour l’ATMEGA et 1 pour l’ESP.
- Pour l’ATMEGA : sous windows, on ouvre une fenêtre cmd.exe et on se place dans un répertoire ou on a préalablement téléchargé avrdude et le firmware P1P2Monitor-20221218-v0.9.29-H-link-P1P2-ESP-interface.ino.hex et on tape (192.168.1.192 : c’est l’adresse ip du mon module P1P2) :
avrdude.exe -c avrisp -p m328p -P net:192.168.1.192:328 -e -Uflash:w:P1P2Monitor-20221218-v0.9.29-H-link-P1P2-ESP-interface.ino.hex:i
- pour l’ESP, en ligne de commande ca doit être :
python espota.py -i <IPv4> -p 8266 --auth=P1P2MQTT -f P1P2-bridge-esp8266-20221218-v0.9.29-H-link-P1P2-ESP-interface.ino.bin
mais chez mois ca n’a pas fonctionné, je suis donc passé par un IHM trouvé sous : ESP8266-OTA-ESPOTA - DOMOTRONIC ca marche impec !
En utilisant l’utilitaire MQTT explorer (http://mqtt-explorer.com/ version portable) on peut voir les trames MQTT qui circulent. On se connecte comme ca : (192.168.1.44 = adresse ip de mon HA, username et password sont ceux de l’utilisateur mqtt créer sous HA.
puis on clique sur connecte et on voit les trames!!!
nota : si on utilise MQTT explorer avant de flasher les firmware on y voir des message d’erreurs dans les trames.
maintenant tout se passe sous HA, le but étant de récupérer la trame et de les transformer en valeur décimale, dans le fichier configuration.yaml il faut ajouter (merci Leon223) :
mqtt:
sensor:
- name : Hitachi
unique_id: hitachi_status
icon: mdi:transfer-right
state_topic: "P1P2/R/192"
value_template: >
{% set parts = value.split(" ") %}
{% set list = namespace(numbers=[]) %}
{% if parts[4].startswith("89002901010100E2") %}
{% set data = parts[4] %}
{% for i in range(0, (int)((data | count) / 2)) %}
{% set index = i * 2 %}
{% set combine = data[index] + "" + data[index+1] %}
{% set list.numbers = list.numbers + [combine | int(combine,16)] %}
{% endfor %}
{{ list.numbers | to_json }}
{% else %}
{{ states('sensor.hitachi') }}
{% endif %}
avec state_topic : récupérer les infos de MQTT explorer (entourées en bleu dans l’image précédente)
ce code permet de mettre dans le sensor.hitachi un tableau avec les valeurs décimales de la trame commençant par 89002901010100E2
comme on peut le voir dans MQTT explorer d’autres trames circulent, j’ai donc créer aussi des sensors avec toutes les autres trames, je suis en train de chercher à quoi ca correspond. J’ai déjà trouvé la valeur de la température de mon thermostat intérieur dans la trame commençant par 89002901010100E3, j’ai donc créé un sensor.hitachi1. j’ai trouver environ 10 trames différentes,
Puis faut faire du reverse ingéniering pour trouver à quoi correspond toutes les valeurs du tableaux du sensor en comparant les valeurs affichées sur la télécommande !! et créer les capteurs qui vont bien. En voici déjà plein (à ajouter dans configuration.yaml :
template:
- sensor:
- name: "Hitachi Operation status"
unique_id: hitachi_operation_status
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.8 }}
- name: "Hitachi Operation status text"
unique_id: hitachi_operation_status_text
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{% set status = list.8 %}
{% if status == 72 %}
en chauffage ECS
{% elif status == 68 %}
arreté
{% elif status == 69 %}
en attente
{% elif status == 70 %}
Chauffage En demande
{% elif status == 11 %}
Alarm
{% endif %}
- name: "Hitachi Evi"
unique_id: hitachi_evi
unit_of_measurement: '%'
icon: mdi:percent
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.9 }}
- name: "Hitachi Evo"
unique_id: hitachi_ev0
unit_of_measurement: '%'
icon: mdi:percent
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.10 }}
- name: "Hitachi Freq"
unique_id: hitachi_freq
unit_of_measurement: 'Hz'
icon: mdi:percent
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.11 }}
- name: "Hitachi Courant"
unique_id: hitachi_courant
unit_of_measurement: 'A'
icon: mdi:percent
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.13 }}
- name: "Hitachi TWI"
unique_id: hitachi_twi
unit_of_measurement: '°C'
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.17 }}
- name: "Hitachi TWO"
unique_id: hitachi_two
unit_of_measurement: '°C'
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.18 }}
- name: "Hitachi T ECS inferieure"
unique_id: hitachi_t_ecs_inf
unit_of_measurement: '°C'
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.21 }}
- name: "Hitachi T eau corrigée"
unique_id: hitachi_twcorrigee
unit_of_measurement: '°C'
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.32 }}
- name: "Hitachi T Liq"
unique_id: hitachi_t_liq
unit_of_measurement: '°C'
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.25 }}
- name: "Hitachi T ext"
unique_id: hitachi_text
unit_of_measurement: '°C'
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.26 }}
- name: "Hitachi T ext moyenne"
unique_id: hitachi_textmoyenne
unit_of_measurement: '°C'
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.27 }}
- name: "Hitachi Td"
unique_id: hitachi_td
unit_of_measurement: '°C'
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.28 }}
- name: "Hitachi Te"
unique_id: hitachi_te
unit_of_measurement: '°C'
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi') | from_json) %}
{{ list.29 }}
- name: "Hitachi Température intérieure"
unique_id: hitachi_temp_interieure
icon: mdi:temperature-celsius
state: >
{% set list = (states('sensor.hitachi1') | from_json) %}
{{ list.24 + (list.25)/10 }}
attention pour le dernier la source est sensor.hitachi1. la valeur de la température est sur 2 valeurs : les unités à la 24eme place et les dixiemes (0 ou 5) à la 25eme place d’ou ma formule list.24 + (list.25)/10
reste plus qu’a créer une carte entités dans un dashbord du type :
type: entities
entities:
- entity: sensor.hitachi
- entity: sensor.hitachi_operation_status
- entity: sensor.hitachi_operation_status_text
- entity: sensor.hitachi_temperature_interieure
- entity: sensor.hitachi_evi
- entity: sensor.hitachi_evo
- entity: sensor.hitachi_freq
- entity: sensor.hitachi_courant
- entity: sensor.hitachi_twi
- entity: sensor.hitachi_two
- entity: sensor.hitachi_t_ext
- entity: sensor.hitachi_t_ext_moyenne
- entity: sensor.hitachi_t_eau_corrigee
- entity: sensor.hitachi_t_ecs_inferieure
- entity: sensor.hitachi_t_liq
- entity: sensor.hitachi_td
- entity: sensor.hitachi_te
title: PAC
et on obtient :
voici aussi toutes les trames trouvées :
RAF1 : trouver a quoi servent les autres trames et les autres valeurs : mode eco/confort du chauffage, de l’ECS, puissance consommée, restituée, loi d’eau, pression, débit.
RAF2 : la on ne fait que de la lecture, le but étant aussi de faire de l’écriture pour piloter la PAC via HA
Nota : pour le passage en mode eco chauffage, je passe via un contact sec de mon Ecodevice RT2 et un planning sous HA, mais quand j’aurai réussi à faire une communication bidirectionnel je pourrai le faire via le module P1P2.