Piloter sa pompe à chaleur MITSUBISHI en local avec une sonde déportée

Salut,

Je ne suis pas équipé et me suis posé la question, la response semble négative :
https://github.com/geoffdavis/esphome-mitsubishiheatpump/issues/51

@+

Bon depuis hier j’ai encore l’appli Melcloud dans les choux. Elle ne communique plus avec mes 3 unités wifi. Du coup je vais partir sur cette solution.

Deux questions pour ceux qui y sont déjà passé.

  • Au début de ce thread, le module ESP avait l’air faire se comporter la PAC comme un radiateur (chauffe / chauffe pas). Avez-vous réussi à le régler pour qu’il laisse la PAC gérer son propre cycle de chauffe ?
  • Est-ce qu’un ESP32 « classique » fonctionnerait ?

Merci !

Salut,
Idem chez moi.
Melcloud est dans les choux !!! pas de communication avec mes PAC depuis hier.
Je vais m’y mettre ce week-end.
Je pense partir sur cette solution:

1 « J'aime »

Je suis également le sujet, car mes 6 clims ne remontent plus les infos non plus depuis 2-3 jours…
Et j’ai acheté pour 472 € de modules wifi à la con pour ça…

C’est tellement débile de devoir passer par un cloud (lent qui plus est) pour simplement contrôler une unité chez soi… Tout ce trafic de data sur Internet complètement inutile…
Et comme on le voit périodiquement, il suffit d’une panne de serveur, d’une erreur coté Mitsubishi, ou même d’un souci de connexion Internet, et plus rien ne marche, alors que tout pourrait tourner en local sans soucis…

J’arrive même pas à comprendre quelle logique se cache derrière ce besoin de faire tout transiter par leurs serveurs. Ils y gagnent quoi à part payer ces ressources pour rien ?

Au passage quand tu vois l’interface années 2000 de l’appli Melcloud, tu comprends l’interet que porte la boite sur les aspects connectés. Tres dommage pour un des leaders de la climatisation.

J’ai melcloud custom qui fonctionne
C est clair que l interface de l appli officielle est deg

Bonjour,

Après une longue absence je suis revenu sur le projet pour voir s’il y avait d’autres avancées.
J’ai vu que le travail de geoffdavis a été repris par Eric Chavet pour être adapté avec d’autres fonctionnalités. Il semble très actif sur le projet. Merci à lui !!
Vous trouverez son Fork ici : GitHub - echavet/MitsubishiCN105ESPHome: Mix of MisubishiHeatpump from SwiCago and esphome-mitsubishiheatpump from Geoffdavis.

La principale fonctionnalité attendue est la possibilité de contrôler les vannes verticales.
Toutes les fonctionnalités sont là :

Other New Features

  • Additional components for supported units: vane orientation (fully supporting the Swicago map), compressor frequency for energy monitoring, and i-see sensor.
  • Enhanced UART communication with the Heatpump to eliminate delays in the ESPHome loop(), which was a limitation of the original SwiCago library.
  • Byte-by-byte reading within the loop() function ensures no data loss or lag, as the component continuously reads without blocking ESPHome.
  • UART writes are followed by non-blocking reads. The responses are accumulated byte-by-byte in the loop() method and processed when complete, allowing command stacking without delays for a more responsive UI.
  • Code is divided into distinct concerns for better readability.
  • Extensive logging for easier troubleshooting and development.
  • Ongoing refactoring to further improve the code quality.
  • Additional diagnostic sensors for understanding the behavior of the indoor units while in AUTO mode

Voici le code qui fonctionne chez moi :

substitutions:
  name: clim-rdc-esph
  friendly_name: Ma Clim RDC

esphome:
  name: ${name}
  # Pour la carte ESP8266 ESP-01
  board: esp01
  platform: ESP8266

# Pour la carte esp82666mod_12f
#esp8266:
  #board: d1_mini

uart:
  id: HP_UART
  baud_rate: 2400
  tx_pin: 1
  rx_pin: 3

external_components:
  - source: github://echavet/MitsubishiCN105ESPHome

ota:
  password: "51ab42c48eeb3b3b54ca934ad0051347"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none
  
  # Optional manual IP
  #manual_ip:
    #static_ip: 192.168.1.145
    #gateway: 192.168.1.254
    #subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "${friendly_name} ESP Fallback Hotspot"
    password: "1234"
    #password: !secret fallback_password

captive_portal:


# Enable Web server.
web_server:
  port: 80

# Enable logging
logger:
  hardware_uart: UART1
  level: INFO
  logs:
    EVT_SETS : INFO
    WIFI : INFO
    MQTT : INFO
    WRITE_SETTINGS : INFO
    SETTINGS : INFO
    STATUS : INFO
    CN105Climate: WARN
    CN105: INFO
    climate: WARN
    sensor: WARN
    chkSum : INFO
    WRITE : WARN
    READ : WARN
    Header: INFO
    Decoder : INFO
    CONTROL_WANTED_SETTINGS: INFO
#  level: DEBUG
#  logs:
#    EVT_SETS : DEBUG
#    WIFI : INFO
#    MQTT : INFO
#    WRITE_SETTINGS : DEBUG
#    SETTINGS : DEBUG
#    STATUS : INFO
#    CN105Climate: WARN
#    CN105: DEBUG
#    climate: WARN
#    sensor: WARN
#    chkSum : INFO
#    WRITE : WARN
#    READ : WARN
#    Header: INFO
#    Decoder : DEBUG
#    CONTROL_WANTED_SETTINGS: DEBUG



# Sync time with Home Assistant.
time:
  - platform: homeassistant
    id: homeassistant_time

# Sensors with general information.
sensor:
  # Uptime sensor.
  - platform: uptime
    name: ${name} Uptime
  # WiFi Signal sensor.
  - platform: wifi_signal
    name: ${name} WiFi Signal
    update_interval: 60s


# Text sensors with general information.
text_sensor:
  # Expose ESPHome version as sensor.
  - platform: version
    name: ${name} ESPHome Version
  # Expose WiFi information as sensors.
  - platform: wifi_info
    ip_address:
      name: ${name} IP
    ssid:
      name: ${name} SSID
    bssid:
      name: ${name} BSSID

# Create a button to restart the unit from HomeAssistant. Rarely needed, but can be handy.
button:
  - platform: restart
    name: "Restart ${friendly_name}"

climate:
  - platform: cn105
    id: hp
    name: "${friendly_name}"
    icon: mdi:heat-pump
    update_interval: 4s # Defaut 500ms
    visual:
      min_temperature: 15
      max_temperature: 31
      temperature_step:
        target_temperature: 0.5
        current_temperature: 0.1
    compressor_frequency_sensor:
      name: ${name} Compressor Frequency
    vertical_vane_select:
      name: ${name} Vertical Vane
    horizontal_vane_select:
      name: ${name} Horizontal Vane
    isee_sensor:
      name: ISEE Sensor
    # The remote_temperature_timeout setting allows the unit to revert back to the internal temperature measurement
    # if it does not receive an update in the specified time range (highly recommended if using remote temperature updates)
    remote_temperature_timeout: 30min
    # debounce_delay adds a small delay to the command processing to account for some HomeAssistant buttons that may send
    # repeat commands too quickly. A shorter value creates a more responsive UI, a longer value protects against repeat commands
    debounce_delay : 500ms

    
# Enable Home Assistant API
api:
  #encryption:
    #key: !secret api_key
  services:
    # Ajouter une valeur de température comme si c'était un capteur externe
    # Créer une automatisation qui envoie la température d'un capteur
    # chaque fois qu'une nouvelle valeur est détectée
    - service: set_remote_temperature_clim_rdc
      variables:
        temperature: float
      then:
        # Select between the C version and the F version
        # Uncomment just ONE of the below lines. The top receives the temperature value in C,
        # the bottom receives the value in F, converting to C here.
        - lambda: 'id(hp).set_remote_temperature(temperature);'
#        - lambda: 'id(hp).set_remote_temperature((temperature - 32.0) * (5.0 / 9.0));'

    # Revenir à l'utilisation du capteur interne
    - service: use_internal_temperature_clim_rdc
      then:
        - lambda: 'id(hp).set_remote_temperature(0);'

Pour ma part, tout fonctionne correctement.

1 « J'aime »

@fredarro Quels sont les avantages par rapport à ESPHOME qui te font choisir MQTT ?
Merci. :blush:

Bonjour,

En ce qui me concerne la PAC a toujours régulé seule la température de chauffe en fonction de la température de la pièce grâce à un capteur déporté. Elle ne se comporte donc pas comme un radiateur électrique ON / OFF.
Il faut comprendre que l’ESP ne sert qu’à transmettre des informations comme fait la télécommande fournie avec la PAC mais aussi, à remplacer la solution fabriquant MELCLOUD.

Un ESP32 doit normalement fonctionner.

Salut , la possibilité d’avoir une gestion de mes vannes horizontales et verticales.

1 « J'aime »

D’accord, merci.
J’ai rajouté plus haut un fork qui permet cela avec ESPHOME. :wink:

Merci pour ce message. Ca fait plaisir de voir que des utilisateurs apprécient notre travail.
J’en profite pour rajouter que le développement de la version que nous avons adaptée à partir du travail de Geoffray et de la librairie SwiCago a été motivé par 3 choses essentielles:
1- Un redesign complet du mécanisme de communication était nécessaire afin de supprimer les instructions « delay » qui sont proscrites avec le framework esphome. La librairie SwiCago est donc intégrée directement au code source du projet, pour une meilleure intégration.
2- Une compatibilité esp32 permet d’intégrer des fonctions supplémentaires sur la même puce, comme le proxy bluetooth. Les appareils mitsubishi communiquent de manière plus fiables avec ce type de puce.
3- Un effort a été fait afin d’offrir des fonctions de débogage plus détaillées
Au final, la communication offre une stabilité sans commune mesure avec les précédentes versions.

5 « J'aime »

Bonjour, savez vous si les MFZ-KT fonctionnerai aussi avec ça ?

Bonjour
Démonte le flanc de ton Split et regarde si tu as un connecteur cn105, ça se fait en 5min en comptant le temps d’aller chercher un escabeau (si tu en as un chez toi!)

J’avais pas encore la Mitsubishi, …

Je voulais avoir confirmation avant de l’avoir, …

Mais maintant qu’elle est installer, je confirme que ça fonctionne bien, un GRAND merci à @Eric_Chavet , pour son travail , …

par contre 2 petits détails a mettre a jour dans le repo :

  'hardware_uart' options is not supported anymore. Please add a separate UART component with the correct rx and tx pin.
  • Manque un exemple/explication comment utiliser un port uart spécifique
    Voici comment spécifier l’uart qu’on veut utiliser (c’est indispensable si plusieurs uart de configurer :
uart_id: uart_2

J’ai pas mal chercher et uart_id n’est ni dans le readme, ni dans aucun exemple du github , …

Par contre, j’ai une question, n’étant pas un pro d’esphome, …
Sur ce même esp, j’ai une sonde bme280_i2c qui me fourni une température :

  - platform: bme280_i2c
    temperature:
      name: "Temperature"
      oversampling: 16x
      id: ${name}_temperature

Vous savez comment on peut l’utiliser comme External temperature support ?

Bonne soirée

Merci pour les infos @roumano
Sur le wiki du repository MitsubishiCN105ESPHome

Tu as des exemples pour l’utilisation d’un capteur externe. (Configure-a-timeout-to-fallback-into-using-the-internal-temperature-sensor)

Sur ma clim, j’ai pas de réglages des palettes horizontale (c’est manuel).
Mais je peut activer le flux horizontal ou pas via 2Flow/1Flow sur la télécommande :
J’ai pas vu cette possibilité (mais j’ai peut être mal cherché )

Salut à tous!

Tout d’abord un grand merci à tous les contributeurs de ce topic!
Je viens d’installer des clims chez moi et le fait de voir qu’il était possible de domotiser Mitsubishi via ESPHOME ça m’a aidé dans mon choix :wink:.

Je voulais faire un petit rex sur mon install car tout ne s’est pas déroulé comme prévu… si ça peut aider!

Tout d’abord :

suite aux derniers commentaires, j’ai opté pour la solution d’Eric Chavet, un grand merci à lui et aux prédecesseurs de cette solution !

Maintenant les « soucis » rencontrées :

  • problème de compilation, suite à des conflits de Bluetooth j’étais réticent à mettre à jour mon ESPHOME, et du coup j’avais des erreurs lors de la compilation du script, une fois la toute dernière MAJ faite, aucun soucis

  • Problème de communication, bien copier/coller la clé api donnée par esphome lors de l’intégration d’un nouveau module

  • dans ESPHOME, la première install du FW s’est bien déroulée, mais dès que j’ai voulu flasher le FW pour la clim il m’était impossible d’écrire sur la carte. A savoir : un simple débranchement de la carte puis rebranchement m’a résolu le soucis lors de la compilation/flash.

  • ensuite le problème le plus vicieux… sur mon modèle le RX et TX est inversée comparé au branchement évoqué dans ce tuto… ESPHOME m’indiquait que la carte n’était pas connecté

[E][CN105:032]: → Heatpump did not reply: NOT CONNECTED ←

et en inversant le RX/TX celà fonctionne ! heureusement que l’alim était ok…

voici mon code pour infos (peut être que l’inversion RX/TX est dû à la définition ci-dessous):

substitutions:
  name: clim-ch-1
  friendly_name: clim-ch-1

esphome:
  name: ${name}
  platform: ESP8266
  board: esp01_1m

uart:
  id: HP_UART
  baud_rate: 2400
  tx_pin: 1
  rx_pin: 3

external_components:
  - source: github://echavet/MitsubishiCN105ESPHome

ota:
  - platform: esphome
    password: "XXXXXXXX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none
  
  manual_ip:
    static_ip: 192.168.1.XX
    gateway: 192.168.1.254
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "${friendly_name} ESP Fallback Hotspot"
    password: "XXXXXXXXXXX"

captive_portal:


# Enable Web server.
web_server:
  port: 80

# Enable logging
logger:
  hardware_uart: UART1
  level: INFO
  logs:
    EVT_SETS : INFO
    WIFI : INFO
    MQTT : INFO
    WRITE_SETTINGS : INFO
    SETTINGS : INFO
    STATUS : INFO
    CN105Climate: WARN
    CN105: INFO
    climate: WARN
    sensor: WARN
    chkSum : INFO
    WRITE : WARN
    READ : WARN
    Header: INFO
    Decoder : INFO
    CONTROL_WANTED_SETTINGS: INFO
#  level: DEBUG
#  logs:
#    EVT_SETS : DEBUG
#    WIFI : INFO
#    MQTT : INFO
#    WRITE_SETTINGS : DEBUG
#    SETTINGS : DEBUG
#    STATUS : INFO
#    CN105Climate: WARN
#    CN105: DEBUG
#    climate: WARN
#    sensor: WARN
#    chkSum : INFO
#    WRITE : WARN
#    READ : WARN
#    Header: INFO
#    Decoder : DEBUG
#    CONTROL_WANTED_SETTINGS: DEBUG



# Sync time with Home Assistant.
time:
  - platform: homeassistant
    id: homeassistant_time

# Sensors with general information.
sensor:
  # Uptime sensor.
  - platform: uptime
    name: ${name} Uptime
  # WiFi Signal sensor.
  - platform: wifi_signal
    name: ${name} WiFi Signal
    update_interval: 60s


# Text sensors with general information.
text_sensor:
  # Expose ESPHome version as sensor.
  - platform: version
    name: ${name} ESPHome Version
  # Expose WiFi information as sensors.
  - platform: wifi_info
    ip_address:
      name: ${name} IP
    ssid:
      name: ${name} SSID
    bssid:
      name: ${name} BSSID

# Create a button to restart the unit from HomeAssistant. Rarely needed, but can be handy.
button:
  - platform: restart
    name: "Restart ${friendly_name}"

climate:
  - platform: cn105
    id: hp
    name: "${friendly_name}"
    icon: mdi:heat-pump
    update_interval: 4s # Defaut 500ms
    visual:
      min_temperature: 15
      max_temperature: 31
      temperature_step:
        target_temperature: 0.5
        current_temperature: 0.1
    compressor_frequency_sensor:
      name: ${name} Compressor Frequency
    vertical_vane_select:
      name: ${name} Vertical Vane
    horizontal_vane_select:
      name: ${name} Horizontal Vane
    isee_sensor:
      name: ISEE Sensor
    # The remote_temperature_timeout setting allows the unit to revert back to the internal temperature measurement
    # if it does not receive an update in the specified time range (highly recommended if using remote temperature updates)
    remote_temperature_timeout: 30min
    # debounce_delay adds a small delay to the command processing to account for some HomeAssistant buttons that may send
    # repeat commands too quickly. A shorter value creates a more responsive UI, a longer value protects against repeat commands
    debounce_delay : 500ms

    
# Enable Home Assistant API
api:
  encryption:
    key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  services:
    # Ajouter une valeur de température comme si c'était un capteur externe
    # Créer une automatisation qui envoie la température d'un capteur
    # chaque fois qu'une nouvelle valeur est détectée
    - service: set_remote_temperature_clim_rdc
      variables:
        temperature: float
      then:
        # Select between the C version and the F version
        # Uncomment just ONE of the below lines. The top receives the temperature value in C,
        # the bottom receives the value in F, converting to C here.
        - lambda: 'id(hp).set_remote_temperature(temperature);'
#        - lambda: 'id(hp).set_remote_temperature((temperature - 32.0) * (5.0 / 9.0));'

    # Revenir à l'utilisation du capteur interne
    - service: use_internal_temperature_clim_rdc
      then:
        - lambda: 'id(hp).set_remote_temperature(0);'

En attendant de faire des scénarios plus évolués, tout semble fonctionner nickel ! Si ce petit REX peut aider certains !

Merci à tous en tout cas!

++
Seb

2 « J'aime »

Merci @Eric_Chavet et toutes les personnes qui ont permis cela :slight_smile:

Ça fonctionne super bien chez moi.