openhab, spezielle Fragen zu REGEX

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: openhab, spezielle Fragen zu REGEX

Beitrag von Tokamak »

Johannes911 hat geschrieben: 19. Aug 2020 18:13 @Tokamak: da müsste ich davor noch die Position im Datenstrom herausfiltern
Sollte nicht, da der Anfangsteil mit .* übersprungen wird.
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

Johannes911
Beiträge: 81
Registriert: 17. Aug 2020 08:02
Answers: 0

Re: openhab, spezielle Fragen zu REGEX

Beitrag von Johannes911 »

REGEX für folgende Daten A:

Code: Alles auswählen

<div id="pos365">&nbsp;32,1 &deg;C </div>
<div id="pos366">999,9 &deg;C </div>

Code: Alles auswählen

{ http="<[blnet:10000:REGEX(.*\"pos365\">[&nbsp;]*([-]*[0-9]+,[0-9]).*)]" }
bringt als Ergebnis 32,1 als String.
und

Daten B:

Code: Alles auswählen

<div id="pos190">AUS</div>

Code: Alles auswählen

 { http="<[blnet:30000:REGEX(\"pos190\">([A-Z][A-Z][A-Z]).*)]" }
bringt als Ergebnis entweder AUS oder EIN als String

Damit scheinen meine REGEX-Probleme wohl gelöst



{ http="<[blnet:10000:REGEX(.*\"pos365\">[&nbsp;]*([-]*[0-9]+,[0-9]).*)]" }
............................................Trigger
...............................................................0 bis n mal &nbsp;
.............................................................................0 bis n mal ein Minuszeichen
..................................................................................1 bis n mal Ziffern
...........................................................................................ein Komma
.............................................................................................eine Ziffer
...................................................................................................Rest entsorgen


funktioniert hier auch bei 5-stelligem Betriebsstundenzähler
<div id="pos32">&nbsp;&nbsp;&nbsp;&nbsp;0 Std</div>

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: openhab, spezielle Fragen zu REGEX

Beitrag von Tokamak »

Schon mal

Code: Alles auswählen

{ http="<[blnet:10000:REGEX(.*([-]*[0-9]+,[0-9]) &deg.*)]" }
ausprobiert?

Hier zielst du nur auf die Zahl vor dem °C ab, alles andere wird ignoriert.
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

Johannes911
Beiträge: 81
Registriert: 17. Aug 2020 08:02
Answers: 0

Re: openhab, spezielle Fragen zu REGEX

Beitrag von Johannes911 »

ja, aber meine Lösung ist für mich universeller da sie auch bei den Stunden und Minuten funktioniert (Betriebsstundenzähler)

Code: Alles auswählen

<div id="pos30">&nbsp;&nbsp;&nbsp;&nbsp;2 Std</div>
<div id="pos31">11 Min</div>
<div id="pos32">&nbsp;&nbsp;&nbsp;&nbsp;0 Std</div>
<div id="pos33">27 Min</div>
<div id="pos34">&nbsp;&nbsp;&nbsp;&nbsp;0 Std</div>
<div id="pos35">&nbsp;0 Min</div>
<
aber danke

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: openhab, spezielle Fragen zu REGEX

Beitrag von Tokamak »

Okay, verstehe.

Versuche es mal mit

Code: Alles auswählen

{ http="<[blnet:10000:REGEX(.*([-]*[0-9]+[,0-9]*) .*</div>)]" }
oder kurz

Code: Alles auswählen

{ http="<[blnet:10000:REGEX(.*([-,0-9]+) .*</div>)]" }
Dann hast du jede Zahl vor dem Blank vor der Einheit und dem abschließenden </div> (es könnte sein, dass man das / in </div> escapen muss).
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

Johannes911
Beiträge: 81
Registriert: 17. Aug 2020 08:02
Answers: 0

Re: openhab, spezielle Fragen zu REGEX

Beitrag von Johannes911 »

ja, das klappt für _einen_ Wert, ich habe aber gut 200 verschiedene Werte pos100 - pos395, allerdings mit Lücken. Und da dann zwischen der posnnn und dem Wert diese &nbsp; stehen ...

Danke

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: openhab, spezielle Fragen zu REGEX

Beitrag von Tokamak »

Hast du es mal ausprobiert?

Die von mir angegebene regex zäumt das Pferd von hinten auf.

Sie nimmt die Zahl, die am Ende vor dem Leerzeichen, das vor der Einheit wie etwa °C oder Std steht, unabhängig davon, was davor steht (bzw. sollte es nehmen, da ich es nicht ausprobiert habe). Alles, was vor der Zahl steht, wird ignoriert, sei es nun posXYZ oder &nbsp
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

Antworten