NEWS
RegEx: Daten aus Wärmepumpe auslesen und setzen
-
Hallo zusammen,
ich wünsche euch ein frohes neues Jahr und hoffe, dass ich hier mit meinem Anliegen richtig bin.
Ich versuche gerade, die Daten meiner Remko-Wärmepumpe via "Parser" auszulesen und stehe vor dem Problem, dass ich gerade nicht so recht weiß, wie ich an die einzelnen Daten komme.
Ich versuche es mal so gut wie möglich zu erklären:
Die Übersichtsseite der Wärmepumpe gibt einige Infos wie Betriebsstatus, Aussentemp, etc an. Technisch funktioniert das ganze so, dass folgende URL aufgerufen wird:
http://192.168.1.102/cgi-bin/index.cgi?read
Der Aufruf erfolgt alle 3 Sekunden. Das Ergebnis sieht dann so aus:
6,5.1,0,2,0,0,0,1,
Die Erklärung zu den einzelnen Modis ist dann so (verkürzt):
6,Betriebsmous
5.1, Aussentemp
0, Partymodus
2,
0,0,0,1, usw
Hinter jedem Komma beginnt also ein neuer Status.
Jetzt möchte ich diese gerne einzeln erhalten. Am besten in ein eigenes Objekt. RegEx ist für mich eine absolute Blackbox, daher komme ich hier nicht weiter.
Ziel des Ganzen soll dann sein, dass ich via JS die Werte des Status ( 6 steht zb. für Heizen, 0 für Standby) entsprechend leserlich übersetze (dies bekomme ich selbst hin, habe ich schon bei meinen Heizungsaktoren gemacht)
Weiß jemand, wie die Regex aussehen müsste?
Es gibt noch diverse Unterseiten, wo die Zahlenreihe den selben Aufbau hat, aber noch erheblich länger ist, da wesentlich mehr Daten dargestellt werden. Allerdings benötige ich auch nicht alle. Am schönsten wäre es, wenn ich es so bauen könnte, dass ich sage:
-
Den Bereich vor dem ersten Komma
-
Den Bereich zwischen dem zwischen dem dritten und vierten Komma
usw….
Wenn ich einen Status ändere, beispiel von Heizbetrieb auf Kühlung, dann sieht das so aus:
http://192.168.1.102/cgi-bin/index.cgi?ID1088=2
Vielleicht bin ich ja auch auf dem Holzweg und ich könnte auf RegEx verzichten und das mit nem Explode oder ähnliches unter JS machen..
Kann mir jemand helfen?
Viele Grüße
-
-
Weiß jemand, wie die Regex aussehen müsste? `
für die "6"````
^(\d),für die 5.1```` .,(-*\d+\.\d)
für die erste 0````
.,...,(\d)Zum Ausprobieren empfiehlt sich [https://regex101.com/r/8hQnSE/1](https://regex101.com/r/8hQnSE/1)
-
Hi,
das hat funktioniert. Den Rest bekomme ich selbst hin, denke ich.
Vielen vielen Dank.
-
Weiß jemand, wie die Regex aussehen müsste? `
für die "6"````
^(\d),für die 5.1```` .,(-*\d+\.\d)
für die erste 0````
.,...,(\d)Zum Ausprobieren empfiehlt sich [https://regex101.com/r/8hQnSE/1](https://regex101.com/r/8hQnSE/1) `
Jetzt hab ich doch noch ein Problem:
4.6,29.1,20.0,300.0,10.4,
Kannst Du mir sagen, wie ich an die 10.4 am Ende komme? Ich fummel jetzt seit fast 2 Stunden…
Alles andere hat so gut geklappt.
Viele Grüße
-
Hi SegaPro,
hast du auf deiner Rmeko WP SmartWeb laufen oder "den alten" Webserver zugriff?
Gruß Andre
-
Den "alten" Webserver, nehme ich an.
Ich wusste bis eben gar nicht, dass es was anderes gibt? SmarT-control schimpft sich das Ding.
Leider kommt man ja auch nicht als root ran - ich hätte das Ding gerne mal etwas modifiziert.
-
Das Ergebnis sieht dann so aus:
6,5.1,0,2,0,0,0,1, `
Das sieht nach einem String mit durch Kommata getrennten Werte aus.
@SegaPro:Vielleicht bin ich ja auch auf dem Holzweg und ich könnte auf RegEx verzichten und das mit nem Explode oder ähnliches unter JS machen.. `
Ja. Suche mal im Forum nach "request" zum Einlesen des Strings in Javascript. Dann den String mit .split(',') in ein Array wandeln, auf deren Elemente über den Index zugegriffen werden kann. Die Werte können dann mit setState() in Datenpunkte geschrieben werden. Beispiel:setState(idAussentemp, parseFloat(arr[1]), true);
-
Den "alten" Webserver, nehme ich an.
Ich wusste bis eben gar nicht, dass es was anderes gibt? SmarT-control schimpft sich das Ding.
Leider kommt man ja auch nicht als root ran - ich hätte das Ding gerne mal etwas modifiziert. `
hi,
ich hatte auch erst smart conrtrol. Hab dann nach nachfrage von Remko ein kostenloses update bekommen.
Bei Smart web sind alle Parameter wie auch am Display der WP vorhanden. Auch Online übers Web.
Leider habe ich noch keine Weg gefunden diese in den IoBroker zu laden. Parser funktioniert glaub ich nicht, da auf der Webseite dynamisch verschieden Funktionen aufgerufen werden.