Doif schaltet nur nach cmd checkall.

Begonnen von Wasserwerk33, 23 Dezember 2021, 15:07:14

Vorheriges Thema - Nächstes Thema

Wasserwerk33

Hallo Leute,

Ich denke ich habe irgendwo eine Klammer falsch gesetzt. Deswegen schaltet es nicht zuverlässig.
Es schaltet nur wenn ich ,,set WeihnachtsbaumDOIF checkall" schaltet es ein. Aus schaltet es zuverlässig.

([Weihnachtszeit] eq "on" and ([?6:40-8:30] and [ZWave_SENSOR_NOTIFICATION_23:motion_state] eq "Bewegung erkannt" or ([LOGOLichtsensor] eq "off")))
(set HUEDevice12 on)


Weihnachtszeit =dummy
ZWave_SENSOR_NOTIFICATION_23= bewegungsmelder
LOGOLichtsensor= lichtsensor der mit meiner Logo verbunden ist. Erkennt nur hell und dunkel. Der Lichtsensor lässt unsere Jalousien hochfahren dann soll das Licht aufjedenfall angehen. Der Bewegungsmelder soll das Licht anschalten wenn wir schon unten sind aber die Jalousien noch unten sind so das wir auf so schon was von dem Weihmachtsbaum haben.

Danke für eure Hilfe


Otto123

Hi,

das da einer ist der aus schaltet sehe ich nicht?  :-[
Ansonsten deutet das ev. darauf hin, dass attr do always fehlt?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wasserwerk33

Falsch ausgedrückt und nur den abschalten Befehl gesendet

Hier ist das ganze DOIF:
([Weihnachtszeit] eq "on" and ([?6:40-8:30] and [ZWave_SENSOR_NOTIFICATION_23:motion_state] eq "Bewegung erkannt" or [LOGOLichtsensor] eq "off"))
(set HUEDevice12 on)

DOELSEIF

([?20:15-23:59] and [HUEDevice5] eq "off")
(set HUEDevice12 off)

DOELSEIF

([Weihnachtszeit] eq "off")
(set HUEDevice12 off)


Ausschalten funktioniert super ohne Probleme nur das einschalten klappt nicht nur nach checkall

Damian

Du musst wie immer list von dem DOIF posten, sonst wird man dir hier nicht helfen können.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Wasserwerk33

#4
Danke

Habe noch die List mit angehangen.

Habe auch schon versucht die Klammern anders zu setzten. Oder welche wegzulassen. Ich denke das klammerfehler bei Logo und dem Bewegungssensor sitzt. Und wie immer 30cm vor dem Bildschirm 😉

Internals:
   DEF        ([Weihnachtszeit] eq "on" and ([?6:40-8:30] and [ZWave_SENSOR_NOTIFICATION_23:motion_state] eq "Bewegung erkannt" or ([LOGOLichtsensor] eq "off")))
(set HUEDevice12 on)

DOELSEIF

([?20:15-23:59] and [HUEDevice5] eq "off")
(set HUEDevice12 off)

DOELSEIF

([Weihnachtszeit] eq "off")
(set HUEDevice12 off)





   FUUID      61bf5ba6-f33f-5e7b-00d5-bf6d967e98e7c501
   MODEL      FHEM
   NAME       WeihnachtsbaumDOIF
   NOTIFYDEV  LOGOLichtsensor,Weihnachtszeit,HUEDevice5,ZWave_SENSOR_NOTIFICATION_23,global
   NR         172
   NTFY_ORDER 50-WeihnachtsbaumDOIF
   STATE      cmd_1
   TYPE       DOIF
   VERSION    24755 2021-07-15 16:40:59
   READINGS:
     2021-12-23 16:21:27   Device          HUEDevice5
     2021-12-23 15:07:51   cmd             1
     2021-12-23 15:07:51   cmd_event       WeihnachtsbaumDOIF
     2021-12-23 15:07:51   cmd_nr          1
     2021-12-23 16:21:27   e_HUEDevice5_STATE off
     2021-12-23 15:07:48   mode            enabled
     2021-12-23 15:07:51   state           cmd_1
     2021-12-23 15:07:48   timer_01_c01    24.12.2021 06:40:00
     2021-12-23 15:07:48   timer_02_c01    24.12.2021 08:30:00
     2021-12-23 15:07:48   timer_03_c02    23.12.2021 20:15:00
     2021-12-23 15:07:48   timer_04_c02    23.12.2021 23:59:00
   Regex:
     accu:
     collect:
     cond:
       HUEDevice5:
         0:
         1:
           &STATE     ^HUEDevice5$
         2:
       LOGOLichtsensor:
         0:
           &STATE     ^LOGOLichtsensor$
       Weihnachtszeit:
         0:
           &STATE     ^Weihnachtszeit$
         2:
           &STATE     ^Weihnachtszeit$
       ZWave_SENSOR_NOTIFICATION_23:
         0:
           motion_state ^ZWave_SENSOR_NOTIFICATION_23$:^motion_state:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'Weihnachtszeit','STATE') eq "on" and (::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'ZWave_SENSOR_NOTIFICATION_23','motion_state') eq "Bewegung erkannt" or ::InternalDoIf($hash,'LOGOLichtsensor','STATE') eq "off")
     1          ::DOIF_time($hash,2,3,$wday,$hms) and ::InternalDoIf($hash,'HUEDevice5','STATE') eq "off"
     2          ::InternalDoIf($hash,'Weihnachtszeit','STATE') eq "off"
   days:
   do:
     0:
       0          set HUEDevice12 on
     1:
       0          set HUEDevice12 off
     2:
       0          set HUEDevice12 off
     3:
   helper:
     DEVFILTER  ^global$|^ZWave_SENSOR_NOTIFICATION_23$|^Weihnachtszeit$|^LOGOLichtsensor$|^HUEDevice5$
     NOTIFYDEV  global|ZWave_SENSOR_NOTIFICATION_23|Weihnachtszeit|LOGOLichtsensor|HUEDevice5
     event      lastseen: 2021-12-23T15:19Z
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   
     timerevent
     timerevents
     timereventsState
     triggerDev HUEDevice5
     triggerEvents:
       lastseen: 2021-12-23T15:19Z
     triggerEventsState:
       lastseen: 2021-12-23T15:19Z
   internals:
     all         Weihnachtszeit:STATE LOGOLichtsensor:STATE HUEDevice5:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
   intervalfunc:
   localtime:
     0          1640324400
     1          1640331000
     2          1640286900
     3          1640300340
   readings:
     all         ZWave_SENSOR_NOTIFICATION_23:motion_state
   realtime:
     0          06:40:00
     1          08:30:00
     2          20:15:00
     3          23:59:00
   time:
     0          6:40
     1          8:30
     2          20:15:00
     3          23:59:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
   timer:
     0          0
     1          0
     2          0
     3          0
   trigger:
   triggertime:
     1640286900:
       localtime  1640286900
       hash:
     1640300340:
       localtime  1640300340
       hash:
     1640324400:
       localtime  1640324400
       hash:
     1640331000:
       localtime  1640331000
       hash:
   uiState:
   uiTable:
Attributes:
   room       Steckdosen





Damian

Der kann ja nur das Device ausschalten, wenn eine der beiden anderen Bedingung auch zutrifft, das ist hier nicht der Fall.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

misux

Bin zwar anfänger aber ich versuche mal zu helfen...

Zitat([?6:40-8:30] and [ZWave_SENSOR_NOTIFICATION_23:motion_state] eq "Bewegung erkannt" )
(set HUEDevice12 on)

Kannjetzt nicht klappen weil es zu spät ist... geht doch nur zwischen 06:40-08:30

und die "or" Funktion ... Ist denn der LogoLichtsensor auch wirklich "off" ein List vom Lichtsensor wäre vielleicht hilfreich..


Wasserwerk33

Jo also der Lichtsensor wird dort noch nicht off sein. Er ist zur Zeit bis ca 8:30 on, da es draußen so dunkel ist

Zur Zeit ist der Lichtsensor on da es draußen dunkel ist.

Internals:
   ADDRESS    1390.0
   AREA       db
   DB         0
   DEF        NQ1
   FUUID      61b5dad1-f33f-5e7b-8f08-067ccf24f75d4c2c
   IODev      Logo
   LASTInputDev Logo
   LENGTH     1
   Logo_MSGCNT 92
   Logo_TIME  2021-12-23 18:27:14
   MSGCNT     92
   NAME       LOGOLichtsensor
   NR         165
   POSITION   11120
   STATE      on
   TYPE       S7_DRead
   READINGS:
     2021-12-23 18:25:17   IODev           Logo
     2021-12-23 18:27:14   state           on
Attributes:
   event-on-update-reading off:on
   room       Draußen,Logo


Deswegen ja auch das or damit er entweder den Lichtsensor nimmt oder den Bewegungsmelder nur den Bewegungsmelder soll er zwischen 6:40 und 8:30 abfragen

Damian

Wir brauchen den vermeintlich falschen Zustand, also den Fall wo du meinst, dass er off schalten sollte.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Wasserwerk33

Du brauchst den Zustand wo der Lichtsensor off schaltet? Das macht er. Den habe noch ein Schaltung mit dem Lichtsensor die funktioniert ohne Probleme. Den Bewegungsmelder bekomme ich auch geschaltet. Den das bekomme ich abends bei Bewegungen im Wohnzimmer geschaltet. Geht das Licht an wenn wir nicht da waren.

Ich bekomme es nur nicht hin das entweder der Lichtsensor das Licht anschaltet wenn es hell genug ist, oder halt eben vorher der Bewegungsmelder. Das Klappt einfach nicht. Habe die Klammern auch schon anders gesetzt.

Damian

#10
Zitat von: Wasserwerk33 am 23 Dezember 2021, 22:25:56
Du brauchst den Zustand wo der Lichtsensor off schaltet? Das macht er. Den habe noch ein Schaltung mit dem Lichtsensor die funktioniert ohne Probleme. Den Bewegungsmelder bekomme ich auch geschaltet. Den das bekomme ich abends bei Bewegungen im Wohnzimmer geschaltet. Geht das Licht an wenn wir nicht da waren.

Ich bekomme es nur nicht hin das entweder der Lichtsensor das Licht anschaltet wenn es hell genug ist, oder halt eben vorher der Bewegungsmelder. Das Klappt einfach nicht. Habe die Klammern auch schon anders gesetzt.

Dann musst du die or-Bedingung klammern und statt Zustandsabfragen auf reine Ereignisse umstellen:

([Weihnachtszeit] eq "on" and ([?6:40-8:30] and (["^ZWave_SENSOR_NOTIFICATION_23$:motion_state: Bewegung erkannt"] or ["^LOGOLichtsensor$:off"]))
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

MadMax-FHEM

Zitat von: Wasserwerk33 am 23 Dezember 2021, 18:29:29
Jo also der Lichtsensor wird dort noch nicht off sein. Er ist zur Zeit bis ca 8:30 on, da es draußen so dunkel ist

Zur Zeit ist der Lichtsensor on da es draußen dunkel ist.

Internals:
   ADDRESS    1390.0
   AREA       db
   DB         0
   DEF        NQ1
   FUUID      61b5dad1-f33f-5e7b-8f08-067ccf24f75d4c2c
   IODev      Logo
   LASTInputDev Logo
   LENGTH     1
   Logo_MSGCNT 92
   Logo_TIME  2021-12-23 18:27:14
   MSGCNT     92
   NAME       LOGOLichtsensor
   NR         165
   POSITION   11120
   STATE      on
   TYPE       S7_DRead
   READINGS:
     2021-12-23 18:25:17   IODev           Logo
     2021-12-23 18:27:14   state           on
Attributes:
   event-on-update-reading off:on
   room       Draußen,Logo


Deswegen ja auch das or damit er entweder den Lichtsensor nimmt oder den Bewegungsmelder nur den Bewegungsmelder soll er zwischen 6:40 und 8:30 abfragen

Hat zwar (evtl./verm.) nichts mit dem Problem zu tun, wollte es aber trotzdem anmerken, da offensichtlich falsch:

Zitat von: "Wasserwerk33
Attributes:
   event-on-update-reading off:on

Zitat von: wiki
Syntax

Das event-on-update-reading Attribut wird in der folgenden Weise spezifiziert:

    attr <device> event-on-update-reading reading1[,reading2...n]

Die zu berücksichtigenden Readings sind als durch Kommata getrennte Werte anzugeben, können aber auch über reguläre Ausdrücke zusammengefasst werden.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

Joachim 👍
Damit erzeugt der Lichtsensor überhaupt keine Events mehr!?
Damit reagiert das DOIF in Folge auf keine Veränderung des Lichtsensors.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MadMax-FHEM

Zitat von: Otto123 am 24 Dezember 2021, 11:32:54
Damit erzeugt der Lichtsensor überhaupt keine Events mehr!?

Da war/bin ich mir nicht sicher (gewesen)...
...macht ein event-on-update-reading denn OHNE event-on-change-reading überhaupt Sinn?
(war eher was ich mir gedacht habe ;)  und nat. dass die Syntax [ganz] falsch ist...)


Zitat von: Otto123 am 24 Dezember 2021, 11:32:54
Damit reagiert das DOIF in Folge auf keine Veränderung des Lichtsensors.

Gut, wenn nat. ersteres stimmt, dann nat. das hier auch 8)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

Zitat Doku
Zitatevent-on-update-reading
Wenn nicht gesetzt, erzeugt jede Veränderung eines "readings" ein Ereignis, welches z.B. von notify oder FileLog berücksichtigt wird. Wenn gesetzt erzeugen nur Aktualisierungen der eingetragenen "readings" ein Ereignis.
War mir auch nicht ganz sicher, deswegen das Fragezeichen :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz