Probleme decodage json

bonjour,

j’ai un petit soucis de decodage d’un json. Je recois la chaine suivante dans le topic stationmeteo/etat

[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-01T07:29:54Z","obsTimeLocal":"2024-06-01 09:29:54","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717226994,"lat":43.194,"uv":null,"winddir":135,"humidity":47,"qcStatus":1,"metric":{"temp":21,"heatIndex":21,"dewpt":9,"windChill":21,"windSpeed":0,"windGust":0,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]

j’explose le json et je garde les elements suivants :
stationmeteo/etat / [0][metric][temp]
stationmeteo/etat / [0][humidity]

je valide et j’obtiens bien les valeurs correspondantes mais ensuite ca ne fonctionne plus. En clair je recois bien une nouvelle chaine json toutes les x minutes mais les valeurs stationmeteo/etat / [0][metric][temp] et stationmeteo/etat / [0][humidity] ne sont plus mises a jour.
Si j’efface les données et recommence l"explosion" json, ca fonctionne, je recupere bien les valeurs mais uniquement a la creation pas pour les receptions suivantes.
D’ou peut venir le probleme ?
merci

Bonjour,

Peux tu me faire des captures d’écran de l’équipement et des commandes stp ?

Bad

Bonjour,

J’avais moi également eu des problèmes avec le retour json, êtes-vous bien dans la dernière version de JMQTT ? et vérifier qu’un espace ne s’est pas glissé avant et après les [0][metric][temp] par exemple ?

et est ce que vous voyez bien le champ « Etat » bouger (passer en orange), le but est de valider que les informations json évoluent ?

pas d’espace glissé ce n’est pas moi qui est rempli les champs mais le plugin.

l’etat global stationmeteo/etat se met bien a jour mais pas les champs associes extraits du json.

quand a la version je met a jour tout jeedom des que demandé.

Ok, donc la version de JMQTT est bien la "v23.11.7 " ?

v23.11.7 (2024-05-17 13:03:17)

c’est un truc de fou quand meme.
j’ai une valeur actuelle de temperature a 27.
Je recois un json avec dedans une temperature = 18 J’explose le json et j’ai bien cette valeur :


je sauve et je me retrouve alors avec l’ancienne valeur dans le meme champ.

ci dessous le fichier json recupere sur api.weather.com qui pose probleme :

{
    "observations": [
        {
            "stationID": "ILACIO17",
            "obsTimeUtc": "2024-06-02T15:44:42Z",
            "obsTimeLocal": "2024-06-02 17:44:42",
            "neighborhood": "Clos des Plages-Peymian",
            "softwareType": null,
            "country": "FR",
            "solarRadiation": null,
            "lon": 5.62,
            "realtimeFrequency": null,
            "epoch": 1717343082,
            "lat": 43.194,
            "uv": null,
            "winddir": 45,
            "humidity": 85,
            "qcStatus": 1,
            "metric": {
                "temp": 17,
                "heatIndex": 17,
                "dewpt": 14,
                "windChill": 17,
                "windSpeed": 10,
                "windGust": 10,
                "pressure": 1013.88,
                "precipRate": 2.29,
                "precipTotal": 3.05,
                "elev": 4
            }
        }
    ]
}

peux-tu essayer comme ceci : [observations][0][metric][temp] ?

1 « J'aime »

j’ai fait le test ca ne change rien. Comme on peut voir sur l’image suivante les données recues dans station stationmeteo/etat2 et les champs du dessous decryptes ne correspondent pas. Exemple heure = 2024-06-03 07:49:54 et 2024-06-03 07:39:54

temp = champ cree automatiquement et temp3 = champ cree manuellement.

ps : j’ai aussi essayé de simplfier le json en enlevant ‹ observations › mais ca ne change rien.

Hello @lebphi,

Franchement, le comportement que tu as est assez étonnant.

Peux-tu essayer avec des quotes dans le jsonPath, par ex : [0]["metric"]["temp"] ?

Si ça ne marche toujours pas, peux-tu stp :

  • Mettre jMQTT en débug et le broker en débug,
  • Actionner l’équipement qui pose problème, et
  • Poster ici les logs obtenus ?

Sinon, on peut bloquer un créneau mercredi soir pour regarder ça ensemble via discord.

Bad

ci-dessous deja le debug de plugin concernant les messages en question :

[2024-06-03 17:22:37,054] INFO  Client3         MainThread         publish() : Sending message to broker (topic="stationmeteo/etat2", payload=""[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:21:07Z","obsTimeLocal":"2024-06-03 19:21:07","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435267,"lat":43.194,"uv":null,"winddir":270,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":0,"windGust":0,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"", QoS=1, retain=False)
[2024-06-03 17:22:37,088] INFO  Client3         Brk3Th          on_message() : Message received (topic="stationmeteo/etat2", payload=""[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:21:07Z","obsTimeLocal":"2024-06-03 19:21:07","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435267,"lat":43.194,"uv":null,"winddir":270,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":0,"windGust":0,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"", QoS=1, retain=False)
[2024-06-03 17:22:37,088] DEBUG  JMsg.Snd        Brk3Th          send_async() : Enqued the message in 0.003338ms (qToJ size 1): {'cmd': 'messageIn', 'id': '3', 'topic': 'stationmeteo/etat2', 'payload': '"[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:21:07Z","obsTimeLocal":"2024-06-03 19:21:07","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435267,"lat":43.194,"uv":null,"winddir":270,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":0,"windGust":0,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"', 'qos': 1, 'retain': False}
[2024-06-03 17:22:37,228] DEBUG  JMsg.Snd        SockOut               send() : Sent TO Jeedom 1 messages handled in 43.703318ms (qToJ size 0): [{'cmd': 'messageIn', 'id': '3', 'topic': 'stationmeteo/etat2', 'payload': '"[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:21:07Z","obsTimeLocal":"2024-06-03 19:21:07","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435267,"lat":43.194,"uv":null,"winddir":270,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":0,"windGust":0,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"', 'qos': 1, 'retain': False}]
[2024-06-03 17:23:46,476] INFO  Client3         MainThread         publish() : Sending message to broker (topic="stationmeteo/etat2", payload=""[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:21:07Z","obsTimeLocal":"2024-06-03 19:21:07","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435267,"lat":43.194,"uv":null,"winddir":270,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":0,"windGust":0,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"", QoS=1, retain=False)
[2024-06-03 17:23:46,509] INFO  Client3         Brk3Th          on_message() : Message received (topic="stationmeteo/etat2", payload=""[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:21:07Z","obsTimeLocal":"2024-06-03 19:21:07","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435267,"lat":43.194,"uv":null,"winddir":270,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":0,"windGust":0,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"", QoS=1, retain=False)
[2024-06-03 17:23:46,509] DEBUG  JMsg.Snd        Brk3Th          send_async() : Enqued the message in 0.004292ms (qToJ size 1): {'cmd': 'messageIn', 'id': '3', 'topic': 'stationmeteo/etat2', 'payload': '"[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:21:07Z","obsTimeLocal":"2024-06-03 19:21:07","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435267,"lat":43.194,"uv":null,"winddir":270,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":0,"windGust":0,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"', 'qos': 1, 'retain': False}
[2024-06-03 17:23:46,579] DEBUG  JMsg.Snd        SockOut               send() : Sent TO Jeedom 1 messages handled in 34.836054ms (qToJ size 0): [{'cmd': 'messageIn', 'id': '3', 'topic': 'stationmeteo/etat2', 'payload': '"[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:21:07Z","obsTimeLocal":"2024-06-03 19:21:07","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435267,"lat":43.194,"uv":null,"winddir":270,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":0,"windGust":0,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"', 'qos': 1, 'retain': False}]
[2024-06-03 17:25:25,963] INFO  Client3         MainThread         publish() : Sending message to broker (topic="stationmeteo/etat2", payload=""[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:25:18Z","obsTimeLocal":"2024-06-03 19:25:18","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435518,"lat":43.194,"uv":null,"winddir":225,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":2,"windGust":2,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"", QoS=1, retain=False)
[2024-06-03 17:25:26,056] INFO  Client3         Brk3Th          on_message() : Message received (topic="stationmeteo/etat2", payload=""[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:25:18Z","obsTimeLocal":"2024-06-03 19:25:18","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435518,"lat":43.194,"uv":null,"winddir":225,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":2,"windGust":2,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"", QoS=1, retain=False)
[2024-06-03 17:25:26,056] DEBUG  JMsg.Snd        Brk3Th          send_async() : Enqued the message in 0.026226ms (qToJ size 6): {'cmd': 'messageIn', 'id': '3', 'topic': 'stationmeteo/etat2', 'payload': '"[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:25:18Z","obsTimeLocal":"2024-06-03 19:25:18","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435518,"lat":43.194,"uv":null,"winddir":225,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":2,"windGust":2,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"', 'qos': 1, 'retain': False}
[2024-06-03 17:25:26,167] DEBUG  JMsg.Snd        SockOut               send() : Sent TO Jeedom 6 messages handled in 81.905127ms (qToJ size 0): [{'cmd': 'messageIn', 'id': '3', 'topic': 'shellies/lavevaisselle3/relay/0/energy', 'payload': '1261941', 'qos': 0, 'retain': False}, {'cmd': 'messageIn', 'id': '3', 'topic': 'shellies/lavevaisselle3/relay/0', 'payload': 'on', 'qos': 0, 'retain': False}, {'cmd': 'messageIn', 'id': '3', 'topic': 'shellies/lavevaisselle3/temperature', 'payload': '35.64', 'qos': 0, 'retain': False}, {'cmd': 'messageIn', 'id': '3', 'topic': 'shellies/lavevaisselle3/temperature_f', 'payload': '96.14', 'qos': 0, 'retain': False}, {'cmd': 'messageIn', 'id': '3', 'topic': 'shellies/lavevaisselle3/overtemperature', 'payload': '0', 'qos': 0, 'retain': False}, {'cmd': 'messageIn', 'id': '3', 'topic': 'stationmeteo/etat2', 'payload': '"[{"stationID":"ILACIO17","obsTimeUtc":"2024-06-03T17:25:18Z","obsTimeLocal":"2024-06-03 19:25:18","neighborhood":"Clos des Plages-Peymian","softwareType":null,"country":"FR","solarRadiation":null,"lon":5.62,"realtimeFrequency":null,"epoch":1717435518,"lat":43.194,"uv":null,"winddir":225,"humidity":42,"qcStatus":1,"metric":{"temp":26,"heatIndex":26,"dewpt":12,"windChill":26,"windSpeed":2,"windGust":2,"pressure":1010.84,"precipRate":0,"precipTotal":0,"elev":4}}]"', 'qos': 1, 'retain': False}]

je teste demain le broker en debug.

petite info sur la facon dont je procede pour recevoir le message de la station meteo sur mqtt. Le probleme peut peut etre venir de la.

J’interroge le site meteo via un script qui va chercher le json.
ensuite j’envoie ce json sur mqtt via un equipement du plugin jmqtt.

Et dans un aute equipement jmqtt je traite le reception de ce message :