fhem.pl - userReadings mit Bindestrich werden nicht angelegt

Begonnen von betateilchen, 07 April 2014, 22:21:09

Vorheriges Thema - Nächstes Thema

betateilchen

Das funktioniert einwandfrei:

userReadings pressure_nn:airpress {relDruck(ReadingsVal("BMP180","airpress",1000))}



Das funktioniert nicht (kein reading angelegt, keine Fehlermeldung, einfach nix):

userReadings pressure-nn:airpress {relDruck(ReadingsVal("BMP180","airpress",1000))}



Wieso ist das so?

(ich brauche das Reading mit Bindestrich im Namen, weil ich sonst ca. 120 Verwendungsstellen ändern muss, da das bisher genutzte Device das Reading pressure-nn von Haus aus an Board hatte. Per notify lässt sich das Reading mit Bindestrich problemlos anlegen.)

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

das liegt daran das die regex zum parsen des userReadings attributs nur \w+ für den reading namen verwendet (fhem.pl zeile 2138)

da sollte man alle sonst noch erlaubten zeichen einbauen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rudolfkoenig

Das Problem ist, dass beim Anlegen eines Readings keine Pruefung gibt, insofern sind theoretisch alle Zeichen erlaubt, was wiederum an diversen Stellen zur Problemen fuehrt.
Kannst du bitte testen, ob dein Problem mit Ersetzung der Zeile
      my $regexi= '\s*(\w+)(:\S*)?\s+((\w+)\s+)?({.*?})\s*';
durch
      my $regexi= '\s*([\w-]+)(:\S*)?\s+((\w+)\s+)?({.*?})\s*';
behoben ist?

betateilchen

Das reading wird mit Bindestrich angelegt und auch gefüllt, sieht soweit ganz gut aus.

Mir ist schon klar, dass man eigentlich eine Prüfung in irgendeiner Form braucht, aber der Bindestrich kommt nunmal in vielen Readings bzw. Device(typen) vor.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Vielleicht könnte man in der commandref einen Hinweis darauf einbauen, welche Zeichen für userReadings erlaubt sind - ich hatte gesten keinen Hinweis gefunden und im Logfile gab es auch keine Meldung, aus der man einen Grund ableiten hätte können, warum ein userReading nicht angelegt wird.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

ok, jetzt habe ich den Patch auch im Produktivsystem getestet: Funktioniert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Habs eingecheckt, und im userReadings Abschnitt die moeglichen Zeichen im Namen beschrieben.

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!