DOIF ändert State aber schaltet das Device nicht

Begonnen von seule3008, 05 Juni 2022, 15:42:16

Vorheriges Thema - Nächstes Thema

seule3008

Hallo

ich habe ein Problem mit einem DOIF welches eigentlich seit langem funktioniert. Seit kurzem schaltet es allerdings den CMD_4 nicht mehr. Alle anderen CMD werden geschaltet und auch der Status des DOIF angepasst. Wenn alle Bedingungen erfüllt sind wechselt der Status des DOIF auf CMD_4 aber die Rolllade fährt nicht. Gebe ich den set Befehl in die Befehlszeile ein fährt die Rolllade. meine Vermutung ist, dass das DOIF den Befehl nicht ausgibt.

ein list habe ich mal angehangen.

Das List des DOIF
Internals:
   DEF        ([({twilight("TC_TWILIGHT","sr_civil","06:00","9:00")} - 90 + rand(180))]) (set Rollo_Esszimmer_Tuer pct 100, set RolloWzTuerKipp1 1)
DOELSEIF ([({twilight("TC_TWILIGHT","ss_civil","18:00","22:00")})] and ([GriffWzTuer:state] eq "closed" or [GriffWzTuer:state] eq "tilted")) (set Rollo_Esszimmer_Tuer pct 0, set RolloWzTuerKipp1 0)
DOELSEIF ([({twilight("TC_TWILIGHT","ss_civil","18:00","22:00")})] and ([GriffWzTuer:state] eq "open")) (set RolloWzTuerKipp1 0)
DOELSEIF ([Beschattung:state] eq "on" and [Heizung:/system/sensors/temperatures/outdoor_t1] >= 24 and [TC_TWILIGHT:azimuth] > 130 and [TC_TWILIGHT:azimuth] < 240 and [TC_TWILIGHT:elevation] > 20 and [Rollo_Esszimmer_Tuer:pct] ne "19"  and [GriffWzTuer:state] =~ "closed|tilted") (set Rollo_Esszimmer_Tuer pct 80)
DOELSEIF ([Beschattung:state] eq "off" and [TC_TWILIGHT:elevation] > 0 and [Rollo_Esszimmer_Tuer:pct] ne "100") (set Rollo_Esszimmer_Tuer pct 100)
DOELSEIF ([Beschattung:state] eq "on" and [Heizung:/system/sensors/temperatures/outdoor_t1] <= 25 and [TC_TWILIGHT:azimuth] >= 240 and [TC_TWILIGHT:azimuth] < 270 and [Rollo_Esszimmer_Tuer:pct] eq "19") (set Rollo_Esszimmer_Tuer pct 100)


   FUUID      62587b82-f33f-b214-19bc-0a85ff20bb9dc658
   MODEL      FHEM
   NAME       autoRollo_Esszimmer_Tuer
   NOTIFYDEV  global,GriffWzTuer,Beschattung,TC_TWILIGHT,Heizung,Rollo_Esszimmer_Tuer
   NR         117
   NTFY_ORDER 50-autoRollo_Esszimmer_Tuer
   STATE      Hoch: 06.06.2022 05:59:20 Runter: 05.06.2022 22:00:00 (cmd_4)
   TYPE       DOIF
   VERSION    25946 2022-04-11 08:24:02
   READINGS:
     2022-06-05 15:09:26   Device          Heizung
     2022-06-05 15:04:35   cmd             4
     2022-06-05 15:04:35   cmd_event       set_cmd_4
     2022-06-05 15:04:35   cmd_nr          4
     2022-06-05 14:58:06   e_GriffWzTuer_state closed
     2022-06-05 15:09:26   e_Heizung_/system/sensors/temperatures/outdoor_t1 23.9
     2022-06-05 15:05:10   e_Rollo_Esszimmer_Tuer_pct 80
     2022-06-05 15:05:01   e_TC_TWILIGHT_azimuth 220.85
     2022-06-05 15:05:01   e_TC_TWILIGHT_elevation 56.75
     2022-06-05 14:58:48   mode            enabled
     2022-06-05 15:04:35   state           cmd_4
     2022-06-05 14:57:59   timer_01_c01    06.06.2022 05:59:20
     2022-06-05 14:57:59   timer_02_c02    05.06.2022 22:00:00
     2022-06-05 14:57:59   timer_03_c03    05.06.2022 22:00:00
   Regex:
     accu:
     collect:
     cond:
       Beschattung:
         3:
           state      ^Beschattung$:^state:
         4:
           state      ^Beschattung$:^state:
         5:
           state      ^Beschattung$:^state:
       GriffWzTuer:
         0:
         1:
           state      ^GriffWzTuer$:^state:
         2:
           state      ^GriffWzTuer$:^state:
         3:
           state      ^GriffWzTuer$:^state:
       Heizung:
         0:
         1:
         2:
         3:
           /system/sensors/temperatures/outdoor_t1 ^Heizung$:^/system/sensors/temperatures/outdoor_t1:
         4:
         5:
           /system/sensors/temperatures/outdoor_t1 ^Heizung$:^/system/sensors/temperatures/outdoor_t1:
       Rollo_Esszimmer_Tuer:
         0:
         1:
         2:
         3:
           pct        ^Rollo_Esszimmer_Tuer$:^pct:
         4:
           pct        ^Rollo_Esszimmer_Tuer$:^pct:
         5:
           pct        ^Rollo_Esszimmer_Tuer$:^pct:
       TC_TWILIGHT:
         0:
         1:
         2:
         3:
           azimuth    ^TC_TWILIGHT$:^azimuth:
           elevation  ^TC_TWILIGHT$:^elevation:
         4:
           elevation  ^TC_TWILIGHT$:^elevation:
         5:
           azimuth    ^TC_TWILIGHT$:^azimuth:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday)
     1          ::DOIF_time_once($hash,1,$wday) and (::ReadingValDoIf($hash,'GriffWzTuer','state') eq "closed" or ::ReadingValDoIf($hash,'GriffWzTuer','state') eq "tilted")
     2          ::DOIF_time_once($hash,2,$wday) and (::ReadingValDoIf($hash,'GriffWzTuer','state') eq "open")
     3          ::ReadingValDoIf($hash,'Beschattung','state') eq "on" and ::ReadingValDoIf($hash,'Heizung','/system/sensors/temperatures/outdoor_t1') >= 24 and ::ReadingValDoIf($hash,'TC_TWILIGHT','azimuth') > 130 and ::ReadingValDoIf($hash,'TC_TWILIGHT','azimuth') < 240 and ::ReadingValDoIf($hash,'TC_TWILIGHT','elevation') > 20 and ::ReadingValDoIf($hash,'Rollo_Esszimmer_Tuer','pct') ne "19"  and ::ReadingValDoIf($hash,'GriffWzTuer','state') =~ "closed|tilted"
     4          ::ReadingValDoIf($hash,'Beschattung','state') eq "off" and ::ReadingValDoIf($hash,'TC_TWILIGHT','elevation') > 0 and ::ReadingValDoIf($hash,'Rollo_Esszimmer_Tuer','pct') ne "100"
     5          ::ReadingValDoIf($hash,'Beschattung','state') eq "on" and ::ReadingValDoIf($hash,'Heizung','/system/sensors/temperatures/outdoor_t1') <= 25 and ::ReadingValDoIf($hash,'TC_TWILIGHT','azimuth') >= 240 and ::ReadingValDoIf($hash,'TC_TWILIGHT','azimuth') < 270 and ::ReadingValDoIf($hash,'Rollo_Esszimmer_Tuer','pct') eq "19"
   days:
   do:
     0:
       0          set Rollo_Esszimmer_Tuer pct 100, set RolloWzTuerKipp1 1
     1:
       0          set Rollo_Esszimmer_Tuer pct 0, set RolloWzTuerKipp1 0
     2:
       0          set RolloWzTuerKipp1 0
     3:
       0          set Rollo_Esszimmer_Tuer pct 80
     4:
       0          set Rollo_Esszimmer_Tuer pct 100
     5:
       0          set Rollo_Esszimmer_Tuer pct 100
     6:
   helper:
     NOTIFYDEV  global,GriffWzTuer,Beschattung,TC_TWILIGHT,Heizung,Rollo_Esszimmer_Tuer
     event      /system/sensors/temperatures/outdoor_t1: 23.9
     globalinit 1
     last_timer 3
     sleeptimer -1
     timerdev   Heizung
     timerevent /system/sensors/temperatures/outdoor_t1: 24.2
     triggerDev Heizung
     timerevents:
       /system/sensors/temperatures/outdoor_t1: 24.2
     timereventsState:
       /system/sensors/temperatures/outdoor_t1: 24.2
     triggerEvents:
       /system/sensors/temperatures/outdoor_t1: 23.9
     triggerEventsState:
       /system/sensors/temperatures/outdoor_t1: 23.9
   internals:
   intervalfunc:
   localtime:
     0          1654487960.48458
     1          1654459200
     2          1654459200
   readings:
     all         GriffWzTuer:state Beschattung:state Heizung:/system/sensors/temperatures/outdoor_t1 TC_TWILIGHT:azimuth TC_TWILIGHT:elevation Rollo_Esszimmer_Tuer:pct
   realtime:
     0          05:59:20
     1          22:00:00
     2          22:00:00
   time:
     0          ({twilight("TC_TWILIGHT","sr_civil","06:00","9:00")}-90+rand(180))
     1          ({twilight("TC_TWILIGHT","ss_civil","18:00","22:00")})
     2          ({twilight("TC_TWILIGHT","ss_civil","18:00","22:00")})
   timeCond:
     0          0
     1          1
     2          2
   timer:
     0          0
     1          0
     2          0
   timers:
     0           0
     1           1
     2           2
   trigger:
   triggertime:
     1654459200:
       localtime  1654459200
       hash:
     1654487960.48458:
       localtime  1654487960.48458
       hash:
   uiState:
   uiTable:
Attributes:
   stateFormat Hoch: timer_01_c01 Runter: timer_02_c02 (state)



Kann ich irgendwie einsehen was das DOIF ausgibt?? oder weis jemand woran das liegen kann?

Im LOG steht das hier

.
2022-06-05_15:30:36 autoRollo_Esszimmer_Tuer initialized
2022-06-05_15:30:36 autoRollo_Esszimmer_Tuer mode: enabled
2022-06-05_15:30:40 Rollo_Esszimmer_Tuer temperature_f: 135.73
2022-06-05_15:30:43 Rollo_Esszimmer_Tuer set_pct
2022-06-05_15:30:43 autoRollo_Esszimmer_Tuer cmd_nr: 4
2022-06-05_15:30:43 autoRollo_Esszimmer_Tuer cmd: 4
2022-06-05_15:30:43 autoRollo_Esszimmer_Tuer cmd_event: set_cmd_4
2022-06-05_15:30:43 autoRollo_Esszimmer_Tuer cmd_4


Wenn ich den set Befehl in die Befehlszeile eingebe kommt nach dem set_pct noch folgendes im Log:

2022-06-05_15:38:16 Rollo_Esszimmer_Tuer set_pct
2022-06-05_15:38:16 Rollo_Esszimmer_Tuer opening
2022-06-05_15:38:16 Rollo_Esszimmer_Tuer current: open
2022-06-05_15:38:16 Rollo_Esszimmer_Tuer 90
2022-06-05_15:38:17 Rollo_Esszimmer_Tuer roller_0_power: 194.76
2022-06-05_15:38:17 Rollo_Esszimmer_Tuer power: 194.76
2022-06-05_15:38:18 Rollo_Esszimmer_Tuer roller_0_power: 22.46
2022-06-05_15:38:18 Rollo_Esszimmer_Tuer power: 22.46
2022-06-05_15:38:19 Rollo_Esszimmer_Tuer pct: 100
2022-06-05_15:38:19 Rollo_Esszimmer_Tuer 100
2022-06-05_15:38:19 Rollo_Esszimmer_Tuer current: stop


Vielen Dank für eure Mühe im Voraus.

Christian

Per


Damian

Es ist sehr unwahrscheinlich, dass der Zustand (cmd_...) gesetzt wird und der entsprechende Befehl nicht ausgeführt wird.

Was mir aber an der gesamten Definition auffällt ist, dass du Rollo_Esszimmer_Tuer pct sowohl setzt, als  auch abfragst. So etwas kann zu Loops führen, die das Modul unterbindet.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

seule3008

Zitat von: Per am 05 Juni 2022, 17:13:49
Funktioniert es denn in cmd 5?

Alle anderen cmd´s Funktionieren Also 1,2,3,5 und 6

seule3008

Zitat von: Damian am 05 Juni 2022, 18:20:29
Es ist sehr unwahrscheinlich, dass der Zustand (cmd_...) gesetzt wird und der entsprechende Befehl nicht ausgeführt wird.

Was mir aber an der gesamten Definition auffällt ist, dass du Rollo_Esszimmer_Tuer pct sowohl setzt, als  auch abfragst. So etwas kann zu Loops führen, die das Modul unterbindet.

Das funktioniert seit Jahren. ich habe nur den Homematic gegen Shelly getauscht. Wie könnte ich denn sonst den Stand abfragen und einen neuen setzen?

Damian

Zitat von: seule3008 am 05 Juni 2022, 18:44:52
Das funktioniert seit Jahren. ich habe nur den Homematic gegen Shelly getauscht. Wie könnte ich denn sonst den Stand abfragen und einen neuen setzen?

Wird denn der Befehl ausgeführt wenn du set cmd_4 ausführst?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

seule3008

Zitat von: Damian am 05 Juni 2022, 18:51:43
Wird denn der Befehl ausgeführt wenn du set cmd_4 ausführst?

nein es passiert nichts. bei allen anderen geht es. ich habe das DOIF neu erstellt und es ist das gleiche Problem. setze ich allerdings ein anderes Device zum Schalten ein zum Bsp "set Wz_Licht on" geht es. Aber der Befehl funktioniert auch wenn ich das "set Rollo_Esszimmer_Tuer pct 19" in die Befehlszeile kopiere fährt das Rollo.

seule3008

jetzt verstehe ich nix mehr.

Wenn ich die Textzeile von CMD_4 in ein anderes DOIF kopiere also von dem Fenster daneben geht es.

Damian

Zitat von: seule3008 am 05 Juni 2022, 19:23:48
jetzt verstehe ich nix mehr.

Wenn ich die Textzeile von CMD_4 in ein anderes DOIF kopiere also von dem Fenster daneben geht es.

Dann poste hier die Definition des gesamten DOIFs als RAW-Definition, damit ich das bei mir nachstellen kann.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

seule3008

Mache ich gerne. Aber was ist eine Raw Definition?

seule3008

meinst du evtl das hier??

([({twilight("TC_TWILIGHT","sr_civil","06:00","9:00")} - 90 + rand(180))]) (set Rollo_Esszimmer_Tuer pct 100, set RolloWzTuerKipp1 1)
DOELSEIF ([({twilight("TC_TWILIGHT","ss_civil","18:00","22:00")})] and ([GriffWzTuer:state] eq "closed" or [GriffWzTuer:state] eq "tilted")) (set Rollo_Esszimmer_Tuer pct 0, set RolloWzTuerKipp1 0)
DOELSEIF ([({twilight("TC_TWILIGHT","ss_civil","18:00","22:00")})] and ([GriffWzTuer:state] eq "open")) (set RolloWzTuerKipp1 0)
DOELSEIF ([Beschattung:state] eq "on" and [Heizung:/system/sensors/temperatures/outdoor_t1] >= 25 and [TC_TWILIGHT:azimuth] > 130 and [TC_TWILIGHT:azimuth] < 240 and [TC_TWILIGHT:elevation] > 20 and [Rollo_Esszimmer_Tuer:state] ne "19"  and [GriffWzTuer:state] =~ "closed|tilted") (set Rollo_Esszimmer_Tuer pct 19)
DOELSEIF ([Beschattung:state] eq "off" and [TC_TWILIGHT:elevation] > 0 and [Rollo_Esszimmer_Tuer:state] ne "100") (set Rollo_Esszimmer_Tuer pct 100)
DOELSEIF ([Beschattung:state] eq "on" and [Heizung:/system/sensors/temperatures/outdoor_t1] <= 25 and [TC_TWILIGHT:azimuth] >= 240 and [TC_TWILIGHT:azimuth] < 270 and [Rollo_Esszimmer_Tuer:state] eq "19") (set Rollo_Esszimmer_Tuer pct 100)


Das hier ist die Zeile die die Probleme macht:

DOELSEIF ([Beschattung:state] eq "on" and [Heizung:/system/sensors/temperatures/outdoor_t1] >= 25 and [TC_TWILIGHT:azimuth] > 130 and [TC_TWILIGHT:azimuth] < 240 and [TC_TWILIGHT:elevation] > 20 and [Rollo_Esszimmer_Tuer:state] ne "19"  and [GriffWzTuer:state] =~ "closed|tilted") (set Rollo_Esszimmer_Tuer pct 19)

Das lustige ist, wenn ich anstelle von "pct 19"  "close" eingebe fährt das Rollo. An allen anderen Fenstern mit den gleichen Konfigurationen funktioniert es einwandfrei. Auch in diesem DOIF funktionieren ja alle CMD'S die auch mit "pct_##" angesteuert werden nur dieses CMD_ 4 nicht. Nehme ich allerdings diese Zeile und kopiere diese in das identische DOIF vom Fenster daneben löst es aus und die Rolllade an der Tür Fährt auf 19%.

Ich hab jetzt noch eins probiert und zwar alles bis auf diese Zeile weg zu löschen. Und wenn die Zeile alleine da steht fährt das Rollo.

Das komische ist das das DOIF seit ca 3 Jahren läuft und jetzt nicht mehr. Bis auf den Namen des Device hat sich eigentlich nix geändert.

Gute Nacht

Damian

RAW Definition findest du unten in der Detail-Ansicht vom Device neben "Delete this Device". Da musst du drauf klicken und den Output posten.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

seule3008

Da kommt das hier.

defmod autoRollo_Esszimmer_Tuer DOIF ([({twilight("TC_TWILIGHT","sr_civil","06:00","9:00")} - 90 + rand(180))]) (set Rollo_Esszimmer_Tuer pct 100, set RolloWzTuerKipp1 1)\
DOELSEIF ([({twilight("TC_TWILIGHT","ss_civil","18:00","22:00")})] and ([GriffWzTuer:state] eq "closed" or [GriffWzTuer:state] eq "tilted")) (set Rollo_Esszimmer_Tuer pct 0, set RolloWzTuerKipp1 0)\
DOELSEIF ([({twilight("TC_TWILIGHT","ss_civil","18:00","22:00")})] and ([GriffWzTuer:state] eq "open")) (set RolloWzTuerKipp1 0)\
DOELSEIF ([Beschattung:state] eq "on" and [Heizung:/system/sensors/temperatures/outdoor_t1] >= 25 and [TC_TWILIGHT:azimuth] > 130 and [TC_TWILIGHT:azimuth] < 240 and [TC_TWILIGHT:elevation] > 20 and [Rollo_Esszimmer_Tuer:state] ne "19"  and [GriffWzTuer:state] =~ "closed|tilted") (set Rollo_Esszimmer_Tuer pct 19)\
DOELSEIF ([Beschattung:state] eq "off" and [TC_TWILIGHT:elevation] > 0 and [Rollo_Esszimmer_Tuer:state] ne "100") (set Rollo_Esszimmer_Tuer pct 100)\
DOELSEIF ([Beschattung:state] eq "on" and [Heizung:/system/sensors/temperatures/outdoor_t1] <= 25 and [TC_TWILIGHT:azimuth] >= 240 and [TC_TWILIGHT:azimuth] < 270 and [Rollo_Esszimmer_Tuer:state] eq "19") (set Rollo_Esszimmer_Tuer pct 100)\
\

attr autoRollo_Esszimmer_Tuer stateFormat Hoch: timer_01_c01 Runter: timer_02_c02 (state)

setstate autoRollo_Esszimmer_Tuer Hoch: 07.06.2022 06:00:29 Runter: 06.06.2022 22:00:00 (cmd_1)
setstate autoRollo_Esszimmer_Tuer 2022-06-06 18:25:01 Device TC_TWILIGHT
setstate autoRollo_Esszimmer_Tuer 2022-06-06 05:59:56 cmd 1
setstate autoRollo_Esszimmer_Tuer 2022-06-06 05:59:56 cmd_event timer_1
setstate autoRollo_Esszimmer_Tuer 2022-06-06 05:59:56 cmd_nr 1
setstate autoRollo_Esszimmer_Tuer 2022-06-06 10:48:17 e_GriffWzTuer_state open
setstate autoRollo_Esszimmer_Tuer 2022-06-06 18:24:00 e_Heizung_/system/sensors/temperatures/outdoor_t1 22.5
setstate autoRollo_Esszimmer_Tuer 2022-06-06 06:00:17 e_Rollo_Esszimmer_Tuer_state 100
setstate autoRollo_Esszimmer_Tuer 2022-06-06 18:25:01 e_TC_TWILIGHT_azimuth 272.26
setstate autoRollo_Esszimmer_Tuer 2022-06-06 18:25:01 e_TC_TWILIGHT_elevation 28.31
setstate autoRollo_Esszimmer_Tuer 2022-06-05 23:59:55 mode enabled
setstate autoRollo_Esszimmer_Tuer 2022-06-06 05:59:56 state cmd_1
setstate autoRollo_Esszimmer_Tuer 2022-06-06 05:59:56 timer_01_c01 07.06.2022 06:00:29
setstate autoRollo_Esszimmer_Tuer 2022-06-05 23:59:55 timer_02_c02 06.06.2022 22:00:00
setstate autoRollo_Esszimmer_Tuer 2022-06-05 23:59:55 timer_03_c03 06.06.2022 22:00:00


Damian

Also bei mir werden set cmd_X Befehle ausgeführt:

Zitat2022-06-06 19:22:46 DOIF autoRollo_Esszimmer_Tuer cmd_nr: 4
2022-06-06 19:22:46 DOIF autoRollo_Esszimmer_Tuer cmd: 4
2022-06-06 19:22:46 DOIF autoRollo_Esszimmer_Tuer cmd_event: set_cmd_4
2022-06-06 19:22:46 DOIF autoRollo_Esszimmer_Tuer error: set Rollo_Esszimmer_Tuer pct 19: Please define Rollo_Esszimmer_Tuer first
2022-06-06 19:22:46 DOIF autoRollo_Esszimmer_Tuer cmd_4
2022-06-06 19:23:02 DOIF autoRollo_Esszimmer_Tuer cmd_nr: 3
2022-06-06 19:23:02 DOIF autoRollo_Esszimmer_Tuer cmd: 3
2022-06-06 19:23:02 DOIF autoRollo_Esszimmer_Tuer cmd_event: set_cmd_3
2022-06-06 19:23:02 DOIF autoRollo_Esszimmer_Tuer error: set RolloWzTuerKipp1 0: Please define RolloWzTuerKipp1 first
2022-06-06 19:23:02 DOIF autoRollo_Esszimmer_Tuer cmd_3
2022-06-06 19:23:11 DOIF autoRollo_Esszimmer_Tuer cmd_nr: 5
2022-06-06 19:23:11 DOIF autoRollo_Esszimmer_Tuer cmd: 5
2022-06-06 19:23:11 DOIF autoRollo_Esszimmer_Tuer cmd_event: set_cmd_5
2022-06-06 19:23:11 DOIF autoRollo_Esszimmer_Tuer error: set Rollo_Esszimmer_Tuer pct 100: Please define Rollo_Esszimmer_Tuer first
2022-06-06 19:23:11 DOIF autoRollo_Esszimmer_Tuer cmd_5
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

seule3008

Ich verstehe es nicht aber es funktioniert jetzt. Dabei habe ich nur das Design ändern müssen um die RAW Definition laden zu können. Die habe ich dann hier geschickt und das Design wieder zurück gewechselt. Jetzt läuft es. Ich bin Ratlos. Aber es geht. Mal sehen wie lange.

Vielen Dank für deine Hilfe.