Bonjour,
je travail a rendre le NsPanel sonoff en tasmota full compatible il a une particularité c’est que sur l’ecran widget on touche un des 8 boutons ca envoi le topic suivant
Nspanel1/RESULT
{« NSPanel »:{« ctype »:« group »,« id »:« 1 »,« params »:{« switch »:« on »,« switches »:[{« switch »:« on »,« outlet »:0}]}}}
j’ai fait un filtrage pour recuperer le ID qui correspond au numero du bouton
Nspanel1/RESULT{NSPanel}{id}
et un filtrage pour recuperer l’etat de l’ID binaire
Nspanel1/RESULT{NSPanel}{params}{switch}
la question est la suivante:
si je doit creer un bonton par ID pour recuperer son etat je doit faire un filtrage par topic genre :
Nspanel1/RESULT{NSPanel}{id:« 1 »}{params}{switch}
pour ne recuperer que l’etat de l’ID numero 1 pour le bouton 1, on ou off
Bonsoir,
pourquoi isoler le payload ? sur jmqtt en mode json tu récupère {id} et {params}{switch} ?
si ta demande c’est pour par exemple garder la dernière info {id} → {params}{switch} tu ne pourra pas isoler le payload car cette info est écrasé par le nouveau payload, seul moyen est d’utiliser un scénario qui filtrera {id} et qui alimentera un virtuel qui contient tes 8 états du bouton.
je m’en douté un peu mais je voulais absolument eviter la solution scenario/virtuel car trop lent.
je voulais filtrer car toute ce que je recoit c’est
bouton 1 on
{« NSPanel »:{« ctype »:« group »,« id »:« 1 »,« params »:{« switch »:« on »,« switches »:[{« switch »:« on »,« outlet »:0}]}}}
bouton 2 off
{« NSPanel »:{« ctype »:« group »,« id »:« 2 »,« params »:{« switch »:« off »,« switches »:[{« switch »:« off »,« outlet »:0}]}}}
bouton 8 on
{« NSPanel »:{« ctype »:« group »,« id »:« 8 »,« params »:{« switch »:« on »,« switches »:[{« switch »:« on »,« outlet »:0}]}}}
ect
et je trouvé domage de monter un scenario super complexe et donc lent pour ca
Pour identifier une partie du payload Json de façon conditionnelle, il faudrait pouvoir utiliser une expression JSONPath type : $.NSPanel[?(@.id =="1")].params.switches[0].switch
(Trouvée ici : Sonoff NSPanel + Tasmota Flash / Konfiguration – BangerTECH)
Or jMQTT NE SUPPORTE PAS actuellement la recherche dans les payload Json en JSONPath.
Ne serait-ce pas une évolution à prendre en compte dans le cadre de notre prochain gros chantier @Domochip ?
Ca permettrait de séparer le topic du chemin JSON.
Très interessant.
Il faudrait faire 2 champs sur les commandes.
Par contre, je ne vois pas encore l’impact sur la vue JSON, mais ca ne parait pas insurmontable.
Au lieu de générer {toto}{tutu}
Il faut mettre [toto][tutu]
je suis au regret de te dire que ca ne fonction pas…
recu de /RESULT {"NSPanel":{"ctype":"group","id":"1","params":{"switch":"off","switches":[{"switch":"off","outlet":0}]}}}
j’ai mis $.NSPanel[?(@.id == "1")].params.switch
petite modif mais rien n’y fait j’ai essayé avec plein de format different mais ca ne veux pas … dés que je filtre plus rien n’arrive j’ai meme essayé avec des ‹ 1 › 1 .
ca ne veux pas je suis en train de me dire que si ca ce peu c’est que le id n’est pas positionné ou il faut dans la chaine.
désolé de t’emmerder avec ca, si tu as une idée
merci