Watchdog und Prüfung mehrerer Bedingungen

Begonnen von Slanesh, 20 Juli 2014, 22:13:49

Vorheriges Thema - Nächstes Thema

Slanesh

Hallo zusammen,

ich möchte Nachts gerne meine PC Peripherie (2x NAS, Drucker, USB-Hubs, etc.) abschalten, damit die vielen bunten Lichter meiner Freundin nicht den Schlaf rauben. Hierzu habe ich mir folgendes Szenario für das Triggern der Abschaltung überlegt:

  • Wenn es nach 0:00 Uhr und vor 7:00 Uhr ist und mein PC aus ist, wird die Abschaltung der Peripherie ausgelöst.
  • Zuerst werden die beiden NAS heruntergefahren
  • Nach 3 Minuten (Herunterfahren der NAS + etwas Puffer) wird die Funksteckdose an der die Peripherie hängt abgeschaltet.
Bisher habe ich eine Überwachung des PCs per Presence LAN-Ping eingerichtet und die beiden NAS als Dummy Devices angelegt, die bereits per On/Off-eventMap per Script über Telnet heruntergefahren werden können.

Ich würde jetzt einen Watchdog auf die Presence des PC setzen und in der Zeit zwischen 0:00 und 7:00 Uhr die oben genannte Abschaltsequenz starten. Kann/muss ich die Prüfung der Uhrzeit im Watchdog realisieren, oder setze ich den Watchdog nur auf das Presence(absent) Event und prüfe die Uhrzeit in dem auszulösenden Notify?

Gruß Slanesh
Intel NUC, 2x HM-LAN, 1x CUL-USB, 2x CCU2, 1x Harmony-Hub, 20x HM-LC-Sw1PBU-FM, 5x HM-LC-SW1-PL2, JeeLink mit 15x TX-29-DTH, 7x HM-SEC-SC-2, 3x HM-LC-SW1-BA-PCB, 8x HM-SEC-SD, 3x HM-SEC-MDIR-2, 2x HM-ES-PMSw1-Pl, 8x HmIP-BWTH, 3xHM-CC-RT-DN, 16xHM-LC-Bl1PBU-FM, 8x HM-SEC-SCo, 1xHM-ES-PMSw1-SM

justme1968

schau dir mal disabledForIntervals an.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Slanesh

Hallo Andre,

vielen Dank für den Tipp. Ich habe es jetzt wie folgt gelöst:
define Desktop PRESENCE lan-ping 192.168.0.5 60
attr Desktop event-on-change-reading state
attr Desktop icon it_pc

define Schlafmodus watchdog Desktop:absent 00:10 Desktop:present set NAS off;; set NAS2 off;; set Peripherie on-for-timer 180;; set Beamer off;; setstate Schlafmodus defined
attr Schlafmodus disabledForIntervals 07:00-23:00
attr Schlafmodus icon scene_sleeping_alternat
attr Schlafmodus regexp1WontReactivate 1


Gruß Slanesh
Intel NUC, 2x HM-LAN, 1x CUL-USB, 2x CCU2, 1x Harmony-Hub, 20x HM-LC-Sw1PBU-FM, 5x HM-LC-SW1-PL2, JeeLink mit 15x TX-29-DTH, 7x HM-SEC-SC-2, 3x HM-LC-SW1-BA-PCB, 8x HM-SEC-SD, 3x HM-SEC-MDIR-2, 2x HM-ES-PMSw1-Pl, 8x HmIP-BWTH, 3xHM-CC-RT-DN, 16xHM-LC-Bl1PBU-FM, 8x HM-SEC-SCo, 1xHM-ES-PMSw1-SM

Slanesh

#3
Da ich festgestellt habe, dass der Watchdog nicht aktiviert wird, wenn mein PC bereits vor dem definierten Zeitfenster ausgeschaltet wird habe ich noch eine kleine Ergänzung mittels at umgesetzt.

define SchlafmodusEinDurchUhrzeit at *23:15:00 {\
  my $pc=(Value("Desktop"));;\
  if ($pc eq "absent") {\
    fhem ("set NAS off;; set NAS2 off");;\
    fhem ("set Peripherie on-for-timer 180");;\
    fhem ("set Beamer off");;\
  }\
}


Um die Peripheriegeräte am nächsten Morgen wieder zu reaktivieren (wenn ich auch Zuhause bin => Structure Anwesenheit), habe ich mir noch folgendes einfallen lassen. Die NAS fahren automatisch hoch, sobald sie Strom bekommen, daher keine explizite Reaktivierung. Den Beamer schalte ich nur bei Bedarf an.

Unter der Woche:
define SchlafmodusAusWoche at *07:00:00 {\
  my $anw=(Value("Anwesenheit"));;\
  if ($we == 0) {\
    if ($anw eq "present") {\
      fhem ("set Peripherie on");;\
    }\
  }\
}


Am Wochenende:
define SchlafmodusAusWochenende at *08:30:00 {\
  my $anw=(Value("Anwesenheit"));;\
  if ($we == 1) {\
    if ($anw eq "present") {\
      fhem ("set Peripherie on");;\
    }\
  }\
}


Hoffe das hilft mal jemandem weitert.

Gruß Slanesh
Intel NUC, 2x HM-LAN, 1x CUL-USB, 2x CCU2, 1x Harmony-Hub, 20x HM-LC-Sw1PBU-FM, 5x HM-LC-SW1-PL2, JeeLink mit 15x TX-29-DTH, 7x HM-SEC-SC-2, 3x HM-LC-SW1-BA-PCB, 8x HM-SEC-SD, 3x HM-SEC-MDIR-2, 2x HM-ES-PMSw1-Pl, 8x HmIP-BWTH, 3xHM-CC-RT-DN, 16xHM-LC-Bl1PBU-FM, 8x HM-SEC-SCo, 1xHM-ES-PMSw1-SM