DOIF - Soll Lampe per Bildschirm-Timeout schalten

Begonnen von TomLee, 30 August 2016, 23:55:38

Vorheriges Thema - Nächstes Thema

TomLee

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



kumue

ist das dein komplettes DOIF ?
sind Attribute gesetzt ?

Bitte Code Tags verwenden für bessere Lesbarkeit.

Ellert


TomLee

#3
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

Ellert

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.

TomLee

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

CoolTux

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.
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

TomLee

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.

Ellert

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.

TomLee

Hallo Ellert,

es lag wie von CoolTux erwähnt am fehlenden do  always Attribut.

CoolTux

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
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

TomLee

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.

CoolTux

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.
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

CoolTux

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

TomLee

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)?