Hauptmenü

gelöst: Perl Frage

Begonnen von Spartacus, 08 März 2016, 21:23:38

Vorheriges Thema - Nächstes Thema

Spartacus

Hallo,
ich habe ein kleines Problem und habe einen Hänger:
Ich möchte in einer ReadingsGroup den valueSuffix für ein Reading anpassen. Die Readings haben immer die gleiche Struktur: OsterFerien, SommerFerien, usw. Ausgegeben wird ein Zahlenwert
Jetzt möchte ich als Suffix das Wort "Tage" anhängen.
Das habe ich so gemacht: attr Device ValueSuffix {OsterFerien=> "&nbspTage"}
Ich möchte das jetzt für alle Readings einstellen und nicht alle Readings einzeln aufführen. Das klappt aber mit dem Wildcard *ferien nicht. Wie funzt das unter Perl?
Danke,
Spartacus

Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

CoolTux

Versuch mal

.*Ferien

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Spartacus

Hi CoolTux,
das hatte ich schon probiert. Das geht leider nicht. Irgendwie scheint das bei ReadingsGroup wohl anders zu funktionieren...
Teste das gerade mit meinem Abfallkalender:

geht
attr Device ValueSuffix {cal01AF_Restmuell_tage=> "&nbspTage"}
geht nicht:
attr Device ValueSuffix {.*tage=> "&nbspTage"}

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

marvin78

Du bekommst doch sicher eine Fehlermeldung. Nur als Idee: Warum liest du sie nicht und setzt um, was sie sagt?

Es gibt kein Attribut ValueSuffix. Es heißt valueSuffix.

Spartacus

#4
Moin marvin78,
keine Ahnung was Du meinst. Ich benutze valueSuffix und nicht ValueSuffix. Und im Log gibt es keine Fehlermeldung.
Die Syntax ist in Ordnung
2016.03.09 17:42:54 5: Cmd: >attr rgAbfall valueSuffix {'.*tage' => " Tage" }<
2016.03.09 17:42:54 5: Triggering global (1 changes)
2016.03.09 17:42:54 5: Notify loop for global ATTR rgAbfall valueSuffix {'.*tage' => " Tage" }
2016.03.09 17:42:54 5: ABFALL_Notify(myAbfall) - Device: global


Christian
Nachtrag:
uups, mein Fehler: habe es hier fälschlicherweise als "ValueSuffix" gepostet. Im Code habe ich es aber richtig verwendet. Ich frage mal im ReadingsGroup-Forum nach.
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

marvin78

Du wirst sicher verstehen, dass ich natürlich auf den offensichtlichen Fehler hinweise. Meine Empfehlung ist Copy&Paste.

justme1968

#6
der key in einem hash ist immer nur ein string. keine regex.

wenn es wirklich für alle readings gelten soll kannst du entweder wie dokumentiert einen leeren string "" als key verwenden oder du einfache version ohne hash benutzen.

attr <rg> valueSuffix &nbsp;Tage

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

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

betateilchen

Zitat von: justme1968 am 09 März 2016, 20:51:23
der key in einem + ist immer nur ein string. keine regex.

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

justme1968

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

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

Spartacus

Hallo,
danke für den Hinweis. Es gibt schon unterschiedliche Readings in der RG aber alle, die auf *.tage enden, sollen das Anhängsel "Tage" bekommen. die anderen Readings in der Guppe sollen den Suffix nicht bekommen.

Wenn ich das jetzt richtig verstanden habe, geht das nur, indem ich die Readings einzeln aufführe.

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

justme1968

das einfachste ist die {...} perl code variante:attr <rg> valueSuffix {return '&nbsp;Tage' if( $READING =~ m/tage$/ );}

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

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

Spartacus

Hallo,
super, vielen Dank! Das funzt und hilft mir bei einem anderen Problem weiter...

Danke,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R