Hauptmenü

DOIF: neue Zeit-Features

Begonnen von Damian, 29 März 2015, 22:16:05

Vorheriges Thema - Nächstes Thema

cRossi

Nicht wirklich hilfreich, außerdem geht es komischerweise wenn ich die Zeit auch im Intervall eintrage, aber danke dann bastel ich mir was anderes
RasPi 3B+
HM-MOD-RPI-PCB
FHEM

Damian

Ich glaube wir reden aneinander vorbei.

1.) Die Wahrheit eines Zeitintervalls ist nur abhängig von der Uhrzeit und nicht vom Datum.

2.) Ein indirekter Timer (auch Zeitintervallgrenzen) werden immer! sofort aktualisiert, wenn sich die Zeitangabe ändert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

cRossi

Ok, dann mal anders gefragt:
Wie sieht eine Zeit-Bedingung aus die abfragt ob sunrise größer bzw. kleiner als eine definierte Zeit ist?

Das hier funktioniert ja leider auch nicht:



(... [?[Wecker:alarm] le {sunrise_abs(1800)}]) ...

RasPi 3B+
HM-MOD-RPI-PCB
FHEM

Damian

Dann eher

([[wecker:alarm]|AT] and [?wecker:alarm] le {sunrise_abs(1800)}) (
set blabla on
)

da der Vergleichoperator le Zeichen vergleicht (lexikografisch), solltest du wecker:alarm im Format hh:mm:ss setzen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

bommel-bs

#139
Ich habe auch mit der Zeitberechnung getestet und komme zu keinem positiven Ergebnis.

Ich habe setreading di_KinderZimmer_Rolladen StartLangsam 09:30:00 gesetzt. Leider wird der Wert aber als 0 erkannt.

setreading di_KinderZimmer_Rolladen StartLangsam 09:30:00


ergibt dann

timer_10_c14 03.07.2020 00:10:00


Hier noch das ganze Listing:

Internals:
   DEF        ([06:15 | AT ] and [JasminFrei] eq "0" and ::isday and [KinderZimmer_Rolladen_Balkon:pct] < 20)
   (set KinderZimmer_Rolladen_Balkon 20)
DOELSEIF ([({sunrise(0,"08:30", "9:00")}) | 7] and [wech] eq "wech")
   (set KinderZimmer_Rolladen_Fenster on,
    set KinderZimmer_Rolladen_Balkon on)
DOELSEIF ([({sunrise(0,"07:30", "9:00")}) | 6] and [wech] eq "wech") 
   (set KinderZimmer_Rolladen_Fenster on,
    set KinderZimmer_Rolladen_Balkon on)
DOELSEIF ([({sunrise(0,"07:30", "9:00")} ) | AT ]  and [wech] eq "wech") 
   (set KinderZimmer_Rolladen_Fenster on,
    set KinderZimmer_Rolladen_Balkon on)
DOELSEIF ([({sunset(-600, "16:00", "22:00")} ) ] and [KinderZimmer_Balkontuer:state] eq "open" and [KinderZimmer_Rolladen_Balkon:pct] > 50)
   (set KinderZimmer_Rolladen_Fenster off,
    set KinderZimmer_Rolladen_Balkon 50,
    setreading di_KinderZimmer_Rolladen Balkon soll_zu)
DOELSEIF ([({sunset(-600, "16:00", "22:00")} ) ] and [KinderZimmer_Balkontuer:state] eq "open" and [KinderZimmer_Rolladen_Balkon:pct] <= 50)
   (set KinderZimmer_Rolladen_Fenster off)
DOELSEIF ([({sunset(-600, "16:00", "22:00")} ) ] and [KinderZimmer_Balkontuer:state] eq "closed")
   (set KinderZimmer_Rolladen_Fenster off,
    set KinderZimmer_Rolladen_Balkon off)
DOELSEIF ([({sunset(-600, "16:00", "22:00")} ) ] and [KinderZimmer_Balkontuer:state] eq "tilted"  and [KinderZimmer_Rolladen_Balkon:pct] > 10)
   (set KinderZimmer_Rolladen_Fenster off,
    set KinderZimmer_Rolladen_Balkon 10,
    setreading di_KinderZimmer_Rolladen Balkon soll_zu)
DOELSEIF ([({sunset(-600, "16:00", "22:00")} ) ] and [KinderZimmer_Balkontuer:state] eq "tilted"  and [KinderZimmer_Rolladen_Balkon:pct] <= 10)
   (set KinderZimmer_Rolladen_Fenster off,
    set KinderZimmer_Rolladen_Balkon off)
DOELSEIF ([KinderZimmer_Balkontuer:state] eq "closed" and [di_KinderZimmer_Rolladen:Balkon] eq "soll_zu")
   (set KinderZimmer_Rolladen_Balkon off,
   setreading di_KinderZimmer_Rolladen Balkon zu)
DOELSEIF ([Temp_outside:temperature] > 25 and [KinderZimmer_Rolladen_Fenster:pct] > 40 and [KinderZimmer_Rolladen_Fenster:UserMode] ne "manuell")
   (set KinderZimmer_Rolladen_Fenster 40)
DOELSEIF ([Temp_outside:temperature] > 25 and [KinderZimmer_Rolladen_Balkon:pct] > 40 and [KinderZimmer_Rolladen_Balkon:UserMode] ne "manuell")
   (set KinderZimmer_Rolladen_Balkon 40)
DOELSEIF ([di_KinderZimmer_Rolladen:StartLangsam ] and [JasminFrei] eq "1" and ::isday and [KinderZimmer_Rolladen_Balkon:pct] < 25)
   (set KinderZimmer_Rolladen_Balkon 25)
DOELSEIF ([di_KinderZimmer_Rolladen:StartLangsam | AT ] + [00:10] and [JasminFrei] eq "1" and ::isday and [KinderZimmer_Rolladen_Balkon:pct] < 50)
   (set KinderZimmer_Rolladen_Balkon 50)
DOELSEIF ([di_KinderZimmer_Rolladen:StartLangsam | AT ] + [00:20] and [JasminFrei] eq "1" and ::isday and [KinderZimmer_Rolladen_Balkon:pct] < 75)
   (set KinderZimmer_Rolladen_Balkon 75)
DOELSEIF ([di_KinderZimmer_Rolladen:StartLangsam | AT ] + [00:30] and [JasminFrei] eq "1" and ::isday and [KinderZimmer_Rolladen_Balkon:pct] < 100)
   (set KinderZimmer_Rolladen_Balkon 100,
    set KinderZimmer_Rolladen_Fenster on)
   FUUID      5c4b3ffe-f33f-78f8-d9d1-105e980cbe03d91f
   MODEL      FHEM
   NAME       di_KinderZimmer_Rolladen
   NOTIFYDEV  KinderZimmer_Rolladen_Fenster,global,di_KinderZimmer_Rolladen,wech,KinderZimmer_Rolladen_Balkon,Temp_outside,JasminFrei,KinderZimmer_Balkontuer
   NR         549
   NTFY_ORDER 50-di_KinderZimmer_Rolladen
   STATE      initialize
   TYPE       DOIF
   VERSION    22030 2020-05-25 14:10:16
   READINGS:
     2020-04-26 21:50:35   Balkon          zu
     2020-07-02 11:10:29   Device          Temp_outside
     2020-07-02 11:05:20   StartLangsam    09:30:00
     2020-07-02 08:47:00   e_KinderZimmer_Balkontuer_state closed
     2020-07-02 10:40:40   e_KinderZimmer_Rolladen_Balkon_UserMode Auto
     2020-07-02 10:49:59   e_KinderZimmer_Rolladen_Balkon_pct 100
     2020-07-02 10:40:09   e_KinderZimmer_Rolladen_Fenster_UserMode Auto
     2020-07-02 10:49:59   e_KinderZimmer_Rolladen_Fenster_pct 100
     2020-07-02 11:10:29   e_Temp_outside_temperature 20.5
     2020-07-02 11:05:36   mode            enabled
     2020-07-02 11:05:37   state           initialize
     2020-07-02 08:24:36   timer_01_c01    03.07.2020 06:15:00|AT
     2020-07-02 08:30:00   timer_02_c02    03.07.2020 08:30:00|7
     2020-07-02 08:24:36   timer_03_c03    03.07.2020 07:30:00|6
     2020-07-02 08:24:36   timer_04_c04    03.07.2020 07:30:00|AT
     2020-07-02 08:24:36   timer_05_c05    02.07.2020 22:00:00
     2020-07-02 08:24:36   timer_06_c06    02.07.2020 22:00:00
     2020-07-02 08:24:36   timer_07_c07    02.07.2020 22:00:00
     2020-07-02 08:24:36   timer_08_c08    02.07.2020 22:00:00
     2020-07-02 08:24:36   timer_09_c09    02.07.2020 22:00:00
     2020-07-02 08:24:36   timer_10_c14    03.07.2020 00:10:00
     2020-07-02 08:24:36   timer_11_c15    03.07.2020 00:20:00
     2020-07-02 08:24:36   timer_12_c16    03.07.2020 00:30:00
   Regex:
     accu:
     cond:
       JasminFrei:
         0:
           &STATE     ^JasminFrei$
         12:
           &STATE     ^JasminFrei$
         13:
           &STATE     ^JasminFrei$
         14:
           &STATE     ^JasminFrei$
         15:
           &STATE     ^JasminFrei$
       KinderZimmer_Balkontuer:
         0:
         1:
         10:
         11:
         12:
         13:
         14:
         15:
         2:
         3:
         4:
           state      ^KinderZimmer_Balkontuer$:^state:
         5:
           state      ^KinderZimmer_Balkontuer$:^state:
         6:
           state      ^KinderZimmer_Balkontuer$:^state:
         7:
           state      ^KinderZimmer_Balkontuer$:^state:
         8:
           state      ^KinderZimmer_Balkontuer$:^state:
         9:
           state      ^KinderZimmer_Balkontuer$:^state:
       KinderZimmer_Rolladen_Balkon:
         0:
           pct        ^KinderZimmer_Rolladen_Balkon$:^pct:
         1:
         10:
         11:
           UserMode   ^KinderZimmer_Rolladen_Balkon$:^UserMode:
           pct        ^KinderZimmer_Rolladen_Balkon$:^pct:
         12:
           pct        ^KinderZimmer_Rolladen_Balkon$:^pct:
         13:
           pct        ^KinderZimmer_Rolladen_Balkon$:^pct:
         14:
           pct        ^KinderZimmer_Rolladen_Balkon$:^pct:
         15:
           pct        ^KinderZimmer_Rolladen_Balkon$:^pct:
         2:
         3:
         4:
           pct        ^KinderZimmer_Rolladen_Balkon$:^pct:
         5:
           pct        ^KinderZimmer_Rolladen_Balkon$:^pct:
         6:
         7:
           pct        ^KinderZimmer_Rolladen_Balkon$:^pct:
         8:
           pct        ^KinderZimmer_Rolladen_Balkon$:^pct:
         9:
       KinderZimmer_Rolladen_Fenster:
         0:
         1:
         10:
           UserMode   ^KinderZimmer_Rolladen_Fenster$:^UserMode:
           pct        ^KinderZimmer_Rolladen_Fenster$:^pct:
         11:
         12:
         13:
         14:
         15:
         2:
         3:
         4:
         5:
         6:
         7:
         8:
         9:
       Temp_outside:
         0:
         1:
         10:
           temperature ^Temp_outside$:^temperature:
         11:
           temperature ^Temp_outside$:^temperature:
         12:
         13:
         14:
         15:
         2:
         3:
         4:
         5:
         6:
         7:
         8:
         9:
       di_KinderZimmer_Rolladen:
         12:
           StartLangsam  ^di_KinderZimmer_Rolladen$:^StartLangsam :
         13:
           StartLangsam | AT  ^di_KinderZimmer_Rolladen$:^StartLangsam | AT :
         14:
           StartLangsam | AT  ^di_KinderZimmer_Rolladen$:^StartLangsam | AT :
         15:
           StartLangsam | AT  ^di_KinderZimmer_Rolladen$:^StartLangsam | AT :
         9:
           Balkon     ^di_KinderZimmer_Rolladen$:^Balkon:
       wech:
         1:
           &STATE     ^wech$
         2:
           &STATE     ^wech$
         3:
           &STATE     ^wech$
   attr:
     cmdState:
     cmdpause:
       
       
       
       
       
       
       
       
       
       
       120
       120
     wait:
       0:
         int(rand(300))
       1:
         int(rand(600))
       2:
         int(rand(600))
       3:
         int(rand(600))
       4:
         int(rand(600))
       5:
         int(rand(600))
       6:
         int(rand(600))
       7:
         int(rand(600))
       8:
         int(rand(600))
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday,"AT") and ::InternalDoIf($hash,'JasminFrei','STATE') eq "0" and ::isday and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Balkon','pct') < 20
     1          ::DOIF_time_once($hash,1,$wday,"7") and ::InternalDoIf($hash,'wech','STATE') eq "wech"
     10         ::ReadingValDoIf($hash,'Temp_outside','temperature') > 25 and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Fenster','pct') > 40 and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Fenster','UserMode') ne "manuell"
     11         ::ReadingValDoIf($hash,'Temp_outside','temperature') > 25 and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Balkon','pct') > 40 and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Balkon','UserMode') ne "manuell"
     12         ::ReadingValDoIf($hash,'di_KinderZimmer_Rolladen','StartLangsam ') and ::InternalDoIf($hash,'JasminFrei','STATE') eq "1" and ::isday and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Balkon','pct') < 25
     13         ::ReadingValDoIf($hash,'di_KinderZimmer_Rolladen','StartLangsam | AT ') + ::DOIF_time_once($hash,9,$wday) and ::InternalDoIf($hash,'JasminFrei','STATE') eq "1" and ::isday and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Balkon','pct') < 50
     14         ::ReadingValDoIf($hash,'di_KinderZimmer_Rolladen','StartLangsam | AT ') + ::DOIF_time_once($hash,10,$wday) and ::InternalDoIf($hash,'JasminFrei','STATE') eq "1" and ::isday and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Balkon','pct') < 75
     15         ::ReadingValDoIf($hash,'di_KinderZimmer_Rolladen','StartLangsam | AT ') + ::DOIF_time_once($hash,11,$wday) and ::InternalDoIf($hash,'JasminFrei','STATE') eq "1" and ::isday and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Balkon','pct') < 100
     2          ::DOIF_time_once($hash,2,$wday,"6") and ::InternalDoIf($hash,'wech','STATE') eq "wech"
     3          ::DOIF_time_once($hash,3,$wday,"AT")  and ::InternalDoIf($hash,'wech','STATE') eq "wech"
     4          ::DOIF_time_once($hash,4,$wday) and ::ReadingValDoIf($hash,'KinderZimmer_Balkontuer','state') eq "open" and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Balkon','pct') > 50
     5          ::DOIF_time_once($hash,5,$wday) and ::ReadingValDoIf($hash,'KinderZimmer_Balkontuer','state') eq "open" and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Balkon','pct') <= 50
     6          ::DOIF_time_once($hash,6,$wday) and ::ReadingValDoIf($hash,'KinderZimmer_Balkontuer','state') eq "closed"
     7          ::DOIF_time_once($hash,7,$wday) and ::ReadingValDoIf($hash,'KinderZimmer_Balkontuer','state') eq "tilted"  and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Balkon','pct') > 10
     8          ::DOIF_time_once($hash,8,$wday) and ::ReadingValDoIf($hash,'KinderZimmer_Balkontuer','state') eq "tilted"  and ::ReadingValDoIf($hash,'KinderZimmer_Rolladen_Balkon','pct') <= 10
     9          ::ReadingValDoIf($hash,'KinderZimmer_Balkontuer','state') eq "closed" and ::ReadingValDoIf($hash,'di_KinderZimmer_Rolladen','Balkon') eq "soll_zu"
   days:
     0          AT
     1          7
     2          6
     3          AT
   do:
     0:
       0          set KinderZimmer_Rolladen_Balkon 20
     1:
       0          set KinderZimmer_Rolladen_Fenster on,      set KinderZimmer_Rolladen_Balkon on
     10:
       0          set KinderZimmer_Rolladen_Fenster 40
     11:
       0          set KinderZimmer_Rolladen_Balkon 40
     12:
       0          set KinderZimmer_Rolladen_Balkon 25
     13:
       0          set KinderZimmer_Rolladen_Balkon 50
     14:
       0          set KinderZimmer_Rolladen_Balkon 75
     15:
       0          set KinderZimmer_Rolladen_Balkon 100,     set KinderZimmer_Rolladen_Fenster on
     16:
     2:
       0          set KinderZimmer_Rolladen_Fenster on,     set KinderZimmer_Rolladen_Balkon on
     3:
       0          set KinderZimmer_Rolladen_Fenster on,      set KinderZimmer_Rolladen_Balkon on
     4:
       0          set KinderZimmer_Rolladen_Fenster off,     set KinderZimmer_Rolladen_Balkon 50,     setreading di_KinderZimmer_Rolladen Balkon soll_zu
     5:
       0          set KinderZimmer_Rolladen_Fenster off
     6:
       0          set KinderZimmer_Rolladen_Fenster off,     set KinderZimmer_Rolladen_Balkon off
     7:
       0          set KinderZimmer_Rolladen_Fenster off,     set KinderZimmer_Rolladen_Balkon 10,     setreading di_KinderZimmer_Rolladen Balkon soll_zu
     8:
       0          set KinderZimmer_Rolladen_Fenster off,     set KinderZimmer_Rolladen_Balkon off
     9:
       0          set KinderZimmer_Rolladen_Balkon off,    setreading di_KinderZimmer_Rolladen Balkon zu
   helper:
     DEVFILTER  ^global$|^KinderZimmer_Rolladen_Fenster$|^wech$|^KinderZimmer_Rolladen_Balkon$|^Temp_outside$|^JasminFrei$|^di_KinderZimmer_Rolladen$|^KinderZimmer_Balkontuer$
     NOTIFYDEV  global|KinderZimmer_Rolladen_Fenster|wech|KinderZimmer_Rolladen_Balkon|Temp_outside|JasminFrei|di_KinderZimmer_Rolladen|KinderZimmer_Balkontuer
     event      battery: ok,humidity: 72,T: 20.5 H: 72,temperature: 20.5,DiffNordOstBlack: 12.3,DiffNordOstWhite: 8.1
     globalinit 1
     last_timer 12
     sleeptimer -1
     triggerDev Temp_outside
     triggerEvents:
       battery: ok
       humidity: 72
       T: 20.5 H: 72
       temperature: 20.5
       DiffNordOstBlack: 12.3
       DiffNordOstWhite: 8.1
     triggerEventsState:
       battery: ok
       humidity: 72
       state: T: 20.5 H: 72
       temperature: 20.5
       DiffNordOstBlack: 12.3
       DiffNordOstWhite: 8.1
   internals:
     all         JasminFrei:STATE wech:STATE
   interval:
   intervalfunc:
   localtime:
     0          1593749700
     1          1593757800
     10         1593728400
     11         1593729000
     2          1593754200
     3          1593754200
     4          1593720000
     5          1593720000
     6          1593720000
     7          1593720000
     8          1593720000
     9          1593727800
   readings:
     all         KinderZimmer_Rolladen_Balkon:pct KinderZimmer_Balkontuer:state di_KinderZimmer_Rolladen:Balkon Temp_outside:temperature KinderZimmer_Rolladen_Fenster:pct KinderZimmer_Rolladen_Fenster:UserMode KinderZimmer_Rolladen_Balkon:UserMode di_KinderZimmer_Rolladen:StartLangsam 
   realtime:
     0          06:15:00
     1          08:30:00
     10         00:20:00
     11         00:30:00
     2          07:30:00
     3          07:30:00
     4          22:00:00
     5          22:00:00
     6          22:00:00
     7          22:00:00
     8          22:00:00
     9          00:10:00
   time:
     0          06:15:00
     1          ({sunrise(0,"08:30","9:00")})
     10         00:20:00
     11         00:30:00
     2          ({sunrise(0,"07:30","9:00")})
     3          ({sunrise(0,"07:30","9:00")})
     4          ({sunset(-600,"16:00","22:00")})
     5          ({sunset(-600,"16:00","22:00")})
     6          ({sunset(-600,"16:00","22:00")})
     7          ({sunset(-600,"16:00","22:00")})
     8          ({sunset(-600,"16:00","22:00")})
     9          00:10:00
   timeCond:
     0          0
     1          1
     10         14
     11         15
     2          2
     3          3
     4          4
     5          5
     6          6
     7          7
     8          8
     9          13
   timer:
     0          0
     1          0
     10         0
     11         0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
     8          0
     9          0
   timers:
     0           0
     1           1
     13          9
     14          10
     15          11
     2           2
     3           3
     4           4
     5           5
     6           6
     7           7
     8           8
   trigger:
   triggertime:
     1593720000:
       localtime  1593720000
       hash:
     1593727800:
       localtime  1593727800
       hash:
     1593728400:
       localtime  1593728400
       hash:
     1593729000:
       localtime  1593729000
       hash:
     1593749700:
       localtime  1593749700
       hash:
     1593754200:
       localtime  1593754200
       hash:
     1593757800:
       localtime  1593757800
       hash:
   uiState:
   uiTable:
Attributes:
   cmdpause   ::::::::::120:120
   do         always
   room       99_System
   timerWithWait 1
   wait       int(rand(300)):int(rand(600)):int(rand(600)):int(rand(600)):int(rand(600)):int(rand(600)):int(rand(600)):int(rand(600)):int(rand(600))


Was mache ich hier falsch?

Danke
Stefan

Update:
Ich konnte das Problem lösen. Die Klammern waren falsch:
HIer ein richtiger Eintrag:
DOELSEIF ([([di_KinderZimmer_Rolladen:StartLangsam]+[00:10]) | AT] and [JasminFrei] eq "1" and ::isday and [KinderZimmer_Rolladen_Balkon:pct] < 50)

Gruß
Stefan

rubinho

#140
Hallo Zusammen,
kann mir ein das Phänomen erklären warum bei meinem DOIF mit relativem Zeitintervall und einer zusätzlichen Bedingung, immer ein Event generiert wird, obwohl keine Bedingung erfüllt ist (Ausser der Zeit natürlich).

([KNX_2_Hue_Wonhzimmertisch_2] eq "9" and [+1]) (set HUEGroup1 dimDown) DOELSEIF ([KNX_2_Hue_Wonhzimmertisch_2] eq "1" and [+1]) (set HUEGroup1 dimUp) DOELSE

2022-05-26 09:10:19 DOIF livingdim2hue cmd_event: timer_2
2022-05-26 09:10:19 DOIF livingdim2hue cmd_3
2022-05-26 09:10:20 DOIF livingdim2hue cmd_nr: 3
2022-05-26 09:10:20 DOIF livingdim2hue cmd: 3
2022-05-26 09:10:20 DOIF livingdim2hue cmd_event: timer_2
2022-05-26 09:10:20 DOIF livingdim2hue cmd_3
2022-05-26 09:10:21 DOIF livingdim2hue cmd_nr: 3
2022-05-26 09:10:21 DOIF livingdim2hue cmd: 3
2022-05-26 09:10:21 DOIF livingdim2hue cmd_event: timer_2
2022-05-26 09:10:21 DOIF livingdim2hue cmd_3
2022-05-26 09:10:22 DOIF livingdim2hue cmd_nr: 3
2022-05-26 09:10:22 DOIF livingdim2hue cmd: 3
2022-05-26 09:10:22 DOIF livingdim2hue cmd_event: timer_2
2022-05-26 09:10:22 DOIF livingdim2hue cmd_3
2022-05-26 09:10:23 DOIF livingdim2hue cmd_nr: 3


Zweite Frage, kann ich die Zeit noch unter eine Sekunde bekommen? Ich hätte da an eine halbe Sekunde gedacht. aber "0.5" wird nicht akzeptiert.?

Gruß
Rubinho

--Update--
Habe das letzte DOELSE weggelassen, jetzt hab ich kein Event mehr. Verstehen tue ich es trotzdem nicht.
Zweite Frage ist noch aktiv :D
Fhem 5.9@Zotac Zbox Ci327 | HMCCU | Z-Wave@ZMEEUZB1 | HUE Bridge Gen2 | knxd over IP

Damian

Zitat von: rubinho am 26 Mai 2022, 09:13:21
Hallo Zusammen,
kann mir ein das Phänomen erklären warum bei meinem DOIF mit relativem Zeitintervall und einer zusätzlichen Bedingung, immer ein Event generiert wird, obwohl keine Bedingung erfüllt ist (Ausser der Zeit natürlich).

([KNX_2_Hue_Wonhzimmertisch_2] eq "9" and [+1]) (set HUEGroup1 dimDown) DOELSEIF ([KNX_2_Hue_Wonhzimmertisch_2] eq "1" and [+1]) (set HUEGroup1 dimUp) DOELSE

2022-05-26 09:10:19 DOIF livingdim2hue cmd_event: timer_2
2022-05-26 09:10:19 DOIF livingdim2hue cmd_3
2022-05-26 09:10:20 DOIF livingdim2hue cmd_nr: 3
2022-05-26 09:10:20 DOIF livingdim2hue cmd: 3
2022-05-26 09:10:20 DOIF livingdim2hue cmd_event: timer_2
2022-05-26 09:10:20 DOIF livingdim2hue cmd_3
2022-05-26 09:10:21 DOIF livingdim2hue cmd_nr: 3
2022-05-26 09:10:21 DOIF livingdim2hue cmd: 3
2022-05-26 09:10:21 DOIF livingdim2hue cmd_event: timer_2
2022-05-26 09:10:21 DOIF livingdim2hue cmd_3
2022-05-26 09:10:22 DOIF livingdim2hue cmd_nr: 3
2022-05-26 09:10:22 DOIF livingdim2hue cmd: 3
2022-05-26 09:10:22 DOIF livingdim2hue cmd_event: timer_2
2022-05-26 09:10:22 DOIF livingdim2hue cmd_3
2022-05-26 09:10:23 DOIF livingdim2hue cmd_nr: 3


Zweite Frage, kann ich die Zeit noch unter eine Sekunde bekommen? Ich hätte da an eine halbe Sekunde gedacht. aber "0.5" wird nicht akzeptiert.?

Gruß
Rubinho

--Update--
Habe das letzte DOELSE weggelassen, jetzt hab ich kein Event mehr. Verstehen tue ich es trotzdem nicht.
Zweite Frage ist noch aktiv :D

Deine Definition ist so nicht sinnvoll und ressourcenintensiv, die sekündliche Abfrage kannst du weglassen, denn die Bedingung wird getriggert, wenn KNX_2_Hue_Wonhzimmertisch_2 sich ändert und ein Event erzeugt. Damit erledigt sich auch die zweite Frage - unter einer Sekunde ist nicht vorgesehen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rubinho

Zitat von: Damian am 26 Mai 2022, 11:53:16
Deine Definition ist so nicht sinnvoll und ressourcenintensiv, die sekündliche Abfrage kannst du weglassen, denn die Bedingung wird getriggert, wenn KNX_2_Hue_Wonhzimmertisch_2 sich ändert und ein Event erzeugt. Damit erledigt sich auch die zweite Frage - unter einer Sekunde ist nicht vorgesehen.

Wenn mir jemand eine bessere Lösung anbietet, wie ich meine Hue Lampe an einem KNX Schalter gedimmt bekomme, nehme ich die Lösung gerne.
Ich hab neben dieser Lösung noch eine recht zusammengebastelte Schleife unter 99_myUtils gescriptet, mit der ich allerdings nicht zufrieden bin.

Mein KNX Schalter hat die Zustände 1, 9 und die Grundstellung 0. Da pulst allerdings nichts. Der Wert steht einfach nur an. Und unter Hue gibt es meines Wissens keine Option die aus diesen Zuständen kontinuierlich hoch, oder runter dimmt.



Fhem 5.9@Zotac Zbox Ci327 | HMCCU | Z-Wave@ZMEEUZB1 | HUE Bridge Gen2 | knxd over IP

Damian

Zitat von: rubinho am 26 Mai 2022, 18:52:25
Wenn mir jemand eine bessere Lösung anbietet, wie ich meine Hue Lampe an einem KNX Schalter gedimmt bekomme, nehme ich die Lösung gerne.
Ich hab neben dieser Lösung noch eine recht zusammengebastelte Schleife unter 99_myUtils gescriptet, mit der ich allerdings nicht zufrieden bin.

Mein KNX Schalter hat die Zustände 1, 9 und die Grundstellung 0. Da pulst allerdings nichts. Der Wert steht einfach nur an. Und unter Hue gibt es meines Wissens keine Option die aus diesen Zuständen kontinuierlich hoch, oder runter dimmt.

Die einzige Frage, die du dir beantworten musst ist: Liefert dein KNX-Schalter ein Event (siehe Event-Monitor) wenn er seinen Zustand ändert?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rubinho

Zitat von: Damian am 26 Mai 2022, 19:03:50
Die einzige Frage, die du dir beantworten musst ist: Liefert dein KNX-Schalter ein Event (siehe Event-Monitor) wenn er seinen Zustand ändert?
Na klar liefert der KNX Schalter ein Event. Solange ich die eine Taste drücke, den Wert 1, die andere Taste den Wert 9. Wenn kein Taste betätigt wird, steht der Wert 0 an und jedes mal wird ein Event generiert.
Das Problem ist doch aber ein anderes. Ich will ja nicht den Taster 20 mal betätigen bis er auf 5% gedimmt ist, sondern die Taste drücken und halten.
Ein internes Modul in Fhem muss für mich dann das Pulsieren des Events übernehmen. Deswegen der Sekundentakt.

Gruß
Rubinho
Fhem 5.9@Zotac Zbox Ci327 | HMCCU | Z-Wave@ZMEEUZB1 | HUE Bridge Gen2 | knxd over IP

Damian

Zitat von: rubinho am 26 Mai 2022, 22:02:46
Na klar liefert der KNX Schalter ein Event. Solange ich die eine Taste drücke, den Wert 1, die andere Taste den Wert 9. Wenn kein Taste betätigt wird, steht der Wert 0 an und jedes mal wird ein Event generiert.
Das Problem ist doch aber ein anderes. Ich will ja nicht den Taster 20 mal betätigen bis er auf 5% gedimmt ist, sondern die Taste drücken und halten.
Ein internes Modul in Fhem muss für mich dann das Pulsieren des Events übernehmen. Deswegen der Sekundentakt.

Gruß
Rubinho

Dann solltest du dir eine andere Lösung überlegen. Du willst ja nicht 24/7 dein FHEM sekündlich triggern, damit du einmal am Tag etwas dimmen kannst.

Wenn du öfters so die Probleme löst, dann wird sich dein FHEM irgendwann mit sich selbst beschäftigen.


Der Lösungsansatz sollte anders sein:

Du reagierst auf den entsprechenden Wert und fängst erst dann an im Sekundentakt zu dimmen, solange die Taste gedrückt ist. Das kannst du auch mit DOIF machen. Allerdings bietet sich dafür der Perl-Modus mit der set_Exec-Funktion an, siehe: https://wiki.fhem.de/wiki/DOIF/Perl-Modus#Timer_setzen:_set_Exec.28.29
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rubinho

Alles klar, danke für die Info.

Es war jedenfalls ein Versuch wert. Allerdings skaliert dieser Lösungsansatz, wie du schon geschrieben hast nicht und von daher muss ich weiter Ausschau halten.
Ich suche nach einem Lösungsansatz ohne großartiges Scripting. Ich habe die Erfahrung gemacht, dass ich immer mal Monate habe (meistens die hellen Monate), wo Fhem einfach nur seine Arbeit verrichtet und ich keinen Gedanken daran verschwende. Wenn ich dann mal auf so ein Script stoße, dass ich vor Monaten mal verstanden habe und muss anpassungen daran durchführen, wirds immer kompliziert und ich muss das Rad immer wieder neu erfinden. Von daher verfolge ich immer mehr die Philosophie "keeping it simple". Einfache Lösungen, die auch nach einem Jahr ohne weiteres nachvollziehbar sind. Ein Hilfsmodul das pulst wäre so ein Ansatz.

Wie schon geschrieben, ich habe ja bereits ein Script. Aber mir wäre eine einfachere Lösung lieber.

Trotzdem danke.

Gruß
Rubinho
Fhem 5.9@Zotac Zbox Ci327 | HMCCU | Z-Wave@ZMEEUZB1 | HUE Bridge Gen2 | knxd over IP

Damian

Wenn du "HUE dimmen" in der Forumsuche eingibst, dann findest du unzählige Beiträge zu dem Thema - auch welche mit DOIF.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

hyper2910

Hallo,

Ich habe mir ein DOIf erstellt welches zwei Werte voneinander abzieht.
Ich will dieses jede 5 Sekunden aktualisieren.  Leider macht das doif das ganze nur einmal anc läuft zwar der Timer aber keine neue Berechnung findet statt und auch das Reading wird nicht neu geschrieben.

Hat jemand eine Idee?

defmod doif_aktuellerverbauch DOIF ([+5]) (setreading PV_ModuleGesamt aktuellerverbrauch {([TibberPulse:power:d0]-[TibberPulse:powerProduction:d0])})
attr doif_
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

Damian

Du musst das do always-Attribut setzen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF