[geklärt] Lichtsensor triggert eigentartig

Begonnen von Loki, 07 Dezember 2019, 18:04:59

Vorheriges Thema - Nächstes Thema

Loki

HAllo, ich habe seit kurzem (nach Update) ein Problem mit einem Lichtsensor.
Device:
Internals:
   DEF        521C5E
   FUUID      5c43a4f3-f33f-a31c-9779-0178c66e1e2ff2a6
   HMLAN1_MSGCNT 211
   HMLAN1_RAWMSG E521C5E,0000,0295B57C,FF,FFAE,D98653521C5E00000000C100000008
   HMLAN1_RSSI -82
   HMLAN1_TIME 2019-12-07 17:53:01
   IODev      HMLAN1
   LASTInputDev HMLAN1
   MSGCNT     211
   NAME       lichtsensor
   NOTIFYDEV  global
   NR         854
   NTFY_ORDER 50-lichtsensor
   STATE      brightness: 0.08
   TYPE       CUL_HM
   chanNo     01
   lastMsg    No:D9 - t:53 s:521C5E d:000000 00C100000008
   protLastRcv 2019-12-07 17:53:01
   protRcv    211 last_at:2019-12-07 17:53:01
   rssi_at_HMLAN1 cnt:211 min:-102 max:-80 avg:-84.67 lst:-82
   Helper:
     DBLOG:
       state:
         myDbLog:
           TIME       1575737581.73699
           VALUE      B
   READINGS:
     2019-12-07 08:55:05   Activity        alive
     2018-11-01 16:07:16   CommandAccepted yes
     2018-11-01 16:07:30   D-firmware      1.1
     2018-11-01 16:07:30   D-serialNr      NEQ1359178
     2018-11-01 16:07:30   PairedTo        0xF11234
     2018-11-01 16:06:34   R-cyclicInfoMsgDis 0
     2018-11-01 16:07:30   R-pairCentral   0xF11234
     2018-11-01 16:06:35   R-sign          off
     2019-12-07 17:53:01   battery         ok
     2019-12-07 17:53:01   brightness      0.08
     2018-11-01 16:03:47   powerOn         2018-11-01 16:03:47
     2018-11-01 16:03:47   recentStateType info
     2019-12-07 17:53:01   state           B: 0.08
   helper:
     HM_CMDNR   217
     mId        00FD
     peerFriend
     peerOpt    -:senBright
     regLst     0,1
     rxType     12
     supp_Pair_Rep 0
     expert:
       def        1
       det        0
       raw        0
       tpl        0
     io:
       newChn     +521C5E,00,00,00
       nextSend   1575737581.81225
       rxt        2
       vccu       VCCU
       p:
         521C5E
         00
         00
         00
       prefIO:
         HMLAN1
     mRssi:
       mNo        D9
       io:
         HMLAN1:
           -80
           -80
     prt:
       bErr       0
       sProc      0
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
       at_HMLAN1:
         avg        -84.6777251184834
         cnt        211
         lst        -82
         max        -80
         min        -102
     tmpl:
Attributes:
   IODev      HMLAN1
   IOgrp      VCCU:HMLAN1
   actCycle   028:00
   actStatus  alive
   autoReadReg 5_readMissing
   event-aggregator brightness::none:median:300
   expert     0_defReg
   firmware   1.1
   model      HM-SEN-LI-O
   room       00_Aussen
   serialNr   NEQ1359178
   stateFormat {"brightness: ". ReadingsNum($name,"brightness",0)}
   subType    senBright


Im Eventlog erscheinen diese Einträge:
2019-12-07 17:53:01 CUL_HM lichtsensor battery: ok
2019-12-07 17:53:01 CUL_HM lichtsensor B: 0.08
2019-12-07 17:55:53 CUL_HM lichtsensor battery: ok
2019-12-07 17:55:53 CUL_HM lichtsensor B: 0.08


in einem DOIF habe ich eine Abfrage wie
([05:00-11:59] and [lichtsensor:brightness] > 10)

Das hat bisher immer problemlos funktioniert.
Seit kurzem wird das DOIF aber nicht mehr getriggert.

Jetzt habe ich 2 Testdoifs gebaut:
([lichtsensor:"^B:..*$"] > 1) ()
DOELSEIF ([lichtsensor:"^B:..*$"] < 1) ()
DOELSE ()


und
([lichtsensor:brightness] < 1000) ()

Das erste geht bei einem Event auf cmd_3, das zweite triggert gar nicht.

Führe ich jeweils "checkall" aus, geht das erste auf cmd_2 und das zweite auf cmd_1

Nun meine Fragen:

Warum reagiert das DOIF mit lichtsensor:brightness, aber bei checkall?
Warum geht das DOIF mit [lichtsensor:"^B:..*$"] in den DOELSE Zweig und bei checkall korrekt in den zweiten DOELSEIF mit Abfrage auf < 1 bei einem Wert von 0.8?

amenomade

ZitatIm Eventlog erscheinen diese Einträge:


2019-12-07 17:53:01 CUL_HM lichtsensor battery: ok
2019-12-07 17:53:01 CUL_HM lichtsensor B: 0.08
2019-12-07 17:55:53 CUL_HM lichtsensor battery: ok
2019-12-07 17:55:53 CUL_HM lichtsensor B: 0.08
Ich sehe kein Event
2019-12-07 17:53:01 CUL_HM lichtsensor brightness: 0.08
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Loki

Wie meinst du das? jeder Eintrag im Eventlog ist doch ein Event, oder sehe ich das falsch?

amenomade

#3
Ja, aber ohne checkall wird die Bedingung ([05:00-11:59] and [lichtsensor:brightness] > 10)  nie bewertet, zumindest nicht aus "brightness" Grund, und etwas wie ([lichtsensor:brightness] < 1000) () triggert gar nicht

EDIT: übrigens: [lichtsensor:"^B:..*$"] ist immer gleich 1 (wenn ein ^B:..*$ Event kommt) oder gleich 0 (wenn ein anderes Event kommt)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Loki

Das versteht ich nicht ganz.
Bis vor kurzem liefen das DOIF mit
([05:00-11:59] and [lichtsensor:brightness] > 10) absolut problemlos und sowie dass brightness Reading unter 10 geliefert hat, wurde das DOIF korrekt getriggert.

Ich habe nun mal testweise auf ([05:00-11:59] and [lichtsensor:state:d] > 10) geändert. Jetzt läuft es wieder wie gewohnt.

ABer die Ursache erschließt sich mir nicht.


Damian

#5
siehe: https://fhem.de/commandref_DE.html#DOIF_checkReadingEvent

ZitatBemerkung: In früheren Versionen des Moduls war checkReadingEvent 0 die Voreinstellung des Moduls. Da die aktuelle Voreinstellung des Moduls checkReadingEvent 1 ist, hat das Setzen von checkReadingEvent 1 keine weitere Funktion mehr.

ZitatBei Angaben der Art [<Device>:<Reading>] wird das Modul getriggert, wenn ein Ereignis zum angegebenen Device und Reading kommt. Soll das Modul, wie bei Statusangaben der Art [<Device>], auf alle Ereignisse des Devices reagieren, so muss das Attribut auf Null gesetzt werden.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Loki

Ah, ok.
Dann ist es klar.

Der Lichtsensor liefert nur ein Event für state, nicht für brightness.


Jetzt werden mir auch die Anmerkungen von amenomade klar!  ;)

Danke für eure Erklärungen

amenomade

Okay... ich hätte nicht gedacht, dass deine Version vor dem Update so alt war ;)

@16736    13 mai 2018 08:33:00 Damian 98_DOIF.pm: interval timer, checkRedingEvent 1 is now default
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus