NEWS
Text mit PARSER Adapter auslesen
-
@man10to sagte in Text mit PARSER Adapter auslesen:
Leider scheinen die * (Sterne) noch ein Problem zu sein.
nein! es gibt tatsächlich Einträge, die anders aussehen und wo die Anführungszeichen fehlen.
erst recht ein Grund für vollständige Informationen
@man10to sagte in Text mit PARSER Adapter auslesen:da ich vergessen hatte das als Code zu deklaieren.... '
auch ein Beispiel warum code-tags so wichtig sind!
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1Wenn jetzt keine weiteren Überraschungen kommen:
cem[^;]+;"?([^"]+)"
-
@man10to sagte in Text mit PARSER Adapter auslesen:
Das ist ein csv Export aus dem Portal ...
dann ist das kein Quelltext und wird nicht klappen, zumal hier anscheinend noch weitere Anführungszeichen geschlabbert werden
EDIT: Das scheint zu klappen
\*[^;]+;"?([^"]+)"
-
@homoran Ja du hast recht. Ich war zu schnell...
Aus dem Qelltext möchte ich dann für jede ladestation den Status auslesenDies sind die Stationskennungen, mal mit drei * mal mit zwei.
DE*CEM*EWFOEK20*991 DE*CEM*EWFOEK20*771 DE*cem*E740796*004 DE*cem*E809189*001 DE*cem*ESLP2
Und der Status kann dann sein:
Verfügbar "Versorgung läuft" "E-Auto zieht keine Energie" "ESDI liefert keine Energie"
Standort;EVSE-ID;"Status des Ladepunkts";Parkplatz-Status;"Status des Steuergeräts";Straße;"Letzter abgeschlossener Ladevorgang";Ort;Lage;Phase;Zugriffsart;reservierbar;Sticker;"Whitelist Kundengruppen" WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*991;Verfügbar;-;Online;"Lange Straße";;Wolfenbüttel;;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*881;Verfügbar;-;Online;"Lange Straße";;Wolfenbüttel;;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*771;Verfügbar;-;Online;"Lange Straße";"2022-10-12 07:53:24";Wolfenbüttel;;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*661;"E-Auto zieht keine Energie";-;Online;"Lange Straße";;Wolfenbüttel;;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*551;"E-Auto zieht keine Energie";-;Online;"Lange Straße";"2022-10-12 07:30:31";Wolfenbüttel;;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*442;Verfügbar;-;Online;"Lange Straße";"2022-10-07 16:28:13";Wolfenbüttel;4B;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*441;Verfügbar;-;Online;"Lange Straße";;Wolfenbüttel;4A;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*332;Verfügbar;-;Online;"Lange Straße";;Wolfenbüttel;3B;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*331;Verfügbar;-;Online;"Lange Straße";;Wolfenbüttel;3A;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*222;Verfügbar;-;Online;"Lange Straße";;Wolfenbüttel;2B;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*221;"E-Auto zieht keine Energie";-;Online;"Lange Straße";"2022-10-12 07:47:14";Wolfenbüttel;2A;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*112;Verfügbar;-;Online;"Lange Straße";;Wolfenbüttel;1B;AC;RFID;1;; WF_Ortseingang-TELEKOM;DE*CEM*EWFOEK20*111;Verfügbar;-;Online;"Lange Straße";;Wolfenbüttel;1A;AC;RFID;1;; "Ostfalia_WF_R_Parkplatz Recht Salzdahlumer Str. 46/48";DE*cem*E809189*002;Verfügbar;-;Online;"Salzdahlumer Str.";"2022-10-12 13:04:50";Wolfenbüttel;;AC;RFID;1;; "Ostfalia_WF_R_Parkplatz Recht Salzdahlumer Str. 46/48";DE*cem*E809189*001;Verfügbar;-;Online;"Salzdahlumer Str.";"2022-10-12 11:00:24";Wolfenbüttel;;AC;RFID;1;; Ostfalia_SZ;DE*cem*E740796*004;"Versorgung läuft";-;Online;"Karl Scharfenberg";"2022-10-12 10:53:47";Salzgitter;;AC;RFID;1;; Ostfalia_SZ;DE*cem*E740796*003;"E-Auto zieht keine Energie";-;Online;"Karl Scharfenberg";"2022-10-12 09:50:42";Salzgitter;;AC;RFID;1;; Ostfalia_SZ;DE*cem*E740796*002;"E-Auto zieht keine Energie";-;Online;"Karl Scharfenberg";"2022-10-11 17:19:09";Salzgitter;;AC;RFID;1;; Ostfalia_SZ;DE*cem*E740796*001;"E-Auto zieht keine Energie";-;Online;"Karl Scharfenberg";"2022-10-11 13:08:10";Salzgitter;;AC;RFID;1;; Ostfalia_WF_H;DE*cem*ESLP2;"Versorgung läuft";-;Online;"Salzdahlumer Str.";"2022-10-12 11:33:27";Wolfenbüttel;;AC;RFID;1;; Ostfalia_WF_H;DE*cem*ESLP1;Verfügbar;-;Online;"Salzdahlumer Str.";"2022-10-12 12:41:51";Wolfenbüttel;;AC;RFID;1;; Ostfalia_WF_H;DE*cem*EMLP2;"Versorgung läuft";-;Besetzt;"Salzdahlumer Str.";"2022-10-11 15:45:30";Wolfenbüttel;;AC;RFID;1;; Ostfalia_WF_H;DE*cem*EMLP1;"Versorgung läuft";-;Besetzt;"Salzdahlumer Str.";"2022-10-12 11:39:19";Wolfenbüttel;;AC;RFID;1;;
-
@man10to sagte in Text mit PARSER Adapter auslesen:
Aus dem Qelltext möchte ich dann für jede ladestation den Status auslesen
da du mit dem Parser sowieso nur ein Ergebnis bekommst, ist es egal dass
@man10to sagte in Text mit PARSER Adapter auslesen:
die Stationskennungen, mal mit drei * mal mit zwei.
sind.
Dann kannst du den jeweiligen RegEx verwenden@man10to sagte in Text mit PARSER Adapter auslesen:
Und der Status kann dann sein:
das macht kein Problem.
passt der zuletzt per Edit geschriebene RegEx?
-
@man10to sagte in Text mit PARSER Adapter auslesen:
Gibt es irgend ein tutuorial in dem man das nachlesen kann ?
-
@homoran bisher konnte ich da nur tests machen. Aber ein Tutuorium konnte ich nicht finden.
Irgendwie hab ich noch nicht rausgefunden wie man auf das 2 oder 4 te vorkommen zugreifen kann.
beim Test wird ja alles gefunden aber wenn im Adapter bekomme ich immer nur die erste Fundstelle angezeigt.
Auch wenn ich bei num eine andere einstelleIch suche mit "numberOfInstallations": "(.*\d+)
in dem folgenden Code und möchte z.b. das dritte vorkommen haben
oder geht das anders ? Ich möchte halt die insallierten bio, public oder windkraftanlagen auslesen{ "regionCode": "03254", "timestamp": { "start": "1666177200", "end": "1666178100" }, "autarky": "27.933826145612795", "secondaryInFeed": "24584.262896638596", "consumptions": { "list": [ { "name": "domestic", "unit": "kWh", "usage": "8541.133629709944", "numberOfInstallations": "90296", "timestamp": "1666177200" }, { "name": "public", "unit": "kWh", "usage": "646.2639121908843", "numberOfInstallations": "1554", "timestamp": "1666177200" }, { "name": "industrial", "unit": "kWh", "usage": "24926.058996408185", "numberOfInstallations": "11532", "timestamp": "1666177200" } ], "total": "34113.456538309016" }, "feedIn": { "list": [ { "name": "bio", "unit": "kWh", "usage": "4590.596031211449", "numberOfInstallations": "46", "installedCapacity": "56246", "timestamp": "1666177200" }, { "name": "solar", "unit": "kWh", "usage": "3806.189983341895", "numberOfInstallations": "5026", "installedCapacity": "80239.61100000002", "timestamp": "1666177200" }, { "name": "water", "unit": "kWh", "usage": "332.00724527440605", "numberOfInstallations": "19", "installedCapacity": "3990", "timestamp": "1666177200" }, { "name": "others", "unit": "kWh", "usage": "189.2494276691446", "numberOfInstallations": "201", "installedCapacity": "27607.77", "timestamp": "1666177200" }, { "name": "wind", "unit": "kWh", "usage": "611.1509541735244", "numberOfInstallations": "68", "installedCapacity": "113850", "timestamp": "1666177200" } ], "total": "9529.193641670421" }, "energyMix": "27.79763095775404", "dailyCo2Savings": "87688.94558826505" }
MOD-EDIT: Code in code-tags gesetzt!
-
@man10to sagte in Text mit PARSER Adapter auslesen:
Irgendwie hab ich noch nicht rausgefunden wie man auf das 2 oder 4 te vorkommen zugreifen kann.
beim Test wird ja alles gefunden aber wenn im Adapter bekomme ich immer nur die erste Fundstelleindem du Num entsprechend anpasst
-
@man10to sagte in Text mit PARSER Adapter auslesen:
Das ist ein csv Export aus dem Portal
Wenn man mehrere Werte aus einem CSV auslesen möchte, wäre es dann nicht besser mit einem kleinen Skript zu arbeiten?
Das ist ja mühsam und fehleranfällig für jeden Datensatz und jedes Feld ein eigenes Regex zu erzeugen.
Mit der bibliothek https://www.npmjs.com/package/csv-parse
geht das wunderbar,kann man die csv aus dem portal online direkt abrufen?
und zum 2. Beispiel im gleichen thread??? besser wäre dazu ein neuen thread anzulegen
das ist doch direkt json, auch hier geht das mit einem skript wesentlich einfacher als den mit regex zu interpretieren.
wenn du vom 2. oder 3. redest. das kann bei einem anderen abruf schon wieder eine andere reihenfolge haben und dann ist es das 5.
und er hat den code/json schon wieder nicht in code-tags gepackt.wenn ihr euch nicht sicher seid ob das genau die richtige lösung ist, dann bitte ergebnisoffen fragen. sonst fallen wir (auch ich) immer wieder drauf rein, das das nicht die beste lösung ist und helfen (doktern) an lösungen herum die eigentlich keine guten sind und morgen schon wieder umfallen. =frust bei allen
-
@oliverio sagte in Text mit PARSER Adapter auslesen:
wäre es dann nicht besser mit einem kleinen Skript zu arbeiten?
ja!
-
@homoran das hab ich versucht, aber wenn ich etwas anderes als 0 einstelle wird nichts mehr angezeigt ...
-
@man10to sagte in Text mit PARSER Adapter auslesen:
@homoran das hab ich versucht, aber wenn ich etwas anderes als 0 einstelle wird nichts mehr angezeigt ...
zeigen
-
-
@man10to das ist doch nicht mein RegEx!
-
@homoran ok, wo gibt es deins ?
-
@man10to was ist hier eigentlich los?
Hier scheint es drunter und drüber zu gehen.geht es hier dauernd um verschiedene Quelltexte?
oder kommen "nur" dauernd neue Informationen?ich habe immer den gesamten Quelltext haben wollen, damit man wahlweise ein eindeutiges Ergebnis, oder ein mehrfach nutzbares ReEx erstellen kann. Mit Schnipseln geht das nicht. Und ein Einzeltreffer kann bei einem ungeeigneten RegEx nicht einfach per Num für andere Fundstellen genutzt werden.
für dein letztes JSON wäre es
berOfI[^\:]+\: \"(\d+)
da geht es auch mit NUM
aber mach es besser mit einem Skript -
@homoran Es tut mir echt leid das ich das so unkoordiniert gemacht habe.
Nach deinem ersten Hinweis auf den ganzen Quelltext habe ich wirklich versucht immer den ganzen Quelltext zu versenden.
Ich bin dir sehr Dankbar für die Hilfe und un funktioniert das auch genauso wie gewünscht. Ich findes es fanzinierend wie schnell und gut du Antwortest und kann deine Verärgerung schon etwas nachvollziehen.
Mein erster Ansatz war ja das ich selbst herausfinde wie solche Strings gefunden werden. Leider komme ich mit der Seite zum testen zar zum Testen kalr aber nicht für die Anleitung bzw das verständniss wie genau die syntax ist.
Gibt es da überhaupt etwas ?Nochmals entschuldigung für die Verwirrung..
Egbert
-
@man10to sagte in Text mit PARSER Adapter auslesen:
Gibt es da überhaupt etwas ?
nicht wirklich, aber in regex101 wird jede Regel einzeln sehr gut erklärt, und wenn du einen kompletten RegEx gebaut hast, wird dieser nochmals in seine Bestandteile zerlegt erläutert