MQTT ne comprend pas une info dans un json

Bonjour,

Je passe un json depuis mon client mqtt. Il y a bien creation de l’equipement.

Malgré cela, la commande position est vide alors que le plugin à bien reçu la bonne valeur

[2020-04-07 16:25:14][DEBUG] : 16 : Client Jeedom received PUBLISH (d0, q0, r0, m0, ‹ sensors/lora/esp ›, … (83 bytes))
[2020-04-07 16:25:14][DEBUG] : Message {« RSSI »:« -40 »,« Batterie »:2.84375,« Time »:« 16:25:14 »,« Position »:[46.91286,-2.014153]} sur sensors/lora/esp
[2020-04-07 16:25:14][INFO] : Message json : {« RSSI »:« -40 »,« Batterie »:2.84375,« Time »:« 16:25:14 »,« Position »:[46.91286,-2.014153]} pour information sur : sensors/lora/esp
[2020-04-07 16:25:14][INFO] : Message json : -40 pour information : RSSI
[2020-04-07 16:25:14][INFO] : Message json : 2.84375 pour information : Batterie
[2020-04-07 16:25:14][INFO] : Message json : 16:25:14 pour information : Time
[2020-04-07 16:25:14][INFO] : Message json : Array pour information : Position

comment puis-je utiliser les coordonnées dans un tableau et les faire apparaitre dans un widget google maps?

Merci d’avance pour votre aide.

Patrice

En fait, tu as sûrement la bonne valeur dans position
Sauf qu’il s’agit d’un tableau de 2 valeurs séparées par la virgule.

A mon avis, avec un petit bout de code PHP, où tu récupère le tableau et tu split les 2 valeurs, tu devrais pouvoir récupérer le tableau, il te suffit ensuite de créer 1 virtuel pour sauvegarder la Lat et la Long. Et ca devrait le faire

Tu configures ensuite ta valeur mqtt afin qu’elle puissent lancer le scénario a chaque modification, et je pense (mais pas sûr, mais presque) que ce devrait le faire.

Avec un truc du genre :

<?php
$array = cmd::byString("#[OBJET][PLUGIN][position]#")->execCmd();
var_dump($array);

?>

tu devrais pouvoir voir si tu arrives à récupérer la bonne valeur.

puis $array[0] devrais te donner la latitude
et $array[1] la longitude

Tu colle le tout dans un virtuel et ça devrait le faire

Merci de tes conseils. Je maîtrise le code coté émetteur. Je pourrais splitter les valeurs dans deux champs distincts, mais je ne vois pas comment passer cela a un widget type google maps.

Bonjour,
sinon comme vous maîtrisez le code, en restant dans du json vous formatez le message ainsi :
{" RSSI « : »-40"," Batterie « :2.84375, » Time « : » 16:25:14 « , » Position « :{« lat »:« 46.91286 »,« lon »: »-2.014153"}}

A vous de voir

Merci, je regarde aujourd’hui.

Bonjour,

J’ai fait les modifs coté émetteur mais pas mieux.

[2020-04-08 14:21:47][DEBUG] : 16 : Client Jeedom received PUBLISH (d0, q0, r0, m0, 'sensors/lora/esp', ... (105 bytes))
[2020-04-08 14:21:47][DEBUG] : Message {"RSSI":"-27","Batterie":2.6875,"Time":"14:21:47","Position":{"latitude":46.91286,"longitude":-2.014153}} sur sensors/lora/esp
[2020-04-08 14:21:47][INFO] : Message json : {"RSSI":"-27","Batterie":2.6875,"Time":"14:21:47","Position":{"latitude":46.91286,"longitude":-2.014153}} pour information sur : sensors/lora/esp
[2020-04-08 14:21:47][INFO] : Message json : -27 pour information : RSSI
[2020-04-08 14:21:47][INFO] : Message json : 2.6875 pour information : Batterie
[2020-04-08 14:21:47][INFO] : Message json : 14:21:47 pour information : Time
[2020-04-08 14:21:47][INFO] : Message json : Array pour information : Position

Je sèche là !

@lunarok une idée ? Jeedom V4 et plugin dernière version.

Merci pour votre aide.

Peux-tu en dire plus sur ton widget ? Est-ce un widget pour Jeedom ? pour une autre application ?

Quel est le format d’entrée de l’application ?

C’est un widget custom jeedom mais le problème est avant. Il faut d’abord que le plugin interprète l’info transmise.
Je vais encore faire quelques essais en passant les coordonnées GPS directement sous la forme
{"RSSI":-27,"Batterie":2.6875,"Time":"14:21:47","Position":46.91286,-2.014153}
On verra bien

Voilà ce qu’il fallait faire. Maintenant le plugin interprète bien les valeurs et le widget affiche parfaitement la position.

image

Merci pour vos conseils.

Bonjour,
Mes excuses j’utilise JMQTT comme plugin et ça fonctionne:


L’essentiel c’est que votre problème soit réglé :wink:

Heureux d’apprendre que tout est ok :slight_smile:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.