Commander un interrupteur zwave de Jeedom avec MQTT

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

merci pour l’éclair vers le bouton

sinon j’ai repris depuis le début le sensor d’état
création d’un topic mqtt avec jeedom qui surveille l’état


vérification avec MQTT Explorer, l’état change bien sous jeedom (allumage extinction)
2021-04-10_17-49-53
création du sensor
2021-04-10_17-51-22

sur le switch j’ai mis ça

si l’ampoule est éteinte avec jeedom, c’est bon, c’est grisé

je clique sur le bouton, ça passe en bleu, l’ampoule s’allume


Ca reste une seconde, l’état dans MQTT Explorer est bien sur 1, l’ampoule est allumée et ca redevient gris et j’ai beau recliquer sur le bouton, il ne se passe plus rien.
Qu’est-ce que j’ai oublié ?

Je vois que @golfvert va te répondre… :innocent:

Mais c’est sûr que ton entité n’est pas celle-ci…

- platform: mqtt  
  state_topic: 'etat/prise1'
  name: 'etat'

Sans ’ sur le e…

et

Devraient marcher.
Tu mélanges le nom du sensor (qui est etat) et le topic mqtt (etat/prise1).

Pour compléter la réponse :

Pour savoir sur quelle entité se baser pour la valeur, va dans Outils de développement → Onglet ETATS et cherche plutôt sensor.etat ou binary_sensor.etat.

Mais je pense qur ça va être sensor et donc il faut mettre 0 et non on.

En résumé, comme se nomme ton entité de l’état de la prise mqtt ?

A vérifier mais je pense que ça passe… Et peux être que le friendly_name conserve l’accent à la différence de entity_id:thinking:

Peut-être mais il suffit que le codage des accents ne soient pas cohérents (UTF-8 et un autre truc) et c’est cuit. Autant ne pas tenter le diable!

entièrement d’accord…

Merci de m’accorder tout ce temps.
En allant sur outils de développement, j’ai ça


j’ai bien modifié état en etat
J’ai mis cela

 - platform: template
    switches:
      prise_jeedom:
        #value_template: non définie
        value_template: "{{ is_state('sensor.etat', '0') }}"
        turn_on:
          service: rest_command.allumer_prise
        turn_off:
          service: rest_command.eteindre_prise

j’ai relancé HA
l’état de ma prise est sur 1
2021-04-10_18-33-58
pourtant ma prise est grisée, je clique c’est à nouveau bleu 1s et ça redevient gris.
Si j’éteins avec jeedom, le voyant devient bleu, je clique ça devient gris puis redevient bleu mais la prise est toujours éteinte.
Il doit y avoir une inversion quelque part mais je ne sais pas où

Bon, je crois avoir trouvé, il fallait mettre :

value_template: "{{ is_state('sensor.etat', '1') }}"

et là ça fonctionne

C’est pas une histoire d’inversion dans Jeedom ?

Non dans HA, on veut savoir quand c’est allumé donc sensor.etat à Vrai.

Je ne sais pas pourquoi j’ai mis 0 pour remplacer on… :innocent: :sweat_smile:

T’as ce que tu voulais ?

Tout est bon :yum: ?

Oui un énorme MERCI à ceux qui ont bien voulu m’aider.
Et dire que j’allais laisser tomber

Il y a une dernière chose qui me fait bloquer, c’est la lecture de l’état de la prise.
Avec MQTT, ça ne se met à jour qu’en cas d’action sur la prise (du coup je peux très bien éteindre sans le vouloir)
J’ai une URL directe pour lire la valeur 0 ou 1.
Comment je peux l’attribuer dans cette ligne : value_template: « {{ is_state(‹ sensor.etat ›, ‹ 0 ›) }} »
C’est encore une url du type https://xxxxxxxxxxxxx.eu.jeedom.link/core/api/jeeApi.php?apikey=xxxxxxxxxxxxxxxxxx&type=cmd&id=5052