DOIF mit mehreren "Befehle" und Zeiträume

Begonnen von Kuehnhackel, 15 März 2020, 18:55:54

Vorheriges Thema - Nächstes Thema

Kuehnhackel

Hallo zusammen,

ich habe folgenden DOIF in Betrieb:
([BewM_HM:brightness] <120 and [PIR_Kueche:POWER1] eq "on")(set LED_Stripe_HS on) DOELSEIF ([BewM_HM:brightness] <120 and [PIR_Kueche:POWER1] eq "off")(set LED_Stripe_HS off)

Erweitern möchte ich das um folgendes:
In der Zeit von 16:30 bis 21:00 soll der LED_Stripe_HS auf jedenfall leuchten. wenn ([BewM_HM:brightness] <120, erreicht ist, egal ob sich jemand in der Küche aufhält, denn die "Chefin" möchte nicht im Dunkeln heimkommen, zu mindestens im Winter  ;D

Hat jemand einen Lösungsansatz?

Ralf


RaspiLED

#1
Hi,
Zeig mal das list vom Bewegungsmelder.
Ist das in einem Reading als Text oder Value?
Gab es nicht auch ReadingsVal("device","reading",0)?
Gruß Arnd


Signalduino (Nano, ESP, ...), CUL (Busware, Nano, Maple, ...), Homematic (HM-MOD-UART-RPI, ESP, Maple, ...), LaCrosseGateway (LGW, ESP, ...), 1-wire, ESPEasy, Bravia, Yamaha, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

xenos1984

Klingt nach dem klassischen Fall von dem hier:

http://fhem.de/commandref_DE.html#DOIF_Kombination_von_Ereignis_und_Zeitsteuerung_mit_logischen_Abfragen

Ungetestet, aber sollte so aussehen:

([BewM_HM:brightness] <120 and ([16:30-21:00] or [PIR_Kueche:POWER1] eq "on"))(set LED_Stripe_HS on) DOELSEIF ([BewM_HM:brightness] <120 and [PIR_Kueche:POWER1] eq "off")(set LED_Stripe_HS off)

Kuehnhackel

Zitat von: RaspiLED am 15 März 2020, 19:14:50
Hi,
Zeig mal das list vom Bewegungsmelder.
Ist das in einem Reading als Text oder Value?
Gab es nicht auch ReadingsVal("device","reading",0)?
Gruß Arnd


Signalduino (Nano, ESP, ...), CUL (Busware, Nano, Maple, ...), Homematic (HM-MOD-UART-RPI, ESP, Maple, ...), LaCrosseGateway (LGW, ESP, ...), 1-wire, ESPEasy, Bravia, Yamaha, ...

Hallo Arnd, hier das List:


Internals:
   CUL868_MSGCNT 33
   CUL868_RAWMSG A0DAF841069F20CAABBCC06010600::-77.5:CUL868
   CUL868_RSSI -77.5
   CUL868_TIME 2020-03-15 19:39:44
   DEF        69F20C
   FUUID      5dcdaabd-f33f-0409-52f0-f68dfa159c618809
   IODev      CUL868
   LASTInputDev CUL868
   MSGCNT     33
   NAME       BewM_HM
   NOTIFYDEV  global
   NR         247
   NTFY_ORDER 50-BewM_HM
   STATE      noMotion
   TYPE       CUL_HM
   chanNo     01
   lastMsg    No:AF - t:10 s:69F20C d:AABBCC 06010600
   protLastRcv 2020-03-15 19:39:44
   protRcv    33 last_at:2020-03-15 19:39:44
   rssi_at_CUL868 cnt:33 min:-77.5 max:-72 avg:-74.16 lst:-77.5
   Helper:
     DBLOG:
       battery:
         logdb:
           TIME       1584297585.10383
           VALUE      ok
       brightness:
         logdb:
           TIME       1584297585.10383
           VALUE      6
       cover:
         logdb:
           TIME       1584297585.10383
           VALUE      closed
       motion:
         logdb:
           TIME       1584286938.64084
           VALUE      off
       state:
         logdb:
           TIME       1584286938.64084
           VALUE      noMotion
   READINGS:
     2020-03-15 16:41:46   Activity        alive
     2019-12-17 13:56:11   D-firmware      1.7
     2019-12-17 13:56:11   D-serialNr      PEQ0389513
     2020-03-15 19:39:44   battery         ok
     2020-03-15 19:39:44   brightness      6
     2020-03-15 19:39:44   cover           closed
     2020-03-15 16:42:18   motion          off
     2020-03-15 13:29:21   motionCount     247_next:240s
     2020-03-15 13:33:23   motionDuration  242
     2019-12-23 07:17:39   powerOn         2019-12-23 07:17:39
     2020-03-15 19:39:44   recentStateType info
     2020-03-15 16:42:18   state           noMotion
     2020-03-15 13:29:21   trigDst_AABBCC  noConfig
     2020-03-15 13:29:21   trigger_cnt     247
   helper:
     HM_CMDNR   175
     mId        005D
     peerFriend peerAct,peerVirt
     peerOpt    4:motionDetector
     regLst     0,1,4p
     rxType     28
     supp_Pair_Rep 0
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     io:
       newChn     +69F20C,00,00,00
       nextSend   1584297584.60805
       prefIO     
       rxt        2
       vccu       
       p:
         69F20C
         00
         00
         00
     mRssi:
       mNo        AF
       io:
         CUL868:
           -75.5
           -75.5
     prt:
       bErr       0
       sProc      0
       sleeping   1
     q:
       qReqConf   00
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
       at_CUL868:
         avg        -74.1666666666667
         cnt        33
         lst        -77.5
         max        -72
         min        -77.5
Attributes:
   IODev      CUL868
   actCycle   000:10
   actStatus  alive
   autoReadReg 4_reqStatus
   expert     2_raw
   firmware   1.7
   model      HM-SEN-MDIR-O-3
   peerIDs    00000000,
   room       CUL_HM
   serialNr   PEQ0389513
   subType    motionDetector

Kuehnhackel

Zitat von: xenos1984 am 15 März 2020, 19:24:24
Klingt nach dem klassischen Fall von dem hier:

http://fhem.de/commandref_DE.html#DOIF_Kombination_von_Ereignis_und_Zeitsteuerung_mit_logischen_Abfragen

Ungetestet, aber sollte so aussehen:

([BewM_HM:brightness] <120 and ([16:30-21:00] or [PIR_Kueche:POWER1] eq "on"))(set LED_Stripe_HS on) DOELSEIF ([BewM_HM:brightness] <120 and [PIR_Kueche:POWER1] eq "off")(set LED_Stripe_HS off)

Danke, werde ich testen

Kuehnhackel

Zitat von: xenos1984 am 15 März 2020, 19:24:24
Klingt nach dem klassischen Fall von dem hier:

http://fhem.de/commandref_DE.html#DOIF_Kombination_von_Ereignis_und_Zeitsteuerung_mit_logischen_Abfragen

Ungetestet, aber sollte so aussehen:

([BewM_HM:brightness] <120 and ([16:30-21:00] or [PIR_Kueche:POWER1] eq "on"))(set LED_Stripe_HS on) DOELSEIF ([BewM_HM:brightness] <120 and [PIR_Kueche:POWER1] eq "off")(set LED_Stripe_HS off)

Ich habe es folgendermassen eingebaut, aber es funktioniert nicht
([Lux_Dachboden:BH1750_Illuminance]< 500 and [16:30-21:00] or [PIR_Kueche:POWER] eq "on") (set LED_Stripe_HS on) DOELSEIF ([Lux_Dachboden:BH1750_Illuminance]< 500 and [16:30-21:00] or [PIR_Kueche:POWER] eq "off")(set LED_Stripe_HS off)

Mein Wunsch ist auf jeden FAll 16.30-21:00 LED an, wenn Luxmeter sagt <500 Lux.
Der nächste Wunsch lautet, wenn Luxmeter sagt <500 und es ist Bewegung registriert, in der Zeit von 21:01 - 16:29, LED an.

Wo ist mein Denkfehler?
Oder doch lieber 2 DOIF´s bauen?

1. ([16:30-21:00] ) and [Lux_Dachboden:BH1750_Illuminance]< 500)(set LED_Stripe_HS on) DOELSE(set LED_Stripe_HS off)

2. ([21:01-16:29] ) and [Lux_Dachboden:BH1750_Illuminance]< 500) and [PIR_Kueche:POWER] eq "on") (set LED_Stripe_HS on) DOELSE (set LED_Stripe_HS off)

Sonnige Grüße

Ralf

Damian

Zitat von: Kuehnhackel am 22 März 2020, 17:06:32
Ich habe es folgendermassen eingebaut, aber es funktioniert nicht
([Lux_Dachboden:BH1750_Illuminance]< 500 and [16:30-21:00] or [PIR_Kueche:POWER] eq "on") (set LED_Stripe_HS on) DOELSEIF ([Lux_Dachboden:BH1750_Illuminance]< 500 and [16:30-21:00] or [PIR_Kueche:POWER] eq "off")(set LED_Stripe_HS off)

Mein Wunsch ist auf jeden FAll 16.30-21:00 LED an, wenn Luxmeter sagt <500 Lux.
Der nächste Wunsch lautet, wenn Luxmeter sagt <500 und es ist Bewegung registriert, in der Zeit von 21:01 - 16:29, LED an.

Wo ist mein Denkfehler?
Oder doch lieber 2 DOIF´s bauen?

1. ([16:30-21:00] ) and [Lux_Dachboden:BH1750_Illuminance]< 500)(set LED_Stripe_HS on) DOELSE(set LED_Stripe_HS off)

2. ([21:01-16:29] ) and [Lux_Dachboden:BH1750_Illuminance]< 500) and [PIR_Kueche:POWER] eq "on") (set LED_Stripe_HS on) DOELSE (set LED_Stripe_HS off)

Sonnige Grüße

Ralf

Kombiniere doch die beiden Bedingungen mit einem "or" zusammen, dann hast du, was du suchst.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Kuehnhackel

Zitat von: Damian am 22 März 2020, 18:58:41
Kombiniere doch die beiden Bedingungen mit einem "or" zusammen, dann hast du, was du suchst.

Habe es versucht, klappt aber irgendwie nicht.
Deswegen habe ich jetzt erstmal 2 DOIF´s geschrieben und werde es heute abend testen.


Otto123

#8
Hallo Ralf,

([Lux_Dachboden:BH1750_Illuminance]< 500 and [16:30-21:00] or [PIR_Kueche:POWER] eq "on")

a b & c |
0 0 0 0 0
1 0 0 1 1
0 1 0 0 0
0 1 0 1 1
1 1 1 0 1
1 1 1 1 1

Die Tabelle zeigt c ([PIR_Kueche:POWER] eq "on") ist dominierend

Ist  ([PIR_Kueche:POWER] eq "on") Bewegung?
Dann dieser Vorschlag, wenn ich deinen Text richtig verstanden habe ;)
(([16:30-21:00] and [Lux_Dachboden:BH1750_Illuminance]< 500) or ([21:01-16:29] and [Lux_Dachboden:BH1750_Illuminance]< 500 and [PIR_Kueche:POWER] eq "on")) (set LED_Stripe_HS on) DOELSE (set LED_Stripe_HS off)

Bei Deinen beiden Beispielen ist Klammerkrise ;)

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

Kuehnhackel

Zitat von: Otto123 am 24 März 2020, 17:15:51
Hallo Ralf,

Ist  ([PIR_Kueche:POWER] eq "on") Bewegung?

Gruß Otto

Hallo Otto, Ja

Dass mit den Klammern hatte ich auch bemerkt, nachdem ich das so eingeben hatte, aber nicht im Thread geändert.

Inzwischen hatte ich diesen DOIF eingebunden:
((([21:01-16:29] and [Lux_Dachboden:BH1750_Illuminance]< 500) and [PIR_Kueche:POWER] eq "on")) (set LED_Stripe_HS on) (set Kommode on) DOELSEIF ((([21:01-16:29] and [Lux_Dachboden:BH1750_Illuminance]< 500) and [PIR_Kueche:POWER] eq "off"))(set LED_Stripe_HS off)(set Kommode off)

und diesen:
([16:30-21:00] and [Lux_Dachboden:BH1750_Illuminance]< 500)(set LED_Stripe_HS on) (set Kommode on) DOELSE (set LED_Stripe_HS off)(set Kommode off)

Aber ich werde deinen Ansatz testen.
Vielen Dank

LG von der Elbe
Ralf

Otto123

(set LED_Stripe_HS on) (set Kommode on)kannst Du so
(set LED_Stripe_HS on,set Kommode on)
oder so
((set LED_Stripe_HS,Kommode on))
schreiben.
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

Kuehnhackel

Zitat von: Otto123 am 24 März 2020, 17:42:07
(set LED_Stripe_HS on) (set Kommode on)kannst Du so
(set LED_Stripe_HS on,set Kommode on)
oder so
((set LED_Stripe_HS,Kommode on))
schreiben.

Danke für die Hilfe und Hinweis.