Notify zwischen 22-4 Uhr ? Wie Tagübergreifend ???

Begonnen von TottiToad, 14 September 2017, 20:29:42

Vorheriges Thema - Nächstes Thema

CoolTux

Du musst es korrekt setzen. Es kann nur immer von 0 bis 24 Uhr und nicht übergreifend.

if (isInTime('08:00-09:30 09:45-24:00 00-06:00'));}
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

TomLee

#16
Hallo,

auf die Gefahr hin das ich irgendwas nicht verstanden habe.

Wozu dazu eine extra Funktion verwenden, wenn man es mit disabled-for-intervals angehen kann ?

Zitatnotify unterstützt auch das Attribut disabled-for-intervals und lässt sich damit von 04:00 bis 22:00 Uhr ausschalten.

Reicht nicht einfach eine Angabe von 04-22 in disabled-for-intervals ?

Gruß

Thomas

edit:

nicht richtig gelesen:

09:30-09:45 06-08

en-trust

#17
Mit der Zeitangabe klappt, wohlgemerkt, bin in der Ausprobierphase.
Jetzt wollte ich das Ganze in Abhängigkeit der Anwesenheit steuern. Bei present ruft mich fhem an mit Alarm, Alarm...

Meld ich mich hingegen ab und es steht absent im reading, hätte ich jetzt Test erwartet. Stattdessen kommt wieder nur Alarm, Alarm,...

(SN.EG.HomeMatic.HausTuer|SN.EG.HomeMatic.TerrassenTuer):open.*
{
    fhem ('set mySIP call +4917... 30 !Test') if (ReadingsVal("Smartphone_Anwesenheit","state","") eq "absent");
    fhem ('set mySIP call +4917... 30 !Alarm Alarm Alarm') if (ReadingsVal("Smartphone_Anwesenheit","state","") eq "present") and (isInTime('08:00-09:30 09:45-24:00 00-06:00'));
}

betateilchen

#18
Zitat von: TomLee am 26 Oktober 2020, 10:51:14
Wozu dazu eine extra Funktion verwenden, wenn man es mit disabled-for-intervals angehen kann ?

Ich würde sowas auch über das Attribut disabledForIntervals lösen und die Abwesenheitsabfrage direkt in den Ausführungsteil packen.


defmod UnautorisierteTueroeffnung.Alert notify  (SN.EG.HomeMatic.HausTuer|SN.EG.HomeMatic.TerrassenTuer):open.* { fhem ('set mySIP call +49[deleted_by_admin] 30 !Alarm Alarm Alarm') if (ReadingsVal("Smartphone_Anwesenheit","state","") eq "present"); }
attr UnautorisierteTueroeffnung.Alert disabledForIntervals 09:30-09:45 06:00-08:00
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

en-trust

Vielleicht kurz zum Hintergrund. Wenn ich Anwesend bin, soll quasi das notify als stiller Alarm fungieren und eine bestimmte Nummer anrufen. Wenn ich hingegen, Abwesend bin, soll mich fhem direkt anrufen.

TomLee

Dann eigentlich nur den Perlteil um ein weiteres if mit dieser Bedingung erweitern:

defmod UnautorisierteTueroeffnung.Alert notify  (SN.EG.HomeMatic.HausTuer|SN.EG.HomeMatic.TerrassenTuer):open.* { fhem ('set mySIP call +49[deleted_by_admin] 30 !Alarm Alarm Alarm') if (ReadingsVal("Smartphone_Anwesenheit","state","") eq "present");
fhem ('dein Befehl für den Anruf') if (ReadingsVal("Smartphone_Anwesenheit","state","") eq "absent")
}
attr UnautorisierteTueroeffnung.Alert disabledForIntervals 09:30-09:45 06:00-08:00


Zitat« Letzte Änderung: Heute um 13:25:48 von Martin Fischer »

Das ja lustig

betateilchen

Zitat von: TomLee am 26 Oktober 2020, 13:46:19
Dann eigentlich nur den Perlteil um ein weiteres if mit dieser Bedingung erweitern:

Nein, bitte nicht so. Das Konstrukt mit "if" hinter einer Anweisung sollte man nicht verwenden, wenn man mehrere Unterscheidungen treffen möchte.
Dafür sollte man dann schon dass in perl dafür vorgesehene komplette if.. else.. Konstrukt verwenden.


defmod UnautorisierteTueroeffnung.Alert notify  (SN.EG.HomeMatic.HausTuer|SN.EG.HomeMatic.TerrassenTuer):open.* {
  if (ReadingsVal("Smartphone_Anwesenheit","state","") eq "present") {
    fhem ('set mySIP call +49[deleted_by_admin] 30 !Alarm Alarm Alarm');
  } else {
    fhem ('dein Befehl für den Anruf');
  }
}

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: TomLee am 26 Oktober 2020, 13:46:19
Das ja lustig

nein, das ist schon ok. Die Telefonnummer im Klartext zu entfernen macht schon Sinn.

Zitatfhem ('set mySIP call +49[deleted_by_admin] 30 !Alarm Alarm Alarm');
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

en-trust

Jetzt habe ich herausgefunden, wie es geht....


(SN.EG.HomeMatic.HausTuer|SN.EG.HomeMatic.TerrassenTuer):open.* {
  if (ReadingsVal('Smartphone_Anwesenheit','state','') eq 'present') {
    fhem ('set mySIP call +4917... 30 !Alarm Present') if(isInTime('09:15-09:25'));
    fhem ('set mySIP call +4917... 30 !Alarm at home') if(isInTime('09:00-09:10'));
  } else {
    fhem ('set mySIP call +4917... 30 !Test Absent');
  }
}


Damit lässt sich dann Einiges realisieren. Das Script isInTime ist echt nen Mehrwert.

TomLee

ZitatJetzt habe ich herausgefunden, wie es geht....

Nach einem Hinweis schon vor zwei Jahren und jetzt noch einmal (+ fertigem copy+paste-Beispiel), das es (auch noch kürzer) mit notify-Bordmiteln umzusetzen geht, ist es mir ein Rätsel weshalb du die Zeit lieber in das Verständnis der Funktion investiert hast, statt herauszufinden wie disabledForIntervals tickt (ich mein nicht anders) ?

betateilchen

Manchen Leuten kann man einfach nicht wirklich helfen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

en-trust

Dann erklärt mir doch einfach, wie man mit der siabled Option diese Fallunterscheidung abbilden soll... Vielleicht kommt ja noch eine 3. oder 4. hinzu.

(SN.EG.HomeMatic.HausTuer|SN.EG.HomeMatic.TerrassenTuer):open.* {
  if (ReadingsVal('Smartphone_Anwesenheit','state','') eq 'present') {
   [b] fhem ('set mySIP call +4917... 30 !Alarm Present') if(isInTime('09:15-09:25'));
    fhem ('set mySIP call +4917... 30 !Alarm at home') if(isInTime('09:00-09:10'));[/b]
  } else {
    fhem ('set mySIP call +4917... 30 !Test Absent');
  }
}