Status in Abhängigkeit der Readings setzen

Begonnen von Rampler, 08 Juni 2021, 14:17:06

Vorheriges Thema - Nächstes Thema

Rampler

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
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

rudolfkoenig

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.

Rampler

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
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

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'}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Rampler

@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 !!
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!