[Gelöst] WiFi-Steckdose und NAS in Abhängigkeit schalten

Begonnen von Gear, 09 November 2019, 08:58:43

Vorheriges Thema - Nächstes Thema

Gear

Guten Morgen Zusammen,

so, ich bräuchte mal euren Rat, da ich auf dem Schlauch stehe.
Mein NAS verbraucht im StandBy mehr Strom als der gute alte WiFi-Obi Socket, darum soll bei nicht Nutzung des NAS, dieses vom Stromnetz genommen werden.
Der NAS lässt sich über WOL starten und stoppen.
> Schön wäre es, wenn man 4 State's hätte, ON/OFF/Start/Shutdown.

Meine Idee wäre jetzt, ein Dummy, welches sich ON/OFF schalten lässt, dann ein DOIF, bei dem bei ON die Steckdose auf ON geschaltet wird, nach 15s via WOL den NAS startet.
Bei OFF dann via WOL den Shutdown durchführt.
([Dummy.IT.NAS.Power:"^ON$"])
(set IT.NAS.Steckdose ON; sleep 15; set WOL.NAS.FS ON)
DOELSEIF ([Dummy.IT.NAS.Power:"^OFF$"])
(set WOL.NAS.FS OFF)


Nun habe ich aber das Problem, die Steckdose soll erst nach x Minuten abgeschaltet werden, da der NAS früher vom WOL als "isRunning: false" erkannt wird, aber noch im Shutdown ist.

Hier hänge ich etwas und weiß nicht so recht weiter, hoffe mir kann jemand helfen.

Danke und beste Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

frober

Commanref unter Attribute findest du die Lösung.
Es gibt ein Attr mit dem du die Verzögerungen festlegst.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Otto123

#2
Hallo Gear,

in DOIF werden anders als in FHEM sonst die Befehle mit Komma und nicht mit Semikolon getrennt.
Ich würde aber die Befehle einzeln klammern und alles mit wait machen.
(set IT.NAS.Steckdose ON)(set WOL.NAS.FS ON)

attr ... wait 0,15:x minuten

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Pfriemler

Bin da ganz bei Otto: Zeitverzögerungen im DOIF einfach per zweitem Ausführungsteil und angepassem wait. Mache ich nur so.

Was noch fehlt:
Wenn ich das richtig verstanden habe, wollte der TE zum Abschalten eigentlich auf [WOL:isRunning] eq "false" reagieren (vielleicht wegen schwankender Zeiten zum Herunterfahren). Dafür würde ich einen dritten Zweig definieren - auch hier bietet sich die Verzögerung mit "wait" einfach an. Zur ermittelten Ausschaltzeit reichlich dazugeben - auf zwei Minuten mehr Stromverbrauch kommt es da echt nicht an.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Otto123

seh ich auch so.
und wen alles läuft wie gedacht würde ich den dummy wegrationalisieren. Ich denke die Funktion bekommt man in das DOIF.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gear

Ok, habe das mal so umgebaut, dass ich beim WOL Dev nicht ON:OFF, sondern Start:Shutdown nutze.

Mein DOIF sieht nun so aus:
([WOL.NAS.FS:"^Start$"])
(set IT.NAS.Steckdose ON)
(set WOL.NAS.FS ON)

DOELSEIF ([WOL.NAS.FS:"^Shutdown$"])
(set WOL.NAS.FS OFF)


Das wait sieht so aus:
0,15:0

Nun, ich könnte jetzt einfach einen weitere Befehl für die 2. Sequenz einbauen, welcher die Steckdose abschaltet und gut ist.
Jedoch würde ich gerne eine Bedingung für das Abschalten der Spannungsversorgung mit einbauen, es soll geprüft werden, ob der NAS noch via WOL als Running gekennzeichnet ist.
> Wenn das der Fall ist, dann würde ich einfach erneut die 2. Sequenz starten.

Kann ich in der 2. Sequenz eine Abfrage machen, welche via IF/ELSE den Zustand des WOL "isRunning: false" prüft?
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

einfach noch  hinten an.
DOELSEIF ([WOL.NAS.FS:state] eq "off") (set IT.NAS.Steckdose OFF)
wait 0,15:0:300

Die ersten beiden Zweige werden durch Event getriggert der hier durch den state des WOL Gerätes.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gear

An und für sich, ok.

Der Start des NAS dauert mehr als 1 Min.
Ich sehe hier zwei Probleme:

> Die 15s wait für das Starten des NAS werden durch deinen CMD unterbrochen, wenn WOL das DOIF triggert, somit startet der NAS nicht.
> Wenn der Trigger kommt und der NAS noch am Starten ist, dann wird das DOIF nach 300s die Power abdrehen, auch wenn der NAS läuft.

>> Also wenn ich das ganze richtig verstehe, da beide Fälle gerade bei mir passiert sind.  :o ;D
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

Ja da wirst Du Recht haben  :-[
Ich habe mich von deinem Wunsch leiten lassen, aber nimm doch auch einfach den Event?
DOELSEIF ([WOL.NAS.FS:"^off$"]) (set IT.NAS.Steckdose OFF)

Der dürfte doch erst kommen wenn die NAS wirklich runtergefahren ist (also WOL der Meinung ist)

Teste bitte mit einem Dummy  ;) oder einen andere Steckdose
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gear

#9
Das mim Dummy ist eine gute Idee! ^^

Das Problem ist, das "state" im intervall aktualisiert wird, also müsste ich nach dem von dir erwähnten Code ein weiteres Einbauen, welches auf true reagiert, um den Timer zu unterbrechen.
DOELSEIF ([WOL.NAS.FS:"^on$"]) ()

Edit:

Bringt auch nichts gegen den 15s Timer... xD
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

event-on-change-reading .* wird das mit den Events aber richten.
Du kannst auch auf isRunning triggern
([WOL.NAS.FS:"^isRunning:.false$"])

Kannst Dir das ja im Eventmonitor anzeigen lassen und ein "Gerüst" DOIF erzeugen

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gear

Ohw...  :-[

Ich hab schon viel zu lange in FHEM nichts mehr gemacht, da stand ich echt voll auf dem Schlauch.
Danke für die Hilfe, jetzt funktioniert es.

Beste Grüße und einen schönen Sonntag
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <