Hallo zusammen,
wie bekomme ich den Status eines Dummy Devices auf die Readingswerte gesetzt ?
Also wenn mind. ein Reading red ist, dann soll der Status auch red sein.
Wenn alle auf grün, dann soll der Status auf grün gehen.
Wenn nur grün und orange vorhanden sind dann auf orange.
Internals:
CFGFN
FUUID 60bf543c-f33f-b6d9-a901-774cade7f391fafb
NAME DUMMYLED08
NR 8756
STATE ???
TYPE dummy
READINGS:
2021-06-08 14:09:25 Alarm orange
2021-06-08 13:28:52 HZ.button green
2021-06-08 13:29:52 IO.watch red
2021-06-08 13:29:36 PR.button green
Attributes:
room Todo
Könnt ihr mich bitte auf den richtigen Weg schubsen ?
VG Klaus
Mit stateFormat kann man eine perl Funktion ausfuehren.
Eine einfachere Variante (nur Rot und Gruen) kann man mit structure und Attributen, ohne Programmierung zusammenbasteln, wobei es dabei nicht Readings, sondern Status der Struktur-Elemente abgefragt wird.
ZitatEine einfachere Variante (nur Rot und Gruen) kann man mit structure und Attributen, ohne Programmierung zusammenbasteln, wobei es dabei nicht Readings, sondern Status der Struktur-Elemente abgefragt wird.
Also dann scheidet structure ja schon mal aus.
ZitatMit stateFormat kann man eine perl Funktion ausfuehren.
Ohje, ich habe es befürchtet...
Du hast nicht zufällig ein kleines Beispiel oder ?
VG Klaus
Kann man das bei structure nicht durch <struct_type>_map beeinflussen?
Zumindest lese ich das so...
https://wiki.fhem.de/wiki/Structure
https://fhem.de/commandref_DE.html#structure
Gruß, Joachim
Man kann da schon was beeinflussen, aber afaik greift sich structure jeweils halt ein Reading von jedem beteiligten Device, und nicht mehrere...
@Rampler:
Etwas Perl-Kenntnisse solltest du dir irgendwann schon zulegen. Hier mal der Versuch, alle Reading-Werte zu verketten und dann per regex und "ternärem Operator" erst rot und dann orange abzufischen... (Code ist für das Einfügen direkt in das Eingabefeld für stateFormat in FHEMWEB
{my $all = ReadingsVal($name,'Alarm','red').ReadingsVal($name,'HZ.button','red').ReadingsVal($name,'IO.watch','red').ReadingsVal($name,'PR.button','red'); $all =~ m{red}x ? return 'red' : $all =~ m{orange}x ? 'orange' : 'green'}
@Beta-User
Dank Dir, habe es mittlerweile auch hin bekommen ..
{ if(ReadingsVal("DUMMYLED08","PR.button","red") eq "red" ||
ReadingsVal("DUMMYLED08","HZ.button","red") eq "red" ||
ReadingsVal("DUMMYLED08","IO.watch","red") eq "red" ||
ReadingsVal("DUMMYLED08","Reserve","red") eq "red")
{"red"}
elsif(ReadingsVal("DUMMYLED08","PR.button",0) eq "orange" ||
ReadingsVal("DUMMYLED08","HZ.button",0) eq "orange" ||
ReadingsVal("DUMMYLED08","IO.watch",0) eq "orange" ||
ReadingsVal("DUMMYLED08","Reserve",0) eq "orange")
{"orange"}
else {"green"}}
Funktioniert ..
Dank euch !!