Chauffage/climatisation gainable HEIWA

Bonjour,

Je suis actuellement en plein projet de construction de maison.
Mon chauffagiste va me poser un chauffage/climatisation de marque HEIWA avec module wifi pour un coté « domotique » via l’application HEIWA.
Je découvre complétement le monde passionnant de la domotique et je m’interroge encore sur la solution définitive que je vais choisir. Elle sera probablement guidée par la possibilité pour moi de rassembler au même endroit la domotique chauffage (HEIWA), volets roulants (filaire SOMFY) filaires que je pense équiper en interrupteurs Legrand by netatmo, etc…

Je ne suis pas informaticien mais je ne suis pas contre mettre les mains dans le cambouis. Ma question est donc la suivante:

Existe-t-il une solution toute faites (je ne pense pas vu mes recherches), un tuto, une bonne âme volontaire pour m’aider (reverse engineering) à intégrer mon chauffage gainable à HA ?

Merci

Salut,

les Legrand, c’est du Zigbee, donc ça devrait être plutôt facile.
En revanche ta PAC c’est une autre histoire, me souviens de quelqu’un qui demandait la même chose il y a quelques temps et je ne crois pas qu’il y avait de solution connue.

Mais sinon j’ai vu qu’ils répondent sur leurs vidéos youtube, y’a surement moyen de leur demander si leur API est ouverte et documentée.

Bonjour,

Merci pour le lien, j’avais bien vu la vidéo. Dans l’idéal j’aurais voulu passer par une seule interface unifiée.
J’ai pris contact avec le service client qui m’indique que le passage par leur cloud est obligatoire. Pourtant sur les documentations techniques on retrouve à de nombreux endroits le mot « modbus ».
Quelle serait la marche à suivre pour se lancer dans une intégration des modules wifi HEIWA à HA ?

Salut,

j’ai bien compris que tu voulais pouvoir intégrer ça à HA, j’ai mis la vidéo, mais c’était plus pour le service client qui répond en commentaire que pour leur app.

Avant de penser à faire une intégration dédiée pour HA, il faut déjà arriver à communiquer avec la PAC.
Et pour ça visiblement tu as 2 pistes:

  • Le cloud de Heiwa, ok ils disent que c’est obligatoire, mais y a t’il moyen d’avoir les détails de leur API pour pouvoir accéder aux mêmes infos que l’App mobile, mais au travers d’un programme en python? Ce n’est pas forcément évident de déduire ces infos si le constructeur ne fournit pas de doc.

  • Tu parles de Modbus, si c’est bien actif sur la PAC c’est peut-être une solution sans passer parle cloud, c’est un vieux protocole de communication entre automates et HA a une intégration native. Je n’ai jamais utilisé et je ne sais pas ce qu’il faut savoir pour l’utiliser.

Merci pour la reponse
Jai fait une demande au service client mais visiblement ils ne sont pas décidés a me repondre.
Wait and See
Je vais eplucher la documentation car je ne sais pas par lu commencer y compris si je suis la piste modbus

Bonjour,

Je suis dans le même cas…
Par contre, j’ai une climatisation gainable, équipée d’un module pour gestion des zones. A priori, ce module est équipé nativement d’une interface ModBus. Néanmoins, je n’ai trouvé la liste des adresses nul part …
Mes mails à Heiwa sont restés sans réponse. De même pour ceux envoyés à zoning.es (qui semble avoir conçu ce module). Vraiment dommage, sachant que la compatibilité Modbus est mise en avant dans beaucoup de communication de la part d’Heiwa, alors que cette fonction est totalement inutilisable dans les adresses !!

Bonjour, avez vous réussis ? Il existe une intégration, a prioris les clim HEIWA peuvent être connecter grâce a l’intégration GREE, je n’ai pas encore de module WIFI donc je ne peux pas l’essayer.

Ca me donne aussi envie d’essayer un module WIFI GREE qui est exactement le même que les HEIWA mais vendu quasi moitié prix, je me décide dans la semaine …

Bonjour,
Non, je n’ai pas du tout progressé (pas mal occupé par d’autres projets …)
Auriez-vous des détails sur le module Wifi GREE, et l’interface utilisée pour communiquer avec la PàC ?
Mais attention : la problématique est différente entre une clim « classique » et une clim gainable : pour cette dernière, la clim elle-même est contrôlée par un module « zoning », gérant la température de chaque zone et démarrant la clim (via un boitier d’interface) → il faut alors pouvoir controler le module zoning et non la clim elle-même.

Bonjour Encko,

Désolé je viens juste de tomber sur ton post mais si ça t’interresse toujours, je peux te partager mon retour d’experience.

Je possède deux clim gainable Heiwa, une avec zoning pour les chambres et une sans zoning pour les pièces à vivre (Salon, salle à manger et cuisine).

  • :+1: Sur la clim sans zonning, je l’ai fait équiper d’un module wifi et je la gère sans problème avec l’intégration Gree dans home assistant. C’est vraiment confortable de pouvoir gérer à distance depuis HA, la température, le mode chauffage ou froid et le marche/arret.
  • :-1: Pour la clim avec zoning, il faudrait pouvoir commander le module zoning directement mais il n’existe pas de module wifi, du coup je suis coincé. D’autant plus que j’ai choisi des thermostats sans fils que j’ai installé dans chaque chambres et comme ils fonctionnent sur du 868Mhz je n’ai même pas moyen de d’intercepter les informations.
    Je viens de découvrir le post de @sinseman44 et il y aurait peut une piste en passant Modbus. Je vais creuser à temps perdu.

Salut @PatriceL
Quelle est la ref de ton module wifi ?parce que je regarde pour éventuellement prendre une heiwa aussi mais de ce que j’ai lu tous les module wifi ne sont pas compatibles

Salut @Tochy effectivement il semble qu’il y ait plusieur références. Pour ma part, ma gainable est une HEIWA PRO Essentiel Zen et le module Wifi est le HPOWF1-V1

1 « J'aime »

Salut Patrice,

J’ai un gainable HEIWA PRO 2 que j’ai connecté au réseau WIFI via une télécommande filaire (HP20FA PREM V1) qui fait également office de module WIFI. J’ai bien relié ma climatisation gainable (sans Air Zoning) sur l’application GREE+. Cependant, lorsque j’intègre le plug in GREE Climate sous Home Assistant, l’intégration se passe bien, sauf qu’aucune climatisation n’est découverte sur le réseau.

Je me demandais si tu avais été dans le même cas?

Salut à tous :waving_hand:

Je voulais partager mon retour d’expérience, parce que j’ai littéralement passé une journée entière à galérer pour comprendre comment piloter ma PAC gainable HEIWA avec module zoning depuis Home Assistant, sans dépendre du cloud ni des modules Wi-Fi propriétaires.


:gear: Contexte

  • Modèle : HEIWA PRO gainable, avec plénums motorisés (zoning)

  • Tablette murale “Ernest” (propriétaire, app mobile HEIWA / Gree-like)

  • Objectif : tout piloter localement via RS485 / Modbus, sans passer par leur API fermée

  • Environnement : Home Assistant 2025.10, sur Home Assistant Green

  • Interface : clé USB RS485 à ~15 € (type FTDI FT232R)


:microscope: Tentatives et galères

J’ai d’abord essayé de sniffer les API cloud de la tablette Ernest (via mitmproxy, Wireshark et capture de paquets).

:backhand_index_pointing_right: Mauvaise nouvelle : tout est chiffré (TLS + signature interne) et les commandes sont encapsulées dans un protocole propriétaire non documenté.

Impossible à rejouer ni à détourner proprement sans reverse complet du firmware Android.

Donc, j’ai bifurqué vers le bus Modbus RTU présent à la fois sur :

  • la console PAC murale, et

  • le module zoning (plénum).

Et là… victoire :tada:

Après pas mal de sniff et de tests, j’ai pu cartographier les registres Modbus et construire une intégration 100 % locale.


:light_bulb: Ce que je pilote aujourd’hui

:white_check_mark: PAC principale

  • ON / OFF

  • Température de consigne

  • Modes : off, fan, cool, heat, dry, auto

:white_check_mark: Zoning (AirZone / Plénums)

  • 4 plénums indépendants avec position en % (0 à 100)

Tout fonctionne en temps réel depuis Home Assistant, sans passer par le cloud.


:toolbox: Matériel & branchement

  • Clé RS485 branchée sur /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_*

  • Fils du bus : A+ / B- directement sur le bornier du module zoning

  • Protocole : Modbus RTU, 9600 bauds, 8N1

  • Les plénums répondent sur slave: 201, la PAC sur slave: 1


:receipt: Configuration complète (YAML à coller dans

/config/packages/heiwa.yaml

)

modbus:
  - name: heiwa_bus
    type: serial
    method: rtu
    port: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_B001GGXG-if00-port0
    baudrate: 9600
    stopbits: 1
    bytesize: 8
    parity: N
    timeout: 2
    sensors:
      - name: Heiwa PAC Flag
        slave: 1
        address: 2
        input_type: holding
        scan_interval: 5

input_boolean:
  heiwa_pac_power:
    name: Heiwa PAC Marche/Arrêt
    icon: mdi:power

input_number:
  heiwa_pac_setpoint:
    name: Heiwa PAC Consigne (°C)
    min: 16
    max: 30
    step: 1
    mode: slider
    icon: mdi:thermometer

  heiwa_plenum_bureau:
    name: Plénum Bureau (%)
    min: 0
    max: 100
    step: 5
    icon: mdi:valve

  heiwa_plenum_chambre:
    name: Plénum Chambre (%)
    min: 0
    max: 100
    step: 5
    icon: mdi:valve

  heiwa_plenum_sejour:
    name: Plénum Séjour (%)
    min: 0
    max: 100
    step: 5
    icon: mdi:valve

  heiwa_plenum_sejour2:
    name: Plénum Séjour 2 (%)
    min: 0
    max: 100
    step: 5
    icon: mdi:valve

input_select:
  heiwa_pac_mode:
    name: Mode de la PAC
    options:
      - off
      - fan
      - cool
      - heat
      - dry
      - auto
    icon: mdi:alpha-m-box

automation:
  # Marche / arrêt
  - alias: Heiwa PAC - Power
    trigger:
      - platform: state
        entity_id: input_boolean.heiwa_pac_power
    action:
      - variables:
          reg_value: "{{ 170 if is_state('input_boolean.heiwa_pac_power','on') else 85 }}"
      - service: modbus.write_register
        data:
          hub: heiwa_bus
          slave: 1
          address: 2
          value: [ "{{ reg_value|int }}" ]

  # Consigne température
  - alias: Heiwa PAC - Setpoint
    trigger:
      - platform: state
        entity_id: input_number.heiwa_pac_setpoint
    action:
      - variables:
          tset: "{{ states('input_number.heiwa_pac_setpoint')|int }}"
      - service: modbus.write_register
        data:
          hub: heiwa_bus
          slave: 1
          address: 20
          value: [ "{{ tset }}" ]
      - delay: "00:00:00.5"
      - service: modbus.write_register
        data:
          hub: heiwa_bus
          slave: 1
          address: 20
          value: [ "{{ tset }}" ]

  # Mode (off, fan, cool, heat, dry, auto)
  - alias: Heiwa PAC - Mode
    trigger:
      - platform: state
        entity_id: input_select.heiwa_pac_mode
    action:
      - variables:
          mode: "{{ states('input_select.heiwa_pac_mode') }}"
          mode_code: >
            {% if mode == 'cool' %}1{% elif mode == 'heat' %}2
            {% elif mode == 'dry' %}3{% elif mode == 'fan' %}4
            {% elif mode == 'auto' %}5{% else %}0{% endif %}
      - choose:
          - conditions: "{{ mode == 'off' }}"
            sequence:
              - service: modbus.write_register
                data:
                  hub: heiwa_bus
                  slave: 1
                  address: 2
                  value: [85]
          - conditions: "{{ mode in ['cool','heat','dry','auto','fan'] }}"
            sequence:
              - service: modbus.write_register
                data:
                  hub: heiwa_bus
                  slave: 1
                  address: 2
                  value: [170]
              - delay: "00:00:00.3"
              - service: modbus.write_register
                data:
                  hub: heiwa_bus
                  slave: 1
                  address: 17
                  value: [ "{{ mode_code|int }}" ]

  # Plénums
  - alias: Plénum Bureau
    trigger:
      - platform: state
        entity_id: input_number.heiwa_plenum_bureau
    action:
      - service: modbus.write_register
        data:
          hub: heiwa_bus
          slave: 201
          address: 101
          value: [ "{{ states('input_number.heiwa_plenum_bureau')|int }}" ]

  - alias: Plénum Chambre
    trigger:
      - platform: state
        entity_id: input_number.heiwa_plenum_chambre
    action:
      - service: modbus.write_register
        data:
          hub: heiwa_bus
          slave: 201
          address: 201
          value: [ "{{ states('input_number.heiwa_plenum_chambre')|int }}" ]

  - alias: Plénum Séjour
    trigger:
      - platform: state
        entity_id: input_number.heiwa_plenum_sejour
    action:
      - service: modbus.write_register
        data:
          hub: heiwa_bus
          slave: 201
          address: 301
          value: [ "{{ states('input_number.heiwa_plenum_sejour')|int }}" ]

  - alias: Plénum Séjour 2
    trigger:
      - platform: state
        entity_id: input_number.heiwa_plenum_sejour2
    action:
      - service: modbus.write_register
        data:
          hub: heiwa_bus
          slave: 201
          address: 401
          value: [ "{{ states('input_number.heiwa_plenum_sejour2')|int }}" ]

:brain: Structure Modbus découverte

Élément

Slave

Registre

Description

Valeurs

Power

1

2

ON/OFF

85=OFF / 170=ON

Mode

1

17

Mode PAC

1=cool, 2=heat, 3=dry, 4=fan, 5=auto

Fan speed

1

19

Vitesse ventilo

1..5 ou 3=auto

Setpoint

1

20

Consigne °C

16–30

Plénum Bureau

201

101

% d’ouverture

0–100

Plénum Chambre

201

201

% d’ouverture

0–100

Plénum Séjour

201

301

% d’ouverture

0–100

Plénum Séjour 2

201

401

% d’ouverture

0–100


:ice: Ce que j’envisage ensuite

:white_check_mark: Créer une intégration HACS “Heiwa Local” pour simplifier tout ça

:white_check_mark: Ajouter un climate template HA pour unifier la consigne et le mode dans un thermostat

:white_check_mark: Publier la doc complète sur GitHub avec schéma de câblage


:speech_balloon: Si vous galérez avec une config similaire (PAC gainable HEIWA avec zoning / tablette Ernest), je peux partager le YAML complet et les adresses fonctionnelles.

Et si quelqu’un veut m’aider à en faire un vrai HACS, je suis chaud :grinning_face_with_smiling_eyes:

bon courage.

Nico

1 « J'aime »