Wecker mit mehreren Zeitangaben

Begonnen von der-sigi, 08 Dezember 2017, 14:33:33

Vorheriges Thema - Nächstes Thema

der-sigi

Hallo

ich möchte auch mal was zurückgeben. Da ich zu dem Thema nichts gefunden und mir das selbst zusammengestrickt habe, hier das Ergebnis. Das ist sicher noch besser zu machen. Soweit eben wie ich FHEM verstehe. Vielleicht kann es jemand gebrauchen.

Ich habe eine Eingabemöglichkeit für mehrere Zeiten an einem Dummy gesucht, den man auch noch ein- und ausschalten kann. Mein getestetes Beispiel als Wecker.

define Wecker dummy
attr Wecker room Test
attr Wecker setList eins:time zwei:time on off         
attr Wecker webCmd eins:zwei:on:off
attr Wecker stateFormat onoff [1]eins [2]zwei
attr Wecker devStateIcon .*:noIcon

define WeckerSetJob notify Wecker {\
  my ($reading,$value) = split(/ /,$EVENT." ? ?");;\
  if (($reading eq "on") || ($reading eq "off")) {\
    fhem("setreading $NAME onoff $reading");;\
  } else { fhem("setreading $NAME $reading $value");; }\
}
attr WeckerSetJob room Test


Bei Neuerstellung fehlen die Readings bzw. steht Müll drin (Web Ausgabe), eine Eingabe legt das Reading an und schreibt was G'scheites rein. Das kann man auch auf noch mehr Zeiten erweitern. Ich lese von einer anderen Funktion eben die Zeiten aus Wecker:eins und Wecker:zwei aus und löse eine Aktion aus, wenn Wecker:onoff auf on steht. Die Fragezeichen mit Leerzeichen in split() sind notwendig, wenn nur ein oder kein Wert kommt, da sonst $value und/oder $reading nicht initialisiert sind und das Log unnötig vollgemüllt wird. Viele Spaß.

Viele Grüße - Sigi