Hauptmenü

Fehlersuche in Bedingung

Begonnen von Superposchi, 11 Juli 2024, 19:43:38

Vorheriges Thema - Nächstes Thema

Superposchi

Hallo, ich bräuchte mal eure Hilfe.

Ich habe ein DOIF mit verschiedenen Zweigen für die Steuerung eines Bodenlichtes. In einem Zweig, der zur Steuerung als Nachtlicht dient, ist ein Fehler, so dass er nicht ausgeführt wird auch wenn alle Bedingungen zutreffend sind. Doch ich finde den Fehler nicht.

(([unit_sz_dm7020hd:state] ne "on") and (([rr_Marion:state] eq "asleep") or ([rr_Marion:state] eq "gotosleep")) and ([?sensor_sz_bewegungsmelder:brightness] < [Einstellungsdaten:lichtschwelle_schlafzimmer-tv]))
unit_sz_dm7020hd ist ein Device einer Multimediabox die nicht eingeschaltet sein soll,
rr_Marion ist ein Roommate-Device, das über das AMAD-Modul prüft ob das Device "schläft" (Handy wird geladen),
sensor_sz_bewegungsmelder ist ein Homematic-Bewegungsmelder, der in dem Fall aber nur die Helligkeit prüft und nur in anderen Zweigen die Bewegung abfragt,
Einstellungsdaten:lichtschwelle_schlafzimmer-tv ist der Helligkeitswert ab dem die Nachtlichter eingeschaltet werden sollen.

Trage ich für die Lichtschwelle einen festen Wert ein funktioniert es, daher liegt es Nahe, dass dort der Fehler liegt. Doch ich habe mein ganzens System so aufgebaut, dass ich nach Möglichkeit alle Werte einfach per TabletUI editieren kann.
In dem entsprechenden Reading ist einfach nur der Wert 85 hinterlegt.

Hier ein ist des DOIF's:
Internals:
   DEF        (([unit_sz_dm7020hd:state] eq "on") and ([sensor_sz_bewegungsmelder:brightness] < [Einstellungsdaten:lichtschwelle_schlafzimmer-tv]))
(set HUEDevice11 rgb FFED9D : pct 100)
DOELSEIF (([unit_sz_dm7020hd:state] ne "on") and (([rr_Marion:state] eq "asleep") or ([rr_Marion:state] eq "gotosleep")) and ([?sensor_sz_bewegungsmelder:brightness] < [Einstellungsdaten:lichtschwelle_schlafzimmer-tv]))
(set HUEDevice11 rgb 000004 : pct 5)
DOELSEIF (([Marion_S21Ultra:lichtwecker] eq "on") and [([Marion_S21Ultra:nextAlarmTime]-550)|[Marion_S21Ultra:nextAlarmDay]] and ([rr_Marion:state] eq "asleep"))
        {my @sonne_marion = ('A34472','A80C5F','0B0300','190601','230902','2F0D03','370F03','401204','481405','521806','591007','622108','6E2508','772809','7F2A09','882D0A','90300A','96320A','9D330A','A6360A','B0390A','B0450A','B9480B','C1580B','CB610B','D3650C','D6740C','DC770B','DC810B','E5860B','ED8E12','F2A113','F2B013','F5B51A','F9BA22','FBBD29','FEC232','FFC742','FECC55','FED166','FDD473','FDD880','FEDD8C','FDDF97','FDE4A7','FDEABC','FDEEC8','FDF0D1','FDF3DA','FCF4E2','FFFFFF');
        my $counter_marion = 10;
        for(my $i_marion = 0; $i_marion < @sonne_marion; $i_marion++) {
     fhem("sleep ".$counter_marion." LW_Marion".$i_marion."; set HUEDevice11 rgb ".$sonne_marion[$i_marion] .10);
     $counter_marion = $counter_marion + 10;}}
DOELSEIF (([rr_Marion:state] eq "home") and ([?rr_Marion:lastState] eq "asleep"))
{for(my $i_marion = 0; $i_marion < 150; $i_marion++) {fhem("cancel LW_Marion".$i_marion);} fhem("set HUEDevice11 off")}
DOELSEIF (([unit_sz_dm7020hd:state] ne "on") and (([rr_Marion:state] ne "asleep") and ([rr_Marion:state] ne "gotosleep")) or ([sensor_sz_bewegungsmelder:brightness] > [Einstellungsdaten:lichtschwelle_schlafzimmer-tv]))
(set HUEDevice11 off)
   FUUID      6404aaea-f33f-7706-911f-1d8d5ee28184a34a
   FVERSION   98_DOIF.pm:0.285460/2024-02-23
   MODEL      FHEM
   NAME       nachtlicht_marion
   NOTIFYDEV  sensor_sz_bewegungsmelder,Einstellungsdaten,global,rr_Marion,Marion_S21Ultra,unit_sz_dm7020hd
   NR         264
   NTFY_ORDER 50-nachtlicht_marion
   STATE      cmd_5
   TYPE       DOIF
   VERSION    28546 2024-02-23 20:11:05
   eventCount 152
   READINGS:
     2024-07-11 19:36:56   Device          sensor_sz_bewegungsmelder
     2024-07-10 23:00:36   cmd             5
     2024-07-11 19:36:56   cmd_event       sensor_sz_bewegungsmelder
     2024-07-10 23:00:36   cmd_nr          5
     2024-07-11 19:35:05   e_rr_Marion_state home
     2024-07-11 19:36:56   e_sensor_sz_bewegungsmelder_brightness 117
     2024-07-11 13:23:32   e_unit_sz_dm7020hd_state off
     2024-07-10 22:56:21   mode            enabled
     2024-07-10 23:00:36   state           cmd_5
     2024-07-11 10:00:36   timer_01_c03    12.07.2024 09:50:50|[Marion_S21Ultra:nextAlarmDay]
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       Einstellungsdaten:
         0:
           lichtschwelle_schlafzimmer-tv ^Einstellungsdaten$:^lichtschwelle_schlafzimmer-tv:
         1:
           lichtschwelle_schlafzimmer-tv ^Einstellungsdaten$:^lichtschwelle_schlafzimmer-tv:
         4:
           lichtschwelle_schlafzimmer-tv ^Einstellungsdaten$:^lichtschwelle_schlafzimmer-tv:
       Marion_S21Ultra:
         2:
           lichtwecker ^Marion_S21Ultra$:^lichtwecker:
       rr_Marion:
         0:
         1:
           state      ^rr_Marion$:^state:
         2:
           state      ^rr_Marion$:^state:
         3:
           state      ^rr_Marion$:^state:
         4:
           state      ^rr_Marion$:^state:
       sensor_sz_bewegungsmelder:
         0:
           brightness ^sensor_sz_bewegungsmelder$:^brightness:
         1:
         2:
         3:
         4:
           brightness ^sensor_sz_bewegungsmelder$:^brightness:
       unit_sz_dm7020hd:
         0:
           state      ^unit_sz_dm7020hd$:^state:
         1:
           state      ^unit_sz_dm7020hd$:^state:
         2:
         3:
         4:
           state      ^unit_sz_dm7020hd$:^state:
     itimer:
       Marion_S21Ultra:
         itimer:
           nextAlarmTime ^Marion_S21Ultra$:^nextAlarmTime:
   attr:
     cmdState:
     repeatcmd:
       0
       5
       0
     repeatsame:
       1
       3
       1
     wait:
       0:
         0
       1:
         2
       2:
         0
     waitdel:
   condition:
     0          (::ReadingValDoIf($hash,'unit_sz_dm7020hd','state') eq "on") and (::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','brightness') < ::ReadingValDoIf($hash,'Einstellungsdaten','lichtschwelle_schlafzimmer-tv'))
     1          (::ReadingValDoIf($hash,'unit_sz_dm7020hd','state') ne "on") and ((::ReadingValDoIf($hash,'rr_Marion','state') eq "asleep") or (::ReadingValDoIf($hash,'rr_Marion','state') eq "gotosleep")) and (::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','brightness') < ::ReadingValDoIf($hash,'Einstellungsdaten','lichtschwelle_schlafzimmer-tv'))
     2          (::ReadingValDoIf($hash,'Marion_S21Ultra','lichtwecker') eq "on") and ::DOIF_time_once($hash,0,$wday,"[Marion_S21Ultra:nextAlarmDay]") and (::ReadingValDoIf($hash,'rr_Marion','state') eq "asleep")
     3          (::ReadingValDoIf($hash,'rr_Marion','state') eq "home") and (::ReadingValDoIf($hash,'rr_Marion','lastState') eq "asleep")
     4          (::ReadingValDoIf($hash,'unit_sz_dm7020hd','state') ne "on") and ((::ReadingValDoIf($hash,'rr_Marion','state') ne "asleep") and (::ReadingValDoIf($hash,'rr_Marion','state') ne "gotosleep")) or (::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','brightness') > ::ReadingValDoIf($hash,'Einstellungsdaten','lichtschwelle_schlafzimmer-tv'))
   days:
     0          [Marion_S21Ultra:nextAlarmDay]
   do:
     0:
       0          set HUEDevice11 rgb FFED9D : pct 100
     1:
       0          set HUEDevice11 rgb 000004 : pct 5
     2:
       0          {my @sonne_marion = ('A34472','A80C5F','0B0300','190601','230902','2F0D03','370F03','401204','481405','521806','591007','622108','6E2508','772809','7F2A09','882D0A','90300A','96320A','9D330A','A6360A','B0390A','B0450A','B9480B','C1580B','CB610B','D3650C','D6740C','DC770B','DC810B','E5860B','ED8E12','F2A113','F2B013','F5B51A','F9BA22','FBBD29','FEC232','FFC742','FECC55','FED166','FDD473','FDD880','FEDD8C','FDDF97','FDE4A7','FDEABC','FDEEC8','FDF0D1','FDF3DA','FCF4E2','FFFFFF');         my $counter_marion = 10;         for(my $i_marion = 0; $i_marion < @sonne_marion; $i_marion++) {      fhem("sleep ".$counter_marion." LW_Marion".$i_marion."; set HUEDevice11 rgb ".$sonne_marion[$i_marion] .10);      $counter_marion = $counter_marion + 10;}}
     3:
       0          {for(my $i_marion = 0; $i_marion < 150; $i_marion++) {fhem("cancel LW_Marion".$i_marion);} fhem("set HUEDevice11 off")}
     4:
       0          set HUEDevice11 off
     5:
   helper:
     NOTIFYDEV  sensor_sz_bewegungsmelder,Einstellungsdaten,global,rr_Marion,Marion_S21Ultra,unit_sz_dm7020hd
     event      battery: ok,brightness: 117,sabotageError: off
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev   sensor_sz_bewegungsmelder
     timerevent battery: ok,brightness: 117,sabotageError: off
     triggerDev sensor_sz_bewegungsmelder
     timerevents:
       battery: ok
       brightness: 117
       sabotageError: off
     timereventsState:
       battery: ok
       brightness: 117
       sabotageError: off
     triggerEvents:
       battery: ok
       brightness: 117
       sabotageError: off
     triggerEventsState:
       battery: ok
       brightness: 117
       sabotageError: off
   internals:
   interval:
   intervalfunc:
   intervaltimer:
   localtime:
     0          1720770650
   readings:
     all         unit_sz_dm7020hd:state sensor_sz_bewegungsmelder:brightness Einstellungsdaten:lichtschwelle_schlafzimmer-tv rr_Marion:state Marion_S21Ultra:lichtwecker
   realtime:
     0          09:50:50
   time:
     0          ([Marion_S21Ultra:nextAlarmTime]-550)
   timeCond:
     0          2
   timer:
     0          0
   timers:
     2           0
   trigger:
   triggertime:
     1720770650:
       localtime  1720770650
       hash:
   uiState:
   uiTable:
Attributes:
   alias      Nachtlicht Marion
   do         always
   event-on-change-reading .*
   group      Nachtlicht
   repeatcmd  0:5:0
   repeatsame 1:3:1
   room       Steuerung->Licht->Schlafzimmer
   timestamp-on-change-reading .*
   wait       0:2:0

Und hier noch das List des Device mit dem Einstelungswert für die Lichtschwelle:
Internals:
   FUUID      6685b36b-f33f-7706-ecd1-842393f73b0d7a8a
   FVERSION   98_dummy.pm:0.256060/2022-02-01
   NAME       einstellungsdaten
   NR         599
   STATE      ???
   TYPE       dummy
   eventCount 3
   READINGS:
     2024-07-10 22:44:33   giessabstand_blumen 4
     2024-07-10 22:44:33   giessabstand_blumen_priority 5
     2024-07-10 22:44:33   giessabstand_blumen_urgend 6
     2024-07-03 22:25:48   lichtschwelle_schlafzimmer-tv 85
Attributes:
   alias      Einstellungen
   group      .
   room       System
   userReadings giessabstand_blumen_priority { ReadingsVal("$NAME","giessabstand_blumen",0)+1 },
giessabstand_blumen_urgend { ReadingsVal("$NAME","giessabstand_blumen",0)+2 }

Per

Ich sitze gerade nicht am PC, aber ich würde mal den Bindestrich (oder Minus) gg was anderes tauschen.

Superposchi

Scheint es gewesen zu sein, jedenfalls funktioniert es jetzt. Danke