NEWS
[gelöst] Parser Adapter und Regex
-
Hallo
ich nutze zum Testen von Regex immer https://regex101.com/. Abgesehen davon dass ich mich mit den expressions an sich noch abmühe bekomme ich manche Ausdrücke die dort in PHP OK sind nicht in Java also im Parser Adapter ans Laufen.Hier mein aktuelles Problem.
Ich möchte aus der letzten vollständigen Zeile immer den ersten zweistelligen Wert mit einer Nachkommastelle extrahieren. Dann in einem weiteren RegEx den zweiten zweistelligen Wert mit einer Nachkommastelle.
Im Beispiel also erst 43.0 und dann 39.5
Die Zeilen mit "undefined" können in beliebiger Zahl, oder gar nicht vorhanden sein und müssen ignoriert werden.datetime,n_dayAVG,n_nightAVG 2021-02-13T23:00:00Z,0,38.75689941512687 2021-02-14T06:00:00Z,42.928258741926456,39.480753102759024 2021-02-15T06:00:00Z,43.75857849703471,39.9099923987705 2021-02-16T06:00:00Z,40.64147976311876,39.62856460216651 2021-02-17T06:00:00Z,43.01380733014874,39.58893298143956 undefined,0,0 undefined,0,0 undefined,0,0
Mein Letzter Fehlversuch... https://regex101.com/r/RCOwBl/1
Wäre für Hilfe dankbar
-
@aiouh sagte in Parser Adapter und Regex:
manche Ausdrücke die dort in PHP OK sind nicht in Java also im Parser Adapter ans Laufen.
natürlich nicht, da musst du in regex101.com auch auf javascript umstellen.
php ist eine andere Sprache@aiouh sagte in Parser Adapter und Regex:
Ich möchte aus der letzten vollständigen Zeile immer den ersten zweistelligen Wert mit einer Nachkommastelle extrahieren
ist das gepostete der vollständige Quelltext?
-
@aiouh sagte in Parser Adapter und Regex:
Ich möchte aus der letzten vollständigen Zeile immer den ersten zweistelligen Wert mit einer Nachkommastelle extrahieren
Z,(\d+.\d)
im parser Adapter dann Number=4@aiouh sagte in Parser Adapter und Regex:
Dann in einem weiteren RegEx den zweiten zweistelligen Wert mit einer Nachkommastelle.
Z,[^,]+,(\d+.\d)
ebenfalls num=4 -
Hallo,
Gibt es eine Anleitung wie man mit Regex was auslesen kann?Möchte gerne mehrere Werte hieraus haben z.B. die 84 hinter der Qualität% oder die 89 hinter Schlaf%
26.03.2021, 11:22{"Qualität%":"84","Schlaf":"7,08","Qualität":"5,06","Tief%":"98","bpm%":"168","bpm":"61","Tief":"2,36","Schlaf%":"89","Schlafbewertung":"93"} 25.03.2021, 17:02{"Qualität%":"42","Schlaf":"5,22","Qualität":"2,54","Tief%":"21","bpm%":"164","bpm":"56","Tief":"0,50","Schlaf%":"65","Schlafbewertung":"57"}
-
@stoepselinho sagte in Parser Adapter und Regex:
Gibt es eine Anleitung wie man mit Regex was auslesen kann?
Bestimmt! müsste man mal googeln.
Jeder Befehl von RegEx wird z.B. auf regex101.com beschrieben, und das fertige Regex nochmals analysiert@stoepselinho sagte in Parser Adapter und Regex:
Möchte gerne mehrere Werte hieraus haben
da bietet sich aber eher js/Blockly an. Das ist ein json, da nimmt man den Block "Attribut von ..." in diesem Fall Qualität% und erhält den Wert
-
Wie bekomm ich denn die JSON Datei in Iobroker rein?
Wo genau finde ich denn Attribut von? -
@stoepselinho sagte in Parser Adapter und Regex:
Wie bekomm ich denn die JSON Datei in Iobroker rein?
wo kommt sie denn her?
@stoepselinho sagte in Parser Adapter und Regex:
Wo genau finde ich denn Attribut von?
unter den System-Blöcken
-
Die Datei wird auf Handy automatisch erstellt und dann im Netzwerk gespeichert.
-
@stoepselinho sagte in Parser Adapter und Regex:
und dann im Netzwerk gespeichert.
kommst du da vom ioBroker aus dran?
was steht alles in der Datei?
immer nur eine Zeile?sonst noch irgendwelche Infos?
-
Sonst steh nichts drin jeden Tag kommt oben eine neue Zeile dazu.
Kann man denn mit Iobroker im Netzwerk auf Dateien zugreifen? -
@stoepselinho sagte in Parser Adapter und Regex:
Kann man denn mit Iobroker im Netzwerk auf Dateien zugreifen?
ja
@stoepselinho sagte in Parser Adapter und Regex:
jeden Tag kommt oben eine neue Zeile dazu.
dann wird es schwieriger - aber auch mit dem parser
woher soll denn ioBroker wissen aus welcher Zeile du den Wert haben möchtest -
Will nur einmal am Tag die oberste Zeile quasi auslesen. Also immer nur die neusten Werte
-
Wie kann man denn auf Dateien zugreifen?
-
Kann man die Werte denn komplett in einen Datenpunkt schreiben?
-
@homoran Ich nochmal..
Meine Quell URL hat sich geändert
Ich bekomme nun manchmal ungültige und verstümmelte Zeilen geliefert.datetime,n_dayAVG,n_nightAVG 2021-02-13T23:00:00Z,0,38.75689941512687 2021-02-14T06:00:00Z,42.928257453226456,39.480753102759024 2021-02-15T06:00:00Z,43.75857849703471,39.9099923987705 undefined,0,0 2021-02-16T06:00:00Z,40.64147976311876,39.0 2021-02-17T06:00:00Z,43.0135633014874,39.58893298143956 undefined,0,0 undefined,0,0 undefined,0,0
Die Frage ist nun, ob ich hier mit dem Parser noch richtig unterwegs bin.
Eigentlich sollen die Daten ja in meine MySQl Datenbank.
Importieren des gesamten files geht nicht weil das Format zu fehlerhaft ist.
Ich habe es im Regex 101 hinbekommen nur die gültigen Daten in den gültigen Zeilen in Gruppen zu fassen.
Also verstümmelte Zeilen ignorieren und bei der Zeit das T und das Z weglassen.
REGEX
Aber ich steh auf dem Schlauch wie is das nun Zeilenweise in die Datenbank extrahiert bekomme. Dort würde ich es dann in die Spalten zerlegen und speichern.
Jede bessere Idee ist natürlich willkommen, ich kann leider weder Java noch PHP..nur Google...
-
@aiouh ich habs gelöst. Mit WGET und cron job die files holen und mit Mysql "load infile" in die Datenbank importieren. Parser war hier nicht das Richtige, aber ansonsten bin ich immer noch vom Parser begeistert.