NEWS
[gelöst] Frage zu RegEx
-
Hallo Günther,
@Jeeper.at:Hier ein Ausschnitt der Quelldaten. `
Hast du mal die ganze Rückgabe?
Dann würde ich das mal über den regex101.com jagen und sehen wie das geht.
Gruß
Rainer
-
Hallo, mein Fehler: Warum poste ich auch nicht gleich die ganze Ausgabe.
Nur die Abfrage auf "temp" ist wohl zuwenig, weil der Kanal des Temperaturfühlers wichtig ist.
{"temp_unit":"celsius","pit":{"enabled":false},"pit2":{"enabled":false},"cpu_load":37.494065146011,"cpu_temp":41.2,"channel":{"0":{"temp":22.45,"color":"green","state":"ok","temp_min":-20,"temp_max":200,"name":"Garraum","alert":false,"show":true},"1":{"temp":0,"color":"red","state":"er","temp_min":-20,"temp_max":92,"name":"Kerntemperatur","alert":false,"show":true},"2":{"temp":0,"color":"blue","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal2","alert":false,"show":true},"3":{"temp":0,"color":"olive","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal3","alert":false,"show":true},"4":{"temp":0,"color":"magenta","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal4","alert":false,"show":true},"5":{"temp":0,"color":"yellow","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal5","alert":false,"show":true},"6":{"temp":0,"color":"violet","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal6","alert":false,"show":true},"7":{"temp":0,"color":"purple","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal7","alert":false,"show":true},"8":{"temp":0,"color":"dark-violet","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal8","alert":false,"show":true},"9":{"temp":0,"color":"seagreen","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal9","alert":false,"show":true}},"timestamp":"2018-03-17T12:35:26+01:00"}
Lg Günther
-
Noch einmal vorsichtig nachgefragt… wäre es per Javascript nicht einfacher?
Wenn man das JSON eingelesen hat, kann per Javascript so z.B. der Channel ausgelesen werden:
var myJson = {"temp_unit":"celsius","pit":{"enabled":false},"pit2":{"enabled":false},"cpu_load":37.494065146011,"cpu_temp":41.2,"channel":{"0":{"temp":22.45,"color":"green","state":"ok","temp_min":-20,"temp_max":200,"name":"Garraum","alert":false,"show":true},"1":{"temp":0,"color":"red","state":"er","temp_min":-20,"temp_max":92,"name":"Kerntemperatur","alert":false,"show":true},"2":{"temp":0,"color":"blue","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal2","alert":false,"show":true},"3":{"temp":0,"color":"olive","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal3","alert":false,"show":true},"4":{"temp":0,"color":"magenta","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal4","alert":false,"show":true},"5":{"temp":0,"color":"yellow","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal5","alert":false,"show":true},"6":{"temp":0,"color":"violet","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal6","alert":false,"show":true},"7":{"temp":0,"color":"purple","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal7","alert":false,"show":true},"8":{"temp":0,"color":"dark-violet","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal8","alert":false,"show":true},"9":{"temp":0,"color":"seagreen","state":"er","temp_min":-20,"temp_max":200,"name":"Kanal9","alert":false,"show":true}},"timestamp":"2018-03-17T12:35:26+01:00"}; var channel = 7; var temp_min = myJson.channel[channel].temp_min; var temp_max = myJson.channel[channel].temp_max; log("channel: " + channel.toString()); log ("temp_min:" + temp_min.toString()); log ("temp_min:" + temp_max.toString());
Ergebnis, für den Channel 7:
12:50:31.272 [info] javascript.1 script.js.test: channel: 7 12:50:31.272 [info] javascript.1 script.js.test: temp_min:-20 12:50:31.272 [info] javascript.1 script.js.test: temp_min:200
Ein Adapter wäre schön, der Webseiten ausliest und in einen Datenpunkt speichert.
Dann könnte man sich den Teil im Skript sparen.
Mit und ohne Anmeldung, POST/GET, usw.
-
Ein Adapter wäre schön, der Webseiten ausliest und in einen Datenpunkt speichert. `
und genau das macht doch der parser-Adapter :?:Gruß
Rainer
-
Dann nimm mal als regex:
emp":([^,]+)
für jeden Kanal eine Zeile und als num dann jeweils 0,1,2,3… auswählen
Gruß
Rainer
-
Hallo Ruhr70,
nichts spricht gegen die Verwendung des Javascript Adapters. Außer evt. das ich kein Javascript kann und ich es mit Blockly auch nicht geschafft habe. Deshalb wollte ich es mal mit dem RegEx Adapter versuchen.
Hallo Rainer,
werde ich mal versuchen. Danke erstmal.
Lg
Günther
-
Ein Adapter wäre schön, der Webseiten ausliest und in einen Datenpunkt speichert.
und genau das macht doch der parser-Adapter :?:
Eigentlich nicht. Er liest die Webseite ein und dann müsstest Du alle einzelnen Werte in einen Datenpunkt speichern.
Aber eigentlich auch doch…
Wenn man als regex /.+/g verwendet, müsste das gesamte JSON in ein Datenpunkt geschrieben werden.
Dann kann dieses per Skript weiterverarbeitet werden.
-
Wenn man als regex /.+/g verwendet, müsste das gesamte JSON in ein Datenpunkt geschrieben werden. `
Genau!Ich weiß nur nicht wie gross der Inhalt des States werden darf.
Gruß
Rainer
-
Ich nochmal.
vielen Dank für die Hilfe.
Es hat nun wunderbar geklappt.
Unten das Ergebnis unserer gemeinsamen Bemühungen. Der Temperaturverlauf meines Pulled Porks welches ich gerade in den Ofen geschoben habe.
Nun dauert es noch ca. 18 Stunden, dann ist es fertig. Und ich habe eine Klasse Linie.
Lg
Günther
-
Nun dauert es noch ca. 18 Stunden, dann ist es fertig. `
Wir sehen uns dann morgen :lol:
Gruß
Rainer
-
Willkommen…...