Meine Weckautomation

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

Vorheriges Thema - Nächstes Thema

MartinMuc

Hi Julian,

kurzes Feedback heute alles so wie gewünscht verlaufen keine Fehler mehr.

DAnke dir fürs schnelle fixen.

viele Grüße
Martin
Cubietruck mit CUL und HM USB

Loredo

Sehr schön, das freut mich  :)
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

Hi Loredo,

hat sich durch die Fixes irgendwas an den Macros/watchdogs auch geändert? Ich frage ob es Sinn macht die mit den älteren Versionen angelegten "Devices" durch create wakeuptimer noch einmal zu löschen und neu anzulegen oder sollte das an der Stelle keinen Unterschied machen?

Ein "OFF" habe ich noch nicht wieder getestet, allerdings vertraue ich den Wakeuptimer leider noch nicht so wie es sein sollte. Heute früh um 04:30 wurde der Wecker nicht ausgelöst, er ist definitiv gestellt und auch das "at" dazu steht auf next run 4 Uhr. Der awoken Zustand ist aber heute nicht eingetreten für den Roommate.

Loredo

Das klingt, als hättest du deine Macros verkonfiguriert. Ich denke es ist eine gute Idee, wenn du nochmals von vorne startest.
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

Hallo Loredo,

nachdem der Wakeuptimer die letzte Woche gut lief, hat heute das AT um 7 Uhr nicht ausgelöst. Der Wecker ist auf 7:30 Uhr gestellt mit einem Offset von 30 Minuten.


lastRun 07:30 2015-04-16 07:00:00
nextRun 07:30 2015-04-20 09:30:49
running 0 2015-04-16 07:30:01
state 07:30 2015-04-20 09:30:49


Der LastRun war also 16.04. und nicht wie gewünscht HEUTE.
Hier der List auf den AT:


Internals:
   COMMAND    set rr_Rene_wakeuptimer1 trigger
   DEF        *{RESIDENTStk_wakeupGetBegin("rr_Rene_wakeuptimer1","at_rr_Rene_wakeuptimer1")} set rr_Rene_wakeuptimer1 trigger
   NAME       at_rr_Rene_wakeuptimer1
   NR         161
   NTM        07:00:00
   PERIODIC   yes
   RELATIVE   no
   REP        -1
   STATE      Next: 07:00:00
   TIMESPEC   {RESIDENTStk_wakeupGetBegin("rr_Rene_wakeuptimer1","at_rr_Rene_wakeuptimer1")}
   TRIGGERTIME 1429592400
   TRIGGERTIME_FMT 2015-04-21 07:00:00
   TYPE       at
   Readings:
     2015-04-20 09:30:49   state           Next: 07:00:00
Attributes:
   comment    Auto-created by RESIDENTS Toolkit: trigger wake-up timer at specific time
   room       Residents



wakeupAtdevice at_rr_Rene_wakeuptimer1
wakeupDays 2,3,4
wakeupDefaultTime 07:30
wakeupEnforced 1
wakeupHolidays andNoHoliday
wakeupMacro Macro_rr_Rene_wakeuptimer1
wakeupOffset 30
wakeupResetSwitcher rr_Rene_wakeuptimer1_resetswitcher
wakeupResetdays 2,3,4
wakeupUserdevice rr_Rene


Ich weiß das es vermutlich wieder mal an mir liegt, aber da ich an dem Wecker nichts geändert habe seit letzter Woche und er heute nicht mehr auslöst, vielleicht hast du ja noch eine Idee oder kannst mal in der Implementierung schauen ob es da einen Ansatz gibt warum der AT nicht ausgelöst hat?

Loredo

Zitat von: rretsiem am 20 April 2015, 09:50:33

wakeupAtdevice at_rr_Rene_wakeuptimer1
wakeupDays 2,3,4
wakeupDefaultTime 07:30
wakeupEnforced 1
wakeupHolidays andNoHoliday
wakeupMacro Macro_rr_Rene_wakeuptimer1
wakeupOffset 30
wakeupResetSwitcher rr_Rene_wakeuptimer1_resetswitcher
wakeupResetdays 2,3,4
wakeupUserdevice rr_Rene




Laut Attribut wakeupDays möchtest du nur Dienstags, Mittwochs und Donnerstags geweckt werden, wenn diese keine Feiertage sind (wakeupHolidays = andNoHoliday). Heute ist aber Montag.


Er hätte sicherlich heute ausgelöst, wenn du wakeupDays auf 1,2,3,4 gesetzt hättest :-)
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

Zitat von: Loredo am 20 April 2015, 11:38:34
Er hätte sicherlich heute ausgelöst, wenn du wakeupDays auf 1,2,3,4 gesetzt hättest :-)

???  :-[
Danke! Bei den ganzen versch. Implementierungen komme ich einfach durcheinander. Also Layer-8 Problem, danke! :)

rretsiem

Hi Loredo,

eine kurze Frage, wie verhält sich denn ein Wecker der z.B. für morgen früh 7:30 Uhr gestellt ist, der Roommate aber nicht im Status asleep/gotosleep ist, sondern im Status "gone"? Wird der Wecker trotzdem loslaufen oder "nur" wenn vorher z.B. asleep oder gotosleep eingestellt ist?

Falls der Wecker nicht losgeht müsste ich wohl schnell noch einen programmieren via VPN, sonst steht meine Frau morgen im dunkeln auf  :-\

Loredo

#53
Hi,


der Wecker wird sinnvollerweise nur ausgelöst, wenn das ROOMMATE Device einen Status ungleich gone/away hat.
Das ist ja Sinn der Kopplung mit dem ROOMMATE Device. Hilft dir aber natürlich jetzt nicht weiter. Ich empfehle dir dich mal mit dem Thema Anwesenheit vertraut zu machen: http://www.fhemwiki.de/wiki/Anwesenheitserkennung


Ich verwende bei mir Geofency.




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

Loredo

Ab morgen gibt es per Update eine Verbesserung im Verhalten:


Sofern während eines aktiven Weckprogramms das RESIDENTS/ROOMMATE/GUEST Device auf "away" oder "gone" (bzw "none" im Fall von GUEST) wechselt, wird das Weckprogramm automatisch abgebrochen.
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 das Verhalten nochmals angepasst:


1. Laufende Weckprogramme werden jetzt generell immer gestoppt, wenn sich der Status des ROOMMATE/GUEST/RESIDENTS Device ändert, zu welchem der Wecker zugeordnet ist. Jedoch werden im Macro nachgelagerte Dinge weiterhin wie beim normalen beenden ausgeführt, sofern der Bewohner weiterhin zu Hause (präsent/present) ist.
2. Sofern das Attribut wakeupDefaultTime verwendet wird, wurde das Weckprogramm bisher doppelt am selben Morgen ausgeführt, wenn manuell für einen Tag eine frühere Weckzeit eingestellt wurde (das erste Mal bei der eingestellten Weckzeit, danach an der Default Weckzeit nochmals, nachdem der Wecker ja nach dem ersten Lauf darauf zurückgesetzt wurde). Die letzte Ausführung eines Weckprogramms muss jetzt mindestens 6 Stunden her sein, bevor es nochmals ausgeführt werden kann. Der Wert lässt sich über das neue Attribut wakeupWaitPeriod anpassen.


Die Änderungen stehen ab sofort im SVN oder morgen per Update zur Verfügung.
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

Hallo Loredo,

danke für die Anpassungen, dass klingt so jetzt deutlich "besser".

Noch eine Frage, ich lasse mir wie in den mitgelieferten Skripten eine Push-Nachricht schicken wenn ein Bewohner "asleep" geht, dabei wird die Aufweckzeit und der Bewohner in der Push-Nachricht übermittelt. Dabei scheint es so, als würde nicht die Weckzeit des NÄCHSTEN Weckers, sondern die des "heutigen" Weckers übermittelt.

Das ist der Code: (angepasst vom Default)

## Push mit Weckzeiten
my $nextWakeup = ReadingsVal("rr_Rene","nextWakeup",0);
my $text = "Es ist kein Wecker gestellt. Du könntest verschlafen! Trotzdem eine gute Nacht.";
if ($nextWakeup ne "OFF") {
$text = "Dein Wecker ist auf $nextWakeup Uhr gestellt. Gute Nacht und schlaf gut.";
}
fhem "set pushover msg \"Wecker\" \"$text\"";


Wenn ich jetzt 2 Wakeuptimer habe, am Wochenende 8 Uhr steht, unter der Woche 07:30, dann wird am Sonntag Abend trotzdem als Uhrzeit 08 Uhr übermittelt, obwohl dann ja eigentlich 07:30 drin stehen sollte.
Die WakeupDefaultTime steht bei beiden eben auf 07:30 und am Wochenende auf 08 Uhr. Kannst du das irgendwie nachvollziehen?


andy19850

Das ist ne wirklich coole Sache, Kompliment. Habe es gestern auch mal "nachgebaut" und heute funktionierte es schon wie es soll.

Ich habe allerdings noch eine Verständnisfrage:
Der Wecker löst ja nicht aus, wenn ich nicht da bin (=gone). Wenn jetzt aber meine Frau den Wecker nutzen will ohne dass ich da bin, muss ich ja (so wie ich das verstanden habe) für sie auch die Macros einrichten. Aber mein Macro wakeuptimer1 würde ja genau das gleiche tun was ihr Macro wakeuptimer1 auslösen würde. Wenn dann beide zu Hause wären, was der Regelfall ist... wäre das dann nicht alles doppelt?
Wie habt ihr diesen Fall bei euch abgebildet?

Loredo

Zitat von: andy19850 am 27 Mai 2015, 07:49:31
Wenn jetzt aber meine Frau den Wecker nutzen will ohne dass ich da bin, muss ich ja (so wie ich das verstanden habe) für sie auch die Macros einrichten. Aber mein Macro wakeuptimer1 würde ja genau das gleiche tun was ihr Macro wakeuptimer1 auslösen würde. Wenn dann beide zu Hause wären, was der Regelfall ist... wäre das dann nicht alles doppelt?
Wie habt ihr diesen Fall bei euch abgebildet?


Dieser Fall ist bereits vorgesehen. Du kannst bei jedem ROOMMATE Device einfach das zu verwendende Macro ändern, indem du den Namen im Attribut wakeupMacro entsprechend abänderst. Ein zuvor automatisch angelegtes Macro "wakeuptimer2" kannst du anschließend einfach löschen.
Das wakeuptimer1 Macro wird dann entweder durch den Wecker deiner Frau oder deines eigenen Weckers ausgelöst (je nachdem welcher Wecker zuerst "läutet").
Sind die Weckzeiten überlappend, sprich ist das Macro bereits aktiv, wird es nicht nochmals neu angestoßen. Ist der erste Wecker jedoch bereits abgelaufen und der Weckvorgang von Wecker1 "beendet", wird Wecker2 das Macro erneut ausführen, wenn er eingeschaltet ist.






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

Hallo Loredo,

warum auch immer wird ein Resident nicht in den State "awoken" gesetzt nachdem der Wakeuptimer durchgelaufen ist. Das ganze hat bereits funktioniert (seit Wochen) aber irgendwas scheint wohl anders zu sein (Update?)

Hier mal das Log von heute morgen:

Der Wakeuptimer setzt alles korrekt: (Heute 6:30 Weckzeit)

2015.05.29 06:00:00 3: Macro_rr_Sabine_wakeuptimer2: Wake-up program started for rr_Sabine with target time 06:30
2015.05.29 06:30:01 3: Macro_rr_Sabine_wakeuptimer2: Wake-up program ended for rr_Sabine with target time 06:30
2015.05.29 06:35:01 2: ROOMMATE set rr_Sabine awoken
2015.05.29 06:35:05 3: Watchdog wd_rgr_Residents_awoken triggered
2015.05.29 06:35:05 3: FRITZBOX: set FritzBox wlan on
2015.05.29 06:35:06 3: CUL_HM set KUE.Strom.Boiler.OnOff on
2015.05.29 06:35:06 3: Residents state awoken, twilight is off
2015.05.29 06:35:07 3: Watchdog wd_rr_Sabine_awoken triggered
2015.05.29 06:35:07 3: Macro_rr_Sabine_awoken return value: HASH(0x3149cc8)


Man sieht das der Watchdog rgr_Residents_awoken ausgelöst wurde.

Nun der nächste Wecker (Weckzeit 7:30)


2015.05.29 07:30:00 3: Macro_rr_Rene_wakeuptimer2: Wake-up program started for rr_Rene with target time 08:00
2015.05.29 08:00:01 3: Macro_rr_Rene_wakeuptimer2: Wake-up program ended for rr_Rene with target time 08:00


Nichts weiter. Er setzt den Bewohner rr_Rene nicht auf "awoken" Im Wakeuptimer2 Skript ist der Default Wert drin beim STOP Event:


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
}


Ich bemerke es dann immer erst wenn der "awoken" Bewohner das Haus verlässt, weil dann dadurch die Residents Gruppe wieder auf "asleep" triggert.

Wie gesagt, hat das Ganze schon einmal zuverlässig funktioniert, daher die Frage ob jemand weiß weshalb der letzte Trigger beim EVENT STOP im wakeuptimer2 nicht ausgelöst wird.