Quelle méthode pour piloter de nombreux équipements via MQTT?

Bonjour,

Mon problème

Pas vraiment un problème, mais une gestion laborieuse des communications entre Jeedom et Home assistant via MQTT.
Home assistant est devenu mon système domotique principal, mais je souhaite actionner, depuis Jeedom, des équipements hébergés par Home assistant.
La solution actuelle fonctionne mais elle demande de nombreuses étapes coté Jeedom et Home assistant.
J’aimerais savoir s’il y a mieux à faire, via une fonction disponible Home Assistant ou via programmation.

Voici un exemple avec une horloge projetée :

  1. Je crée un équipement MQTT coté jeedom avec les actions et les infos :
    ON Action Salon/horlogeproj/set=ON
    OFF Action Salon/horlogeproj/set=OFF
    STATUS Info Salon/horlogeproj/status

  2. Coté Home assistant je crée 3 automatisations
    2 dans le sens Jeedom->Home assistant pour les actions
    → L’automatisation écoute un message MQTT précis et exécute une action précise sur Home assistant
    1 dans le sens Home assistant->Jeedom pour l’info
    → L’automations écoute le statut d’un équipement home assistant, et envoi un message MQTT

Et ce pour chaque équipement que je veux gérer via Jeedom !
Est-il possible de regrouper les automations correspondant aux action ON et OFF ?
Ou y a t’il encore mieux à faire ? je pense à une automation globales pour toutes les actions ON/OFF, et une automatisations globales pour les infos. Et du code pour connaitre l’équipement correspondant à lire ou actionner. Vous en pensez quoi ?

Merci pour votre expérience !

Voici mes automatisations :

alias: MQTT to horloge OFF
description: ""
trigger:
  - platform: mqtt
    topic: Salon/horlogeproj/set
    payload: "OFF"
condition: []
action:
  - service: switch.turn_off
    target:
      entity_id:
        - switch.tz3000_o005nuxx_ts011f_commutateur
    data: {}
mode: single

alias: MQTT to horloge ON
description: ""
trigger:
  - platform: mqtt
    topic: Salon/horlogeproj/set
    payload: "ON"
condition: []
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.tz3000_o005nuxx_ts011f_commutateur
mode: single

alias: HorlogeP to MQTT
description: ""
trigger:
  - platform: state
    entity_id:
      - switch.tz3000_o005nuxx_ts011f_commutateur
condition: []
action:
  - service: mqtt.publish
    metadata: {}
    data:
      qos: 0
      retain: true
      topic: Salon/horlogeproj/status
      payload: "{{ states('switch.tz3000_o005nuxx_ts011f_commutateur') }}"
mode: single

Ma configuration


[center]## System Information

version core-2024.5.4
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 6.6.29-haos
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 12.3
update_channel stable
supervisor_version supervisor-2024.05.1
agent_version 1.6.0
docker_version 25.0.5
disk_total 30.8 GB
disk_used 4.5 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Z-Wave JS (0.5.0), Mosquitto broker (6.4.0), File editor (5.8.0), ZeroTier One (0.18.0)
Dashboards
dashboards 9
resources 0
views 5
mode storage
Recorder
oldest_recorder_run 12 mai 2024 à 19:46
current_recorder_run 17 mai 2024 à 22:41
estimated_db_size 80.26 MiB
database_engine sqlite
database_version 3.44.2
[/center]

Salut…
Pas facile de lâcher Jeedom ! :innocent:

Mais avec les automations tu as les ID image sur les triggers, et de cette façon tu peux tester l’ID et bien autre chose !, donc mettre plusieurs triggers avec ID

1 « J'aime »

Bonjour,
Comme le dit @Doubledom , faut utiliser un ID par trigger pour pouvoir les différencier dans l’automatisation. Puis faut utiliser en action choisir, qui va permettre plusieurs choix par rapport au ID des déclencheurs.

1 « J'aime »

Merci. Pour être sûr de bien comprendre :

Ces ids vont m’aider pour appeler les actions hass, donc dans le sens MQTT → Hass c’est ça ?
Une seule automatisation et l’utilisation de l’option « choisir »

→ Je vais tester ça

Et pour envoyer le statut de Home Assistant à Jeedom, je garde une automatisation par équipement, pas d’autres choix ?

Merci

Tu peux faire des triggers avec id dans la même automation, c’est le choix (condition de l’id) qui est testé puis les actions qui vont avec !

« Modifier l’ID » c’est bien coté Jeedom ? Je ne trouve pas où est ce bouton.
J’utilise MQTT manager

Les ID des trigger de l’automation, au bout de chaque il y a des options avec image

Voilà, grâce à vos infos, j’ai testé une automatisation unique pour les on/off de 2 appareils. Soit 4 actions.

Je passe donc

  • de 4 automatisations composées chacune d’1 trigger et 1 action
  • à 1 automatisation composées de 4 triggers, 1 choisir, 4 actions

Merci pour cette découverte, ça étend les possibilités !

En revanche, je ne suis pas sûr d’y gagner en lisibilité maintenance ou performance …
Je vais peut-être faire un mix des 2, avec une automatisation par appareil, qui gère les 2 actions on et off

J’aurais aimé avoir un trigger unique (du style Jeedom/MQTT) et un payload que je récupère en paramètre pour connaitre l’appareil à actionner … mais ça ne semble par être prévu comme ça :sweat_smile:

Merci à vous ! Voici mon automatisation :

alias: JEEDOM MQTT to HASS
description: ""
trigger:
  - platform: mqtt
    topic: Salon/pipi/set
    payload: "ON"
    id: pipi_on
  - platform: mqtt
    topic: Salon/pipi/set
    payload: "OFF"
    id: pipi_off
  - platform: mqtt
    topic: Salon/horlogeproj/set
    payload: "ON"
    id: horlp_on
  - platform: mqtt
    topic: Salon/horlogeproj/set
    payload: "OFF"
    id: horlp_off
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - pipi_on
        sequence:
          - service: switch.turn_on
            target:
              device_id: 1a2cb98de1beea537d7477f4a7587b2b
            data: {}
      - conditions:
          - condition: trigger
            id:
              - pipi_off
        sequence:
          - service: switch.turn_off
            target:
              device_id: 1a2cb98de1beea537d7477f4a7587b2b
            data: {}
      - conditions:
          - condition: trigger
            id:
              - horlp_on
        sequence:
          - service: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.tz3000_o005nuxx_ts011f_commutateur
      - conditions:
          - condition: trigger
            id:
              - horlp_off
        sequence:
          - service: switch.turn_off
            target:
              entity_id: switch.tz3000_o005nuxx_ts011f_commutateur
            data: {}
mode: single

1 « J'aime »

Salut

il y a plus simple :

alias: JEEDOM MQTT to HASS
description: ""
trigger:
  - platform: mqtt
    topic: Salon/pipi/set
    id: pipi
  - platform: mqtt
    topic: Salon/horlogeproj/set
    id: horlp
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - pipi
        sequence:
          - service: switch.toggle
            target:
              device_id: 1a2cb98de1beea537d7477f4a7587b2b
            data: {}
      - conditions:
          - condition: trigger
            id:
              - horlp
        sequence:
          - service: switch.toggle
            metadata: {}
            data: {}
            target:
              entity_id: switch.tz3000_o005nuxx_ts011f_commutateur
mode: single

De plus, tu devrais renommer tes entités, car ç’est incompréhensible et au lieu d’utiliser les appareils (ex: 1a2cb98de1beea537d7477f4a7587b2b), tu devrais utiliser les entités.

1 « J'aime »

Pour la lisibilité , tu peux mettre des noms, il y a option pour renommer chaque ligne de code !

Bonjour, j’ai pensé au toggle, mais ça impose une synchro parfaite.
Si je demande à Jeedom d’allumer la lampe, alors qu’elle est déjà allumée, elle ne doit pas s’éteindre.
Merci pour le conseil de renommer les entités et de ne pas utiliser les appareils.

Pour le moment, j’utilisais les appareils en priorités, et les entités lorsque nécessaire (exemple une multiprise zigbee)