Device an, wenn Dunkel und Abwesend will nicht

Begonnen von docb, 22 Dezember 2017, 19:00:07

Vorheriges Thema - Nächstes Thema

docb

Grüß' Euch,
ich habe mir aus einigen Wiki-Beispielen ein DOIF gebastelt. Ziel soll sein, dass ein LED Licht angeht, wenn es dunkel ist und keiner zu Hause ist. Dabei soll natürlich grundsätzlich egal sein, welches Event zuerst eintritt  und es kann auch öfter im Dunkelheitszeitraum vorkommen, dass jemand kommt und geht (daher do always). Eigentlich sollte das analog der Rolladenbeispiele klappen, aber irgendwas mache ich wohl falsch, wobei ich gestehen muss, dass ich trotz der Wiki noch nicht 100%ig bei DOIF durchsteige  :-\

Hier mal ein List meines DOIF:

Internals:
   DEF        ([myTwilight:ss_weather]-[myTwilight:sr_weather] and [Anwesenheit:Nein]) (set SimTV_Strom_Sw on) DOELSE (set SimTV_Strom_Sw off)
   NAME       diTVSim
   NR         1186
   NTFY_ORDER 50-diTVSim
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2017-12-22 18:51:03   Device          myTwilight
     2017-12-22 18:51:03   cmd             2
     2017-12-22 18:51:03   cmd_event       myTwilight
     2017-12-22 18:51:03   cmd_nr          2
     2017-12-22 18:51:03   e_myTwilight_sr_weather 07:42:28
     2017-12-22 18:51:03   e_myTwilight_ss_weather 16:40:42
     2017-12-22 18:51:03   state           cmd_2
     2017-12-22 18:51:03   warning         condition c01: Argument "16:40:42" isn't numeric in subtraction (-)

   Regex:
   condition:
     0          ReadingValDoIf($hash,'myTwilight','ss_weather')-ReadingValDoIf($hash,'myTwilight','sr_weather') and ReadingValDoIf($hash,'Anwesenheit','Nein')
   devices:
     0           myTwilight Anwesenheit
     all         myTwilight Anwesenheit
   do:
     0:
       0          set SimTV_Strom_Sw on
     1:
       0          set SimTV_Strom_Sw off
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      azimuth: 260.53,elevation: -23.39,twilight: 0,twilight_weather: 0,compasspoint: west-southwest
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   myTwilight
     timerevent azimuth: 260.53,elevation: -23.39,twilight: 0,twilight_weather: 0,compasspoint: west-southwest
     triggerDev myTwilight
     timerevents:
       azimuth: 260.53
       elevation: -23.39
       twilight: 0
       twilight_weather: 0
       compasspoint: west-southwest
     timereventsState:
       azimuth: 260.53
       elevation: -23.39
       twilight: 0
       twilight_weather: 0
       compasspoint: west-southwest
     triggerEvents:
       azimuth: 260.53
       elevation: -23.39
       twilight: 0
       twilight_weather: 0
       compasspoint: west-southwest
     triggerEventsState:
       azimuth: 260.53
       elevation: -23.39
       twilight: 0
       twilight_weather: 0
       compasspoint: west-southwest
   internals:
   itimer:
   readings:
     0           myTwilight:ss_weather myTwilight:sr_weather Anwesenheit:Nein
     all         myTwilight:ss_weather myTwilight:sr_weather Anwesenheit:Nein
   trigger:
   uiState:
   uiTable:
Attributes:
   do         always
   icon       hue_filled_storylight
   room       Notify/DOIF


Frohe Weihnachten!
doc
I love FHEM!

Ellert

[myTwilight:ss_weather]-[myTwilight:sr_weather] ist keine gültige Zeitspanne mit indirekten Zeitpunkten, siehe Commandref zu DOIF, hier: indirekte Zeitangaben

docb

Moin,
ok, die Version hatte ich allerdings auch schon - du meinst so, oder? Also mit nochmal eckigen Klammern drum? Das will nämlich auch nicht.
([[myTwilight:ss_weather]-[myTwilight:sr_weather]] and [Anwesenheit:Nein]) (set SimTV_Strom_Sw on) DOELSE (set SimTV_Strom_Sw off)
Er bleibt im cmd_2, selbst wenn beides (wie jetzt, auch im List zu sehen) zutrifft. Ich tippe irgendwie auf das Reading aus twilight, das zeigt nämlich komischerweise nicht nur die Uhrzeit sondern auch ein Datum an und das ist nicht das heutige, sondern das morgige Datum.



Internals:
   DEF        ([[myTwilight:ss]-[myTwilight:sr_weather]] and [Anwesenheit:Nein]) (set SimTV_Strom_Sw on) DOELSE (set SimTV_Strom_Sw off)
   NAME       diTVSim
   NR         1186
   NTFY_ORDER 50-diTVSim
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2017-12-23 16:28:46   Device          Anwesenheit
     2017-12-23 16:28:46   cmd             2
     2017-12-23 16:28:46   cmd_event       Anwesenheit
     2017-12-23 16:28:46   cmd_nr          2
     2017-12-23 16:28:46   state           cmd_2
     2017-12-23 16:24:39   timer_01_c01    24.12.2017 16:16:34
     2017-12-23 16:24:39   timer_02_c01    24.12.2017 07:42:55
   Regex:
   condition:
     0          DOIF_time($hash,0,1,$wday,$hms) and ReadingValDoIf($hash,'Anwesenheit','Nein')
   days:
   devices:
     0           Anwesenheit
     all         Anwesenheit
   do:
     0:
       0          set SimTV_Strom_Sw on
     1:
       0          set SimTV_Strom_Sw off
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      Nein
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   Anwesenheit
     timerevent Nein
     triggerDev Anwesenheit
     timerevents:
       Nein
     timereventsState:
       state: Nein
     triggerEvents:
       Nein
     triggerEventsState:
       state: Nein
   internals:
   interval:
     0          -1
     1          0
   itimer:
     all         myTwilight
   localtime:
     0          1514128594
     1          1514097775
   readings:
     0           Anwesenheit:Nein
     all         Anwesenheit:Nein
   realtime:
     0          16:16:34
     1          07:42:55
   time:
     0          [myTwilight:ss]
     1          [myTwilight:sr_weather]
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   trigger:
   triggertime:
     1514097775:
       localtime  1514097775
       hash:
     1514128594:
       localtime  1514128594
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   icon       hue_filled_storylight
   room       Notify/DOIF

Viele Grüße
doc
I love FHEM!

Ellert

Das Datum wird von DOIF ignoriert.

Was Steht in dem Reading Nein? Poste mal ein List von Anwesenheit.

docb

Was meinst du mit Reading Nein. Es gibt doch nur ein Reading Anwesenheit mit Wert Nein?
I love FHEM!

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

Frank_Huber

Hier ein Beispiel :
Dunkel und  anwesend = Licht Terrasse an nach 5min.
Niemand da oder 23:00 = aus


defmod DOIF_LICHT_Terrasse_EG DOIF ([Anwesenheit] eq "ja" and [[Sonnenstand:ss]-22:30]) (set Licht_Terrasse_1 on)\
DOELSEIF ([Anwesenheit] eq "nein" or [23:00]) (set Licht_Terrasse_1 off)
attr DOIF_LICHT_Terrasse_EG do always
attr DOIF_LICHT_Terrasse_EG wait 300:0


Mit dem Handy online, daher kurz gefasst...


Ellert

Zitat von: docb am 23 Dezember 2017, 18:35:42
Was meinst du mit Reading Nein. Es gibt doch nur ein Reading Anwesenheit mit Wert Nein?
Dann poste mal ein Listing von dem Gerät, in dem es das Reading Anwesendheit gibt.

docb

Mein Gott, ich ....  ::)
ich schaue die ganze Zeit auf die doofen Zeiten, dabei ist es ja das dummy-device, dass ich falsch abfrage...


([[myTwilight:ss]-[myTwilight:sr_weather]] and [Anwesenheit] eq "Nein") (set SimTV_Strom_Sw on) DOELSE (set SimTV_Strom_Sw off)

Danke CoolTux und Frank_Huber für Eure Hilfestellung.
Der Fehler sitzt halt wie immer vor der Scheibe ;-)
Viele Grüße, Danke und schöne Feiertage!
I love FHEM!