NEWS
Curl Antwort als Json auslesen
-
Hallo,
ich habe mir ein Skript von paul53 aus diesem Thema geholt:
Re: Json verarbeiten
welches bei mir so aussieht:
var abfrage = "curl -G https://mongol.brono.com/mongol/api.php?commandname=get_last_transmit -d format=json -d pass=xxx -d user=xxx -d unitnumber=xxx"; createState("SoC", 0); createState("address", 0); function abfrageStarten() { exec(abfrage, function(err, stdout, stderr) { if (err) { log("Error: " + err,"warn"); return; } var pv = JSON.parse(stdout); setState("SoC", pv["soc"]); setState("address", pv["address"]); }); } setTimeout(abfrageStarten, 100); // Script start schedule("*/1 * * * *", abfrageStarten); // jede Minute
Leider bekomme ich eine Fehlermeldung:
javascript.0 2020-06-30 15:03:06.804 error (2322) script.js.common.Zero_abfragen: setForeignState: undefined is not a valid state value
Ich denke, dass das daran liegt, dass die Ausgabe bei mir anders ist, nämlich (Augabe aus Curl unter Windows nach Aufruf des Befehls):
[{"unitnumber":"xxx","name":"xxx","unittype":"5","unitmodel":"6","analog1":"0.09","mileage":"2091.01","software_version":"190905","logic_state":"2","reason":"2","response":"0","driver":"0","longitude":"9.1440","latitude":"9.9687","altitude":"119","gps_valid":"0","gps_connected":"0","satellites":"0","velocity":"0","heading":"309","emergency":"0","shock":"","ignition":"0","door":"0","hood":"0","volume":"0","water_temp":"","oil_pressure":"0","main_voltage":13.13,"siren":"0","lock":"0","int_lights":"0","datetime_utc":"20200629161954","datetime_actual":"20200630101642","address":"xxx, xx xxxxxxx","perimeter":"","color":2,"soc":82,"tipover":0,"charging":0,"chargecomplete":0,"pluggedin":0,"chargingtimeleft":0}]
Kann mir bitte jemand helfen das Script anzupassen?
Gruß,
Chris -
@ChrisBGL du erhälst ein Array. Daraus kannst du nicht direkt den Wert von "soc" rausziehen.
Bersuch mal folgendes:
const pv = JSON.parse(stdout); setState("SoC", pv[0].soc); setState("address", pv[0].address);
-
@ChrisBGL sagte in Curl Antwort als Json auslesen:
Script anzupassen?
var pv = JSON.parse(stdout)[0];
-
Funktioniert, danke!