Commander un interrupteur zwave de Jeedom avec MQTT

Bonjour,
Je butte sur un problème de switch.
J’ai plein de devices zwave installés sur mon Jeedom (mais que je trouve moche).
Je voudrais tout de même le conserver. En revanche, je voudrais commander mes devices ZWave avec Home assistant avec JMQTT.
Pour ce qui est de récupérer des infos de jeedom vers HA avec JMQTT, aucun problème, c’est lorsque je veux actionner un switch pour par exemple allumer ou éteindre une prose que ça ne fonctionne pas du tout.
Voilà sur jeedom ce que j’ai


Du côté de HA, j’ai ceci:

#---------- ZWAVE ---------
  - platform: mqtt
#    switch:
    name: "prise zwave"
    state_topic: "prise/lum/get"
    command_topic: "prise/lum/set"
    qos: 1
    payload_on: "1" 
    # 0 # or "on", depending on your MQTT device
    payload_off: "0"
    #1 # or "off", depending on your MQTT device
    retain: true # or false if you want to wait for changes

Quand je clique dessus, ça passe en bleu et ça revient en gris et la prise ne se déclenche pas.
Qu’est-ce qui cloche ?
Merci de votre aide

J’ajoute les commandes de la prise zwave


La non prise en compte du switch viendrait-il du fait que je « travaille » avec le broker sur l’ETAT ?

T’as essayé de mettre 255 ?

Sur la dernière capture on voit 255.

Merci de m’avoir répondu
Ca fait pareil, ça passe en bleu 1s et ça revient en gris

J’aurais tendance à penser que c’est le lien côté jeedom zwave/mqtt qui ne marche pas.
Si tu testes avec « mqtt explorer » https://mqtt-explorer.com/ l’envoi de la commande de « on », est-ce que ça marche?

J’utilise encore zwave du côté jeedom et je pilote tout du côté ha. Voir Création d'un pont Jeedom vers HA - #6 par golfvert pour des explicatioins. Il y a deux méthodes présentées.


En appuyant sur ON, ça reste toujours sur 255

Ce que je suggère c’est d’envoyer la commande depuis mqtt explorer. Et voir si ça marche sur jeedom. C’est pour que tu saches de quel côté chercher…

Merci, j’ai utilisé PUBLISH (c’est bien ça ?), j’ai mis 1 0 ON OFF, le set se modifie bien mais pas de déclenchement sur Jeedom

C’est bien ça, le publish avec ce qui est supposé marcher comme payload. Si rien ne se passe, c’est du côté jeedom qu’il faut chercher…
Ou alors ne pas utiliser jmqtt du côté jeedom mais faire les appels direct à l’API jeedom depuis HA.

Avec l’intégration REST comme tu expliques en premier dans le post donné au-dessus ?

J’imagine que je dois m’inspirer de ça ? Jeedom vs HomeAssistant - #9 par L0L0 - Discussions Générales - Communauté Jeedom

Oui. Il y a aussi un autre exemple là:
https://forum.hacf.fr/t/recuperer-les-dimmers-zwave-de-jeedom-dans-ha/2542/2?u=golfvert

Le problème des switch REST avec HA (RESTful Switch - Home Assistant) , c’est que les commandes utilisent du PUT/POST alors que jeedom veut du GET comme action HTTP.
Et donc, il faut utiliser des commandes shell.

Un grand merci pour les pistes. Bon y a du boulot avant que j’intègre tout, je débute avec HA et c’est encore pas mal du chinois. Je reviendrai vers toi si je n’y arrives pas.
J’en conclus que les switch MQTT vers jeedom ne fonctionnent pas

Peux être passer directement par le service rest qui utilise (par défaut) le GET

Et si on veux vraiment un interrupteur (switch), on le crée soi-même en associant les services rest.

Bon après avoir ESSAYE de comprendre, je crois que je vais laisser tomber, je n’y comprends rien du tout et je ne connais pas du tout Node_RED. Tout ça c’est « pour l’instant » du chinois pour moi. Autant, j’avais tout bien compris pour la lecture des infos avec MQTT, autant là pour les déclencheurs, je n’y arrive pas. J’ai mis ça :

https://192.168.1.152:1880/endpoint/jeedom?value=#value#&id=#cmd_id#

dans l’URL de push de mon état de la prise mais après mystère et boule de gomme . Peut-être qu’un plugin jeedom ou une intégration HA verra le jour …

On est là pour t’épauler :+1:

As tu une requête qui fonctionne ? (quand tu la rentre dans la barre d’adresse de ton navigateur, la lampe s’allume)

Merci, c’est sympa. Oui les requêtes ON et OFF fonctionnent

Elle est de cette forme pour ON : https://xxxxxxxxxxxxx.eu.jeedom.link/core/api/jeeApi.php?apikey=xxxxxxxxxxxxxxxxxx&type=cmd&id=5054

Donc dans ton fichier configuration.yaml tu ajoutes ces lignes :

#configuration.yaml
rest_command:
  allumer_prise:
    url: "https://xxxxxxxxxxxxx.eu.jeedom.link/core/api/jeeApi.php?apikey=xxxxxxxxxxxxxxxxxx&type=cmd&id=5054"
  eteindre_prise:
    #modifier la requête car c'est un copier/coller de la précédente
    url: "https://xxxxxxxxxxxxx.eu.jeedom.link/core/api/jeeApi.php?apikey=xxxxxxxxxxxxxxxxxx&type=cmd&id=5054"

Puis tu redémarres…

Au démarrage suivant, si tu vas dans Outils de développement → Onglet SERVICES tu trouveras les services :

  • rest_command.allumer_prise
  • rest_command.eteindre_prise

Tu sélectionnes le service pour allumer la prise et tu appuis sur le bouton APPELER LE SERVICE et tu regardes si la prise s’allume.

Idem pour l’extinction.

Une fois le fonctionnement des services validés, tu peux te créer un switch en fonction de ces services :

(toujours dans le fichier configuration.yaml)

#configuration.yaml
switch:
  - platform: template
    switches:
      prise_jeedom:
        #value_template: non définie
          #Pour l'instant, l'état de la prise est définie par le fait de manipuler l'interrupteur depuis HA.
          #Il faudrait récupérer l'état du switch directement depuis le brocker MQTT.
          #Ce qui donnera, une fois l'état récupéré sur un binary_sensor.etat_prise
          #value_template: "{{ is_state('binary_sensor.etat_prise', 'on') }}"
        turn_on:
          service: rest_command.allumer_prise
        turn_off:
          service: rest_command.eteindre_prise

Tu redémarres.

Tu affiches sur une carte dans ton tableau de bord l’entité switch.prise_jeedom et tu vérifies que la prise s’allume/s’éteint.

Si tout fonctionne, tant mieux et il ne restera plus qu’à créer une entité pour l’état et l’ajouter à la définition de l’interrupteur.

Je n’ai pas de Jeedom donc je ne peux que m’appuyer sur la documentation de HA pour t’aiguiller, @golfvert aura peut être une autre approche en tant qu’utilisateur de jeedom.

Tiens nous au courant :+1:

Alors là, chapeau bas, oui c’est nickel. Un grand merci
Juste une chose, j’ai un éclair barré et un éclair noir, y a moyen d’avoir le bouton rond classique qui glisse ?

Edit : Compris, il apparait si on utilise value template

Redit :
j’ai mis ça

`- platform: template
    switches:
      prise_jeedom:
        #value_template: non définie
          #Pour l'instant, l'état de la prise est définie par le fait de manipuler l'interrupteur depuis HA.
          #Il faudrait récupérer l'état du switch directement depuis le brocker MQTT.
          #Ce qui donnera, une fois l'état récupéré sur un binary_sensor.etat_prise
        value_template: "{{ is_state('binary_sensor.prise/lum', 'on') }}"
        turn_on:
          service: rest_command.allumer_prise
        turn_off:
          service: rest_command.eteindre_prise`

et ça dans sensors

- platform: mqtt  
  state_topic: 'prise/lum'
  name: 'état'

mais là ça ne fonctionne plus, si elle est OFF et que je clique, la prise s’allume et passe sur le bleu et une seconde plus tard repasse sur le gris alors que la prise est toujours allumée et que le sensor prise/lum est toujours sur 1

Ça ne peux pas être ça… :innocent:

Je pencherais plus sensor.etat et donc

- platform: template
    switches:
      prise_jeedom:
        value_template: "{{ is_state('sensor.etat', 'on') }}"
        turn_on:
          service: rest_command.allumer_prise
        turn_off:
          service: rest_command.eteindre_prise`

Oui on peut :grin:

Au début de cette réponse → Bouton poussoir - #2 par Clemalex

c’est assumed_state: false