Meine Weckautomation

Begonnen von Loredo, 28 März 2015, 14:23:17

Vorheriges Thema - Nächstes Thema

Loredo

#60
Die Vermutung liegt nahe, dass rr_Rene sich nicht im Status "asleep" befinet, sprich abends nicht als schlafend markiert wurde.
Wenn du in jedem Fall bei egal welchem Status auf "awoken" gehen möchtest, solltest du den Befehl entsprechend abändern. Das Script ist ja nicht statisch, sondern du kannst das Framework frei nutzen und so anpassen, wie es für dich funktionieren soll.


So könnte es aussehen:



fhem "define atTmp_9_$NAME at +00:05:00 set $EVTPART4:FILTER=STATE!=awoken awoken";






Ich vermute aber, dass rr_Sabine abends auf "asleep" schaltet und du deine Automation nicht darauf ausgelegt hast, dass alle Bewohner schlafen und dann zB das Licht ausgeht, sondern rr_Sabine alleine ausreichend dafür ist. Das ist dann ein Denkfehler in der Art wie du das Drumherum des Wakeuptimer bei dir nutzt und implementiert hast. Jeder Schläfer sollte abhängig von den Lebensgewohnheiten getrennt oder eben immer gemeinsam mit seinem Partner als schlafend markiert werden. Bei getrennten Schlafzimmern funktioniert das natürlich ganz einfach. Bei einem gemeinsamen Schlafzimmer und noch dazu vielleicht zusammen Zubettgehen muss man aber beim Schalten der ROOMMATE Devices darauf achten, dass dann eben alle beteiligten Schläfer entsprechend in den richtigen Status geschaltet werden. Wie das genau gehen soll, muss jeder für sich selbst überlegen. Die einen Lesen noch was im Bett und haben dafür eine eigene Nachttischlampe, während der andere bereits schlafen will. Dann muss auch jeder getrennt sein "schlafen" bestätigen. Oder es wird immer gemeinsam das Licht aus gemacht, dann kann man die Events des einen ROOMMATE Devices auch mit dem anderen koppeln und direkt übernehmen. Wie gesagt, eine pauschale Aussage kann man hier nicht machen, weil sich darunter jeder etwas anderes vorstellt.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Zitat von: rretsiem am 16 Mai 2015, 22:26:22
Dabei scheint es so, als würde nicht die Weckzeit des NÄCHSTEN Weckers, sondern die des "heutigen" Weckers übermittelt.
...
Kannst du das irgendwie nachvollziehen?


Unter bestimmten Konstellationen konnte es sein, dass die Readings nextWakeup* nicht aktualisiert wurden.
Habe gerade eine verbesserte Version ins SVN geladen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Ich habe den Wiki Eintrag für die Sonos Snooze Funktion aktualisiert:
http://www.fhemwiki.de/wiki/Weckautomation#Snooze_Funktion_bei_SONOS


Sie wird jetzt mit einem DOIF realisiert.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

andre07

Hallo Loredo

Habe mit deiner Weckautomation ein kleines Problem wenn während des Weckens die Sprachausgabe
dazwischenfunkt  (sagt mir  z.b die aktuelle Temperatur an nicht aus deinen script heraus sondern extern)
mein Sonos keine Befehle mehr annimmt Radio bleibt einfach an. Erst wenn ich per Handy stop mache wird 
die Sprachausgabe gestartet sowie der rest in der queue vom Player.
Hier mal der code
Macro_rr_andreLG2_wakeuptimer1 {
##=============================================================================
## This is an example wake-up program running within a period of 30 minutes:
## - drive shutters upwards slowly
## - light up a HUE bulb from 2000K to 5600K
## - have some voice notifications via SONOS
## - have some wake-up chill music via SONOS during program run
##
## Actual FHEM commands are commented out by default as they would need
## to be adapted to your configuration.
##
## Available wake-up variables:
## 1. $EVTPART0 -> start or stop
## 2. $EVTPART1 -> target wake-up time
## 3. $EVTPART2 -> wake-up begin time considering wakeupOffset attribute
## 4. $EVTPART3 -> enforced wakeup yes=1,no=0 from wakeupEnforced attribute
## 5. $EVTPART4 -> device name of the user which called this macro
## 6. $EVTPART5 -> current state of user
##=============================================================================

##-----------------------------------------------------------------------------
## DELETE TEMP. AT-COMMANDS POTENTIALLY CREATED EARLIER BY THIS SCRIPT
## Executed for start to cleanup in case this wake-up automation is re-started.
## Executed for stop to cleanup in case the user ends this automation earlier.
##
for (my $i=1; $i <= 10; $i++) {
if (defined($defs{"atTmp_".$i."_".$NAME})) {
    fhem "delete atTmp_".$i."_".$NAME;
}
}

##-----------------------------------------------------------------------------
## BEGIN WAKE-UP PROGRAM
## Run first automation commands and create temp. at-devices for lagging actions.
##

if ($EVTPART0 eq "start") {
Log3 $NAME, 3, "$NAME: Wake-up program started for $EVTPART4 with target time $EVTPART1. Current state: $EVTPART5";

fhem "set Schalter_Dach on ; set RemotePI cmd set vitrinen_beleuchtung on; set Sonos_Schlafzimmer stop" ;
fhem "define atTmp_1_$NAME at +00:06:30 set Wz.DeckeFarbe HSV 60,70,80";
fhem "define atTmp_2_$NAME at +00:11:30 set Wz.DeckeFarbe HSV 0,50,80";
fhem "define atTmp_4_$NAME at +00:15:00 set Sonos_Schlafzimmer Speak 50 de |Hint| Es ist jetzt bereits ".$EVTPART1." Uhr, Zeit zum aufstehen raus aus den Federn!;;sleep 2;; set Wz.DeckeFarbe HSV 200,50,70 100 q;; sleep 8 ;;set Sonos_Schlafzimmer:FILTER=Volume<15 Volume 15 15 ";
        fhem "define atTmp_5_$NAME at +00:30:00 set Sonos_Schlafzimmer stop ;;sleep 5 ;; set RemotePI cmd set vitrinen_beleuchtung off;;sleep 2;;set Schalter_Dach off ;; sleep 2;;set Wz.DeckeFarbe off ;;sleep 2;; set Sonos_Schlafzimmer Speak 30 de Licht wird wieder ausgeschalten du bist aufgestanden und gehst gleich zur Arbeit";

# if wake-up should be enforced
if ($EVTPART3) {
Log (4, "$NAME: planning enforced wake-up");
fhem "define atTmp_3_$NAME at +00:17:00 set Sonos_Schlafzimmer:FILTER=Volume>4 Volume 4;; sleep 0.5;; set Sonos_Schlafzimmer:FILTER=Shuffle=0 Shuffle 1;; sleep 0.5;; set Sonos_Schlafzimmer PlayURITemp http://www.antenne.de/webradio/antenne.m3u";
fhem "define atTmp_6_$NAME at +00:18:00 set Sonos_Schlafzimmer Volume 7";
fhem "define atTmp_7_$NAME at +00:20:00 set Sonos_Schlafzimmer Volume 9";
fhem "define atTmp_8_$NAME at +00:23:00 set Sonos_Schlafzimmer Volume 15";
}
}



##-----------------------------------------------------------------------------
## END WAKE-UP PROGRAM (OPTIONAL)
## Put some post wake-up tasks here like reminders after the actual wake-up period.
##
## Note: Will only be run when program ends normally after minutes specified in wakeupOffset.
##       If stop was user-forced by sending explicit set-command 'stop', this is not executed
##       assuming the user does not want any further automation activities.
##
if ($EVTPART0 eq "stop") {
Log3 $NAME, 3, "$NAME: Wake-up program ended for $EVTPART4 with target time $EVTPART1. Current state: $EVTPART5";

# if wake-up should be enforced, auto-change user state from 'asleep' to 'awoken'
# after a small additional nap to kick you out of bed if user did not confirm to be awake :-)
# An additional notify for user state 'awoken' may take further actions
# and change to state 'home' afterwards.
if ($EVTPART3) {
fhem "define atTmp_9_$NAME at +00:05:00 set $EVTPART4:FILTER=STATE=asleep awoken";

# Without enforced wake-up, be jentle and just set user state to 'home' after some
# additional long nap time
} else {
fhem "define atTmp_9_$NAME at +01:30:00 set $EVTPART4:FILTER=STATE=asleep home";
    }
}

}


Wenn das Radio normal läuft und ich bekomme eine durchsage funktioniert es dagegen

Andre

Loredo

Klingt eher nach einem Sonos-Problem. Die Befehle während des Weckens werden sequenziell abgearbeitet, da kommt sich eher nichts gegenseitig ins Gehege. Im Falle der Sprachausgabe ist es auch egal, denn soweit ich weiß hat das Sonos Modul dafür eine Queue.


Mit der Sprachsynthese über Google TTS gibts aktuell auch größere Probleme, vielleicht hängt es auch eher damit zusammen. Siehe SONOS Thread.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

andre07

Die Sprachausgabe funktioniert ja nur halt wenn dieser Fall auftritt stopt der Player nicht.
Werde jetzt versuchen die Ansage mit in dein Script einzubauen so kommt
sich da nichts in die Quere.
Andre

rretsiem

Hallo,

so nachdem eigentlich alles prima lief, geht seit ein paar Wochen (Weiß nicht wie lange genau, da ich im Sommer nicht alles per Wecker steuere) irgendwie das wakeuptimer Makro nicht mehr korrekt. Ich komme dem einfach nicht auf die Spur. Gestern habe ich dann mal ein verbose 5 bei den einzelnen Bestandteilen gesetzt um vielleicht so etwas zu erkennen:


2015.11.18 04:00:00 5: exec at command at_rr_Sabine_wakeuptimer1
2015.11.18 04:00:00 4: dummy set rr_Sabine_wakeuptimer1 trigger
2015.11.18 04:00:00 4: RESIDENTStk rr_Sabine_wakeuptimer1: lastRun = nextRun = 04:30
2015.11.18 04:00:00 5: RESIDENTStk rr_Sabine_wakeuptimer1: wakeupWaitPeriod threshold reached (expLastRun=1444292999 nowRunSec=1447817400 expNextRun=1447710548 localtime=1447815600)
2015.11.18 04:00:00 4: RESIDENTStk rr_Sabine_wakeuptimer1: weekday restriction in conjunction with andHoliday in use - not triggering wake-up program this time
2015.11.18 04:00:00 4: RESIDENTStk rr_Sabine_wakeuptimer1: Resetting based on wakeupDefaultTime
2015.11.18 04:00:00 4: dummy set rr_Sabine_wakeuptimer1 nextRun 04:30
2015.11.18 04:00:00 5: redefine at command at_rr_Sabine_wakeuptimer1 as *{RESIDENTStk_wakeupGetBegin("rr_Sabine_wakeuptimer1","at_rr_Sabine_wakeuptimer1")} set rr_Sabine_wakeuptimer1 trigger
2015.11.18 04:00:00 4: RESIDENTStk rr_Sabine_wakeuptimer1: wakeupGetBegin source: nextRun
2015.11.18 04:00:00 4: RESIDENTStk rr_Sabine_wakeuptimer1: wakeupGetBegin result: 04:30 = 14400 s - 30 m = 04:00:00


Das Makro "Macro_rr_Sabine_wakeuptimer1" wird wie man sieht nicht ausgeführt, nicht einmal Log-Anweisungen darin werden ausgegeben. Ich sehe die Meldung im Log von "weekday restriction in conjunction with andHoliday..." aber verstehe sie nicht wirklich. Ist das hier das Problem? Kann ich keinen Wecker mehr (weil das nicht geändert wurde) setzen der nur an bestimmen Werktagen aktiv ist UND an holiday=TRUE?

Oder suche ich an der falschen Stelle?

rretsiem

Hallo,

so nachdem ich gestern den WakeupTimer mal umgestellt habe auf

- Days: 1,2,3,4
- WakeUpHolidays: orHoliday (vorher andHoliday)

führt FHEM den Wecker wieder aus. Allerdings weiß ich nicht weshalb ein "andHoliday" den Wecker blockieren sollte. Das widerspricht sich doch nicht.

Loredo

doch, weil neben Mo-Do zusätzlich einer dieser Tage auch ein Feiertag sein muss (deshalb heisst es and ;-)).
Bei orHoliday muss nur eines von beidem zutreffen


Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

rretsiem

Ist ja eigentlich auch logisch, weshalb ich das wohl mal so eingestellt hatte, bleibt ein Rätsel. :-X
Danke!

aherby

Nabend,

danke ist eine tolle Idee und Umsetzung.

Leider scheint mein System nicht 100% zu funktionieren.

Bisher meldet das Sonos-Gerät immer nur die Weckzeit ist auf 0:00 Uhr eingestellt.
Aber in der Anzeigt wird der eingestellt Wert angezeigt.
Wie kann ich diesen Fehler beseitigen und an welcher Stelle mit ich ggf. etwas miloggen?

Und wie könnte ich ,,asleep" und ,,awoken" dauerhaft in die Auswahlliste bekommen?

Danke

Gruß aherby

FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

dennis87

Ich habe den Wecker auch implementiert und er funktioniert hervorragend, vielen Dank schon einmal :).

Ich habe jedoch noch ein kleines Problem...der Wecker referenziert auf mein Roommate-Objekt, welches mittels geofancy auf home, gone etc. gestellt wird.

Wenn ich nun jedoch nicht zuhause bin, geht der Wecker ja logischerweise nicht an, da der Wecker ja nicht auf das Roommate-Objekt meiner Frau referenziert.

Besteht eine Möglichkeit, dass der Wecker beide Roommate-Objekte berücksichtigt oder der Wecker auf das Residents-Objekt reagiert, welches bei einer anwesenden Person ja einen entsprechenden Status hat?

Vielen Dank,

Dennis

CoolTux

Hallo Dennis,

Wie alt ist Dein FHEM? Hast Du ein aktuelles? Es gibt einige User inklusive mir, welche Probleme mit dem Wecker haben.

http://forum.fhem.de/index.php/topic,47338.0.html
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

dennis87

Ich hatte in letzter Zeit auch ein paar Probleme, hab den Wecker dann einfach neu angelegt und soweit funktioniert er wieder. Das Verhalten, was ich beschrieben habe ist ja auch normal und ich denke auch so gewollt, ich würde das Standardverhalten gerne ein bisschen verändern / drehen.

Gruß,
Dennis

Loredo

Zitat von: dennis87 am 14 Januar 2016, 13:00:18
Wenn ich nun jedoch nicht zuhause bin, geht der Wecker ja logischerweise nicht an, da der Wecker ja nicht auf das Roommate-Objekt meiner Frau referenziert.

Besteht eine Möglichkeit, dass der Wecker beide Roommate-Objekte berücksichtigt oder der Wecker auf das Residents-Objekt reagiert, welches bei einer anwesenden Person ja einen entsprechenden Status hat?


Gedacht ist es so, dass jede Person ihren eigenen Wecker hat. Deine Frau sollte also ein eigenes ROOMMATE Objekt haben und für dieses einen Wakeuptimer anlegen. Ihr Wakeuptimer und dein Wakeuptimer können aber das selbe Macro verwenden (einfach das Attribut wakeupMacro entsprechend abändern, das zweite Macro-Template kann man dann wieder löschen), damit man ein Weckprogramm zentral programmieren kann.


Man muss sich dabei aber natürlich überlegen was es bedeutet, wenn das Programm ggf. mehrfach/parallel ausgeführt wird, weil jede Person einen eigenen Wecker hat. Oft ist es deshalb trotzdem leichter einzelne Makros zu pflegen, damit man dort ein paar wenn-dann-sonst Regeln einbauen kann. Also zB dafür, wenn die Weckmusik schon durch den anderen Wecker angeschaltet wurde und man keine Unterbrechung o.ä. möchte.


Ich überlege mal, ob man bei Nutzung des selben Macros noch zentral ein paar Abfragen einbauen kann, damit es dann nicht doppelt ausgeführt wird. Der Anwendungsfall wäre aber sehr speziell (und diskriminierend, wenn dann nur der "Mann" einen Wecker hat und die "Frau" dann gefälligst zur selben Zeit aufzustehen hat, weil sie keinen eigenen Wecker hat; gilt natürlich auch umgekehrt  ;D ). Das wäre dann wohl eher für Paare, die sich wie Zwillinge verhalten und nix alleine machen können/wollen... (den konnt ich mir nicht verkneifen, sorry  ;) )
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER