Bonjour à tous
Je suis un utilisateur convaincu des produits Shelly, en effet la simplicité, la qualité et l’ouverture des produits sont une garantie pour le hacker ouvert que je suis.
Je travaille actuellement sur l’amélioration d’un plugin sur Jeedom. Je me concentre plus particulièrement sur la partie « Actions: Report Sensor Value (url_report) ».
Je veux que Shelly H&T fasse une requête GET sur une API sur mon serveur Jeedom. Pour l’instant ça va.
L’adresse de ma commande est la suivante :
http://ip-serveur-jeedom/core/api/jeeApi.php?apikey=api-jeedom&type=cmd&id=4078
Dans l’adresse ci-dessus, les paramètres utiles type=cmd&id=4078 permettent à jeedom de transmettre l’information à la commande 4078 et il ne pouvait en être autrement.
Cependant le Shelly H&T, très généreux, fera un GET sur l’adresse renseignée et affichera les valeurs « hum » et « temp ». Mais ça ne s’arrête pas là, ça va remplacer l’id de l’url (4078) par l’id interne du Shelly H&T :
Dans la requête ci-dessus, aucune trace de notre id 4078
[2022-12-09 10:53:57] [DEBUG]: Demande sur http api de: 192.168.2.122 => {"apikey »:"api jeedom »,"type »:"cmd »,"id »:"shellyht-CA9836 »,"hum »:"60 »,"temp »:"21.00"}
En conséquence, Jeedom ne sait pas à quelle commande envoyer ces informations:
[2022-12-09 10:53:57] [ERREUR] : Aucune correspondance de commande ID : shellyht-CA9836
J’ai essayé de restructurer l’url en déplaçant l’id mais rien n’y fait. Il semble qu’en interne le H&T de Shelly décompose l’adresse pour récupérer les données utiles et recomposte sa demande en omettant l’identifiant fourni dans l’url.
Exemple avec l’id passé entre {} :
http://ip-serveur-jeedom/core/api/jeeApi.php?apikey=api-jeedom&type=cmd&{id=4078}
On retrouve l’identifiant mais il est inutilisable par Jeedom
[2022-12-09 12:13:42] [DEBUG]: Demande sur http api de: 192.168.2.122 => {"apikey »:"api jeedom »,"type »:"cmd »,"{id »:"4078} »,"hum »:"60 »,"temp »:"20.25 »,"id »:"shellyht-CA9836"}
Et Jeedom ne trouve pas l’identifiant de la commande :
[2022-12-09 12:10:40] [ERREUR] : Aucune correspondance de commande ID : shellyht-CA9836
Un autre exemple avec le paramètre id transformé en cid
http://ip-serveur-jeedom/core/api/jeeApi.php?apikey=api-jeedom&type=cmd&cid=4078
On retrouve le cid mais il est inutilisable par Jeedom
[2022-12-09 12:13:42] [DEBUG]: Demande sur http api de: 192.168.2.122 => {"apikey »:"api jeedom »,"type »:"cmd »,"cid »:"4078 »,"hum »:"60 »,"temp »:"20.25 »,"id »:"shellyht-CA9836"}
Jeedom n’a pas trouvé l’identifiant comand :
[2022-12-09 12:10:40] [ERREUR] : Aucune correspondance de commande ID : shellyht-CA9836
En conclusion, c’est très gênant dans le contexte de l’exploitation d’une API. Shelly H&T ne doit pas renvoyer son identifiant interne, ni via une autre variable comme cid par exemple... Est-il possible d’envisager de changer ce comportement ? Je pense flasher avec mon propre firmeware mais cela ne va pas encourager les utilisateurs de Jeedom à acheter ces très bons capteurs de température.
Merci pour vos futures réponses,
Jérôme.