Paramétrer une climatisation via Broadlink et SmartIR

Voici une méthode qui m’a permis de disposer d’une carte climate pour un climatiseur qui n’était pas directement intégrable sous HA, ni pré-défini par SmartIR.

1. Débuter l’installation de l’app sur Smartphone :
Il s’agit dans un premier de faire apparaître l’appareil Broadlink sur votre réseau.
Pour cela, installer et lancer sur votre smartphone une app telle que Broadlink
Screenshot_20201019_225718

Après avoir initialisé votre Broadlink en enfonçant une épingle dans l’opercule quelques secondes (de manière à avoir des clignotements longs), vous pourrez « Ajouter un appareil » :

Il apparait important d’arrêter l’étape d’installation/configuration après avoir déclaré votre réseau Wifi (login/password).

2. Intégration Broadlink sous HA
Le but est ensuite d’installer l’intégration Broadlink sous HA.

Pour cela, aller dans « Configuration » > « Intégrations » > « + » puis « Broadlink »
Taper alors l’adresse IP de votre Broadlink préalablement installé sur le réseau (étape 1)
Redémarrer HA de manière à voir apparaître votre entité « remote.rm4_pro_remote » par exemple, représentant votre Broadlink

Pour ceux qui ont la chance d’avoir un climatiseur déjà enregistré sous SmartIR (voir la liste), vous pouvez sauter l’étape 3

3. Apprentissage des trames

  • Aller dans « Outils de développement »
  • Sélectionner le service « remote.learn_command »
  • Sélectionner ensuite votre entité « remote.rm4_pro_remote » (dans mon cas)
  • Dans les « Données de service », rajouter :
    device: climatisation
    command: cool_low_18
  • après avoir « appelé le service », il faut activer la commande dont vous souhaitez faire l’apprentissage de la trame (dans cet exemple, commander la clim en ventilo low pour 18°C de consigne)
  • le résultat de la trame sera disponible sous votre répertoire « config/.storage » dans un fichier nouvellement créé « broadlink… »

Répéter l’opération pour enregistrer toutes les trames sachant qu’un climatiseur tel que le mien est configuré par un triplet : vitesse du fan (auto, low, mid, high), mode (heat, cool) et température (de 18 à 30°C) ce qui fait alors 4x2x12 = 96 trames !

4. Installation de SmarIR
SmartIR est un code qui définit une entité climate à partir :

  1. de trames déjà prédéfinies pour un certain nombre de climatiseurs, … (pour les chanceux)
  2. de trames que vous aurez préalablement enregistrées par l’intermédiaire de l’étape 3 (nous sommes dans ce cas de figure)

Installer SmartIR via GitHub - smartHomeHub/SmartIR: Integration for Home Assistant to control climate, TV and fan devices via IR/RF controllers (Broadlink, Xiaomi, MQTT, LOOKin, ESPHome)

Pour ceux qui n’ont pas la chance d’avoir un climatiseur déjà enregistré sous SmartIR, récupérer le code.json de manière à remplacer toutes les trames de ce code par vos trames.
Vous pourrez accéder aux codes via « File Editor » > « custom_components/smartir/codes/climate/xxxx.json »

Sous « Configuration » > « Contrôle du serveur », « Vérifier la configuration » puis redémarrer HA.

5. Finalisation
Il vous suffit enfin de terminer l’installation sous configuration.yaml en remplaçant les entités ci-dessous par les votres :

 climate:
   - platform: smartir
     name: Office AC
     unique_id: office_ac
     device_code: 1540
     controller_data: remote.rm4_pro_remote
     temperature_sensor: sensor.main_room_temp_temperature
     humidity_sensor: sensor.main_room_temp_humidity
     power_sensor: switch.bouton_clim'

Sources:

3 « J'aime »

Merci pour le partage.

Quelle est la marque et la référence de la climatisation que tu utilise ?

Hello @Clemalex
Il s’agit d’un climatiseur Whirlpool PACW212HP.
Il fait clim, dry, fan et heat, avec des modes silent, tilt fan, night, around et 6th sense (pas tout compris encore à ce que font certains modes :wink:).
En revanche il est intégré à Home, et je me demande si je n’aurais pas pu passer par Home pour l’intégrer à HA :sweat_smile:

1 « J'aime »

merci pour le tuto.
Mais comment ajouter en tant que carte? je trouve pas d’entité ou autres…

@starjuice as-tu essayé la carte thermostat ?

type: thermostat
entity: climate.office_ac

sinon plus évolué mais nécessitant d’autres sensors :

type: 'custom:mini-climate'
entity: climate.office_ac
temperature:
  unit: °C
  round: 1
  source:
    entity: sensor.netatmo_zone_home_temperature
hvac_mode:
  style: '(value, entity) => ({ color: ''black'' })'
  source:
    'off':
      icon: 'mdi:power'
      name: 'off'
    heat:
      icon: 'mdi:weather-sunny'
      name: heat
    auto:
      icon: 'mdi:cached'
      name: auto
    cool:
      icon: 'mdi:snowflake'
      name: cool
    dry:
      icon: 'mdi:water'
      name: dry
    fan:
      icon: 'mdi:fan'
      name: fan
  change_action: >
    (selected, entity) => this.call_service('climate', 'set_hvac_mode', {
    entity_id: entity.entity_id, hvac_mode: selected })
fan_mode:
  hide: 'off'
  icon: 'mdi:fan'
  order: 0
  active: '(state, entity) => entity.state !== ''off'''
  source:
    auto: auto
    low: low
    medium: medium
    high: high
    __filter: |
      (source, state, entity) => entity.attributes
        .fan_modes_al.map(fan_mode => source.find(s => s.id === fan_mode))
        .filter(fan_mode=>fan_mode)
  change_action: >
    (selected, state, entity) => this.call_service('climate', 'set_fan_mode', {
    entity_id: entity.entity_id, fan_mode: selected })
indicators:
  humidity:
    icon:
      template: |
        (value) => (value > 30 ? 'mdi:weather-rainy' : 'mdi:water')
    unit: '%'
    round: 1
    source:
      entity: sensor.netatmo_zone_home_humidity
  power:
    icon: 'mdi:power-plug'
    source:
      values:
        'on': power is on!
        'off': power is off!
      entity: switch.bouton_clim
      mapper: 'value => this.source.values[value]'
buttons:
  power:
    icon: 'mdi:power-plug'
    location: bottom
    state:
      entity: switch.bouton_clim
  fan:
    icon: 'mdi:fan'
    toggle_action: >
      (selected, entity) => this.call_service('climate', 'set_hvac_mode', {
      entity_id: entity.entity_id, hvac_mode: 'fan' })
  heat:
    icon: 'mdi:weather-sunny'
    toggle_action: >
      (selected, entity) => this.call_service('climate', 'set_hvac_mode', {
      entity_id: entity.entity_id, hvac_mode: 'heat' })
  cool:
    icon: 'mdi:weather-sunny'
    toggle_action: >
      (selected, entity) => this.call_service('climate', 'set_hvac_mode', {
      entity_id: entity.entity_id, hvac_mode: 'cool' })
  dry:
    icon: 'mdi:water'
    toggle_action: >
      (selected, entity) => this.call_service('climate', 'set_hvac_mode', {
      entity_id: entity.entity_id, hvac_mode: 'dry' })