Readings mit Slash ("/") im Namen

Begonnen von Ruckzuck, 28 August 2021, 11:07:53

Vorheriges Thema - Nächstes Thema

Ruckzuck

Hallo ich Versuche gerade einige Readings aus dem Modul KM200 in einer Readingsgroup zusammenzufassen. Leider sind die Namen der Readings mit Slashs strukturiert:

/dhwCircuits/dhw1/actualTemp
/gateway/uuid
/heatSources/energyMonitoring/maxTankLevel
..usw.

ich habe schon versucht das DEF mit einem Backslash zu escapen, aber leider ohne Erfolg:

buderus:\/gateway*

Kann mir jemand helfen?

Ruckzuck

Mhm, also irgendwie habe ich ein massives Verständnisproblem, oder es gibt irgendwo eine Inkonsistenz in den Modulen. Die Regex, so wie ich sie erwarten würde, lässt sich auf FileLog anwenden, nicht aber auf ReadingsGroup.

Der RegexPart:
     buderus:/dhwCircuits/dhw1/actualTemp:.*

erzeugt mir ein den Eintrag im Logfile
2021-08-28_14:11:01 buderus /dhwCircuits/dhw1/actualTemp: 18.7

In meiner ReadingsGroup führt exakt dieser Ausdruck zu keiner Anzeige des Readings

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Ruckzuck

vielen Dank für deine Antwort.

Zitatnimm punkte an stelle der slash

Vermutlich weil die Module auf den Punkt, als Platzhalter für alle Zeichen, toleranter reagieren, als ein "Escape-Zeichen"? 

Ich habe es getestet und mittlerweile geht beides (Slash & Punkt). Das Problem war der Doppelpunkt am Ende.

Es geht:
buderus:/heatSources/actualModulation.*
buderus:.heatSources.actualModulation.*


Es geht nicht:
buderus:/heatSources/actualModulation:.*
buderus:.heatSources.actualModulation:.*


Das gilt nur für das Modul ReadingsGroup. Das Modul FileLog akzeptiert den Doppelpunkt am Ende.

Ich denke, ich habe hier noch ein Problem zu Verstehen, in welchem Format die Strings im Hintergrund vorliegen, denn gleiches Problem habe ich bei dem Status eines KNX Devices:

TemperaturTest:state

Geht für ReadingsGroup, nicht aber für FileLog.

Kann man sich die Raw Daten der Strings innerhalb der Module ausgeben lassen, um besser nachvollziehen zu können, wie der String vorliegt und behandelt werden muss?

justme1968

auf den : hatte ich nicht geachtet.

bei readingsGroup gibst du reading namen bzw. eine regex die auf den reading namen matched an. der : ist nicht teil des reading namen. der wert auch nicht. deine .* sind also gar nicht nötig.

bei einem notify und FileLog gibst du eine regex an die auf das komplette event (d.h. reading name + : + wert) matched.

den unterschied gibt es weil die readingsGroup immer an allen möglichen werten eines readings interessiert ist (d.h. der wert ist nicht relevant) und notify oder FileLog auch nur an bestimmten werten interessiert können (d.h. du musst den wert mit angeben).

d.h. die unterschiede kommen nicht von unterschiedlicher string behandlung sondern von unterschiedlicher bedeutung der regex.


state ist ansonsten noch eine ausnahme weil es im event normalerweise nicht auftaucht und du das für dein notify erst per attribut aktivieren musst. readingsGroup ist neuer und macht das per default. ausserdem passt es besser zum konzept das man readings angibt.

nichts hintert dich daran den quelltext anzuschauen und/oder entsprechende log zeilen einzubauen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968