FRITZ!Box - Item mit Regex

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04
Answers: 0

FRITZ!Box - Item mit Regex

Beitrag von Mr. BJ »

Hallo zusammen,

ich quäle mich mit Regex in einem Item herum und ich hoffe mir kann da jemand helfen.
Ich verwende das Fritz!Box TR064-Binding und bei der Version-Abfrage bekomme ich immer 141.06.87 anstatt 06.87.
Also habe ich folgendes in meiner .items eingefügt:

Code: Alles auswählen

String  fboxVersion
        "FBox Version [REGEX(\\d{2}.\\d{1,}$):%s]"
        {fritzboxtr064="softwareVersion"}
auch so brachte kein Erfolg:

Code: Alles auswählen

String  fboxVersion
        "FBox Version [%s]"
        {fritzboxtr064="softwareVersion:REGEX(\\d{2}.\\d{1,}$)"}
In der Sitemap habe ich es auch bereits verscuht aber kein Erfolg.
An sich ist der RegEx in Ordnung, ich habe es bei regex101 geprüft. Ich schätze das ich ein Denkfehler in der Items-Datei habe.
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: FRITZ!Box - Item mit Regex

Beitrag von hr3 »

Probier mal

Code: Alles auswählen

String  fboxVersion
        "FBox Version [REGEX(141.(.*?)):%s]"
        {fritzboxtr064="softwareVersion"}

Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04
Answers: 0

Re: FRITZ!Box - Item mit Regex

Beitrag von Mr. BJ »

Leider das gleiche Ergebnis.
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: FRITZ!Box - Item mit Regex

Beitrag von hr3 »

Bei mir funktioniert es damit.
RegEx Transformation ist installiert?
Bitte poste deine sitemap.

Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04
Answers: 0

Re: FRITZ!Box - Item mit Regex

Beitrag von Mr. BJ »

Code: Alles auswählen

Text item=fboxWanIPExternal label="FBox external WAN IP [%s]"
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: FRITZ!Box - Item mit Regex

Beitrag von hr3 »

Den Sitemap-Eintrag für fboxVersion bitte!

Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04
Answers: 0

Re: FRITZ!Box - Item mit Regex

Beitrag von Mr. BJ »

Entschuldige, da habe ich gepennt.

Code: Alles auswählen

Text item=fboxVersion label="FBox Version [%s]"
RegEx Transformation ist auch installiert.

Eine blöde Frage, wenn ich die das Regex in dem Item verwende sollte dann das Ergebnis für alle gleich sein? In der Sitemap verweise/verlinke ich ja nur auf das modifizierte Item, oder?
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

Benutzeravatar
udo1toni
Beiträge: 15243
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: FRITZ!Box - Item mit Regex

Beitrag von udo1toni »

Mr. BJ hat geschrieben: 26. Mai 2018 11:16

Code: Alles auswählen

String  fboxVersion "FBox Version [%s]" {fritzboxtr064="softwareVersion:REGEX(\\d{2}.\\d{1,}$)"}
An sich ist der RegEx in Ordnung, ich habe es bei regex101 geprüft.
Das Problem dabei ist, dass es meines Wissens keinen online Verifier für die in openHAB verwendete REGEX-Art gibt.

Es gibt eigentlich zwei große Unterschiede bei der Arbeit mit REGEX. Der erste Punkt ist, dass REGEX, falls es keinen Match gibt, die volle Eingangszeichenkette zurückliefert, statt einer leeren Zeichenkette. Dieses Verhalten könnte man eigentlich als fehlerhaft bezeichnen :) aber es gab auch einen Grund, warum openHAB sich so verhält - frag bitte nicht, welchen, ich bekomme es nicht mehr zusammen.
der zweite Punkt ist, dass, falls es einen Match gibt, nicht einfach der gesamte Match zurück geliefert wird, sondern ausschließlich die erste Gruppierung. Du hast in Deinem REGEX keine Gruppierung, weshalb auch nichts zurückgeliefert wird.

Die Gruppen werden durchnumeriert, also $1, $2, $3 usw. Der Status wird eben aus $1 gebildet. Eine in openHAB gültige REGEX muss also immer exakt eine Gruppierung enthalten:

Code: Alles auswählen

REGEX(.*Anfang(.*)Ende.*)
Mit einem Eingabewert

Code: Alles auswählen

Das ist der Anfang vom Ende!
wird openHAB

Code: Alles auswählen

" vom "
zurückliefern (natürlich ohne die Gänsefüßchen, aber eben mit den Leerzeichen).
Es gibt noch etliche andere Unterschiede, allgemein kann man sagen, dass REGEX eher das Minimum an Möglichkeiten bietet. Jegliche Spezialitäten sollte man von vornherein vergessen. Wenn man wirklich komplexe Matches bilden muss, ist es besser, gleich zu JS zu greifen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: FRITZ!Box - Item mit Regex

Beitrag von hr3 »

Code: Alles auswählen

Text item=fboxVersion

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: FRITZ!Box - Item mit Regex

Beitrag von hr3 »

Nein, entweder Label im Item oder in der Sitemap definieren. Wenn in der Sitemap angegeben, wird die Definition im Item ignoriert

Antworten