Hi,
könnte mir jemand mit etwas Code behilflich sein um meinem Ziel näher zu kommen?
Es soll folgendes passieren: FHEM soll 5min. nachdem mein Handy mich geweckt hat das Licht im Wohnzimmer anmachen, aber nur wenn Twilight sagt, dass es noch nicht hell ist. Die Kaffeemaschine soll so oder so 5 Minuten nach dem wecken geschalten werden. Das Ganze allerdings nur wenn mein Handy "present" ist,
Die checks vom Handy habe ich schon via AMAD realisiert. Die Schaltungen funktionieren auch. Nur habe ich absolut keinen Plan wie ich fhem die ganze Sache erkläre.
Danke euch im Voraus!
--
Tony
...schon mal notify und/oder DOIF in der commandref gelesen? Um überhaupt weiter helfen zu können: anhand welcher Information weiß FHEM, dass dein Handy dich geweckt hat?
Ja habe ich gelesen. Nur will ich da nix falsch machen. FHEM weiß das durch das AMAD Modul welches die Daten vom Handy zieht.
na das ist doch relativ einfach logisch aufzudröseln
notify WeckerKlingeltGerade setzte Timer auf +5 Minuten Kaffeemaschine ein und Licht an
Ich bin mir noch unsicher wie ich z.B. sage, dass er Twilight auf "isday" checken soll.
Also um genau zu sein hält AMAD ein Reading vor in dem die Weckzeit drin steht.
Du kannst auf das Reading ein notify Triggern lassen welches wiederum ein at anlegt mit der Wegzeit + 5 Minuten. Darin kannst Du dann eine 99myUtils sub starten lassen für die ganzen Abfragen.
Am besten Du machst es Stück für Stück. Bau erstmal ein Notify was triggert und ein at mit der Weckzeit anlegt. Wenn Du das hast und nicht weiter kommst poste den Code hier.
Du kannst es auch noch einfacher machen.
Ich verwende das Residents Modul, welches einen Wecker pro Bewohner hast. Du kannst auf die Weckzeit des Androiddevices triggern und den EVENT an den Residents Wecker weiter reichen. Der Wecker löst dann Skripte aus in denen Du Deine Abfragen machen kannst.
Bei Twilight Frage ich immer state in Verbindung mit Twilight_weather ab.
Zum Beispiel.
Value("DeviceName") < 6 && ReadingsVal("DeviceName","Twilight_weather", 0) < 55
Kann ich dem RESIDENT Modul sagen, dass es sich die Weckzeit vom AMAD Modul/AndroidDevice holen soll?
Nein. Du nimmst ein Notify welches auf des korrekte Reading Deines AMAD Devices triggert und schreibst dann das EVENT in den Wecker vom Residents Modul.
define notifySetWakeupTimer AMADdevice:nextAlarmTime.* set rr_NAME_wakeuptimer1 nextRun $EVENT
Eventuell musst Du $EVENT splitten. Also den Wert für $EVENT. Dann halt statt $EVENT $EVTPART1 oder 2. Musst mal im Eventmonitor schauen welcher Event genau ausgelöst wird wenn das nextAlarmTime Reading gesetzt wird.
Grüße
Zitat von: CoolTux am 03 Februar 2016, 22:09:05
define notifySetWakeupTimer AMADdevice:nextAlarmTime.* set rr_NAME_wakeuptimer1 nextRun $EVENT
Habs jetzt mal so gemacht:
define notifySetWakeupTimer RESIDENTS androidPhone:nextAlarmTime.* set rr_Andreas_wakeuptimer1 nextRun $EVENT
ohne RESIDENTS ging das nicht.
Nun hat er allerdings ein neues Home State Device RESIDENTS angelegt
define setWakeupTimer notify androidPhone:nextAlarmTime.* set rr_Andreas_wakeuptimer1 nextRun $EVENT
So sollte das passen oder?
Guten Morgen
Halte mal kurz inne bitte. Mehr Text kommt gleich.
Zitat von: tboston am 04 Februar 2016, 06:48:41
Habs jetzt mal so gemacht:
define notifySetWakeupTimer RESIDENTS androidPhone:nextAlarmTime.* set rr_Andreas_wakeuptimer1 nextRun $EVENT
ohne RESIDENTS ging das nicht.
Nun hat er allerdings ein neues Home State Device RESIDENTS angelegt
Bitte mal das angelegte Gerät löschen was man hier auf den Screen sieht. Ich weiß zwar nicht wie Du das hinbekommen hast, aber so ist das mehr wie falsch.
Memo an mich selbst. Lerne mehr auf die Anfänger ein zu gehen!!!
So! Nun aber. Also der Text oben ist nicht bös gemeint. Das ist echt nur was für mich. So wie ich die Lösung Dir geschrieben habe sollte man das auf keinen Fall einen Einsteiger präsentieren.
Als aller erstes möchte ich Dich bitten das Einsteiger PDF zu lesen. Das ist sehr wichtig. Es ist unabdingbar das Du verstehen lernst was genau der "Code" den ich geschrieben habe bewirkt.
Nun zu Deinen angelegten Geräten. Wie gesagt, lösche bitte das Residents Gerät und lösche auch das Notify vom zweiten Screen!!!
NOCH MAL UND DAS MEINE ICH WIRKLICH SO. Lese zu erst das Einsteiger PDF!!!!!!!
Ich erzähle Dir kurz wie es weiter gehen kann wenn Du das PDF gelesen hast.
Du legst ein Residents Gerät an. Wie das geht liest Du hier (http://fhem.de/commandref_DE.html#RESIDENTS) nach. Wenn Du das gemacht hast hast Du wie Du schon bemerkt hast ein Home State Device RESIDENTS. Das Device spiegelt quasi Deine Wohnung oder Dein Haus wieder. Was fehlt sind noch die Bewohner. Wie man die anlegt erfährst Du hier (http://fhem.de/commandref_DE.html#ROOMMATE).
Desweiteren wurden auch kleine Skripte angelegt welche im Namen sowas tragen wie sleep, asleep und wakeuptimer1. Dazu später mehr.
Wenn Du das hast, hast Du ein Residents Gerät für Deine Wohnung und 1-x Roommate Geräte für Deine Bewohner. Was passiert nun. Je nachdem wie der Status Deiner Bewohner ist, ändert sich der Status des Residents/Wohnung Gerät. Mal kurz ein Beispiel anhand Deiner Anforderung. Du hast am Tag davor alle Bewohner schlafen/asleep gelegt und hast den Residents Wecker für Deinen Bewohner gestellt. Dieser Wecker löst um die Weckzeit das Skript wakeuptimer1 aus in dem stehen kann. Spiele Musik am Tablet im Schlafzimmer ab und ändere nach 5 Minuten meinen Bewohnerstatus auf awoken. Wenn der Status auf awoken geändert wird, wird ein weiteres Skript gestartet, das awoken skript, in dem steht nun drin das die Kaffeemaschine angehen soll und das Licht angehen soll, in Abhängigkeit vom Tageslicht.
Du siehst wenn man erstmal die Voraussetzungen geschaffen hat, wird es einfacher. Und das beste, Du machst das ganze mit Residents und Co Zukunftsorientiert. Du hast virtuelle Bewohner und Wohnung womit Du in fhem arbeiten kannst.
Mach das bitte erstmal so und dann schauen wir weiter.
Und ganz dolle wichtig, bitte lese die Dokus
Grüße
Leon
Guten Morgen und danke für die Mühe und Erläuterung.
RESIDENTS und dazugehörigen Bewohner habe ich schon siehe Screenshot.
Ja ich werde die Doku nochmal lesen.
Was ich schwierig finde, die Erklärungen zu z.B. Notify sind so ein Mix aus englisch und deutsch. Da weiß man als Laie nicht unbedingt wo denn nun ein fixes Modul genannt wird oder wo man selbst einen Namen vergeben muss. (Ich hoffe du weißt was ich damit meine)
Ich muss nun mal rausfinden wie die Syntax genau ist und wann, was erwartet wird in einem Befehl.
Danke dir nochmal
Grüße
Andreas
Na das sieht doch schon mal gut aus.
Kleiner Tip, änder mal den Namen vom Residentsgerät. Vielleicht in Deine Strasse oder so. Ausserdem verwende bei Gerätenamen keine Leerzeichen. Nimm Unterstriche oder besser schreibe zusammen und fange mit kleinem Buchstaben an. Im Fall Deiner Straße kannst das gerne so machen
define AnniKraussStr residents bla bla
Wichtig!!! Wenn Du ein neues Dir unbekanntes Modul verwendest, lese immer zu erst die Commandref. Da steht alles wichtige drin, vorallem die Syntax zum anlegen des Gerätes.
In den meisten Fällen ist das so
define <vonDirGewählterGerätename> <MODULNAME> <OPTIONEN>
Auf jeden Fall ist Dein Residents und Roomate schon mal da. Mach mal bitte folgendes
list RESIDENTSNAME
list BEWOHNERNAME
und kopiere das Ergebnis hier rein. Bitte CODE TAGS verwenden.
Hier mal der Output
list GrossenhainerStr
Internals:
CFGFN
CHANGED
NAME GrossenhainerStr
NR 2984
NTFY_ORDER 50-GrossenhainerStr
ROOMMATES rr_Andreas
STATE home
TYPE RESIDENTS
Readings:
2016-02-04 09:17:51 lastActivity home
2016-02-04 09:17:51 lastActivityBy Andreas
2016-02-04 09:17:51 lastActivityByDev rr_Andreas
2016-02-04 09:17:51 lastArrival 2016-02-04 09:17:51
2016-02-04 09:17:51 lastState initialized
2016-02-04 09:17:51 presence present
2016-02-04 09:17:51 residentsAbsent 0
2016-02-04 09:17:51 residentsAbsentDevs -
2016-02-04 09:17:51 residentsAbsentNames -
2016-02-04 09:17:51 residentsAsleep 0
2016-02-04 09:17:51 residentsAsleepDevs -
2016-02-04 09:17:51 residentsAsleepNames -
2016-02-04 09:17:51 residentsAwoken 0
2016-02-04 09:17:51 residentsAwokenDevs -
2016-02-04 09:17:51 residentsAwokenNames -
2016-02-04 09:17:51 residentsGone 0
2016-02-04 09:17:51 residentsGoneDevs -
2016-02-04 09:17:51 residentsGoneNames -
2016-02-04 09:17:51 residentsGotosleep 0
2016-02-04 09:17:51 residentsGotosleepDevs -
2016-02-04 09:17:51 residentsGotosleepNames -
2016-02-04 09:17:51 residentsHome 1
2016-02-04 09:17:51 residentsHomeDevs rr_Andreas
2016-02-04 09:17:51 residentsHomeNames Andreas
2016-02-04 09:17:51 residentsTotal 1
2016-02-04 09:17:51 residentsTotalAbsent 0
2016-02-04 09:17:51 residentsTotalAbsentDevs -
2016-02-04 09:17:51 residentsTotalAbsentNames -
2016-02-04 09:17:51 residentsTotalGuests 0
2016-02-04 09:17:51 residentsTotalGuestsAbsent 0
2016-02-04 09:17:51 residentsTotalGuestsAbsentDevs -
2016-02-04 09:17:51 residentsTotalGuestsAbsentNames -
2016-02-04 09:17:51 residentsTotalGuestsPresent 0
2016-02-04 09:17:51 residentsTotalGuestsPresentDevs -
2016-02-04 09:17:51 residentsTotalGuestsPresentNames -
2016-02-04 09:17:51 residentsTotalPresent 1
2016-02-04 09:17:51 residentsTotalPresentDevs rr_Andreas
2016-02-04 09:17:51 residentsTotalPresentNames Andreas
2016-02-04 09:17:51 residentsTotalRoommates 1
2016-02-04 09:17:51 residentsTotalRoommatesAbsent 0
2016-02-04 09:17:51 residentsTotalRoommatesAbsentDevs -
2016-02-04 09:17:51 residentsTotalRoommatesAbsentNames -
2016-02-04 09:17:51 residentsTotalRoommatesPresent 1
2016-02-04 09:17:51 residentsTotalRoommatesPresentDevs rr_Andreas
2016-02-04 09:17:51 residentsTotalRoommatesPresentNames Andreas
2016-02-04 09:17:51 residentsTotalWakeup 0
2016-02-04 09:17:51 residentsTotalWakeupDevs -
2016-02-04 09:17:51 residentsTotalWakeupNames -
2016-02-04 09:17:51 residentsTotalWayhome 0
2016-02-04 09:17:51 residentsTotalWayhomeDelayed 0
2016-02-04 09:17:51 residentsTotalWayhomeDelayedDevs -
2016-02-04 09:17:51 residentsTotalWayhomeDelayedNames -
2016-02-04 09:17:51 residentsTotalWayhomeDevs -
2016-02-04 09:17:51 residentsTotalWayhomeNames -
2016-02-04 09:17:51 state home
Attributes:
alias Residents
devStateIcon .*home:status_available:absent .*absent:status_away_1:home .*gone:status_standby:home .*none:control_building_empty .*gotosleep:status_night:asleep .*asleep:status_night:awoken .*awoken:status_available:home .*:user_unknown:home
group Home State
icon control_building_filled
room Residents
webCmd state
list Andreas
No device named Andreas found
Zitat von: tboston am 04 Februar 2016, 09:19:37
Hier mal der Output
list Andreas
No device named Andreas found
Das kann auch nicht gehen. Du hast das Gerät ja auch rr_Andreas genannt
list rr_Andreas
Deine Residents sieht aber gut und sauber aus. Wunderbar.
:D
Internals:
CFGFN
DEF GrossenhainerStr
NAME rr_Andreas
NR 2986
NTFY_ORDER 50-rr_Andreas
RESIDENTGROUPS GrossenhainerStr,
STATE absent
TYPE ROOMMATE
Readings:
2016-02-04 09:29:12 durTimerAbsence 00:10:00
2016-02-04 09:29:12 durTimerAbsence_cr 10
2016-02-04 09:19:12 durTimerPresence 00:00:00
2016-02-04 09:19:12 durTimerPresence_cr 0
2016-02-04 09:17:51 durTimerSleep 00:00:00
2016-02-04 09:17:51 durTimerSleep_cr 0
2016-02-04 09:17:51 lastArrival 2016-02-04 09:17:51
2016-02-04 09:19:12 lastDeparture 2016-02-04 09:19:12
2016-02-04 09:19:12 lastDurPresence 00:01:21
2016-02-04 09:19:12 lastDurPresence_cr 1
2016-02-04 09:19:12 lastLocation undefined
2016-02-04 09:19:12 lastMood calm
2016-02-04 09:19:12 lastState home
2016-02-04 09:19:12 location underway
2016-02-04 09:19:12 mood -
2016-02-04 09:19:12 presence absent
2016-02-04 09:19:12 state absent
2016-02-04 09:17:51 wayhome 0
Timer:
Rr_andreas_autogone:
HASH rr_Andreas
MODIFIER AutoGone
NAME rr_Andreas_AutoGone
Rr_andreas_durationtimer:
HASH rr_Andreas
MODIFIER DurationTimer
NAME rr_Andreas_DurationTimer
Attributes:
alias Status
devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown:home
group Andreas
icon people_sensor
room Residents
rr_realname group
sortby 1
webCmd state
Auch gut so wie ich das sehe.
Allerdings wundert es mich das Dein Residents auf home steht, Dein Roommate aber auf absent.
Es ist nämlich so, die Roommates steuern indirekt das Residents. Also nicht das Residents selbst ändern, nur immer die Roommates/Bewohner
Jetzt legst Du einen Wecker an.
set rr_Andreas create wakeuptimer
Grüße
das erste listing habe ich Zuhause gemacht, mittlerweile bin ich aber schon auf Arbeit und habe dann das zweite listing gemacht :)
WakeUpTimer ist erledigt
Super.
Nun müsstest Du im Room Residents einige Devices haben. rr_Andreas, GrossenhainerStr und rr_Andreas_wakeuptimer1.
Ausserdem einige Skripte. Macro_rr_Andreas_ und Macro_ GrossenhainerStr_, richtig?
richtig
Und weiste schon wie es nun weiter geht?
nun sollte ich doch dem WakeUpTimer sagen, dass er die Weckzeit von AMAD bekommt denke ich. Vielleicht auch noch wie oft er das checken soll, falls es sich geändert hat.
Dann muss ich natürlich noch sagen, was denn dann getan werden soll wenn ich geweckt wurde. Also Licht an wenn noch nicht hell und Kaffeemaschine scharfschalten.
Richtig.
Checken musst Du nicht, das Notify reagiert auf jeden Trigger welches das Reading auslöst. Und das erfolgt in der Regel alle 3 Minuten.
Gut wäre wenn Du Deinem AMAD Device nich ein Attibut Namens event-on-change-Reading mit Wert .* verpasst. Also
attr AMADDEVICE event-on-change-reading .*
Somit erfolgt lediglich ein Event wenn das Reading sich ändert.
Das notify wird dann so aussehen
define notifySetAndreasWakeUpTime notify HandyAndreas:nextAlarmTime.* set rr_Andreas_wakeuptimer1 nextRun $EVENT
In der Hoffnung das $EVENT wirklich nur die Zeit beinhaltet.
Das testen wir dann erstmal. Und dann schauen wir uns die Weckskripte an.
Grüße
Sorry, wenn ich mich hier kurz einmische, aber hier mal eine Version, wie's bei mir läuft:
define di_Kaffeemaschine_neu DOIF ([[di_Kaffeemaschine_neu:Einschaltzeit]-16:30] and [rr_Stefan:state] eq "home")
(set KU_Wippschalter_Kaffee_Sw02_Kaffee on)
DOELSEIF ([01:00])
(IF ([Stefan_Handy:nextAlarmDayc] eq $wday)
({ fhem "setreading di_Kaffeemaschine_neu Einschaltzeit ".TU_Get_Decrement(ReadingsVal("Stefan_Handy","nextAlarmTimef","06:30:00"),"00:15:00")}),
IF ([Stefan_Handy:nextAlarmDayc] == -1)
({ fhem "setreading di_Kaffeemaschine_neu Einschaltzeit 06:30:00"}))
DOELSE (set KU_Wippschalter_Kaffee_Sw02_Kaffee off)
Damit wird 15 Minuten, BEVOR mein Wecker losgeht, die Kaffeemaschine eingeschaltet. Wenn ich für den aktuellen Tag keinen Wecker aktiv habe, wirds automatisch auf 06:30 gestellt.
Und das auch nur, wenn ich daheim bin.
AMAD liefert den Wochentag leider nur als Text und die Weckzeit nur im Format "hh:mm", daher habe ich im AMAD noch 2 Userreadings:
attr Stefan_Handy userReadings nextAlarmDayc:nextAlarmDay {my %d=("Mo"=>1,"Di"=>2,"Mi"=>3,"Do"=>4,"Fr"=>5,"Sa"=>6,"So"=>0,""=>-1);return $d{ReadingsVal("Stefan_Handy","nextAlarmDay",0)};},nextAlarmTimef:nextAlarmTime {my $a=ReadingsVal("Stefan_Handy","nextAlarmTime","00:00");return $a eq ""?-1:$a.":00"}
lg, Stefan
Hallo Stefan,
Was hälst Du davon wenn ich das ändere. So das AMAD den Wochentag als Zahl liefert so wie andere Module das auch tun. Das selbige kann ich gerne auch für die Uhrzeit machen.
Grüße
Von mir aus gerne, wäre für die Weiterverarbeitung im DOIF zB hilfreich....
Kann aber auch ganz gut mit den Userreadings leben.
Nicht, dass es dann Probleme mit anderen gibt, die die bisherigen Werte schon so verarbeiten.
Alternativ vielleicht eben so wie ich's habe ein zweites Reading.
lg, Stefan
Ich schaue es mir mal an. Wäre für mich wieder etwas neues was ich lernen würde. ;D
Ich berichte dann im entsprechenden Thread.
Grüße
Zitat von: CoolTux am 04 Februar 2016, 11:35:04
Richtig.
Checken musst Du nicht, das Notify reagiert auf jeden Trigger welches das Reading auslöst. Und das erfolgt in der Regel alle 3 Minuten.
Gut wäre wenn Du Deinem AMAD Device nich ein Attibut Namens event-on-change-Reading mit Wert .* verpasst. Also
attr AMADDEVICE event-on-change-reading .*
Somit erfolgt lediglich ein Event wenn das Reading sich ändert.
Das notify wird dann so aussehen
define notifySetAndreasWakeUpTime notify HandyAndreas:nextAlarmTime.* set rr_Andreas_wakeuptimer1 nextRun $EVENT
In der Hoffnung das $EVENT wirklich nur die Zeit beinhaltet.
Das testen wir dann erstmal. Und dann schauen wir uns die Weckskripte an.
Grüße
So...endlich Zuhause und ausgeführt. Danke für die Geduld!
Gut. Hast Du event-on-change-reading gesetzt?
Hast mal getestet ob das Notify korrekt klappt und Dein FHEM Wecker entsprechend gestellt wird?
Habe ich gesetzt, Wecker wird auch gestellt aber das macht RESIDENTS selbst ohne AMAD nach der zeit zu fragen wie es scheint. Eigentlicher Wecker ist 6:30, in RESIDENTS aber 5:00
edit: also der wakeUpTimer1 hat die korrekte Zeit. Nur im Room RESIDENTS steht halt 5:00, siehe Screenshots
Nee das passt schon so. Das ist ja nur das at aber dein wakeuptimer steht auf off.
mach mal bitte ein list von Dein notify
Internals:
CFGFN
DEF androidPhone:nextAlarmTime.* set rr_Andreas_wakeuptimer1 nextRun $EVENT
NAME notifySetAndreasWakeUpTime
NOTIFYDEV androidPhone
NR 4149
NTFY_ORDER 50-notifySetAndreasWakeUpTime
REGEXP androidPhone:nextAlarmTime.*
STATE active
TYPE notify
Readings:
2016-02-04 19:14:20 state active
Attributes:
ist das das richtige?
Änder mal bitte in
set rr_Andreas_wakeuptimer1 nextRun $EVTPART4
und dann stell mal den wecker in deinem handy
hast event-on-change-reading beim AMAD Device gesetzt
hmm...scheint bei Off zu bleiben
gib mal list vom notify und vom wakeuptimer1
Internals:
CFGFN
DEF androidPhone:nextAlarmTime.* set rr_Andreas_wakeuptimer1 nextRun $EVENT
NAME notifySetAndreasWakeUpTime
NOTIFYDEV androidPhone
NR 4149
NTFY_ORDER 50-notifySetAndreasWakeUpTime
REGEXP androidPhone:nextAlarmTime.*
STATE 2016-02-04 20:10:00
TYPE notify
Readings:
2016-02-04 19:14:20 state active
Attributes:
Internals:
CFGFN
NAME rr_Andreas_wakeuptimer1
NR 3046
STATE nextRun nextAlarmTime: 07:30
TYPE dummy
Readings:
2016-02-04 11:19:57 nextRun OFF
2016-02-04 20:10:00 state nextRun nextAlarmTime: 07:30
Attributes:
alias Wake-up Timer 1
comment Auto-created by ROOMMATE module for use with RESIDENTS Toolkit
devStateIcon OFF:general_aus@red:reset running:general_an@green:stop .*:general_an@orange:nextRun%20OFF
group Andreas
icon time_timer
room Residents
setList nextRun:OFF,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45 reset:noArg trigger:noArg start:noArg stop:noArg end:noArg
sortby 2
userattr wakeupOffset:slider,0,1,120 wakeupDefaultTime:OFF,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45 wakeupMacro wakeupUserdevice wakeupAtdevice wakeupResetSwitcher wakeupResetdays:multiple-strict,0,1,2,3,4,5,6 wakeupDays:multiple-strict,0,1,2,3,4,5,6 wakeupHolidays:andHoliday,orHoliday,andNoHoliday,orNoHoliday wakeupEnforced:0,1,2 wakeupWaitPeriod:slider,0,1,360
wakeupAtdevice at_rr_Andreas_wakeuptimer1
wakeupMacro Macro_rr_Andreas_wakeuptimer1
wakeupUserdevice rr_Andreas
webCmd nextRun
Du solltest doch das Notify ändern in
set rr_Andreas_wakeuptimer1 nextRun $EVTPART4
Hatte ich auch getan :o
set rr_Andreas_wakeuptimer1 nextRun $EVTPART4
scheint so nicht zu funktionieren
FGFN
DEF androidPhone:nextAlarmTime.* set rr_Andreas_wakeuptimer1 nextRun $EVENT
NAME notifySetAndreasWakeUpTime
NOTIFYDEV androidPhone
Wie kommst darauf das es nicht geht?
sieht nicht so aus. Vergessen zu speichern? Ich hoffe du machst das alles schön über das webfrontend und nicht etwa direkt in der fhem.cfg datei
Ja mache ich via Frontend
Also ich das so eingegeben habe kam einfach die Startseite danach, auch nix zu speichern
Laut screenshot hats wohl doch funktioniert?
Also in meiner Testumgebung klappt das. Probier das noch mal
hast du den screenshot gesehen?
Gerade gesehen. Ok aber mir fehlt da der richtige event. Er hat ja die Variable nicht ersetzt.
Stell mal noch mal den Wecker im Handy und beobachte den Eventmonitor. Linke Seite unten findest du den
Im Log siehts gut aus möchte ich meinen
2016-02-04 20:43:02 dummy rr_Andreas_wakeuptimer1 nextRun nextAlarmTime: 06:20
2016-02-04 20:43:02 dummy rr_Andreas_wakeuptimer1 nextRun nextAlarmTime: 06:20
2016-02-04 20:43:02 AMAD androidPhone nextAlarmTime: 06:20
2016-02-04 20:43:02 AMAD androidPhone powerLevel: 38.0
Sollte da aber nicht 'nextRun 06:20' anstatt 'nextRun nextAlarmTime: 06:20' stehen?
nextAlarmTime: 06:20 das ist der EVENT.
Änder mal auf $EVTPART2 und ich brauche den Eventmonitor. Log ist erstmal unwichtig
Habs auf $EVTPART2 geändert.
Ja ist das Event Log gewesen. Hier das neue
2016-02-04 20:52:00 dummy rr_Andreas_wakeuptimer1 nextRun nextAlarmTime: 07:20
2016-02-04 20:52:00 dummy rr_Andreas_wakeuptimer1 nextRun nextAlarmTime: 07:20
2016-02-04 20:52:00 AMAD androidPhone nextAlarmTime: 07:20
setzt er denn jetzt richtig?
Ich muß das mal bei mir nachstellen. Für heute mache ich erstmal Feierabend ;D
Ist immer noch OFF. Jo schönen Feierabend ^^
Fehler gefunden. Habe mich verzählt. Sorry. Nimm $EVTPART1
Also angeschalten wird der (siehe Screenshot) hatte den mal darüber ausgeschalten vorher. Zeit bleibt aber OFF
Hast Du EVTPART1 genommen? Bei mir hat das nämlich super geklappt
jup, habe ich :(
gib mal list vom notify und wecker.
und du hast auch die weckzeit verändert? nicht die selbe drin gelassen?
There you go!
2016-02-04 21:28:56 at at_rr_Andreas_wakeuptimer1 Next: 06:30:00
2016-02-04 21:28:56 ROOMMATE rr_Andreas nextWakeupDev: rr_Andreas_wakeuptimer1
2016-02-04 21:28:56 ROOMMATE rr_Andreas nextWakeup: 06:30
2016-02-04 21:28:56 ROOMMATE rr_Andreas nextWakeupDev: rr_Andreas_wakeuptimer1
2016-02-04 21:28:56 ROOMMATE rr_Andreas nextWakeup: 06:30
2016-02-04 21:28:56 dummy rr_Andreas_wakeuptimer1 nextRun 06:30
2016-02-04 21:28:56 dummy rr_Andreas_wakeuptimer1 nextRun: 06:30
2016-02-04 21:28:56 dummy rr_Andreas_wakeuptimer1 06:30
2016-02-04 21:28:56 dummy rr_Andreas_wakeuptimer1 nextRun nextAlarmTime: 06:30
2016-02-04 21:28:56 AMAD androidPhone nextAlarmTime: 06:30
Habe das notify nochmal gelöscht und neu angelegt, nun gehts :D
erster Schritt getan, Voraussetzungen geschaffen. Morgen machen wir weiter.
Guts Nächtle
Super, guts nächtle!
Guten Morgen,
So weiter geht es nun. Jetzt machen wir uns mal kurz Gedanken über unser Notify und was es eigentlich machen soll.
Es soll unseren FHEM Wecker entsprechend der Weckzeit unseres Handys setzen. Das tut er. Aber was soll passieren wenn keine Weckzeit vorhanden ist?
Unser FHEM Wecker sieht hierfür vor das er auf OFF gestellt wird. Wir müssen also prüfen ob unser Event ein Uhrzeitformat beinhaltet oder einen leeren Teilstring. Weil ja der gesamte Event noch nextAlarmTime beinhaltet. Es läuft also auf eine Bedingungsabfrage hinaus.
Grüße
Guten Morgen,
nunja dann denke ich wird es so ein "DOIF nextAlarmTime = "" wakeUpTimer OFF" oder so ähnlich?
Also ich hab das grad mal gecheckt, der Residents Wecker macht gar nix wenn ich den Wecker am Handy ausschalte.
define setWakeupTimerOffIf DOIF nextAlarmTime "" {set rr_Andreas_wakeuptimer1 stop}
Zitat von: tboston am 05 Februar 2016, 06:57:57
Also ich hab das grad mal gecheckt, der Residents Wecker macht gar nix wenn ich den Wecker am Handy ausschalte.
define setWakeupTimerOffIf DOIF nextAlarmTime "" {set rr_Andreas_wakeuptimer1 stop}
Wie kommst Du auf Deine Definition. Woher hast Du die Syntax? Warum DOIF? Weißst Du was { macht?
Da ich bisher nur Bash Script gemacht habe, wollte ich wenigstens zeigen dass ich mir Gedanken gemacht habe ^^ hatte auch in die Referenz geschaut
Eine andere Idee wäre
define setWakeUptimerOffIf (androidPhone:nextAlarmTime = "") (set rr_Andreas_wakeuptimer1 OFF)
define setKaffeeLichtOn DOIF (androidPhone:nextalarmTime != "" and [Twilight:LichtWetter] < 6) (set lamp on) and (set Kaffeemaschine on) DOELSE (set lamp off) and (set Kaffeemaschine off)
Ok. Machen wir es etwaas anders. Nicht um Dich zu ärgern sondern des lernes Willen. Hoffe es ist ok für Dich.
1. Wir verwenden unser notify weiter
2. wir erweitern es um Bedingungsabfrage
3. unser notify arbeitet auf FHEM Ebene. Wir müssen also das notify erweitern um auf Perl Ebene zu kommen.
Nachschlagen
Perlebene (http://www.fhemwiki.de/wiki/Notify)
Schalten von Ereignissen abhängig machen - notify (http://fhem.de/Heimautomatisierung-mit-fhem.pdf)
Klar gerne. Ich fahr erstmal auf Arbeit und schau mir dort dann die Doku an.
Und solltest Du fragen haben einfach fragen. Ist alles kein Problem
Also das hier
androidPhone:nextAlarmTime.* set rr_Andreas_wakeuptimer1 nextRun $EVTPART1
erweitern?
Ja genau das. Das erweitern wir um eine Bedingung und prüfen ob ein korrektes Uhrzeitformat da ist.
Bin erst heute Abend wieder voll da.
Gruße
Na wie schauts aus? Hast Dich bisschen schlau gemacht wie man Bedingungen in notifys ab fragt?
Jup, hatte aber erstmal mit meinem Sohn zu tun ^^
Ich verstehe noch nciht, warum ein DOIF nicht auch helfen würde
Würde es sicherlich auch. Aber ich verwende hierfür notify und nur da kann ich Dir zu diesem Anliegen helfen. DOIF verwende ich meist wenn es um das beobachten von Zustandsänderungen geht.
Kannst ja bei Gelegenheit mal Code schreiben was Du so denkst. Mach Dir nicht so viel Kopf wegen Uhrzeit. Wichtig ist das Du weist wie man generell Bedingungen abfragt und was der Unterschied zwischen FHEM Ebene und Perlebene ist.
Also Plan hab ich nun noch nicht wie man an das vorhandene notify noch was dranhängt.
Auf jeden Fall hab ich erstmal hin und her probiert fhem zu erklären, dass es die Wohnzimmerlampe ausschalten soll wenn Twilight sagt, dass es hell ist
define notifyLichtWzOffIfHell notify ([Twilight:LichtWetter] eq "6") and ([rr_Andreas:state] eq "home") set wz_Stehlampe off
Wobei das rr_Andreas:state ja nicht sein soll, da die Lampe gar nicht an sein soll wenn ich nicht da bin
Wollen wir nicht erstmal eins fertig machen? Du hast nicht wirklich das Wiki zu Notify gelesen, oder?
Deine Syntax ist die von DOIF, Du gibst aber notify als Modulname an. So kann das nichts werden.
Du vermischst die Syntax zweier unterschiedlicher Module.
Hi,
hatte erstmal anderweitig zu tun am WE. Ich schau mir das die Woche noch mal an.
---
Tony
Mach ganz in Ruhe. Bisschen was gibt es ja noch zu tun ;D
Grüße