NEWS
Adapter - Parser (regEx)
-
Wie auch Rainer das gemacht hat, hab ich soweit verstanden ….
...
Aber wie werden alle anderen Daten ausgelesen? Aktuelle Leistung, Gesamtenergie usw.?
Ich muss zugeben, ich bin absolut kein RegEx Profi, und scheitere an den eingaben... ` für mich klingt das irgendwie nach einem Wiedeerspruch 8-)
Schau doch mal hier vorbei https://danielfett.de/de/tutorials/tuto … ausdrucke/
Das ist eine Klasse Erläuterung von RegEx.
Zusammen mit Rainers Beispiel solltest Du zum Ziel kommen können.
-
würde mich anschliessen bei dem Kostal Problem:
Gesamtenergie.*\n.*\n*\s*\s(\d*)
Bringt das richtige Ergebnis, jedoch wird es nicht in das Objekt geschrieben.
-
Wie sieht denn eure Zeile im Parser-Adapter aus?
gebt ihr bei der IP-Adresse die credentials mit?
wie oft ruft der Parser die Seite auf?
Gruß
Rainer
-
Bringt das richtige Ergebnis, jedoch wird es nicht in das Objekt geschrieben.
https://regex101.com/r/4ctx9q/1 ` Was ist denn wenn du die "Rolle" von Datenpunkt "Gesamtenergie" von "state" auf "value" änderst?
Hat der Datenpunkt als Art/Type "Zahl" oder "Logikwert"?
-
Ich denke eher dass die settings im Parser-Adapter für diesen Regex falsch sind. (u.a. Rolle und Typ)
Gruß
Rainer
-
Im Parser wäre Rolle „Wert“- Typ „Number“
Ich hab schon alle Rollen usw. durchgetestet. Aber was nebenbei- wenn das Ergebnis im Parser stimmt,
Ist das regex richtig? Also liegt es nur noch an der Verarbeitung in Iobroker?
Ich hab jetzt alle Rollen und Typen durchgetestet. Er schreibt keinen Wert:
Device Error wenn ich mit der Maus auf dem Wert bleibe, in dem kleinen Fenster was da kommt(Objekte Reiter) mehr nicht.
Der Status wird einwandfrei ausgelesen. (Gleiche URL)
URL ist:http://pvserver:passwort@192.168.2.250/index.fhtml
An der falschen URL kann es nicht liegen. Da der Status ja auch über die gleiche URL ausgelesen wird.
So langsam bin ich am Ende mit meinen Ideen
€: das ist das webinterface: @homoran- ich habe es von deinem Post (gleiches Thema Seite 4) übernommen, da es das gleiche ist, und genauso aussieht. Langsam habe ich den Verdacht, dass es an den Kästchen liegt, wo der Wert von der PV reingeschrieben wird. Der Status steht nämlich so „einfach“ ohne solch ein wertekästchen.. aber du hattest ja mal gesagt, dass du deinen auslesen konntest.
Trotzdem alles kurios, da das Ergebnis im parser richtig angezeigt wird. Als String, Json, number- bekomme ich das richtige Ergebnis.
1744_32f62f67-9792-4af8-9af8-ffe8ff2c39f5.jpeg -
aber du hattest ja mal gesagt, dass du deinen auslesen konntest. `
Ich hatte über den parser nur den Status, die anderen Werte hatte ich über ein shell script in die CCU als SysVar und über hm-Rega in ioBrokerBitte klicke bei dem State in den Objekten mal rechts den Bleistift an, wähle dann den Reiter RAW (nur Experten) und poste den Inhalt.
Gruß
Rainer
-
RAW von Gesamtenergie im Spoiler:
! ````
{
"from": "system.adapter.admin.0",
"ts": 1519326754876,
"common": {
"name": "Gesamtenergie",
"unit": "",
"type": "number",
"role": "value",
"write": false,
"read": true
},
"native": {
"link": "http://pvserver:mondeo@192.168.2.250/index.fhtml",
"regex": "Gesamtenergie.\n.\s*\s([0-9]*)",
"interval": "",
"substitute": "",
"factor": 1,
"offset": 0,
"item": 0,
"substituteOld": false,
"comma": false
},
"acl": {
"object": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator",
"state": 1636
},
"_id": "parser.0.Gesamtenergie",
"type": "state"
} -
Du hast "write" auf false … da wird es schwer etwas in den Datenpunkt reinzuschreiben
-
Das macht der Adapter automatisch. Ich hab da nichts umgestellt, Moment ich ändere und berichte.
€: bringt nix- parser fährt nicht mehr hoch danach. Außerdem steht Einspeisen MPP auch nur auf lesen true und es funktioniert. Wenn ihr euch eure parser Objekte anschaut stehen die bestimmt auch nur auf lesen true.
Also weiter gehts.
-
Ich hätte auch auf das write = false getippt, aber tatsächlich, bei mir steht da auch false: Das bedeutet nur, dass du unter Objekte nicht manuell ändern kannst.
Aber postet doch bitte, bitte endlich mal eure Parser Adaptereinstellungen!
Gruß
Rainer
-
Update:
Ich habe es geschafft die aktuelle Leistung über regex getestet über #FFFFF auszulesen. Da aber viele Werte mit FFFFF auslesbar sind muss ich es hinterher über nen NUM im parser Parlamentarierin.
Sprich aktuell ist NUM0 - aktuelle Leistung.
Gehe ich aber auf NUM1 - Gibt er mir Anfangs die Gesamtenergie aus.
Was auch soweit richtig ist. Ich habe zum Test ein 5sek Polling eingestellt.
Sie da: aktuelle Leistung ändert sich prima alle 5 sek. Aber: die gesamtenergie springt immer ein FFFFF wert weiter aus der html.
-
Das macht der Adapter automatisch. Ich hab da nichts umgestellt, Moment ich ändere und berichte.
€: bringt nix- parser fährt nicht mehr hoch danach. Außerdem steht Einspeisen MPP auch nur auf lesen true und es funktioniert. Wenn ihr euch eure parser Objekte anschaut stehen die bestimmt auch nur auf lesen true.
Also weiter gehts.
` Du hast vollkommen wahr :shock: 8-)
Allerdings hat mein Parser kein Problem damit, wenn ich wirte=true setze
hmm, ich bin ratlos …
-
ich es hinterher über nen NUM im parser Parlamentarierin. `
DANKE!deshalb wollte ich die Konfig sehen!!!!
http://forum.iobroker.net/viewtopic.php … UM#p126201
Gruß
Rainer
-
Ich probiere gerade den Adapter aus, das Meiste klappt auch, ich habe aber ein seltsames Problem:
https://regex101.com/r/oyqcAe/1/
Hier kann man den Text sehen und sehen, dass es dort funktioniert.
Vortag</td>.?\n?.?(-?\d+.?\d+)<
Den ".?\n?.?"-Teil habe ich mit "?" gemacht, falls der iobroker-Parser mit den Zeilenumbruechen und Leerzeichen anders umgeht, macht aber keinen Unterschied, ob die "?" drin sind.
Ich tippe am Ende des Parsereintrags auf bearbeiten (Bleistift) und das entsprechende Fenster oeffnet sich, Seite wird geladen, kein Ergebnis angezeigt.
Stelle ich auf Number(,) um, gibt es ein Ergebnis. Stelle ich wieder auf Number um, gibt es das Ergebnis. Am Anfang macht auf der "playbutton" nicht, nach Umstellen geht er zum Ergebnis im Text.
Ich habe das Gestern schon mit andern Eintraegen der Seite gehabt, gleiches Verhalten, da ich da allerdings die beiden relevanten Werte durch "**" filtern konnte habe ich nur darauf gefiltert und den ersten und zweiten ermittelten Werte (Num=0 und =1) genommen. Das war dann in der gleichen Zeile alles und sobald man auf den Bleistift drueckt gibt es auch das Ergebnis.
Es scheint mir, dass der da irgendwie mit dem was ueber einen Zeilenumbruch hinausgeht ein Problem hat, ich kann nur nicht nachvollziehen was fuer eines.
Jemand ne Idee?** 3803_firefox_2018-02-24_10-31-50.png
3803_firefox_2018-02-24_10-32-26.png
3803_firefox_2018-02-24_10-32-35.png -
Ich habe mal den RegEx so gemacht, wie ich es machen würde (Was natürlich nichts heißt):
Vortag<\/td>\n.+(-?\d+\.\d+)<
und bekomme damit zumindest im Regex101 auch ein Ergebnis.
Wie kommst du auf ein Problem mit dem Zeilenumbruch? damit habe ich im Parser noch nie Probleme gehabt.
ich tippe eher auf die "Leerzeichen" vor dem nächsten . Sind ggf. TAB
Gruß
Rainer
-
Ich meinte mit ueber den Zeilenumbruch hinaus einfach alles zwischen dem Ende der Zeile und den naechsten Buchstaben also Zeilenumbruch und/oder whitespace for dem naechsten.
Habe deine Variante auch probiert, aber exakt das gleiche Verhalten wie bei meiner Variante.
-
Guten Tag
Kann mir jemand mit regEX helfen? Ich bin ein totaler Anfänger.
regEX ist für einen Epson WF-7620 Tintenstand.
Wie kann ich den wert für auslesen.
Source ist eine html page mit ul statements siehe example:
example:
-
BK
-
….
Gruss
Christian
-
-
Hallo und Willkommen im Forum!
ich bräuchte den ganzen Quelltext.
bitte in spoiler und code-Tags posten
Gruß
Rainer
-
Hallo Rainer,
danke für die Rückmeldung
Wenn ich versuche die Page im Spoiler einzufügen erhalte ich nur die meldung:
Diese Seite funktioniert nicht
Chrome hat auf dieser Seite ungewöhnlichen Code erfasst und diese Seite daher blockiert, um Ihre personenbezogenen Daten wie Passwörter, Telefonnummern oder Kreditkarteninformationen zu schützen.
Versuchen Sie, die Startseite aufzurufen.
ERR_BLOCKED_BY_XSS_AUDITOR
Wie kriege ich den html in de Spoiler?
Christian