NEWS
Anfängerfrage http request
-
Hallo,
ich bin absoluter Anfänger und benötige einen Tip um in die richtige Richtung zu gehen. Ich bekomme über einen http request Daten eines Wettersensors. Die Daten liegen folgendermaßen an.
20210415112525 TH0 2.5 65 1.4
Am Anfang steht also Das Datum mit Uhrzeit. Dann folgt die Kennung des Sensors gefolgt von Temperatur, Luftfeuchtigkeit und Taupunkt.
Mein Ziel ist jetzt die Daten so zu vereinzeln dass sie lesbar sind und ich sie an einen zB cuxd Sensor bzw. Eine Systemvariable an HomematicIP übergeben kann.
Danke für eure Hilfe oder Anregungen.
-
@ralf2201 Was nutzt du denn / willst du denn nutzen ?
JS ?
Blockly ?
NodeRed ?
(edit: sorry, hatte das Forum nicht beachtet)Letztendlich würde ein Regex gehen :
(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d) TH\d (\d+.\d+) (\d+) (\d+.\d) Liefert ein Array zurück
[Jahr, Monat, Tag, Stunde, Minute,Sekunde, Wert 1, Wert 2, Wert 3]Zum ausprobieren: https://regex101.com, deinen String als Teststring, meinen als Expression
NodeRed hat sicherlich auch eine Node die ein Regex verarbeiten kann. Da kannst du dann die einzelnen Punkte heraus holen.
A.
-
@ralf2201 Ich würde es so machen:
Wandle entweder alles in ein Array um oder lass Dir die Daten nacheinander über die Split Node nacheinander ausgeben.
Im Array greifst Du dann zum Beispiel auf die einzlnen Werte mit msg.payload[0] auf das Datum zu,Ich hab dann das Datum, als 1. Feld mal genommen, mit dem vom @Asgothian regulären Ausdruck in einen moment konformen String umgewandelt und dann kannst Du das Datum direkt in der für Dich gewünschten Form ausgeben:
Die regulären Ausdrücke stehen Dir auch in Abfragen zur Verfügung - und somit kannst Du nach der Split Node die Nachrichten auch direkt weiter verarbeiten.
Damit sollten Dir nun alle Zugriffsmöglichkeiten zur Analyse und Weiterverarbeitung offen stehen.Hier der Flow zum Import:
-
@ralf2201 Was @Asgothian vorgeschlagen hat geht natürlich auch ganz simpel in Node-red. Hier mal mit einem change-node und einem JS-Objekt als Ergebnis.
Und hier der Flow:
-
Vielen Dank für die Hilfe.
Mein Problem ist soweit gelöst. Ich habe aber gesehen, dass ich mich noch viel mehr einlesen muss.