[TUTO] Piloter une vanne Eurotronic Spirit Z-wave depuis une sonde de température externe

Il n’y a aucun équipement de créé dans le MQTT manager, il est vide

et rien dans la partie configuration du plugin

merci quand même :slight_smile:

Si tu veux un équipement qui reprent les info c’est a toi de le créer.

Avec les 2 commandes NODEID et SEND ? je pensais que ces commandes étaient à créer dans l’équipement du plugin zwaveJS

j’ai fait un équipement dans MQTT pour voir, mais je sais pas quoi mettre dedans :slight_smile:

Pour la commande info, vous reproduisez ce que je fais dans cette impression d’écran :

Sachant RDC est la location (emplacement) de mon nœud, et TRV-RUE son nom, il faut remplacer par vos propres valeurs.
Voyez déjà si ça fonctionne avant de vous attaquer à la commande action Send.

1 « J'aime »

ok, je test

ca donnerait ca ?
mais ca remonde inconnu

Bonjour à tous, et merci à @shadowking pour ce tuto, j’ai enfin réussi à paramétrer une sonde extérieure pour les Tête Spirit

Je vais compléter ce tuto étant utilisateur du plugin zwaveJS

Je précise que j’utilise le plugin JMQTT en plus du plugin Zwavejs et Mqtt manager

Dans le plugin JMQTT :
On ajoute un nouvel équipement
Inscrit au Topic : zwave/ID/# (ID c’est le numéro de l’équipement sur le réseau Zwave)

Ensuite on créer une commande :
Nom : send
Topic = zwave/_CLIENTS/ZWAVE_GATEWAY-Jeedom/api/sendCommand/set
RAPPEL : bien vérifier votre nom de passerelle, moi elle s’appelle « Jeedom »
valeur : {"args":[{"nodeId":ID,"commandClass":49,"endpoint":0},"sendReport",[1,0,#[Rez de chaussée][Sonde salon][Température]#]]}

ID = Id du nœud Z-Wave c’est toujours le numéro de l’équipement
#[Rez de chaussée][Sonde salon][Température]# : c’est le chemin de la sonde, je vous conseille d’utiliser le testeur d’expression pour avoir directement la bonne syntaxe

Bien penser à mettre le paramètre -128 sur la Spirit comme indiqué dans le tuto.

Et la par contre j’ai galéré un peu parce que la température affichée sur la tuile est tjs celle la sonde interne, mais elle prend bien en compte une sonde extérieur pour son fonctionnement.

Vous pouvez tester en mettant directement une valeur dans :
{"args":[{"nodeId":80,"commandClass":49,"endpoint":0},"sendReport",[1,0,28]]}
et la normalement elle devrait se fermer, sauf s’il fait 28° chez vous :smiley: .

Voila j’espère que cela aidera

3 « J'aime »

Cool, donc c’est une solution facilement reproductible sur une installation native, c’est une bonne nouvelle. Je mettrai un lien vers ton post dans le post de tête pour faciliter la recherche de tes instructions.

Oui elle continue d’afficher la température qu’elle lit directement, c’est trompeur, mais effectivement quelques tests rapides permettent de vérifier qu’elle n’en tient plus compte.

Salut et merci pour cette solution ça à l’air de pas mal répondre à ce que je recherche.
Mais je me pose des questions quant à son implémentation. J’ai essayé mais ça ne marche pas.
Tout d’abord je n’avais pas JMQTT d’installé, juste MQTT avec ZWAVE-JS. J’ai donc installé JMQTT mais il ne m’a pas installé de broker car il a vu celui installé avec MQTT.
J’ai donc ajouté un broket, et je l’ai fait pointer vers celui qui est utilisé par Zwave-JS. Est ce que c’est la bonne chose à faire?
Ensuite dans la configuration j’ai mis ceci:


La connexion fonctionne, mais j’ai laissé les parametres par defaut, je ne suis pas sur que ce soit bon…

Merci

Salut,

Historiquement, est-ce que c’est Jeedom qui t’a installé Mosquitto ou tu l’as installé sur une autre machine ?
J’aurais bien essayé d’installer MQTT, mais quand j’ai essayé il se lance automatiquement dans la découverte automatique des équipements, et ça fait suer mon serveur. Apparemment il y a moyen de désactiver ça sur la page de configuration du plugin, mais rien trouvé pour ma part.

Bref, si tu as toujours utilisé le Mosquitto installé par défaut par Jeedom je pense que c’est ok ainsi.
Il faudrait demander à @Rom8515 où il a exactement vu le nom de sa passerelle, je présume que c’est dans les réglages de Zwave-JS.

Si tu utilises MQTT Explorer depuis un PC par exemple, et que tu te connectes au broker, tu devrais avoir quelque chose du style :

mqtt_explorer_2

Où Zwavejs2Mqtt est le nom de la passerelle, possible que ce soit Jeedom chez toi comme chez @Rom8515

J’ai pas mal progressé depuis mon dernier message. Tout d’abord j’ai coché les cases « Topic des interactions de Jeedom » et « Topic de l’API de Jeedom ».
Dans mon cas je ne cherche pas à envoyer la temperature à une vanne Eurotronic mais à un thermostat Stelpro. Ça fonctionne sur Home Assistant et c’est pas loin de ce que je vois ici:

J’ai donc créé une commande « Send »

Lorsque je clic sur « Tester » et que je regarde le log de debug dans MQTT je peux voir que l’info est reçu

Mais pas de changement au niveau du thermostat. Il ne manque pas grand chose…

Quelques remarques :

  • à la place du NodeID « 9 » en dur, j’utiliserais l’équipement associé.

  • j’essaierais si j’étais toi d’enlever le paramètre property, tout simplement car c’est ce que le 1 après le crochet ouvrant est sensé définir, qu’on souhaite écrire sur la température.

  • essaie dans un premier temps avant d’envoyer la température extérieure d’envoyer une valeur fixe sans décimale, d’après le commentaire de LKroeke dans le sujet que tu as mis en lien, le thermostat ne renvoie que les demi-degrés, ça pourrait avoir une influence.

  • le message de freshcoast est identique à ce que j’utilise pour les vannes (modulo la syntaxe en yaml de HA), et ça a l’air de fonctionner d’après drkrool, ce qui renforce l’idée de se concentrer sur les indications de freshcoast plutôt que LKroeker (vérifie pour les demi-degrés quand même, car s’il fait son arrondi au moment de l’envoi de la commande, c’est potentiellement que le thermostat n’est lui, pas capable de le faire en recevant la température par ce biais).

Merci pour tes conseils, malheureusement ça ne change rien. C’est ce que j’avais essayé initialement, pas de property, et une valeur fixe pour la temperature.
J’essaye de debuguer, est ce qu’il est possible d’envoyer un message directement depuis l’interface de Z-WAVE JS UI?

Sur leur GitHub j’ai vu des gens créer des fonctions via :

Mais je ne suis pas sûr que ce soit ce que tu as avec le plugin non ?
Que donnent les logs du plugin zwavejs ?

Tu dois avoir quelque chose d’assez proche de ce que j’ai mis dans mon tutoriel.
Ca te permettrait de voir si le thermostat réagit via un message MQTT publié par le thermostat.

1 « J'aime »

Effectivement c’est disponible, et j’ai repris ce que tu as écris:

Mais j’ai le message d’erreur suivant:
image

Non, ici c’est du Javascript qu’il faut utiliser : Z-Wave JS UI

Là dans l’immédiat, j’inspecterais les logs pour voir si j’ai une réaction du node suite à l’envoi du payload MQTT, ça ressemble à ça les logs ZwaveJS normalement :

                                          value: 6
2023-01-27T19:39:36.003Z SERIAL » 0x011d00a90125119f032100a59e67c338b139aa62a4a3e1f224000000000014    (31 bytes)
2023-01-27T19:39:36.003Z DRIVER » [Node 037] [REQ] [SendDataBridge]
                                  │ source node id:   1
                                  │ transmit options: 0x24
                                  │ callback id:      0
                                  └─[Security2CCMessageEncapsulation]
                                    │ sequence number: 33
                                    └─[SupervisionCCReport]
                                        session id:          30
                                        more updates follow: false
                                        status:              Success
                                        duration:            0s
2023-01-27T19:39:36.010Z SERIAL « [ACK]                                                                   (0x06)
2023-01-27T19:39:36.011Z SERIAL « 0x010401a90152                                                       (6 bytes)
2023-01-27T19:39:36.012Z SERIAL » [ACK]                                                                   (0x06)
2023-01-27T19:39:36.012Z DRIVER « [RES] [SendDataBridge]
                                    was sent: true
2023-01-27T19:39:36.838Z SERIAL « 0x011e00a8000125159f038c00dff7585afe80325c7ab4c4110a97ca2a4300a5d2  (32 bytes)
2023-01-27T19:39:36.840Z SERIAL » [ACK]                                                                   (0x06)
2023-01-27T19:39:36.841Z CNTRLR   [Node 037] [Multilevel Sensor] Ultraviolet: metadata updated      [Endpoint 0]
2023-01-27T19:39:36.842Z CNTRLR   [Node 037] [~] [Multilevel Sensor] Ultraviolet: 0 => 0            [Endpoint 0]
2023-01-27T19:39:36.845Z DRIVER « [Node 037] [REQ] [BridgeApplicationCommand]
                                  │ RSSI: -91 dBm
                                  └─[Security2CCMessageEncapsulation]
                                    │ sequence number: 140
                                    └─[SupervisionCCGet]
                                      │ session id:      31
                                      │ request updates: false
                                      └─[MultilevelSensorCCReport]
                                          type:  Ultraviolet
                                          scale: UV index
                                          value: 0
2023-01-27T19:39:36.852Z SERIAL » 0x011d00a90125119f032200554859664034746a695000e9a1240000000000dd    (31 bytes)
2023-01-27T19:39:36.853Z DRIVER » [Node 037] [REQ] [SendDataBridge]
                                  │ source node id:   1
                                  │ transmit options: 0x24
                                  │ callback id:      0
                                  └─[Security2CCMessageEncapsulation]
                                    │ sequence number: 34
                                    └─[SupervisionCCReport]
                                        session id:          31
                                        more updates follow: false
                                        status:              Success
                                        duration:            0s
2023-01-27T19:39:36.860Z SERIAL « [ACK]                                                                   (0x06)
2023-01-27T19:39:36.863Z SERIAL « 0x010401a90152                                                       (6 bytes)
2023-01-27T19:39:36.864Z SERIAL » [ACK]                                                                   (0x06)
2023-01-27T19:39:36.864Z DRIVER « [RES] [SendDataBridge]
                                    was sent: true
1 « J'aime »

Bonsoir,
La passerelle je l’ai trouvé dans la configuration du plugin MQTT Manager
Topic racine Jeedom : jeedom

2 « J'aime »

OK merci je n’y connait rien en javascript mais je vais tester

1 « J'aime »

J’ai testé le javascript mais ça ne fonctionne pas. clairement je me suis trompé quelque part, mais mes connaissances limitées ne permettent pas plus.

Voici le code que j’ai écrit:

service: zwave_js.invoke_cc_api
data:
  command_class: "49"
  method_name: sendReport
  parameters:
    - 1
    - 0
    - 20
  endpoint: "0"
target:
  device_id: "9"

Et le message d’erreur qui est remonté:
image

Clairement ça bloque dejà à la première ligne

Petit update. Plutot que d’essayer de pousser la temperature exterieure vers mon thermostat de facon hasardeuse, je décidé d’essayer de setter la consigne tout en regardant le log de Z-Wave JS UI.
premierement j’ai setté la consigne à travers le widget, et le log me donne ça:

2023-02-07 14:42:14.861 INFO MQTT: Message received on zwave/9/67/0/setpoint/1/set: '20.5'
2023-02-07 14:42:14.869 INFO Z-WAVE: Writing 20.5 to 9-67-0-setpoint-1
2023-02-07 14:42:14.985 INFO Z-WAVE: Node 9: value updated: 67-0-setpoint-1 20 => 20.5

Ensuite j’ai créé une commande dans JMQTT avec une consigne de 18°C:

Je regarde à nouveau le log et voici ce que je vois:

2023-02-07 15:01:20.007 INFO MQTT: Message received on zwave/_CLIENTS/ZWAVE_GATEWAY-Jeedom/api/sendCommand/set
: '{"args":[{"nodeId":9,"commandClass":67,"endpoint":0},"sendReport",[1,0,18]]}'

J’en déduit que mon message se rend bien jusqu’à Z-WAVE JS, mais qu’il n’est pas compris. Qu’est ce qui ne va pas dans ma syntaxe?

Sur les liens que tu avais donnés, ils utilisent la CC49.

La documentation du STZW402+ n’étant pas très fournie, difficile de deviner, est-ce que tu peux m’envoyer par MP un dump de ton node ? Pour ce faire :

Je pense que le formattage est bon, la preuve la commande part.

On peut confirmer en regardant le code du thermostat sur Github (https://github.com/stelpro/Ki-Z-Wave-Thermostat/blob/d106ec8c640d3288850e672bf88352beff6f57c7/devicetypes/stelpro/stelpro-ki-thermostat.src/stelpro-ki-thermostat.groovy#L373) que les incréments se font bien de 0.5 en 0.5.

Donc il y a au minimum une précision de 1 (1 décimale) demandée. Refais le test avec 18.0 par exemple.
Ca devrait changer la valeur ici :

Si toujours pas, je t’avoue que je n’ai pas d’autre piste :confused: