Hallo,
ich würde gerne eine Begrüßung am Morgen realisiern.
Das geht mit meinem Bewegungsmelder und einem simplen notify schon mal ganz gut - allerdings soll das notify nur einmal am Tag "scharf" sein damit man nicht ständig begrüßt wird ;)
Über einen Dummy der als Speicherflag dient und einem "at" das jede Nacht den Dummy resetet ging es schon - ist aber wie ich finde nicht elegant und unübersichtlich.
Gibts eine elegante Möglichkeit in dem einen notify sowas zu integrieren?
Danke!
Hi,
Du könntest jedesmal wenn das notify ausgeführt wird das Tagesdatum z.B. auf attr comment schreiben.
Und am Beginn des notify abfragen, ob AttrVal($d,'comment') < heute ist.
Dann brauchst Du noch nicht mal nen dummy :)
Gruß, Uli
du kannst den status mit setreading direkt in deinem bewegungsmelder device speichern. dazu braucht es keinen extra dumme.
gruß
andre
Hallo ihr beiden,
Danke für eure Tips!!
Ich das mit dem setreading klingt gut.
Werds gleich mal ausprobieren. ;)
ok,
jetzt steck ich beim Datungsvergleich fest ???
Das Format, das ich von ReadingsTimestamp("x","y","") bekomme ist "2015-10-03 22:18:52".
Kann mir wer helfen wie ich daraus nur das Datum extrahiere und mit einem anderen, gleichformatigen Datum vergleiche?
Du kannst auch in Deinem Notify dieses disablen und Gleichzeitig einen AT setzen um ihn wieder scharf zu machen
Zitat von: chunter1 am 03 Oktober 2015, 22:23:09
Kann mir wer helfen wie ich daraus nur das Datum extrahiere und mit einem anderen, gleichformatigen Datum vergleiche?
Nur Datum: { (split(' ',ReadingsTimestamp("device","reading","0000-00-00")))[0] }
Gruß
Claudiu
Danke euch beiden!
Für alle die's interessiert... ich habs jetzt so implementiert:
define notify HM_xxxxx_Motion:trigger_cnt:.* {
my $valDateToday = substr(ReadingsTimestamp("Radio_Guten_Morgen_Announcement","state",""),0,10);
my $valDateLastAnnouncement = substr(ReadingsTimestamp("Radio_Guten_Morgen_Announcement","lastAnnouncement",""),0,10);
if (($valDateLastAnnouncement ne $valDateToday) && ($hour > 3) && ($hour < 12)) {
fhem("set SB_PLAYER volume 50");
fhem("set SB_PLAYER sayText Guten Morgen!");
}
fhem("setreading Radio_Guten_Morgen_Announcement lastAnnouncement 1");
}
define notify HM_xxxxx_Motion:trigger_cnt:.*
attr HM_xxxxx_Motion disable 1;
set SB_PLAYER volume 50;
set SB_PLAYER sayText Guten Morgen!
und
define NotyEnable at *04:00
attr HM_xxxxx_Motion disable 0
das at kannst Du auch noch in den Not rein packen, musst Du nur sehen wie Du es Quoten muss :-)
Zitat von: chunter1 am 03 Oktober 2015, 22:55:13
Danke euch beiden!
Für alle die's interessiert... ich habs jetzt so implementiert:
define notify HM_xxxxx_Motion:trigger_cnt:.* {
my $valDateToday = substr(ReadingsTimestamp("Radio_Guten_Morgen_Announcement","state",""),0,10);
my $valDateLastAnnouncement = substr(ReadingsTimestamp("Radio_Guten_Morgen_Announcement","lastAnnouncement",""),0,10);
if (($valDateLastAnnouncement ne $valDateToday) && ($hour > 3) && ($hour < 12)) {
fhem("set SB_PLAYER volume 50");
fhem("set SB_PLAYER sayText Guten Morgen!");
}
fhem("setreading Radio_Guten_Morgen_Announcement lastAnnouncement 1");
}
Danke für das posten der Lösung.
Das setreading hätte ich innerhalb des if erwartet, also nur wenn was announced wird. Oder?
Gruß Uli
Guten Morgen,
auch hier könnte man ein DOIF verwenden
define Guten_Morgen_DOIF DOIF
([HM_xxxxx_Motion:?trigger_cnt] and [03:00-12:00])
(
set SB_PLAYER volume 50,
set SB_PLAYER sayText Guten Morgen!
)
DOELSEIF([24:00])
Grüße
igami