FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Pascal94 am 21 November 2016, 11:57:54

Titel: Schlafen gehen -> Nach 7 Stunden Funktion aufrufen?
Beitrag von: Pascal94 am 21 November 2016, 11:57:54
Hallo Community,

Ich habe mich jetzt schon etwas mit FHEM beschäftigt und auch eine Anwesenheitserkennung mit Geo hin bekommen. Diese Anwesenheitserkennung habe ich nun erweitert um um eine option -> Schlafen. Diese setze ich mit dem handy und mit NFC Tag (einfach "set Pascal.homestatus schlafen). Ein notitfy
define homestatus_change_schlafen notify Pascal.homestatus:schlafen {fhem("{schlafstatus()}")}

sorgt nun dafür das eine Funktion in der 99_myUtils.pm aufgerufen wird:
sub schlafstatus() {
 
      fhem( "set Thermometer_Wohnzimmer_Climate desired-temp 17.0" ); //heizung im Schlafzimmer geht auf 17Grad
      fhem( "set Thermometer_Schlafzimmer_Climate desired-temp 17.0" ); //heizung im Schlafzimmer geht auf 17Grad
      fhem( "set Thermometer_Bad_Climate desired-temp 20.0" ); //heizung im Bad geht auf 20Grad
      fhem( "define receivertimer at +02:00:00 set Gigablue off" ); //Receiver (enigma2) geht nach 2 Stunden auf standby
fhem( "define schlaflampetimer at +00:05:00 set hueBridge1_HUEGroup2 off" ); // Lampe im Schlafzimmer geht nach 5 Minuten aus
     fhem( "set HUEDevice5 off"); //Lampe im Wohnzimmer geht wenn noch an direkt aus
   
}


So dies funktioniert auch alles wunderbar bis hierhin.
Jetzt möchte ich das nach 7 Stunden , das mein homestatus wieder auf "home" gestellt wird. Aber nur wenn er noch auf "schlafen" steht. Steht er schon auf "underway" (ich bin also schon früher aus dem haus etc) soll dieser auf underway bleiben und nicht auf home gesetzt werden.

So sieht mein ansatz derzeit aus, der leider nicht funktioniert:
#######Schlafen notify change
define schlafstatuschange notify Pascal.homestatus { if (Value("Pascal.homestatus") eq "schlafen"){ fhem("define schlafstatushome at +07:00:00 schlafstatuschangefunk()")}}


das Problem ist hier prüft er ob der status "schlafen" ist. Das klappt auch nur er soll dann die funktion "schlafstatuschangefunk" in der 99_myUtils.pm aufrufen (dies tut er nicht).

sub schlafstatuschangefunk() {

if(Value("Pascal.homestatus") eq "schlafen") { fhem("set Pascal.homestatus home") };
}


Fhem liefert im Log folgende Fehlermeldung:
schlafstatushome: Unknown command schlafstatuschangefunk(), try help.

Hoffe ihr blickt durch. Ich weiß auch nicht ob der code perfekt ist. Ich bin noch anfänger ;)

Gruß Pascal



Titel: Antw:Schlafen gehen -> Nach 7 Stunden Funktion aufrufen?
Beitrag von: l2r am 21 November 2016, 12:22:24
hi,

probier mal:

define schlafstatuschange notify Pascal.homestatus { if (Value("Pascal.homestatus") eq "schlafen"){ fhem("define schlafstatushome at +07:00:00 {fhem("{schlafstatuschangefunk()}")}")}}


also alternative schau dir mal die Module RESIDENTS und ROOMMATE an.
da gibts nen relativ ausführlichen WIKI-Artikel zu, der auch einen Wecker beinhaltet. Anwesenheitserkennung mit Geofency funktioniert auch.
http://www.fhemwiki.de/wiki/Weckautomation (http://www.fhemwiki.de/wiki/Weckautomation)

Gruß Michael
Titel: Antw:Schlafen gehen -> Nach 7 Stunden Funktion aufrufen?
Beitrag von: Hollo am 21 November 2016, 12:26:52
Alternativvorschlag:
starte mit dem Setzen des Schlaf-Status gleichzeitig einen watchdog, der als Bedingung hat, dass innerhalb von 7 Stunden der Status nicht underway ist.
Titel: Antw:Schlafen gehen -> Nach 7 Stunden Funktion aufrufen?
Beitrag von: Pascal94 am 22 November 2016, 23:46:05
Danke mit dem Watchdog geht es viel einfacher!