Hallo zusammen,
vielleicht kann mir jemand auf die Sprünge helfen.
Mit folgendem DOIF schalte ich meinen Milight Bulb problemlos manuell im angegebenen Zeitraum, mit der EIN/AUS-Taste meines Tablets (Samsung TabA Android 5.02), aus.
(([SamsungTablet:screen] eq "off locked") and [?01:00-5:00]) ({fhem "set Mi_Wecklicht off"})
Geht das Tablet selbständig in diesem Zeitraum "off locked" passiert nichts. Drücke ich irgendeine Taste am Tablet, warte bis das Display wieder erlischt geht auch die Lampe aus. Wieso schaltet das DOIF nur wenn ich manuell eine Taste betätige? Das Reading screen off locked existiert doch sofort nach dem Bildschirm Timeout.
Grüße
Thomas
ist das dein komplettes DOIF ?
sind Attribute gesetzt ?
Bitte Code Tags verwenden für bessere Lesbarkeit.
Poste mal die Events für den Problemfall.
Hier mal die Events vom manuellen ausschalten:
-31 17:33:31 AMAD SamsungTablet flowsetVersionAtDevice: 2.6.1
2016-08-31 17:33:31 AMAD SamsungTablet screenOrientationMode: auto
2016-08-31 17:33:31 AMAD SamsungTablet screenOrientation: landscape
2016-08-31 17:33:31 AMAD SamsungTablet lastStatusRequestState: statusRequest_done
2016-08-31 17:33:31 AMAD SamsungTablet active
2016-08-31 17:33:31 DOIF Wecklicht_off_doif cmd_nr: 2
2016-08-31 17:33:31 DOIF Wecklicht_off_doif cmd: 2
2016-08-31 17:33:31 DOIF Wecklicht_off_doif cmd_event: SamsungTablet
2016-08-31 17:33:31 DOIF Wecklicht_off_doif cmd_2
und ein list des DOIF:
:
DEF (([SamsungTablet:screen] eq "off locked") and [?17:00-19:00]) ({fhem "set Mi_Wecklicht off"})
NAME Wecklicht_off_doif
NR 308
NTFY_ORDER 50-Wecklicht_off_doif
STATE cmd_2
TYPE DOIF
Readings:
2016-08-31 17:37:30 Device SamsungTablet
2016-08-31 17:33:31 cmd 2
2016-08-31 17:33:31 cmd_event SamsungTablet
2016-08-31 17:33:31 cmd_nr 2
2016-08-31 17:37:30 e_SamsungTablet_screen on unlocked
2016-08-31 17:33:31 state cmd_2
2016-08-31 17:28:59 timer_1_c1 01.09.2016 17:00:00
2016-08-31 17:28:59 timer_2_c1 31.08.2016 19:00:00
Condition:
0 (ReadingValDoIf($hash,'SamsungTablet','screen','','',AttrVal($hash->{NAME},'notexist',undef)) eq "off locked") and DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")
Days:
Devices:
0 SamsungTablet
all SamsungTablet
Do:
0:
0 {fhem "set Mi_Wecklicht off"}
1:
Helper:
event batteryTemperature: 30.0,flowsetVersionAtDevice: 2.6.1,batteryHealth: 2,powerLevel: 62,powerPlugged: 0,lastStatusRequestState: statusRequest_done
globalinit 1
last_timer 2
sleeptimer -1
timerdev SamsungTablet
timerevent batteryTemperature: 30.0,flowsetVersionAtDevice: 2.6.1,batteryHealth: 2,powerLevel: 62,powerPlugged: 0,lastStatusRequestState: statusRequest_done
triggerDev SamsungTablet
timerevents:
batteryTemperature: 30.0
flowsetVersionAtDevice: 2.6.1
batteryHealth: 2
powerLevel: 62
powerPlugged: 0
lastStatusRequestState: statusRequest_done
timereventsState:
batteryTemperature: 30.0
flowsetVersionAtDevice: 2.6.1
batteryHealth: 2
powerLevel: 62
powerPlugged: 0
lastStatusRequestState: statusRequest_done
triggerEvents:
batteryTemperature: 30.0
flowsetVersionAtDevice: 2.6.1
batteryHealth: 2
powerLevel: 62
powerPlugged: 0
lastStatusRequestState: statusRequest_done
triggerEventsState:
batteryTemperature: 30.0
flowsetVersionAtDevice: 2.6.1
batteryHealth: 2
powerLevel: 62
powerPlugged: 0
lastStatusRequestState: statusRequest_done
Internals:
Interval:
0 -1
1 0
Itimer:
Localtime:
0 1472742000
1 1472662800
Readings:
0 SamsungTablet:screen
all SamsungTablet:screen
Realtime:
0 17:00:00
1 19:00:00
Regexp:
0:
All:
State:
Time:
0 17:00:00
1 19:00:00
Timecond:
0 0
1 0
Timer:
0 0
1 0
Trigger:
Triggertime:
1472662800:
localtime 1472662800
Hash:
1472742000:
localtime 1472742000
Hash:
Attributes:
verbose 0
Zitat2016-08-31 17:37:30 e_SamsungTablet_screen on unlocked
damit wird das DOIF nicht schalten, es erwartet "off locked". "off locked" ist weder im Event-Monitor zu sehen, noch im Listing des DOIF.
Sry Korrektur so ist's richtig (irgendwas ging auf die Schnelle schief).
Ein List nach betätigen der Ein/Aus Taste ergibt:
Internals:
DEF (([SamsungTablet:screen] eq "off locked") and [?17:00-23:00]) ({fhem "set Mi_Wecklicht off"})
NAME Wecklicht_off_doif
NR 308
NTFY_ORDER 50-Wecklicht_off_doif
STATE cmd_1
TYPE DOIF
Readings:
2016-08-31 22:05:56 Device SamsungTablet
2016-08-31 22:00:44 cmd 1
2016-08-31 22:00:44 cmd_event SamsungTablet
2016-08-31 22:00:44 cmd_nr 1
2016-08-31 22:05:56 e_SamsungTablet_screen off locked
2016-08-31 22:00:44 state cmd_1
2016-08-31 22:00:33 timer_1_c1 01.09.2016 17:00:00
2016-08-31 22:00:33 timer_2_c1 31.08.2016 23:00:00
Condition:
0 (ReadingValDoIf($hash,'SamsungTablet','screen','','',AttrVal($hash->{NAME},'notexist',undef)) eq "off locked") and DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")
Days:
Devices:
0 SamsungTablet
all SamsungTablet
Do:
0:
0 {fhem "set Mi_Wecklicht off"}
1:
Helper:
event deviceState: online,flowsetVersionAtDevice: 2.6.1,checkActiveTask: 0,flow_SetCommands: aktiv,lastStatusRequestState: statusRequest_done
globalinit 1
last_timer 2
sleeptimer -1
timerdev SamsungTablet
timerevent deviceState: online,flowsetVersionAtDevice: 2.6.1,checkActiveTask: 0,flow_SetCommands: aktiv,lastStatusRequestState: statusRequest_done
triggerDev SamsungTablet
timerevents:
deviceState: online
flowsetVersionAtDevice: 2.6.1
checkActiveTask: 0
flow_SetCommands: aktiv
lastStatusRequestState: statusRequest_done
timereventsState:
deviceState: online
flowsetVersionAtDevice: 2.6.1
checkActiveTask: 0
flow_SetCommands: aktiv
lastStatusRequestState: statusRequest_done
triggerEvents:
deviceState: online
flowsetVersionAtDevice: 2.6.1
checkActiveTask: 0
flow_SetCommands: aktiv
lastStatusRequestState: statusRequest_done
triggerEventsState:
deviceState: online
flowsetVersionAtDevice: 2.6.1
checkActiveTask: 0
flow_SetCommands: aktiv
lastStatusRequestState: statusRequest_done
Internals:
Interval:
0 -1
1 0
Itimer:
Localtime:
0 1472742000
1 1472677200
Readings:
0 SamsungTablet:screen
all SamsungTablet:screen
Realtime:
0 17:00:00
1 23:00:00
Regexp:
0:
All:
State:
Time:
0 17:00:00
1 23:00:00
Timecond:
0 0
1 0
Timer:
0 0
1 0
Trigger:
Triggertime:
1472677200:
localtime 1472677200
Hash:
1472742000:
localtime 1472742000
Hash:
Attributes:
verbose 0
Die Events:
2016-08-31 22:00:44 AMAD SamsungTablet active
2016-08-31 22:00:44 MilightDevice Mi_Wecklicht transitionInProgress: 1
2016-08-31 22:00:44 MilightDevice Mi_Wecklicht on 4
2016-08-31 22:00:44 DOIF Wecklicht_off_doif cmd_nr: 1
2016-08-31 22:00:44 DOIF Wecklicht_off_doif cmd: 1
2016-08-31 22:00:44 DOIF Wecklicht_off_doif cmd_event: SamsungTablet
2016-08-31 22:00:44 DOIF Wecklicht_off_doif cmd_1
2016-08-31 22:00:44 AMAD SamsungTablet flowsetVersionAtDevice: 2.6.1
2016-08-31 22:00:44 AMAD SamsungTablet screenOrientationMode: auto
2016-08-31 22:00:44 AMAD SamsungTablet screen: off locked
2016-08-31 22:00:44 AMAD SamsungTablet screenOrientation: landscape
2016-08-31 22:00:44 AMAD SamsungTablet lastStatusRequestState: statusRequest_done
2016-08-31 22:00:44 MilightDevice Mi_Wecklicht off
2016-08-31 22:00:44 MilightDevice Mi_Wecklicht transitionInProgress: 0
Bitte verwende Codetages für listings. Das ist der Hash oben bei den Symbolen. Ausserdem muss Dein DOIF als Attribut noch ein DO ALWAYS bekommen.
Danke Dir 😊.
Vlt kannst mir jetzt noch sagen warum das DOIF nicht sofort schaltet, sondern erst 3-4 Minuten nachdem der Bildschirm ausging . Das Reading screen off locked ist doch sofort verfügbar nachdem dem Bildschirm Timeout.
Ich nutze Milight unnd AMAD nicht und kenne daher das Verhalten dieser Geräte nicht.
({fhem "set Mi_Wecklicht off"}) kann zu (set Mi_Wecklicht off) vereinfacht werden.
DOIF hat geschaltet
Zitat2016-08-31 22:00:44 state cmd_1
und
2016-08-31 22:00:44 DOIF Wecklicht_off_doif cmd_1
und Milight auch zur gleichen Zeit
Zitat2016-08-31 22:00:44 MilightDevice Mi_Wecklicht off
2016-08-31 22:00:44 MilightDevice Mi_Wecklicht transitionInProgress: 0
Da wird die Verzögerung in der Befehlsausführung liegen, nicht im DOIF.
Wenn Du das meinst:
Zitat2016-08-31 22:05:56 e_SamsungTablet_screen off locked
hier hat SamsungTablet_screen noch einmal ein Event erzeugt, es hat aber nichts geschaltet.
Der Event-Auszug reicht leider nicht solange, dort könnte man genaueres sehen.
Ggf. solltest Du Dir auch das Attribut "checkReadingEvent" ansehen.
Das eigentliche Problem haben wir aber noch garnicht betrachtet:
ZitatGeht das Tablet selbständig in diesem Zeitraum "off locked" passiert nichts.
Hier müsstest Du mal alle zugehörigen Events loggen bis das Tablet selbstständig ausgeht.
Hallo Ellert,
es lag wie von CoolTux erwähnt am fehlenden do always Attribut.
Mach mal bitte noch mal ein Mitschnitt vom Eventmonitor. Ausserdem brauche ich ein list vom DOIF wie es aktuell ist.
3-4 min ist nicht normal. Aber eventuell solltest Du das DOIF so umstellen das es auf Events triggert.
Grüße
Mitschnitt und List zu welcher Zeit? Nach dem Timeout (also 3-4 Minuten später ) oder wenn ich manuell schalte (Ein/Aus Taste betätige).Auf Events triggern? Bestimmt schon irgendwo gelesen, müsst ich mich erst mal mit beschäftigen. Da es ja seit gestern geht (auch wenns 3-4 Minuten später ist) und mein eigentliches Ziel, das Tablet dazu zu nutzen festzustellen wann ich schlafe, sollte ich vlt noch erwähnen das ich das ganze noch mit nem Watchdog verbinden wollte. Hab mir das heute mal bisschen näher angeschaut , vlt geht's ja auch ohne DOIF. Kein Ahnung.
Genaues Ziel ist:
Ist es zwischen 00:15h und 05:00h und das Tablet länger als 25 min. off locked dann mach die Lampe aus (bzw. wenn ich mal weiter bin und es brauche den Bewohner Thomas asleep).
Vielleicht hat ja jemand dazu ne nette Idee das umzusetzen.
Du kannst mit DOIF auch ein wait mache. Ist das selbe wie Watchdog.
Schau Dir mal Residents und Roommate an. Das ist perfekt um den Zustand der Wohnung Anhand der Bewohner darzustellen. Wenn du dich da schlafen legst und alle anderen auch schlafen oder weg sind kannst du im Skript aslepp einstellen das nach 10s die structure Wohnunglicht off geschalten wird. In der structure haste dann alle Lampen der Wohnung drin als Beispiel.
DOIF Events
http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events
Okay, Danke für die Tipps (Roomate und Residents sind schon länger definiert, wegen meinem Wecklicht und Wecker im Ftui, nutze ich aber sonst net) und denn Links. Wenns beim DOIF bleiben kann, dann sag mal welche(s) List und Events(wann)?
Ich schaue heute Abend mal wie der Event aus schaut und zeige Dir ein passe des DOIF dafür.
(["^SamsungTablet$:^screen: off"] and [?01:00-5:00]) (set Mi_Wecklicht off)
Probiere mal damit. Habe es bei mir erfolgreich getestet
Kam jetzt erst dazu. Wow und super. Tausend Dank!!!
Hallo,
wollte da nochmal was nachtragen. Wird hier ja auch mitgelesen und die Lösung wars dann doch nicht ganz
Mit dem Ansatz von CoolTux wurde SamsungTablet nur auf off getriggert. Wurde der Screen in der Zeit von [?00:00-05:00] ausgeschaltet und in der Wartezeit von bspw. attr doif_Amschlafen wait 1500 wieder eingeschaltet, wurde die Lampe nach der Wartezeit ausgeschaltet. Das sollte sie ja nicht wenn ich vlt. doch noch wach bin und ans Tablet greife ☺.
Habs dann so erweitert und probeweise auf den Status des Roommate rr_Thomas übertragen:
(["^SamsungTablet:^screen: off"] and [?00:00-05:00]) (set rr_Thomas gotosleep) DOELSEIF (["^SamsungTablet:^screen: on"] and [?00:00-05:00]) (set rr_Thomas home)
mit
attr doif_Amschlafen do always
attr doif_Amschlafen wait 1500:1500
Mal eine allgemeine Frage: Wie kann man überhaupt das Tablet einbinden bzw auf den Screen triggern?
Schau dir das Amad Modul von CoolTux an.
Den Thread zu gibt's hier
https://forum.fhem.de/index.php/topic,50108.0.html (https://forum.fhem.de/index.php/topic,50108.0.html)
oder besser erst mal hier anfangen
https://wiki.fhem.de/wiki/AMAD2 (https://wiki.fhem.de/wiki/AMAD2)
Ok danke werde ich mir mal ansehen