Parsing d'un JSON de ESPEASY pour les débutants

Capteurs et actionneurs HTTP

Parsing d'un JSON de ESPEASY pour les débutants

Messagepar Jackoncept » 02 Fév 2020 21:59

BOnjour,
je bricole plein de module avec ESPEasy et le dernier en date me permet de mesurer la production, la tension et l'intensité d'un appareil éléctrique.

En allant sur l'IP de l'appareil et en ajoutant /Json à l'url j'obtiens ce fichier :

Code : Tout sélectionner
{"System":{
"Build":20104,
"Git Build":"",
"System Libraries":"ESP82xx Core bc204a9b, NONOS SDK 2.2.2-dev(38a443e), LWIP: 2.1.2 PUYA support",
"Plugins":48,
"Plugin description":" [Normal]",
"Local Time":"1970-00-00 00:00:00",
"Unit Number":0,
"Unit Name":"ESP_Easy",
"Uptime":199,
"Last Boot Cause":"Cold boot",
"Reset Reason":"External System",
"Load":11.60,
"Load LC":3025,
"CPU Eco Mode":"false",
"Heap Max Free Block":17384,
"Heap Fragmentation":10,
"Free RAM":19264
},
"WiFi":{
"Hostname":"ESP-Easy-0",
"IP Config":"Static",
"IP Address":"10.0.1.114",
"IP Subnet":"255.255.255.0",
"Gateway":"10.0.1.1",
"STA MAC":"BC:DD:C2:B6:75:37",
"DNS 1":"10.0.1.1",
"DNS 2":"(IP unset)",
"SSID":"LJ007",
"BSSID":"58:90:43:A5:7A:54",
"Channel":1,
"Connected msec":11922986,
"Last Disconnect Reason":1,
"Last Disconnect Reason str":"(1) Unspecified",
"Number Reconnects":0,
"Force WiFi B/G":"false",
"Restart WiFi Lost Conn":"false",
"Force WiFi No Sleep":"false",
"Periodical send Gratuitous ARP":"false",
"Connection Failure Threshold":0,
"RSSI":-77
},
"Sensors":[
{
"TaskValues": [
{"ValueNumber":1,
"Name":"Voltage_(V)",
"NrDecimals":2,
"Value":238.20
},
{"ValueNumber":2,
"Name":"Current_(A)",
"NrDecimals":2,
"Value":0.12
},
{"ValueNumber":3,
"Name":"Power_(W)",
"NrDecimals":2,
"Value":1.10
},
{"ValueNumber":4,
"Name":"Energy_(WH)",
"NrDecimals":2,
"Value":0.04
}],
"DataAcquisition": [
{"Controller":1,
"IDX":0,
"Enabled":"false"
},
{"Controller":2,
"IDX":0,
"Enabled":"false"
},
{"Controller":3,
"IDX":0,
"Enabled":"false"
}],
"TaskInterval":2,
"Type":"PZEM-004Tv30-Multiple",
"TaskName":"PZEM",
"TaskDeviceNumber":251,
"TaskEnabled":"true",
"TaskNumber":1
}
],
"TTL":2000
}


A partir de là j'ai su créer un retour d'état HTTP dans eedomus, cliquer sur l'option convertir JSON en XML mais après je suis bloqué :

Comment récupérer la valeur des 4 paramètres qui m'intéresse (Power_W / Current_(A) / Energy_Wh.
Value de ValueNumber 1, 2, 3, 4 ?

La seule valeur que je sais récuperer en mettant /Value c'est la tension. Soit le premier ValueNumber.

J'ai tenté de mettre les valeurs suivantes dans Xpath :
//TaskValues[2]/Value
//Value[2]

J'ai fait des dizaines de recherches sur comment "Parser" un fichier XML mais je ne m'en sors pas… :geek:

Merci pour votre aide !!
Jackoncept
 
Messages : 30
Inscription : 06 Sep 2017
Localisation : Suisse

Re: Parsing d'un JSON de ESPEASY pour les débutants

Messagepar benj70b » 02 Fév 2020 22:55

Le fichier transformer en XML n'est pas valide a cause de <Force_WiFi_B/G> le / ne passe pas !

Sinon avec ESPEsasy tu peux faire du push vers l'eedomus ex: de ma conf avec les sonoff

Dans controllers :
dans ip controller mettre l'ip de l'eedomus
et dans controller publish
Code : Tout sélectionner
api/set?ction=periph.value&periph_id=%id%&value=%value%&api_user=XXXXX&api_secret=YYYYYY&update_only=1



esp1.png
esp1.png (27.58 Kio) Consulté 953 fois


et dans device :
Mettre le code API de ton periph eedomus dans IDX
esp2.png
esp2.png (20.75 Kio) Consulté 953 fois
Eedomus | Eedomus + | Rpi4 | Esp8266 | Domoticz | deCONZ | EspEasy | Conbee II | Rfxcom | Milight | Foscam | Alexa | Harmony

[Store] : deCONZ - Actionneurs / deCONZ - Capteurs / Domoticz Events / MiLight v4 / MiLight v6 / Etats de batteries
benj70b
 
Messages : 243
Inscription : 20 Jan 2014
Localisation : ici et la

Re: Parsing d'un JSON de ESPEASY pour les débutants

Messagepar Jackoncept » 02 Fév 2020 23:24

en 1 mot : GENIAL !!!!

Merci bcp :!: :!: :!: :!: :!:
Jackoncept
 
Messages : 30
Inscription : 06 Sep 2017
Localisation : Suisse

Re: Parsing d'un JSON de ESPEASY pour les débutants

Messagepar Jackoncept » 22 Mars 2020 11:11

Hello,
J'en profite de ta maitrise du lien eedomus <-> espeasy pour poser la question suivante :

J'aimerai faire l'inverse : récuperer une donnée d'un périphérique de l'eedomus dans un ESP flashé avec ESPEasy. j'ai beau avoir fouillé je ne sais pas si c'est possible ? :?:

Bon Dimanche à tous!
Jackoncept
 
Messages : 30
Inscription : 06 Sep 2017
Localisation : Suisse

Re: Parsing d'un JSON de ESPEASY pour les débutants

Messagepar benj70b » 25 Mars 2020 22:39

bonjour, par defaut on ne peut pas faire , il faut developper un plugin espeasy.
Eedomus | Eedomus + | Rpi4 | Esp8266 | Domoticz | deCONZ | EspEasy | Conbee II | Rfxcom | Milight | Foscam | Alexa | Harmony

[Store] : deCONZ - Actionneurs / deCONZ - Capteurs / Domoticz Events / MiLight v4 / MiLight v6 / Etats de batteries
benj70b
 
Messages : 243
Inscription : 20 Jan 2014
Localisation : ici et la


Retour vers Requêtes HTTP

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité