FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Dieter68 am 18 Juli 2018, 22:10:46

Titel: doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: Dieter68 am 18 Juli 2018, 22:10:46
Hallo,

ich versuche per DoIf bei einer Unterschreitung einer bestimmten Beleuchtungsstärke eine LED zu schalten - leider klappt das nicht.

Ich habe einen Sensor wie im Anhang angelegt.

Dann habe ich folgendes DoIF angelegt:

defmod Teichbeleuchtung DOIF ([ESPEasy_Gartensteuerung_Lichtsensor:Lux] < 6) (set ESPEasy_Rollade_1.OG_WZ_Fenster_LED1 on )
attr Teichbeleuchtung room 1.OG Wohnzimmer

setstate Teichbeleuchtung initialized
setstate Teichbeleuchtung 2018-07-18 22:08:30 Device ESPEasy_Gartensteuerung_Lichtsensor
setstate Teichbeleuchtung 2018-07-18 21:51:41 cmd 0
setstate Teichbeleuchtung 2018-07-18 21:51:41 mode enabled
setstate Teichbeleuchtung 2018-07-18 21:51:41 state initialized



Leider funktioniert das so einfach nicht.

Könnt Ihr mir sagen was ich hier falsch mache?

Danke und Gruß
Dieter68

Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: CoolTux am 18 Juli 2018, 22:16:05
Ohne ein ausführliches list vom Device kann man nur raten.
Attribut do always nicht gesetzt?
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: Dieter68 am 18 Juli 2018, 22:19:33
Peinliche Frage wie erzeuge ich das Listing  :(
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: CoolTux am 18 Juli 2018, 22:20:51
list DEVICENAME
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: Dieter68 am 18 Juli 2018, 22:22:27
Danke ....

Hier mal vom Lichtsensor:

Internals:
   DEF        192.168.1.126 80 ESP_Bridge Gartensteuerung_Lichtsensor
   ESP_BUILD  20000
   ESP_BUILD_GIT v2.0.0-dev12
   ESP_BUILD_NOTES  - Mega
   ESP_Bridge_MSGCNT 164
   ESP_Bridge_TIME 2018-07-18 22:21:31
   ESP_NODE_TYPE_ID 17: ESP Easy Mega
   ESP_SLEEP  0
   ESP_UNIT   26
   ESP_VERSION 2
   HOST       192.168.1.126
   IDENT      Gartensteuerung_Lichtsensor
   INTERVAL   300
   IODev      ESP_Bridge
   LASTInputDev ESP_Bridge
   MSGCNT     164
   NAME       ESPEasy_Gartensteuerung_Lichtsensor
   NOTIFYDEV  global
   NR         192
   NTFY_ORDER 50-ESPEasy_Gartensteuerung_Lichtsensor
   PORT       80
   STATE      Lux: 0.00
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    1.39
   READINGS:
     2018-07-18 22:21:31   Lichtstaerke    0.00 Lux
     2018-07-18 22:21:31   Lux             0.00
     2018-07-18 22:20:04   presence        present
     2018-07-18 22:21:31   state           Lux: 0.00
   helper:
     fpc        1531635434
     pm:
       Encode     1
       JSON       1
     received:
       Lux        1531945291
Attributes:
   IODev      ESP_Bridge
   Interval   300
   group      ESPEasy Device
   presenceCheck 1
   readingSwitchText 1
   room       Garten
   setState   3
   userReadings Lichtstaerke  {ReadingsVal("ESPEasy_Gartensteuerung_Lichtsensor","Lux",0)." Lux"}
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: CoolTux am 18 Juli 2018, 22:24:43
Funktioniert Dein Lichtsensor nicht oder Dein DOIF?
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: Dieter68 am 18 Juli 2018, 22:26:31
Der Lichtsensor liefert Daten - der hat kein Problem.

Das DoIf will nicht und somit wird die LED nicht auf on geschaltet.

Hier mal das DoIf:

Internals:
   CFGFN     
   DEF        ([ESPEasy_Gartensteuerung_Lichtsensor:Lux] < 6) (set ESPEasy_Rollade_1.OG_WZ_Fenster_LED1 on )
   MODEL      FHEM
   NAME       Teichbeleuchtung
   NR         454505
   NTFY_ORDER 50-Teichbeleuchtung
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2018-07-18 22:24:31   Device          ESPEasy_Gartensteuerung_Lichtsensor
     2018-07-18 21:51:41   cmd             0
     2018-07-18 21:51:41   mode            enabled
     2018-07-18 21:51:41   state           initialized
   Regex:
   condition:
     0          ReadingValDoIf($hash,'ESPEasy_Gartensteuerung_Lichtsensor','Lux') < 6
   devices:
     0           ESPEasy_Gartensteuerung_Lichtsensor
     all         ESPEasy_Gartensteuerung_Lichtsensor
   do:
     0:
       0          set ESPEasy_Rollade_1.OG_WZ_Fenster_LED1 on
     1:
   helper:
     event      Lux: 0.00,Lichtstaerke: 0.00 Lux,Lux: 0.00,Lichtstaerke: 0.00 Lux
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev ESPEasy_Gartensteuerung_Lichtsensor
     triggerEvents:
       Lux: 0.00
       Lichtstaerke: 0.00 Lux
       Lux: 0.00
       Lichtstaerke: 0.00 Lux
     triggerEventsState:
       state: Lux: 0.00
       Lichtstaerke: 0.00 Lux
       state: Lux: 0.00
       Lichtstaerke: 0.00 Lux
   internals:
   itimer:
   readings:
     0           ESPEasy_Gartensteuerung_Lichtsensor:Lux
     all         ESPEasy_Gartensteuerung_Lichtsensor:Lux
   trigger:
   uiState:
   uiTable:
Attributes:
   room       1.OG Wohnzimmer
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: CoolTux am 18 Juli 2018, 22:37:19
Sehe da jetzt gerade nichts falsches dran. Verschieben das Mal besser ins DOIF Forum, dann lesen das auch die besser Wissenden.

Ganz unten ganz links sollte der Knopf zum verschieben sein.
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: Dieter68 am 18 Juli 2018, 22:40:10
Ok - danke für deine Hilfe.

Gruß
Dieter
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: swsmily am 18 Juli 2018, 22:49:26
Ich denke das Problem könnte der Punkt in den Lux-Werten sein. Probiere mal [ESPEasy_Gartensteuerung_Lichtsensor:Lux:d0] vielleicht hilft das.
Siehe Commandref:
https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen


Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: Dieter68 am 18 Juli 2018, 22:55:16
Hallo,

danke für den Hinweis - werde ich gleich morgen mal probieren da der Sensor jetzt leider nur noch 0.00 ausgibt weil es eben dunkel ist  ;D


Jetzt werde ich erst einmal die Referenz durchlesen.

Aber danke schon mal....

Gruß
Dieter
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: swsmily am 18 Juli 2018, 23:01:45
Ich hab bei mir selbst eine "Helligkeitsabhängige"-Steuerung. Was mir gerade da noch aufgefallen ist, ich hab die Zahl (jedoch gemeldet von Fibaro-Motion-Eye) zusätzlich in " " gepackt:
([Bewegungsmelder_Kueche:luminance:d] <= "170")

vielleicht sind schon die fehlenden Anführungszeichen das Problem.

Da Momentan der Lux-Wert unter 6 ist, kannst du doch testen mit set Teichbeleuchtung checkall.
Wenn die Bedingung dann wahr wird, sollte dein ESPEasy_Rollade_1.OG_WZ_Fenster_LED1 auf on schalten und das DOIF auch CMD_1 gehen.
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: Damian am 19 Juli 2018, 16:54:55
DOIF arbeitet eventgesteuert, so wie es aussieht, generiert das Reading lux kein Event (siehe erster Screenshot).

Mit Setzen des Attributes:

attr Teichbeleuchtung checkReadingEvent 0

reagiert DOIF auf alle Events des angegebenen Devices.

Das sollte in diesem Fall helfen.
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: Dieter68 am 19 Juli 2018, 17:20:47
Hallo Damian,

ich denke mal das wird es gewesen sein - ich teste gerade noch.

Danke schon mal für die Hilfe.

Melde mich wieder.

Gruß
Dieter68
Titel: Antw:doif bei Unterschreitung eines bestimmten LUX Wertes
Beitrag von: Dieter68 am 19 Juli 2018, 17:25:00
Hallo,

so es funktioniert jetzt ohne Probleme..... :)

Internals:
   CFGFN     
   DEF        ([ESPEasy_Gartensteuerung_Lichtsensor:Lux:] < 6000) (set LEDTest on )
   MODEL      FHEM
   NAME       Teichbeleuchtung
   NR         84503
   NTFY_ORDER 50-Teichbeleuchtung
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-07-19 17:22:47   Device          ESPEasy_Gartensteuerung_Lichtsensor
     2018-07-19 17:22:41   cmd             1
     2018-07-19 17:22:41   cmd_event       ESPEasy_Gartensteuerung_Lichtsensor
     2018-07-19 17:22:41   cmd_nr          1
     2018-07-19 17:22:47   e_ESPEasy_Gartensteuerung_Lichtsensor_Lux 5571.25
     2018-07-19 17:22:02   mode            enabled
     2018-07-19 17:22:41   state           cmd_1
   Regex:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ReadingValDoIf($hash,'ESPEasy_Gartensteuerung_Lichtsensor','Lux') < 6000
   devices:
     0           ESPEasy_Gartensteuerung_Lichtsensor
     all         ESPEasy_Gartensteuerung_Lichtsensor
   do:
     0:
       0          set LEDTest on
     1:
   helper:
     event      Lux: 5571.25,Lichtstaerke: 5571.25 Lux
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   ESPEasy_Gartensteuerung_Lichtsensor
     timerevent Lux: 5571.25,Lichtstaerke: 5571.25 Lux
     triggerDev ESPEasy_Gartensteuerung_Lichtsensor
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: ESPEasy_Gartensteuerung_Lichtsensor
       state: cmd_1
     timerevents:
       Lux: 5571.25
       Lichtstaerke: 5571.25 Lux
     timereventsState:
       state: Lux: 5571.25
       Lichtstaerke: 5571.25 Lux
     triggerEvents:
       Lux: 5571.25
       Lichtstaerke: 5571.25 Lux
     triggerEventsState:
       state: Lux: 5571.25
       Lichtstaerke: 5571.25 Lux
   internals:
   itimer:
   readings:
     0           ESPEasy_Gartensteuerung_Lichtsensor:Lux
     all         ESPEasy_Gartensteuerung_Lichtsensor:Lux
   trigger:
   uiState:
   uiTable:
Attributes:
   checkReadingEvent 0
   room       Testraum



Danke Euch für Eure Bemühungen

Gruß
Dieter68