Hilfe bei Lichtteuerung über Bewegungsmeldern (Userreading mit Bedingung)

Begonnen von jay-jey, 31 Oktober 2019, 07:47:30

Vorheriges Thema - Nächstes Thema

jay-jey

Hallo,

ich komme aktuell nicht mehr weiter. Ich habe in der Wohnung verschiedene Bewegungsmelder 3 mit Helligkeitsmessung und 3 ohne. Der Plan war: im Bad, Schlafzimmer und Wohnzimmer die ohne Helligkeitsmessung verwenden und die anhand der Werte vom Flur schalten. So eigentlich funktioniert es auch aber ein Problem ist z.B. wenn ich im dunkeln in die Wohnung komme, dann geht das Licht im Flur an. Wenn ich dann aber ins Wohnzimmer gehe, dann kann es passieren das es "zu hell" ist weil der Helligkeitsmesser im Flur ja schon die Helligkeit mit Lampen an misst. Daher geht das Licht nicht an:

So jetzt habe ich gedacht, okay nimmst du einfach den Mittelwert aus allen Sensoren zur Steuerung. Hat aber auch nicht funktioniert, weil ich den Sensor im Flur nur so hinstellen kann, dass eine LED direkt darauf leuchtet, d.h. er hat immer Werte von 300 wenn er an ist.
So also dachte ich mir der Sensor soll diese die Werte nur in ein Reading schreiben wenn die Lichter aus sind. Dies funktioniert aber auch nicht wie ich es haben will: und hier kommen wir zur eigentlichen Frage: 

Mein Ansatz war:
lux2 {if(ReadingsVal("Flur_Lichter","state","") eq "off")  {(ReadingsNum("0x00158d00031b4dca","lux",0))}}

0x00158d00031b4dca ist der Sensor
Flur_Lichter ist die Gruppe aus LEDs

dies funktioniert auch wenn die LEDs aus sind.

SO aber wie man in dem List unten sieht ist lux2 sobald die Leuchten an ist leer bzw. gelöscht. Wie bekomme ich es hin, dass der Wert stehen bleibt.

Ich hoffe ich konnte es ein wenig verständlich formulieren was ich brauche, falls ihr aber noch eine bessere Lösung für mein Problem habt dann bitte gerne: 

List vom Sensor:

Internals:
   DEF        RTCGQ11LM 0x00158d00031b4dca Xiaomi_Praesenz_Lux_Flur
   FRIENDLYNAME Xiaomi_Praesenz_Lux_Flur
   FUUID      5ceba20f-f33f-6fd6-d2cb-4101fba81aa6c5be
   IODev      MQTT
   MODEL      RTCGQ11LM
   NAME       0x00158d00031b4dca
   NOTIFYDEV  RTCGQ11LM 0x00158d00031b4dca Xiaomi_Praesenz_Lux_Flur
   NR         209
   SID        0x00158d00031b4dca
   STATE      no_motion,295
   TYPE       XiaomiMQTTDevice
   Helper:
     DBLOG:
       Statenum:
         DBLogging:
           TIME       1572502961.5767
           VALUE      0
       average_ii:
         DBLogging:
           TIME       1572502961.5767
           VALUE      42.120
       illuminance:
         DBLogging:
           TIME       1572502961.5767
           VALUE      295
       occupancy:
         DBLogging:
           TIME       1572502961.5767
           VALUE      false
   READINGS:
     2019-10-31 07:22:41   Statenum        0
     2019-10-31 07:22:41   average_ii      42.120
     2019-10-31 07:22:41   battery         ok
     2019-10-31 07:22:41   battery_level   100
     2019-10-31 07:22:41   illuminance     295
     2019-10-31 07:22:41   linkquality     36
     2019-10-31 07:22:41   lux             295
     2019-10-31 07:22:41   lux2           
     2019-10-31 07:22:41   occupancy       false
     2019-10-31 07:22:41   state           no_motion
     2019-10-31 07:22:41   transmission-state incoming publish received
     2019-10-31 07:22:41   voltage         3025
   message_ids:
   subscribe:
     zigbee2mqtt/Xiaomi_Praesenz_Lux_Flur
     xiaomi/0x00158d00031b4dca/#
   subscribeExpr:
     ^zigbee2mqtt\/Xiaomi_Praesenz_Lux_Flur$
     ^xiaomi\/0x00158d00031b4dca.*$
   subscribeQos:
     xiaomi/0x00158d00031b4dca/# 0
     zigbee2mqtt/Xiaomi_Praesenz_Lux_Flur 0
Attributes:
   DbLogExclude .*
   DbLogInclude occupancy,illuminance,Statenum,average_ii
   IODev      MQTT
   alias      Xiaomi_Praesenz_Lux_Flur
   devStateIcon motion:motion_detector@red off:motion_detector@green no_motion:motion_detector@green
   mqttName   Xiaomi_Praesenz_Lux_Flur
   mqttRoom   Flur
   room       XiaomiMQTTDevice
   stateFormat state,illuminance
   userReadings Statenum {if(ReadingsVal("0x00158d00031b4dca","occupancy","") eq "false") {return 0} else {return 1}},
average_ii {movingAverage("0x00158d00031b4dca","lux",1800)},
lux2 {if(ReadingsVal("Flur_Lichter","state","") eq "off")  {(ReadingsNum("0x00158d00031b4dca","lux",0))}}


List vom doif:


Internals:
   DEF        ([0x00158d00031b4dca:occupancy] eq "true" and [?0x00158d00031b4dca:lux2] < 25) (set Flur_Lichter on) (set Flur_Lichter off)
   FUUID      5da5c2de-f33f-6fd6-167a-66a878aac5397e03
   MODEL      FHEM
   NAME       LichtAnFlur_2
   NR         352
   NTFY_ORDER 50-LichtAnFlur_2
   STATE      cmd_1
   TYPE       DOIF
   VERSION    19786 2019-07-05 21:47:08
   Helper:
     DBLOG:
       cmd:
         DBLogging:
           TIME       1572503052.54662
           VALUE      1.2
       cmd_event:
         DBLogging:
           TIME       1572503052.54662
           VALUE      0x00158d00031b4dca
       cmd_nr:
         DBLogging:
           TIME       1572503052.54662
           VALUE      1
       cmd_seqnr:
         DBLogging:
           TIME       1572503052.54662
           VALUE      2
       error:
         DBLogging:
           TIME       1572090106.41861
           VALUE      0x000b57fffea848da off
       last_cmd:
         DBLogging:
           TIME       1572164540.30064
           VALUE      cmd_1
       mode:
         DBLogging:
           TIME       1572502468.60438
           VALUE      enabled
       state:
         DBLogging:
           TIME       1572503052.54662
           VALUE      cmd_1
       wait_timer:
         DBLogging:
           TIME       1572503052.33122
           VALUE      no timer
   READINGS:
     2019-10-31 07:22:41   Device          0x00158d00031b4dca
     2019-10-31 07:24:12   cmd             1.2
     2019-10-31 07:24:12   cmd_event       0x00158d00031b4dca
     2019-10-31 07:24:12   cmd_nr          1
     2019-10-31 07:24:12   cmd_seqnr       2
     2019-10-31 07:22:41   e_0x00158d00031b4dca_occupancy false
     2019-10-31 07:14:28   mode            enabled
     2019-10-31 07:24:12   state           cmd_1
     2019-10-31 07:24:12   wait_timer      no timer
   Regex:
     accu:
   attr:
     cmdState:
     wait:
       0:
         0
         180
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'0x00158d00031b4dca','occupancy') eq "true" and ::ReadingValDoIf($hash,'0x00158d00031b4dca','lux2') < 25
   devices:
     0           0x00158d00031b4dca
     all         0x00158d00031b4dca
   do:
     0:
       0          set Flur_Lichter on
       1          set Flur_Lichter off
     1:
   helper:
     event      linkquality: 36,battery: ok,battery_level: 100,lux: 295,illuminance: 295,motion,occupancy: true,voltage: 3025,Statenum: 1,average_ii: 19.080,lux2:
     globalinit 1
     last_timer 0
     sleepdevice 0x00158d00031b4dca
     sleepsubtimer -1
     sleeptimer -1
     timerdev   0x00158d00031b4dca
     timerevent linkquality: 36,battery: ok,battery_level: 100,lux: 295,illuminance: 295,motion,occupancy: true,voltage: 3025,Statenum: 1,average_ii: 19.080,lux2:
     triggerDev 0x00158d00031b4dca
     DOIF_eventas:
       cmd_nr: 1
       cmd_seqnr: 2
       cmd_event: 0x00158d00031b4dca
       state: cmd_1
     timerevents:
       linkquality: 36
       battery: ok
       battery_level: 100
       lux: 295
       illuminance: 295
       motion
       occupancy: true
       voltage: 3025
       Statenum: 1
       average_ii: 19.080
       lux2:
     timereventsState:
       linkquality: 36
       battery: ok
       battery_level: 100
       lux: 295
       illuminance: 295
       state: motion
       occupancy: true
       voltage: 3025
       Statenum: 1
       average_ii: 19.080
       lux2:
     triggerEvents:
       linkquality: 36
       battery: ok
       battery_level: 100
       lux: 295
       illuminance: 295
       motion
       occupancy: true
       voltage: 3025
       Statenum: 1
       average_ii: 19.080
       lux2:
     triggerEventsState:
       linkquality: 36
       battery: ok
       battery_level: 100
       lux: 295
       illuminance: 295
       state: motion
       occupancy: true
       voltage: 3025
       Statenum: 1
       average_ii: 19.080
       lux2:
   internals:
   itimer:
   readings:
     0           0x00158d00031b4dca:occupancy
     all         0x00158d00031b4dca:occupancy
   trigger:
   uiState:
   uiTable:
Attributes:
   DbLogInclude cmd
   do         resetwait
   room       Logik
   wait       0,180

Shadow3561

Warum stellst du nicht einfach einen BWM mit Helligkeitssensor nach aussen?
Der sagt dir dann ob es dunkel ist oder nicht. Mit diesem kannst du dann alle anderen triggern.
Alternativ dazu würde ich einfach einen ohne Helligkeitssensor in den Flur packen. Du musst ja schließlich jedesmal durch den Flur um in ander Zimmer zu kommen und würdest somit immer ein zu hellen Luxwert bei den 3 anderen erhalten.
Sonst denke ich, dass die Idee mit dem Mittelwert aus 3 BWM garnicht so schlecht klingt.

Byte09

kurz da handy


schreib die Helligkeit in ein userreading, aktualisierung aber nur dann wenn eine Messung erfolgt ist und das Licht in diesem moment aus war/ist.

dann beziehe deine Steuerung aud dieses userreading. mache ich in allen Räumen so.

gruss Byte09

Gesendet von meinem ELE-L29 mit Tapatalk