FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: chunter1 am 03 Oktober 2015, 13:52:35

Titel: Notify nur einmal täglich zulassen (ohne Dummy möglich?)
Beitrag von: chunter1 am 03 Oktober 2015, 13:52:35
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!
Titel: Antw:Notify nur einmal täglich zulassen (ohne Dummy möglich?)
Beitrag von: UliM am 03 Oktober 2015, 16:14:32
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
Titel: Antw:Notify nur einmal täglich zulassen (ohne Dummy möglich?)
Beitrag von: justme1968 am 03 Oktober 2015, 17:03:01
du kannst den status mit setreading direkt in deinem bewegungsmelder device speichern. dazu braucht es keinen extra dumme.

gruß
  andre
Titel: Antw:Notify nur einmal täglich zulassen (ohne Dummy möglich?)
Beitrag von: chunter1 am 03 Oktober 2015, 17:54:26
Hallo ihr beiden,

Danke für eure Tips!!
Ich das mit dem setreading klingt gut.
Werds gleich mal ausprobieren. ;)
Titel: Antw:Notify nur einmal täglich zulassen (ohne Dummy möglich?)
Beitrag von: chunter1 am 03 Oktober 2015, 22:23:09
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?
Titel: Antw:Notify nur einmal täglich zulassen (ohne Dummy möglich?)
Beitrag von: Wuppi68 am 03 Oktober 2015, 22:35:28
Du kannst auch in Deinem Notify dieses disablen und Gleichzeitig einen AT setzen um ihn wieder scharf zu machen
Titel: Antw:Notify nur einmal täglich zulassen (ohne Dummy möglich?)
Beitrag von: rapster am 03 Oktober 2015, 22:38:48
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
Titel: Antw:Notify nur einmal täglich zulassen (ohne Dummy möglich?)
Beitrag 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");
}
Titel: Antw:Notify nur einmal täglich zulassen (ohne Dummy möglich?)
Beitrag von: Wuppi68 am 03 Oktober 2015, 23:23:39
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 :-)
Titel: Antw:Notify nur einmal täglich zulassen (ohne Dummy möglich?)
Beitrag von: UliM am 04 Oktober 2015, 08:55:32
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
Titel: Antw:Notify nur einmal täglich zulassen (ohne Dummy möglich?)
Beitrag von: igami am 04 Oktober 2015, 09:35:46
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