Hallo,
ich hab ein DOIF mit 7 Verzweigungen.
Vorher hatte ich 6 Verzweigungen, heute hab ich die 7. Verzweigung ergänzt und die Bedingungen der anderen auch verändert.
Ich stelle jetzt aber fest, dass die Attribute "wait" und "repeatsame" nicht mehr gesetzt bzw. verändert werden können.
Als Fehler kommt folgender Spruch:
Treppenhaus.Markisensteuerung: unknown attribute repeatsame. Type 'attr Treppenhaus.Markisensteuerung ?' for a detailed list.
Ich hab die 7. Verzweigung gelöscht, das ändert aber nichts an den Fehlern bei den Attributen.
Im logfile taucht kein verdächtiger Eintrag auf, der mit diesem DOIF zu tun haben könnte.
Im set-Befehl taucht in der Pulldown-Liste nur "initialize", "enable" und "disable" auf, nicht aber "cmd_1..." und "checkall"
Die Änderungen des DOIFs habe im Webfrontend durchegführt mit "DEF" und dann mit "modify ..." gespeichert.
Nach einem rereadcfg erscheint folgende Fehlermeldung:
Account details were encrypted
Treppenhaus.Markisensteuerung: unknown attribute repeatsame. Type 'attr Treppenhaus.Markisensteuerung ?' for a detailed list.
Treppenhaus.Markisensteuerung: unknown attribute wait. Type 'attr Treppenhaus.Markisensteuerung ?' for a detailed list.
In der Attribut-Liste fehlen jetzt "wait" und "repeatsame", ebenfalls ist das Attribut "do" nicht in der Auswahlliste enthalten.
Viele Grüße Gisbert
Das list des DOIFs (vor rereadcfg):
Internals:
CFGFN ./FHEM/Markisensteuerung.cfg
DEF [?Treppenhaus.Markise.hoch.dum] eq "off" and ($md ge "04-15" and $md le "10-15")
and [?Treppenhaus.Markise:level] != 0 and [?Wetter.Proplanta:wind] <= 25 and [TH.Kuhlmannweg8:temperature] >= 22
(ReadingsAge("Wetter.Proplanta","weather","") <= 900 and ([?Wetter.Proplanta:weather] eq ("sonnig" or "heiter" or "wolkig"))
and [?Buienradar:rainDataNow] == 0 and [?13:00-22:00] and [?myTwilight:azimuth] >=185 and sunset_abs(-3420) gt $hms)
(set Treppenhaus.Markise off)
DOELSEIF ([?Treppenhaus.Markise.runter.dum] eq "on" and [?Treppenhaus.Markise:level] != 100
and ([Wetter.Proplanta:wind] > 25 or [Buienradar:rainDataNow] != 0 or [Wetter.Proplanta:weather] ne ("sonnig" or "heiter" or "wolkig")))
(set Treppenhaus.Markise on)
DOELSEIF ([?Treppenhaus.Markise.runter.dum] eq "off" and [?Treppenhaus.Markise:level] != 100
and ([Wetter.Proplanta:wind] > 25 or [TH.Kuhlmannweg8:temperature] < 22
or ReadingsAge("Wetter.Proplanta","weather","") > 900 or [Wetter.Proplanta:weather] ne ("sonnig" or "heiter" or "wolkig")
or [Buienradar:rainDataNow] != 0 or [myTwilight:azimuth] <185 or sunset_abs(-3420) le $hms))
(set Treppenhaus.Markise on)
DOELSEIF ([Treppenhaus.Markise.runter.dum] eq "on")
DOELSEIF ([Treppenhaus.Markise.hoch.dum] eq "on")
DOELSEIF ([Treppenhaus.Markise:level] == 0 and [+600]) (setreading Treppenhaus.Markise level 0)
DOELSEIF ([Treppenhaus.Markise:level] == 100)
MODEL Perl
NAME Treppenhaus.Markisensteuerung
NR 353
NTFY_ORDER 50-Treppenhaus.Markisensteuerung
STATE initialized
TYPE DOIF
READINGS:
2018-05-13 12:16:16 mode enabled
2018-05-13 12:16:16 state initialized
Regex:
condition:
0
devices:
helper:
DOIF_Readings_events
DOIF_eventas
globalinit 1
last_timer 0
sleeptimer -1
bm:
DOIF_Attr:
cnt 2
dmx -1000
dtot 0
dtotcnt 0
mTS 13.05. 12:23:38
max 8.41617584228516e-05
tot 0.000164985656738281
mAr:
set
Treppenhaus.Markisensteuerung
devStateIcon
(cmd_1|cmd_6):fts_sunblind@red (cmd_2|cmd_3|cmd_7):fts_sunblind_0@gray cmd_4:fts_shutter_down@red cmd_5:fts_shutter_up@red
DOIF_Get:
cnt 9
dmx -1000
dtot 0
dtotcnt 0
mTS 13.05. 12:21:14
max 6.89029693603516e-05
tot 0.000390768051147461
mAr:
HASH(0x3f899f0)
Treppenhaus.Markisensteuerung
?
DOIF_Notify:
cnt 929
dmx -1000
dtot 0
dtotcnt 0
mTS 13.05. 12:34:05
max 0.000427007675170898
tot 0.130048513412476
mAr:
HASH(0x3f899f0)
HASH(0x4113340)
DOIF_Set:
cnt 27
dmx -1000
dtot 0
dtotcnt 0
mTS 13.05. 12:21:14
max 0.000188112258911133
tot 0.00325703620910645
mAr:
HASH(0x3f899f0)
Treppenhaus.Markisensteuerung
?
itimer:
perlblock:
0
uiState:
uiTable:
Attributes:
devStateIcon (cmd_1|cmd_6):fts_sunblind@red (cmd_2|cmd_3|cmd_7):fts_sunblind_0@gray cmd_4:fts_shutter_down@red cmd_5:fts_shutter_up@red
icon fts_sunblind
repeatsame 3:3:3:3:3:60
room CUL_HM,Mobile
wait 60:60:60:1:1:1
Die raw-Definition des DOIFs (vor rereadcfg):
defmod Treppenhaus.Markisensteuerung DOIF [?Treppenhaus.Markise.hoch.dum] eq "off" and ($md ge "04-15" and $md le "10-15") \
and [?Treppenhaus.Markise:level] != 0 and [?Wetter.Proplanta:wind] <= 25 and [TH.Kuhlmannweg8:temperature] >= 22 \
(ReadingsAge("Wetter.Proplanta","weather","") <= 900 and ([?Wetter.Proplanta:weather] eq ("sonnig" or "heiter" or "wolkig")) \
and [?Buienradar:rainDataNow] == 0 and [?13:00-22:00] and [?myTwilight:azimuth] >=185 and sunset_abs(-3420) gt $hms) \
(set Treppenhaus.Markise off) \
DOELSEIF ([?Treppenhaus.Markise.runter.dum] eq "on" and [?Treppenhaus.Markise:level] != 100 \
and ([Wetter.Proplanta:wind] > 25 or [Buienradar:rainDataNow] != 0 or [Wetter.Proplanta:weather] ne ("sonnig" or "heiter" or "wolkig"))) \
(set Treppenhaus.Markise on) \
DOELSEIF ([?Treppenhaus.Markise.runter.dum] eq "off" and [?Treppenhaus.Markise:level] != 100 \
and ([Wetter.Proplanta:wind] > 25 or [TH.Kuhlmannweg8:temperature] < 22 \
or ReadingsAge("Wetter.Proplanta","weather","") > 900 or [Wetter.Proplanta:weather] ne ("sonnig" or "heiter" or "wolkig") \
or [Buienradar:rainDataNow] != 0 or [myTwilight:azimuth] <185 or sunset_abs(-3420) le $hms)) \
(set Treppenhaus.Markise on) \
DOELSEIF ([Treppenhaus.Markise.runter.dum] eq "on") \
DOELSEIF ([Treppenhaus.Markise.hoch.dum] eq "on") \
DOELSEIF ([Treppenhaus.Markise:level] == 0 and [+600]) (setreading Treppenhaus.Markise level 0) \
DOELSEIF ([Treppenhaus.Markise:level] == 100)
attr Treppenhaus.Markisensteuerung devStateIcon (cmd_1|cmd_6):fts_sunblind@red (cmd_2|cmd_3|cmd_7):fts_sunblind_0@gray cmd_4:fts_shutter_down@red cmd_5:fts_shutter_up@red
attr Treppenhaus.Markisensteuerung icon fts_sunblind
attr Treppenhaus.Markisensteuerung repeatsame 3:3:3:3:3:60
attr Treppenhaus.Markisensteuerung room CUL_HM,Mobile
attr Treppenhaus.Markisensteuerung wait 60:60:60:1:1:1
setstate Treppenhaus.Markisensteuerung initialized
setstate Treppenhaus.Markisensteuerung 2018-05-13 12:49:06 mode enabled
setstate Treppenhaus.Markisensteuerung 2018-05-13 12:49:06 state initialized
Ich habe keine Ahnung von DOIF aber ich nehme an, dass es an model -> Perl liegt.
Hallo marvin78,
andere DOIF's tun aktuell hren Dienst, da kann ich keine Fehler sehen.
Bei dem Mistwetter hier kann ich aber auch nicht so einfach das DOIF testen, da ich sonst Gefahr laufe, dass die Markise (ist übrigens eine Senkrechtmarkise) nicht nur sprichwörtlich sondern tatsächlich im Regen steht.
Ich hab noch einen Fehler in der 3. Zeile der Definition gefunden, da fehlte ein "and" zu Beginn.
Das ändert aber rein garnichts an diesem merkwürdigen Verhalten.
Viele Grüße Gisbert
Ich bin einigermaßen verwirrt.
Ich hab das DOIF gelöscht und ein neues mit dem identischen Namen über die Webeingabe erzeugt, allerdings nur mit einer Bedingung:
define Treppenhaus.Markisensteuerung DOIF [Treppenhaus.Markise.hoch.dum] eq "off" set Schalter.1 off
Hier gibt es auch kein Attribut "do", "repeatsame", "wait".
Unter Internals sehe ich, dass "MODEL Perl" steht.
Bei all den anderen DOIFs, die ich habe, steht aber dort "MODEL FHEM".
Was kann an dem obigen DOIF zu MODEL Perl führen?
Selbst bei dieser einfachen Definition kommt als MODEL Perl heraus.
Wie kann ich ein neues DOIF mit MODEL FHEM anlegen?
Noch als Hinweis:
Ich hab am Samstag, den 12. Mai, ein Fhem update durchgeführt; kann es daran liegen?
Viele Grüße Gisbert
Ein list:
Internals:
CFGFN
DEF [Treppenhaus.Markise.hoch.dum] eq "off" set Schalter.1 off
MODEL Perl
NAME Treppenhaus.Markisensteuerung
NR 1297
NTFY_ORDER 50-Treppenhaus.Markisensteuerung
STATE initialized
TYPE DOIF
READINGS:
2018-05-13 14:15:12 mode enabled
2018-05-13 14:15:12 state initialized
Regex:
condition:
0
devices:
helper:
DOIF_Readings_events
DOIF_eventas
globalinit 1
last_timer 0
sleeptimer -1
bm:
DOIF_Notify:
cnt 631
dmx -1000
dtot 0
dtotcnt 0
mTS 13.05. 14:26:30
max 0.000365972518920898
tot 0.0671403408050537
mAr:
HASH(0x4e0b5a8)
HASH(0x61c3e10)
DOIF_Set:
cnt 5
dmx -1000
dtot 0
dtotcnt 0
mTS 13.05. 14:15:12
max 8.98838043212891e-05
tot 0.000382661819458008
mAr:
HASH(0x4e0b5a8)
Treppenhaus.Markisensteuerung
?
itimer:
perlblock:
0 off
uiState:
uiTable:
Attributes:
Zitat von: Gisbert am 13 Mai 2018, 14:48:38
Ich bin einigermaßen verwirrt.
Ich hab das DOIF gelöscht und ein neues mit dem identischen Namen über die Webeingabe erzeugt, allerdings nur mit einer Bedingung:
define Treppenhaus.Markisensteuerung DOIF [Treppenhaus.Markise.hoch.dum] eq "off" set Schalter.1 off
Hier gibt es auch kein Attribut "do", "repeatsame", "wait".
Unter Internals sehe ich, dass "MODEL Perl" steht.
Bei all den anderen DOIFs, die ich habe, steht aber dort "MODEL FHEM".
Was kann an dem obigen DOIF zu MODEL Perl führen?
Selbst bei dieser einfachen Definition kommt als MODEL Perl heraus.
Wie kann ich ein neues DOIF mit MODEL FHEM anlegen?
Noch als Hinweis:
Ich hab am Samstag, den 12. Mai, ein Fhem update durchgeführt; kann es daran liegen?
Viele Grüße Gisbert
Ein list:
Internals:
CFGFN
DEF [Treppenhaus.Markise.hoch.dum] eq "off" set Schalter.1 off
MODEL Perl
NAME Treppenhaus.Markisensteuerung
NR 1297
NTFY_ORDER 50-Treppenhaus.Markisensteuerung
STATE initialized
TYPE DOIF
READINGS:
2018-05-13 14:15:12 mode enabled
2018-05-13 14:15:12 state initialized
Regex:
condition:
0
devices:
helper:
DOIF_Readings_events
DOIF_eventas
globalinit 1
last_timer 0
sleeptimer -1
bm:
DOIF_Notify:
cnt 631
dmx -1000
dtot 0
dtotcnt 0
mTS 13.05. 14:26:30
max 0.000365972518920898
tot 0.0671403408050537
mAr:
HASH(0x4e0b5a8)
HASH(0x61c3e10)
DOIF_Set:
cnt 5
dmx -1000
dtot 0
dtotcnt 0
mTS 13.05. 14:15:12
max 8.98838043212891e-05
tot 0.000382661819458008
mAr:
HASH(0x4e0b5a8)
Treppenhaus.Markisensteuerung
?
itimer:
perlblock:
0 off
uiState:
uiTable:
Attributes:
Wenn du die fasche Syntax verwendest...
Fhemmodus fängt mit einer runden Klammer auf an.
EDITIERT, DA FALSCH
Hallo Damian,
danke für den Hinweis.
In diesem, meinem Fall war das aber nicht ausreichend.
Durch Lesen und Ausprobieren habe ich jetzt eine praktikable Lösung für mich gefunden:
1) Ja, die runden Klammern helfen ;)
2) Der folgende Ausdruck muss in geschweifte Klammern: GILT AUCH FÜR DEN CODE, DEN MAN ANSCHEINEND NICHT ALS DURCHGESTRICHEN EDITIEREN KANN
{ReadingsAge("Wetter.Proplanta","weather","") <= 900}
3) Und das Verwirrende dabei ist, dass ich andere DOIFs im Einsatz haben, bei denen ich ReadingsAge ohne geschweifte Klammern abfrage, und in den Internals das MODEL FHEM ist.
Mir scheint, dass die Auswahl in den Internals MODEL FHEM oder PERL noch nicht eindeutig genug ist.
Wahrscheinlich habe ich hier einen Fall erwischt, der besonders speziel ist.
Trotzdem vielen Dank für dein Modul, welches ich sehr gerne einsetze.
Viele Grüße Gisbert
Fällt dir noch etwas bei meiner Definition auf, was so nicht sein soll, z.B. im Zusammenhang mit "and {ReadingsAge("Wetter.Proplanta","weather","") <= 900}"? GESCHWEIFTE KLAMMERN SIND FALSCH
defmod Treppenhaus.Markisensteuerung DOIF ([?Treppenhaus.Markise.hoch.dum] eq "off" and ($md ge "04-15" and $md le "10-15") \
and [?Treppenhaus.Markise:level] != 0 and [?Wetter.Proplanta:wind] <= 25 and [TH.Kuhlmannweg8:temperature] >= 22 \
and {ReadingsAge("Wetter.Proplanta","weather","") <= 900} and ([?Wetter.Proplanta:weather] eq ("sonnig" or "heiter" or "wolkig")) \
and [?Buienradar:rainDataNow] == 0 and [?13:00-22:00] and [?myTwilight:azimuth] >=185 and sunset_abs(-3420) gt $hms) \
(set Treppenhaus.Markise off) \
DOELSEIF ([?Treppenhaus.Markise.runter.dum] eq "on" and [?Treppenhaus.Markise:level] != 100 \
and ([Wetter.Proplanta:wind] > 25 or [Buienradar:rainDataNow] != 0 or [Wetter.Proplanta:weather] ne ("sonnig" or "heiter" or "wolkig"))) \
(set Treppenhaus.Markise on) \
DOELSEIF ([?Treppenhaus.Markise.runter.dum] eq "off" and [?Treppenhaus.Markise:level] != 100 \
and ([Wetter.Proplanta:wind] > 25 or [TH.Kuhlmannweg8:temperature] < 22 \
or {ReadingsAge("Wetter.Proplanta","weather","") <= 900} or [Wetter.Proplanta:weather] ne ("sonnig" or "heiter" or "wolkig") \
or [Buienradar:rainDataNow] != 0 or [myTwilight:azimuth] <185 or sunset_abs(-3420) le $hms)) \
(set Treppenhaus.Markise on) \
DOELSEIF ([Treppenhaus.Markise.runter.dum] eq "on") \
DOELSEIF ([Treppenhaus.Markise.hoch.dum] eq "on") \
DOELSEIF ([Treppenhaus.Markise:level] == 0 and [+600]) (setreading Treppenhaus.Markise level 0) \
DOELSEIF ([Treppenhaus.Markise:level] == 100)
attr Treppenhaus.Markisensteuerung devStateIcon (cmd_1|cmd_6):fts_sunblind@red (cmd_2|cmd_3|cmd_7):fts_sunblind_0@gray cmd_4:fts_shutter_down@red cmd_5:fts_shutter_up@red
attr Treppenhaus.Markisensteuerung icon fts_sunblind
attr Treppenhaus.Markisensteuerung repeatsame 3:3:3:3:3:60:3
attr Treppenhaus.Markisensteuerung room CUL_HM,Mobile,Rollladen
attr Treppenhaus.Markisensteuerung wait 60:60:60:1:1:1:1
Warum muss dieser Ausdruck in geschweifte Klammern?
{ReadingsAge("Wetter.Proplanta","weather","") <= 900}
Wenn du das in der Bedingung machst, dann wird die Bedingung nicht funktionieren.
Ich verstehe das Problem nicht. Die vorgebrachten Definitionen, die jetzt nicht funktionieren, haben auch vorher nicht funktioniert.
Ein FHEM-DOIF muss abgesehen von Kommentaren mit:
DOIF (... beginnen, genau dass, was immer schon galt. Es hat sich also nichts geändert. Auch die Angabe:
ReadingsAge("Wetter.Proplanta","weather","") <= 900
funktioniert wie bisher. Das hat doch nichts mit der ersten Klammer auf zu tun.
Hallo Damian,
vielen Dank für die Richtigstellung.
Jetzt funktioniert die Abfrage des ReadingAges ohne geschweifte Klammern und es bleibt bei den Internals bei MODEL bei FHEM.
Während meines Rumprobierens bin ich wohl vom Pfad der Tugend abgekommen (... denn sie wissen nicht, was sie tun ...) und hab mich in wilden Spekulationen verheddert.
Ich editiere meinen letzten Beitrag, damit keine bleibenden Schäden bei anderen zurückbleiben.
Nochmals vielen Dank
Gisbert
Moin, moin,
mir war noch aufgefallen, dass in dem Codestück noch ein paar subtile Fehler lauern:
[Wetter.Proplanta:weather] ne ("sonnig" or "heiter" or "wolkig")
vergleicht nur mit "sonnig", was sicher nicht so beabsichtigt ist.
Das muss wohl besser so:
[Wetter.Proplanta:weather] ne "sonnig" and [Wetter.Proplanta:weather] ne "heiter" and [Wetter.Proplanta:weather] ne "wolkig"
oder so:
[Wetter.Proplanta:weather] !~ /^(sonnig|heiter|wolkig)$/
heißen (je nach Temperament...).
Mich wundert auch noch, dass da mal ein "?" am Anfang steht und mal nicht - aber ich bin nicht so fit in der DOIF Syntax...
Gruss,
Turo
Zitat von: turo am 14 Mai 2018, 10:14:26
Mich wundert auch noch, dass da mal ein "?" am Anfang steht und mal nicht - aber ich bin nicht so fit in der DOIF Syntax...
http://commandref.fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger
Hallo Turo,
vielen Dank für deinen Hinweis; du liegst richtig mit deiner Vermutung.
Kannst du dir dieses Codeschnipsel nochmals anschauen? Ist es richtig, dass nur am Ende Anführungszeichen stehen?
[Wetter.Proplanta:weather] !~ /^(sonnig|heiter|wolkig)$/"
Viele Grüße Gisbert
Sorry - da gehört gar kein Anführungszeichen hin - war ein Rest vom Editieren. (Ich korrigiere meinen Post noch.)
Turo
Hallo Turo,
besten Dank.
Nur zur Sicherheit, wenn ich Gleichheit abfragen will ( also eq statt ne ), muss es dann so heißen?
[Wetter.Proplanta:weather] =~ /^(sonnig|heiter|wolkig)$/
Noch eine Zusatzfrage.
Wenn in der Bedingung ein Leerzeichen und ein Umlaut enthalten ist, wie folgt, geht das dann auch?
[Wetter.Proplanta:weather] =~ /^(sonnig|heiter|wolkig|stark bewölkt)$/
Viele Grüße Gisbert
Edit: für Gleichheit muss anscheinend ein Gleichheitszeichen (=) statt des Ausrufezeichens (!) hin.
Hab's probiert, müsste so stimmen.
Hallo Gisbert,
fast richtig ;-)Jetzt stimmt es.
Es ist "=~" statt "~" für die Negation von "!~".
Das Leerzeichen ist kein Problem. Der Umlaut kann eines werden, da er unterschiedlich kodiert sein kann.
Ich bin da lieber defensiv und nehme den Punkt "." - der passt auf alles - auch auf ein Leerzeichen:
[Wetter.Proplanta:weather] =~ /^(sonnig|heiter|wolkig|stark.bew.lkt)$/
Gruss,
Turo
Hallo Turo,
das Leerzeichen ist anscheinend doch ein Problem, denn das funktionierte mit Leerzeichen heute nachgewiesener nicht:
[Wetter.Proplanta:weather] =~ /^(sonnig|heiter|wolkig|stark bew.lkt)$/
Ich werde deinen Vorschlag testen, muss demnach nur auf stark bewölktes Wetter warten.
Viele Grüße Gisbert
Eigentlich müsste das gut funktionieren. Es wäre interessant, wie jetzt das ganze Statement aussieht und was der genaue Inhalt von Wetter.Proplanta:weather ist. Ein "list" von dem DOIF müsste das alles zeigen.
Gruss,
Turo
Hallo Turo,
ein list meines "Monster"-DOIFs mit den beiden Punkten in "stark.bew.lkt":
Internals:
CFGFN ./FHEM/Markisensteuerung.cfg
DEF ([?Treppenhaus.Markise.hoch.dum] eq "off" and ($md ge "04-15" and $md le "10-15")
and [?Treppenhaus.Markise:level] != 0 and [?Wetter.Proplanta:wind] <= 25 and [TH.Kuhlmannweg8:temperature] >= 22
and ReadingsAge("Wetter.Proplanta","weather","") <= 900 and [?Wetter.Proplanta:weather] =~ /^(sonnig|heiter|wolkig|stark.bew.lkt)$/
and [?Buienradar:rainDataNow] == 0 and [?13:00-22:00] and [?myTwilight:azimuth] >=185 and sunset_abs(-3420) gt $hms)
(set Treppenhaus.Markise off)
DOELSEIF ([?Treppenhaus.Markise.runter.dum] eq "on" and [?Treppenhaus.Markise:level] != 100
and ([Wetter.Proplanta:wind] > 25 or [Buienradar:rainDataNow] != 0 or [Wetter.Proplanta:weather] !~ /^(sonnig|heiter|wolkig|stark.bew.lkt)$/))
(set Treppenhaus.Markise on)
DOELSEIF ([?Treppenhaus.Markise.runter.dum] eq "off" and [?Treppenhaus.Markise:level] != 100
and ([Wetter.Proplanta:wind] > 25 or [TH.Kuhlmannweg8:temperature] < 22
or ReadingsAge("Wetter.Proplanta","weather","") > 1260 or [Wetter.Proplanta:weather] !~ /^(sonnig|heiter|wolkig|stark.bew.lkt)$/
or [Buienradar:rainDataNow] != 0 or [myTwilight:azimuth] <185 or sunset_abs(-3420) le $hms))
(set Treppenhaus.Markise on)
DOELSEIF ([Treppenhaus.Markise.runter.dum] eq "on")
DOELSEIF ([Treppenhaus.Markise.hoch.dum] eq "on")
DOELSEIF ([Treppenhaus.Markise:level] == 0 and [+600]) (setreading Treppenhaus.Markise level 0)
MODEL FHEM
NAME Treppenhaus.Markisensteuerung
NR 353
NTFY_ORDER 50-Treppenhaus.Markisensteuerung
STATE cmd_3
TYPE DOIF
READINGS:
2018-05-16 07:01:36 Device Wetter.Proplanta
2018-05-15 21:01:49 cmd 3
2018-05-15 21:01:49 cmd_count 2
2018-05-15 21:01:49 cmd_event myTwilight
2018-05-15 21:01:49 cmd_nr 3
2018-05-16 07:01:15 e_Buienradar_rainDataNow 0.00
2018-05-16 06:55:26 e_TH.Kuhlmannweg8_temperature 13.0
2018-05-15 21:01:55 e_Treppenhaus.Markise_level 100
2018-05-16 07:01:36 e_Wetter.Proplanta_weather Nebel
2018-05-16 07:01:36 e_Wetter.Proplanta_wind 3.6
2018-05-16 07:00:58 e_myTwilight_azimuth 72.01
2018-05-15 20:52:20 mode enabled
2018-05-15 21:01:49 state cmd_3
2018-05-15 22:00:00 timer_01_c01 16.05.2018 13:00:00
2018-05-15 22:00:00 timer_02_c01 16.05.2018 22:00:00
2018-05-16 07:02:20 timer_03_c06 16.05.2018 07:12:20
2018-05-15 21:01:48 wait_timer no timer
Regex:
condition:
0 InternalDoIf($hash,'Treppenhaus.Markise.hoch.dum','STATE') eq "off" and ($md ge "04-15" and $md le "10-15") and ReadingValDoIf($hash,'Treppenhaus.Markise','level') != 0 and ReadingValDoIf($hash,'Wetter.Proplanta','wind') <= 25 and ReadingValDoIf($hash,'TH.Kuhlmannweg8','temperature') >= 22 and ReadingsAge("Wetter.Proplanta","weather","") <= 900 and ReadingValDoIf($hash,'Wetter.Proplanta','weather') =~ /^(sonnig|heiter|wolkig|stark.bew.lkt)$/ and ReadingValDoIf($hash,'Buienradar','rainDataNow') == 0 and DOIF_time($hash,0,1,$wday,$hms) and ReadingValDoIf($hash,'myTwilight','azimuth') >=185 and sunset_abs(-3420) gt $hms
1 InternalDoIf($hash,'Treppenhaus.Markise.runter.dum','STATE') eq "on" and ReadingValDoIf($hash,'Treppenhaus.Markise','level') != 100 and (ReadingValDoIf($hash,'Wetter.Proplanta','wind') > 25 or ReadingValDoIf($hash,'Buienradar','rainDataNow') != 0 or ReadingValDoIf($hash,'Wetter.Proplanta','weather') !~ /^(sonnig|heiter|wolkig|stark.bew.lkt)$/)
2 InternalDoIf($hash,'Treppenhaus.Markise.runter.dum','STATE') eq "off" and ReadingValDoIf($hash,'Treppenhaus.Markise','level') != 100 and (ReadingValDoIf($hash,'Wetter.Proplanta','wind') > 25 or ReadingValDoIf($hash,'TH.Kuhlmannweg8','temperature') < 22 or ReadingsAge("Wetter.Proplanta","weather","") > 1260 or ReadingValDoIf($hash,'Wetter.Proplanta','weather') !~ /^(sonnig|heiter|wolkig|stark.bew.lkt)$/ or ReadingValDoIf($hash,'Buienradar','rainDataNow') != 0 or ReadingValDoIf($hash,'myTwilight','azimuth') <185 or sunset_abs(-3420) le $hms)
3 InternalDoIf($hash,'Treppenhaus.Markise.runter.dum','STATE') eq "on"
4 InternalDoIf($hash,'Treppenhaus.Markise.hoch.dum','STATE') eq "on"
5 ReadingValDoIf($hash,'Treppenhaus.Markise','level') == 0 and DOIF_time_once($hash,2,$wday)
days:
devices:
0 TH.Kuhlmannweg8
1 Wetter.Proplanta Buienradar
2 Wetter.Proplanta TH.Kuhlmannweg8 Buienradar myTwilight
3 Treppenhaus.Markise.runter.dum
4 Treppenhaus.Markise.hoch.dum
5 Treppenhaus.Markise
all TH.Kuhlmannweg8 Wetter.Proplanta Buienradar myTwilight Treppenhaus.Markise.runter.dum Treppenhaus.Markise.hoch.dum Treppenhaus.Markise
do:
0:
0 set Treppenhaus.Markise off
1:
0 set Treppenhaus.Markise on
2:
0 set Treppenhaus.Markise on
3:
0
4:
0
5:
0 setreading Treppenhaus.Markise level 0
6:
helper:
DOIF_Readings_events
DOIF_eventas
event timer_3
globalinit 1
last_timer 3
sleepdevice myTwilight
sleepsubtimer -1
sleeptimer -1
timerdev myTwilight
timerevent azimuth: 300.07,elevation: 1.87,twilight: 77,twilight_weather: 62.6,compasspoint: west-northwest
triggerDev
bm:
DOIF_Get:
cnt 1
dmx -1000
dtot 0
dtotcnt 0
mTS 16.05. 07:03:50
max 0.000139951705932617
tot 0.000139951705932617
mAr:
HASH(0x6e625c0)
Treppenhaus.Markisensteuerung
?
DOIF_Notify:
cnt 27681
dmx -1000
dtot 0
dtotcnt 0
mTS 15.05. 21:00:49
max 0.0788650512695312
tot 6.69328022003174
mAr:
HASH(0x6e625c0)
HASH(0x6ca4bd0)
DOIF_Set:
cnt 22
dmx -1000
dtot 0
dtotcnt 0
mTS 16.05. 07:03:50
max 0.000476837158203125
tot 0.00360012054443359
mAr:
HASH(0x6e625c0)
Treppenhaus.Markisensteuerung
?
timerevents:
azimuth: 300.07
elevation: 1.87
twilight: 77
twilight_weather: 62.6
compasspoint: west-northwest
timereventsState:
azimuth: 300.07
elevation: 1.87
twilight: 77
twilight_weather: 62.6
compasspoint: west-northwest
triggerEvents:
timer_3
triggerEventsState:
fc1_chOfRain00: 15
fc0_weatherNightIcon: https://www.proplanta.de/wetterdaten/images/symbole/n2.gif
fc3_windDir09: 294
fc0_temp00: 16
fc0_cloud03: 100
fc2_temp09: 14
fc3_wind12: 10.8
fc0_windDir12: 356
fc0_wind21: 14.4
fc0_temp09: 20
fc2_rain21: 0
windDirIcon: https://www.proplanta.de/wetterdaten/images/symbole/w28.gif
fc1_temp06: 11
fc2_chOfRain03: 20
fc1_temp03: 10
fc0_uv: 6
fc3_chOfRain09: 5
fc0_gust21: 36
fc2_rain06: 0
fc2_weatherNight: wolkig
fc0_chOfRain06: 20
fc0_weatherEvening: Regenschauer
fc1_tempMax: 20
fc2_frost: 0
fc0_windDir06: 321
fc0_date: 16.05.2018
fc2_windDir06: 304
fc0_wind03: 3.6
fc2_chOfRain00: 5
fc3_chOfRain21: 5
fc3_weatherMorning: heiter
fc3_temp15: 20
fc0_wind09: 14.4
fc1_cloud21: 0
fc2_temp03: 11
fc0_dew: 1
fc1_cloud03: 12.5
fc2_temp12: 18
obsTime: 06:00
durationFetchReadings: 6.00
fc3_chOfRain15: 10
fc0_chOfRain00: 40
fc3_rain15: 0
fc3_gust12: 10.8
fc3_cloud12: 37.5
fc2_rad: 5.8
fc3_wind03: 7.2
fc1_weatherNightIcon: https://www.proplanta.de/wetterdaten/images/symbole/n3.gif
fc3_cloud18: 12.5
fc0_weatherMorning: bedeckt
fc0_moonRise: 06:45
fc0_rain21: 0
fc0_cloud15: 0
fc0_temp18: 20
fc2_gust18: 18
fc1_temp21: 12
fc0_chOfRain12: 40
fc1_moonSet: 23:37
fc3_wind15: 10.8
fc1_windDir18: 325
fc1_weatherEvening: heiter
fc3_windDir12: 296
fc2_chOfRain12: 10
fc1_weatherNight: wolkig
fc3_temp06: 10
wind: 3.6
fc0_wind00: 3.6
fc0_cloud06: 100
fc1_windDir03: 337
fc2_dew: 1
fc1_windDir00: 345
fc1_gust00: 28.8
fc2_gust12: 18
fc2_windDir09: 303
fc3_cloud15: 37.5
fc2_windDir12: 298
fc2_date: 18.05.2018
fc3_weatherEvening: heiter
fc0_rain18: 0.4
fc3_cloud06: 12.5
pressure: 1014.5
fc1_chOfRain06: 5
fc1_wind18: 14.4
fc0_wind12: 21.6
fc2_temp06: 10
fc3_gust15: 10.8
fc3_weatherDay: heiter
fc0_cloud00: 100
fc2_chOfRainDay: 15
fc1_windDir09: 323
fc2_chOfRain18: 20
fc2_rain15: 0
fc3_rain00: 0
fc2_wind15: 14.4
fc3_wind00: 7.2
fc1_chOfRain09: 5
fc2_wind00: 10.8
fc0_frost: 0
fc1_moonRise: 07:29
fc1_windDir15: 321
fc0_wind15: 21.6
fc2_chOfRainNight: 10
windDir: 225
fc1_gust09: 21.6
fc0_chOfRainDay: 40
fc1_rain21: 0
fc0_rad: 7.2
fc3_wind21: 7.2
fc0_sun: 30
fc3_temp03: 9
fc0_weatherDay: Regenschauer
fc3_weatherDayIcon: https://www.proplanta.de/wetterdaten/images/symbole/t2.gif
fc0_windDir00: 53
fc1_cloud15: 37.5
fc3_windDir15: 305
fc0_temp21: 15
fc3_rain12: 0
fc1_chOfRain15: 10
fc2_wind09: 10.8
fc3_frost: 0
fc1_gust03: 25.2
fc0_chOfRain03: 40
fc1_rain09: 0
fc1_rad: 7.8
fc2_weatherMorningIcon: https://www.proplanta.de/wetterdaten/images/symbole/t5.gif
fc1_wind15: 14.4
fc2_temp15: 17
fc2_rain12: 0
fc3_chOfRain03: 5
fc1_tempMin: 9
fc3_uv: 6
weather: Nebel
fc2_wind03: 10.8
cloudBaseMax: 2000
fc0_chOfRain21: 0
fc1_wind06: 10.8
fc2_gust00: 14.4
fc1_chOfRainDay: 5
fc3_temp09: 15
fc2_wind06: 10.8
fc2_gust09: 14.4
fc2_rain00: 0
fc1_weatherEveningIcon: https://www.proplanta.de/wetterdaten/images/symbole/n2.gif
fc0_gust18: 36
fc3_temp21: 14
fc1_gust21: 18
fc3_dew: 2
fc3_rain09: 0
fc1_chOfRain12: 10
fc1_temp00: 13
fc2_gust15: 18
fc0_cloud09: 62.5
fc3_wind09: 7.2
fc0_weatherMorningIcon: https://www.proplanta.de/wetterdaten/images/symbole/t5.gif
fc1_uv: 6
fc0_gust15: 36
fc1_windDir21: 334
fc3_rad: 8
fc0_temp03: 15
fc3_gust09: 7.2
fc1_rain15: 0
fc2_wind18: 10.8
fc1_temp12: 19
fc1_temp18: 17
fc0_cloud12: 62.5
fc2_wind21: 10.8
temperature: 12
fc3_rain: 0
fc2_windDir18: 339
fc0_tempMin: 14
fc2_tempMin: 9
fc3_wind18: 10.8
fc1_gust12: 21.6
fc3_chOfRainDay: 5
humidity: 93.5
fc1_rain03: 0
fc3_tempMax: 20
fc0_rain12: 2
fc1_cloud12: 50
fc2_cloud12: 50
fc2_tempMax: 18
fc0_tempMax: 24
fc2_chOfRain21: 20
fc1_gust06: 21.6
fc2_chOfRain15: 15
fc0_gust03: 18
fc0_rain15: 0
fc1_cloud00: 75
fc0_weatherEveningIcon: https://www.proplanta.de/wetterdaten/images/symbole/n6.gif
fc3_gust18: 14.4
fc3_cloud21: 25
fc0_temp06: 16
fc0_weatherDayIcon: https://www.proplanta.de/wetterdaten/images/symbole/t6.gif
fc3_cloud03: 12.5
fc2_cloud06: 100
fc2_rain03: 0
fc0_temp15: 23
fc1_temp15: 20
fc1_temp09: 15
fc1_frost: 0
fc1_sun: 75
fc3_windDir03: 312
fc2_gust21: 14.4
fc0_rain09: 0
fc3_rain18: 0
fc3_weatherNightIcon: https://www.proplanta.de/wetterdaten/images/symbole/n2.gif
fc1_chOfRain03: 5
fc1_gust18: 25.2
fc1_rain: 0
fc3_rain21: 0
fc1_chOfRain18: 5
fc1_weatherMorningIcon: https://www.proplanta.de/wetterdaten/images/symbole/t2.gif
fc3_temp12: 19
fc0_temp12: 24
fc2_gust06: 14.4
fc0_windDir03: 359
fc3_weatherMorningIcon: https://www.proplanta.de/wetterdaten/images/symbole/t2.gif
cloudBaseMin: 1500
fc2_uv: 3
fc1_wind21: 10.8
fc1_rain06: 0
fc3_chOfRain00: 15
fc0_gust12: 36
fc1_wind03: 10.8
fc2_rain09: 0
fc2_chOfRain06: 20
fc2_cloud09: 75
fc2_moonSet: --:--
fc0_gust06: 21.6
fc3_chOfRainNight: 5
fc1_cloud18: 25
fc2_rain: 0
fc3_rain06: 0
fc1_rain18: 0
fc1_wind12: 14.4
fc0_weatherNight: heiter
fc3_date: 19.05.2018
fc3_chOfRain06: 5
fc0_rain06: 0
fc1_cloud09: 25
fc2_cloud18: 100
fc1_date: 17.05.2018
fc2_evapor: 2
fc0_chOfRain18: 40
fc0_windDir21: 350
fc3_moonRise: 09:24
fc0_windDir18: 354
fc0_gust09: 28.8
fc2_windDir15: 317
fc2_temp18: 16
dewPoint: 11.3
fc1_weatherDay: heiter
fc1_weatherDayIcon: https://www.proplanta.de/wetterdaten/images/symbole/t2.gif
fc3_tempMin: 7
fc2_cloud21: 100
weatherIcon: https://www.proplanta.de/wetterdaten/images/symbole/t12.gif
fc3_wind06: 7.2
fc2_moonRise: 08:21
fc2_wind12: 14.4
fc0_rain00: 0.6
fc3_temp00: 11
fc2_rain18: 0
fc3_moonSet: 00:40
fc0_moonSet: 22:25
fc0_rain: 4.7
fc2_cloud03: 100
fc0_chOfRainNight: 5
fc1_dew: 0
fc1_wind00: 14.4
fc0_windDir15: 356
fc2_weatherDayIcon: https://www.proplanta.de/wetterdaten/images/symbole/t4.gif
fc1_rain12: 0
fc1_chOfRainNight: 10
fc3_weatherEveningIcon: https://www.proplanta.de/wetterdaten/images/symbole/n2.gif
fc3_cloud09: 12.5
visibility: 25
fc3_sun: 75
fc0_rain03: 1.7
fc3_chOfRain18: 5
fc2_chOfRain09: 15
fc3_gust00: 10.8
fc3_temp18: 18
fc2_weatherEvening: bedeckt
fc1_wind09: 14.4
fc1_chOfRain21: 0
fc3_windDir00: 337
fc0_evapor: 2
fc1_rain00: 0
fc2_windDir00: 320
fc0_chOfRain09: 10
fc2_cloud00: 25
fc1_windDir12: 320
fc3_windDir06: 303
fc0_wind18: 21.6
fc1_evapor: 2
fc2_temp21: 14
fc0_chOfRain15: 0
fc2_windDir21: 341
fc1_weatherMorning: heiter
fc3_gust21: 14.4
fc0_cloud21: 0
fc3_rain03: 0
fc2_gust03: 14.4
fc1_cloud06: 12.5
fc1_gust15: 25.2
fc2_weatherMorning: bedeckt
fc3_windDir18: 315
fc2_cloud15: 87.5
fc3_evapor: 2
fc0_cloud18: 50
fc1_windDir06: 337
fc0_wind06: 7.2
fc0_gust00: 14.4
fc3_cloud00: 87.5
fc2_windDir03: 310
fc3_chOfRain12: 10
fc0_windDir09: 356
fc3_gust03: 10.8
fc2_weatherEveningIcon: https://www.proplanta.de/wetterdaten/images/symbole/n5.gif
fc2_weatherNightIcon: https://www.proplanta.de/wetterdaten/images/symbole/n3.gif
fc2_weatherDay: stark bewölkt
fc2_temp00: 11
fc3_gust06: 10.8
fc2_sun: 25
fc3_weatherNight: heiter
fc3_windDir21: 342
state: Tmin: 14 Tmax: 24 T: 12 H: 93.5 W: 3.6 P: 1014.5
lastConnection: 326 values captured in 6.00 s
Zeitstempel: 2018-05-16 07:01
Temperature: 12.0
Humidity: 94
Druck: 1014
internals:
0 Treppenhaus.Markise.hoch.dum:STATE
1 Treppenhaus.Markise.runter.dum:STATE
2 Treppenhaus.Markise.runter.dum:STATE
3 Treppenhaus.Markise.runter.dum:STATE
4 Treppenhaus.Markise.hoch.dum:STATE
all Treppenhaus.Markise.hoch.dum:STATE Treppenhaus.Markise.runter.dum:STATE
interval:
0 -1
1 0
itimer:
localtime:
0 1526468400
1 1526500800
2 1526447540
readings:
0 TH.Kuhlmannweg8:temperature
1 Wetter.Proplanta:wind Buienradar:rainDataNow Wetter.Proplanta:weather
2 Wetter.Proplanta:wind TH.Kuhlmannweg8:temperature Wetter.Proplanta:weather Buienradar:rainDataNow myTwilight:azimuth
5 Treppenhaus.Markise:level
all TH.Kuhlmannweg8:temperature Wetter.Proplanta:wind Buienradar:rainDataNow Wetter.Proplanta:weather myTwilight:azimuth Treppenhaus.Markise:level
realtime:
0 13:00:00
1 22:00:00
2 07:12:20
time:
0 13:00:00
1 22:00:00
2 +600
timeCond:
0 0
1 0
2 5
timer:
0 0
1 0
2 0
timers:
5 2
trigger:
triggertime:
1526447540:
localtime 1526447540
hash:
1526468400:
localtime 1526468400
hash:
1526500800:
localtime 1526500800
hash:
uiState:
uiTable:
Attributes:
comment Umlaut in bewölkt durch einen Punkt (.) ersetzt.
Der Punkt kann alles mögliche sein, ein normales Zeichen, ein Umlaut oder auch ein Leerzeichen.
devStateIcon (cmd_1|cmd_6):fts_sunblind@red (cmd_2|cmd_3|cmd_7):fts_sunblind_0@gray cmd_4:fts_shutter_down@red cmd_5:fts_shutter_up@red
icon fts_sunblind
repeatsame 3:3:3:3:3:60
room CUL_HM,Mobile,Rollladen
wait 60:60:60:1:1:1
Viele Grüße Gisbert
Ich würde gerne nochmal auf das ursprüngliche Problem zurückkommen:
Mir scheint, dass es eine - meiner Meinung nach unglückliche Änderung - im Zusammenhang mit dem genannten Update im DOIF gibt:
Vorher konnte ein DOIF auch mit einem Kommentar beginnen
Seit dem Update passiert folgendes:
- Beim Reboot der FHEM-Installation wird die DOIF-Komponente nicht mehr als "FHEM" erkannt, sondern als "Perl" gekennzeichnet und verliert damit jegliche Funktion
- Bei Anlage / Änderung des DOIF in der GUI passiert das jedoch nicht.
Man kann also aus dem "Perl" wieder ein "FHEM" machen, indem man einfach den Editiermodus aktiviert und dann - ohne jegliche Änderung vorzunehmen - den "Modify"-Button betätigt.
Letzteres ist natürlich für den laufenden Betrieb kein gangbarer Workaround.
Lässt sich das Problem vielleicht wieder beheben?
Gruß
Stefan
Zitat von: Stefan Knoll am 27 Mai 2018, 11:45:16
Ich würde gerne nochmal auf das ursprüngliche Problem zurückkommen:
Mir scheint, dass es eine - meiner Meinung nach unglückliche Änderung - im Zusammenhang mit dem genannten Update im DOIF gibt:
Vorher konnte ein DOIF auch mit einem Kommentar beginnen
Seit dem Update passiert folgendes:
- Beim Reboot der FHEM-Installation wird die DOIF-Komponente nicht mehr als "FHEM" erkannt, sondern als "Perl" gekennzeichnet und verliert damit jegliche Funktion
- Bei Anlage / Änderung des DOIF in der GUI passiert das jedoch nicht.
Man kann also aus dem "Perl" wieder ein "FHEM" machen, indem man einfach den Editiermodus aktiviert und dann - ohne jegliche Änderung vorzunehmen - den "Modify"-Button betätigt.
Letzteres ist natürlich für den laufenden Betrieb kein gangbarer Workaround.
Lässt sich das Problem vielleicht wieder beheben?
Gruß
Stefan
Poste mal die Ausgabe von list von dem betroffenen DOIF.
So funktioniert's:
Internals:
DEF (
## =====================================
## HOCHFAHREN MIT ZUFÄLLIGER VERZÖGERUNG
## Beginn Bedingungen
( ## Beginn Änderungsbedingungen
## WENN DIE WETTERABHÄNGIGE HELLIGKEIT DEN SCHWELLWERT ÜBERSCHREITET
[mytwilight:twilight_weather] >= [twilight_weather_threshold_morning.dy:state]
) ## Ende Änderungsbedingungen
and
( ## Beginn Nebenbedingungen (müssen mit einem "?" beginnen)
[?kueche.rollo:pct] != 100 and
[?kueche.rollo.di:state] eq "cmd_6"
) ## Ende Nebenbedingungen
) ## Ende Bedingungen
(
set kueche.rollo 100
)
DOELSEIF
## =====================
## SOFORTIGES HOCHFAHREN
( ## Beginn Bedingungen
( ## Beginn Änderungsbedingungen
## WENN JEMAND TAGSÜBER HEIMKOMMT
[Anwesenheit] eq "present"
) ## Ende Änderungsbedingungen
and
( ## Beginn Nebenbedingungen (müssen mit einem "?" beginnen)
## Nebenbedingungen (müssen mit einem "?" beginnen)
[?mytwilight:twilight_weather] >= [twilight_weather_threshold_west.dy:state] and
[?kueche.rollo:pct] != 100 and
[?kueche.rollo.di:state] ne "cmd_4" and
[?kueche.rollo.di:state] ne "cmd_6"
) ## Ende Nebenbedingungen
) ## Ende Bedingungen
(
set kueche.rollo 100
)
DOELSEIF
## ======================
## VERZÖGERTES HOCHFAHREN
( ## Beginn Bedingungen
( ## Beginn Änderungsbedingungen
(
## HOCHFAHREN DES ROLLOS ZUR HEIZUNGSUNTERSTÜTZUNG
[garten.tempdiffsensor.west.high.low:temperature] >= [garten.tempdiff.lower.value.dy:state] and
[wohn.fh] eq "on"
) or (
## HOCHFAHREN DES ROLLOS WENN DIE BEDINGUNGEN ZUM SONNENABHÄNGIGEN RUNTERFAHREN NICHT MEHR GEGEBEN SIND
[garten.tempdiffsensor.west.high.low:temperature] < [garten.tempdiff.lower.value.dy:state] and
[garten.tempdiffsensor.west.low:temperature] < [outside_temperatur_upper_threshold_dy:state] and
(
[wohn.fh] ne "on" or
[?Anwesenheit] eq "present"
)
)
) ## Ende Änderungsbedingungen
and
( ## Beginn Nebenbedingungen (müssen mit einem "?" beginnen) [?kueche.rollo:pct] != 100 and
[?mytwilight:twilight_weather] == 100 and
[?kueche.rollo.di:state] ne "cmd_6" and
[?kueche.rollo.di:state] ne "cmd_1" and
[?kueche.rollo.di:state] ne "cmd_2"
) ## Ende Nebenbedingungen
) ## Ende Bedingungen
(
set kueche.rollo 100
)
DOELSEIF
## =================================
## VERZÖGERTES HERUNTERFAHREN ZU 1/2
( ## Beginn Bedingungen
( ## Beginn Änderungsbedingungen
## BEI ÜBERSCHREITUNG DES UNTEREN SCHWELLWERTS FÜR DIE SONNENINTENSITÄT
(
[garten.tempdiffsensor.west.high.low:temperature] >= [garten.tempdiff.lower.value.dy:state] or
[garten.tempdiffsensor.west.low:temperature] >= [outside_temperatur_upper_threshold_dy:state]
) and
[wohn.fh] eq "off" and
[Anwesenheit] eq "present"
) ## Ende Änderungsbedingungen
and
( ## Beginn Nebenbedingungen (müssen mit einem "?" beginnen)
[?mytwilight:twilight_weather] == 100 and
[?kueche.rollo:pct] != 50
) ## Ende Nebenbedingungen
) ## Ende Bedingungen
(
set kueche.rollo 50
)
DOELSEIF
## ========================================
## VERZÖGERTES VOLLSTÄNDIGES HERUNTERFAHREN
( ## Beginn Bedingungen
( ## Beginn Änderungsbedingungen
(
( ## BEI STARKER SONNENEINSTRAHLUNG WENN KEINER ZUHAUSE IST
[wohn.fh] eq "off" and
(
[garten.tempdiffsensor.west.high.low:temperature] >= [garten.tempdiff.upper.value.dy:state] or
[garten.tempdiffsensor.west.low:temperature] >= [outside_temperatur_upper_threshold_dy:state]
)
) or ( ## WENN ES DRAUSSEN SEHR KALT UND KEINER ZUHAUSE IST
[garten.tempdiffsensor.west.low:temperature] < [wohn.thermostat.climate:desired-temp] - [tempdiff_inside_outside_threshold_dy:state] and
[wohn.fh] eq "on"
)
) and
[Anwesenheit] eq "absent"
) ## Ende Änderungsbedingungen
and
( ## Beginn Nebenbedingungen (müssen mit einem "?" beginnen)
[?mytwilight:twilight_weather] == 100 and
[?kueche.rollo:pct] != 0
) ## Ende Nebenbedingungen
) ## Ende Bedingungen
(
set kueche.rollo 0
)
DOELSEIF
## ================================================================
## HERUNTERFAHREN DES ROLLOS ANHAND DER WETTERABHÄNGIGEN HELLIGKEIT
( ## Beginn Bedingungen
( ## Beginn Änderungsbedingungen
[mytwilight:twilight_weather] < [twilight_weather_threshold_west.dy:state]
) ## Ende Änderungsbedingungen
and
( ## Beginn Nebenbedingungen (müssen mit einem "?" beginnen)
[?12:01 - 23:59] and
[?mytwilight:twilight] != 100
) ## Ende Nebenbedingungen
) ## Ende Bedingungen
(
set kueche.rollo 0
)
MODEL FHEM
NAME kueche.rollo.di
NR 816
NTFY_ORDER 50-kueche.rollo.di
STATE cmd_3
TYPE DOIF
Helper:
DBLOG:
cmd:
logdb:
TIME 1527612121.73442
VALUE 3
cmd_event:
logdb:
TIME 1527612121.73442
VALUE garten.tempdiffsensor.west.high.low
cmd_nr:
logdb:
TIME 1527612121.73442
VALUE 3
state:
logdb:
TIME 1527612121.73442
VALUE cmd_3
wait_timer:
logdb:
TIME 1527612139.96711
VALUE 29.05.2018 18:57:19 cmd_3 garten.tempdiffsensor.west.high.low
READINGS:
2018-05-29 18:42:55 Device wohn.thermostat.climate
2018-05-29 18:42:01 cmd 3
2018-05-29 18:42:01 cmd_event garten.tempdiffsensor.west.high.low
2018-05-29 18:42:01 cmd_nr 3
2018-05-29 17:31:15 e_Anwesenheit_STATE present
2018-05-29 18:42:19 e_garten.tempdiffsensor.west.high.low_temperature 1.5
2018-05-29 18:42:19 e_garten.tempdiffsensor.west.low_temperature 28.4
2018-05-29 06:26:01 e_mytwilight_twilight_weather 100
2018-05-29 07:01:00 e_wohn.fh_STATE off
2018-05-29 18:42:55 e_wohn.thermostat.climate_desired-temp 22.5
2018-05-27 11:35:45 mode enabled
2018-05-29 18:42:01 state cmd_3
2018-05-29 04:16:10 timer_01_c06 29.05.2018 12:01:00
2018-05-29 04:16:10 timer_02_c06 29.05.2018 23:59:00
2018-05-29 18:42:19 wait_timer 29.05.2018 18:57:19 cmd_3 garten.tempdiffsensor.west.high.low
Regex:
condition:
0 ( ReadingValDoIf($hash,'mytwilight','twilight_weather') >= ReadingValDoIf($hash,'twilight_weather_threshold_morning.dy','state') ) and ( ReadingValDoIf($hash,'kueche.rollo','pct') != 100 and ReadingValDoIf($hash,'kueche.rollo.di','state') eq "cmd_6" )
1 ( InternalDoIf($hash,'Anwesenheit','STATE') eq "present" ) and ( ReadingValDoIf($hash,'mytwilight','twilight_weather') >= ReadingValDoIf($hash,'twilight_weather_threshold_west.dy','state') and ReadingValDoIf($hash,'kueche.rollo','pct') != 100 and ReadingValDoIf($hash,'kueche.rollo.di','state') ne "cmd_4" and ReadingValDoIf($hash,'kueche.rollo.di','state') ne "cmd_6" )
2 ( ( ReadingValDoIf($hash,'garten.tempdiffsensor.west.high.low','temperature') >= ReadingValDoIf($hash,'garten.tempdiff.lower.value.dy','state') and InternalDoIf($hash,'wohn.fh','STATE') eq "on" ) or ( ReadingValDoIf($hash,'garten.tempdiffsensor.west.high.low','temperature') < ReadingValDoIf($hash,'garten.tempdiff.lower.value.dy','state') and ReadingValDoIf($hash,'garten.tempdiffsensor.west.low','temperature') < ReadingValDoIf($hash,'outside_temperatur_upper_threshold_dy','state') and ( InternalDoIf($hash,'wohn.fh','STATE') ne "on" or InternalDoIf($hash,'Anwesenheit','STATE') eq "present" ) ) ) and ( ReadingValDoIf($hash,'mytwilight','twilight_weather') == 100 and ReadingValDoIf($hash,'kueche.rollo.di','state') ne "cmd_6" and ReadingValDoIf($hash,'kueche.rollo.di','state') ne "cmd_1" and ReadingValDoIf($hash,'kueche.rollo.di','state') ne "cmd_2" )
3 ( ( ReadingValDoIf($hash,'garten.tempdiffsensor.west.high.low','temperature') >= ReadingValDoIf($hash,'garten.tempdiff.lower.value.dy','state') or ReadingValDoIf($hash,'garten.tempdiffsensor.west.low','temperature') >= ReadingValDoIf($hash,'outside_temperatur_upper_threshold_dy','state') ) and InternalDoIf($hash,'wohn.fh','STATE') eq "off" and InternalDoIf($hash,'Anwesenheit','STATE') eq "present" ) and ( ReadingValDoIf($hash,'mytwilight','twilight_weather') == 100 and ReadingValDoIf($hash,'kueche.rollo','pct') != 50 )
4 ( ( ( InternalDoIf($hash,'wohn.fh','STATE') eq "off" and ( ReadingValDoIf($hash,'garten.tempdiffsensor.west.high.low','temperature') >= ReadingValDoIf($hash,'garten.tempdiff.upper.value.dy','state') or ReadingValDoIf($hash,'garten.tempdiffsensor.west.low','temperature') >= ReadingValDoIf($hash,'outside_temperatur_upper_threshold_dy','state') ) ) or ( ReadingValDoIf($hash,'garten.tempdiffsensor.west.low','temperature') < ReadingValDoIf($hash,'wohn.thermostat.climate','desired-temp') - ReadingValDoIf($hash,'tempdiff_inside_outside_threshold_dy','state') and InternalDoIf($hash,'wohn.fh','STATE') eq "on" ) ) and InternalDoIf($hash,'Anwesenheit','STATE') eq "absent" ) and ( ReadingValDoIf($hash,'mytwilight','twilight_weather') == 100 and ReadingValDoIf($hash,'kueche.rollo','pct') != 0 )
5 ( ReadingValDoIf($hash,'mytwilight','twilight_weather') < ReadingValDoIf($hash,'twilight_weather_threshold_west.dy','state') ) and ( DOIF_time($hash,0,1,$wday,$hms) and ReadingValDoIf($hash,'mytwilight','twilight') != 100 )
days:
devices:
0 mytwilight twilight_weather_threshold_morning.dy
1 Anwesenheit twilight_weather_threshold_west.dy
2 garten.tempdiffsensor.west.high.low garten.tempdiff.lower.value.dy wohn.fh garten.tempdiffsensor.west.low outside_temperatur_upper_threshold_dy
3 garten.tempdiffsensor.west.high.low garten.tempdiff.lower.value.dy garten.tempdiffsensor.west.low outside_temperatur_upper_threshold_dy wohn.fh Anwesenheit
4 wohn.fh garten.tempdiffsensor.west.high.low garten.tempdiff.upper.value.dy garten.tempdiffsensor.west.low outside_temperatur_upper_threshold_dy wohn.thermostat.climate tempdiff_inside_outside_threshold_dy Anwesenheit
5 mytwilight twilight_weather_threshold_west.dy
all mytwilight twilight_weather_threshold_morning.dy Anwesenheit twilight_weather_threshold_west.dy garten.tempdiffsensor.west.high.low garten.tempdiff.lower.value.dy wohn.fh garten.tempdiffsensor.west.low outside_temperatur_upper_threshold_dy garten.tempdiff.upper.value.dy wohn.thermostat.climate tempdiff_inside_outside_threshold_dy
do:
0:
0 set kueche.rollo 100
1:
0 set kueche.rollo 100
2:
0 set kueche.rollo 100
3:
0 set kueche.rollo 50
4:
0 set kueche.rollo 0
5:
0 set kueche.rollo 0
6:
helper:
DOIF_Readings_events
DOIF_eventas
event desired-temp: 22.5,humidity: 62,measured-temp: 24.1,T: 24.1 desired: 22.5,dewpoint: 16.4
globalinit 1
last_timer 2
sleepdevice garten.tempdiffsensor.west.high.low
sleepsubtimer 0
sleeptimer 2
timerdev garten.tempdiffsensor.west.low
timerevent temperature: 28.4
triggerDev wohn.thermostat.climate
timerevents:
temperature: 28.4
timereventsState:
temperature: 28.4
triggerEvents:
desired-temp: 22.5
humidity: 62
measured-temp: 24.1
T: 24.1 desired: 22.5
dewpoint: 16.4
triggerEventsState:
desired-temp: 22.5
humidity: 62
measured-temp: 24.1
state: T: 24.1 desired: 22.5
dewpoint: 16.4
internals:
1 Anwesenheit:STATE
2 wohn.fh:STATE Anwesenheit:STATE
3 wohn.fh:STATE Anwesenheit:STATE
4 wohn.fh:STATE Anwesenheit:STATE
all Anwesenheit:STATE wohn.fh:STATE
interval:
0 -1
1 0
intervalfunc:
intervaltimer:
itimer:
localtime:
0 1527588060
1 1527631140
perlblock:
readings:
0 mytwilight:twilight_weather twilight_weather_threshold_morning.dy:state
1 twilight_weather_threshold_west.dy:state
2 garten.tempdiffsensor.west.high.low:temperature garten.tempdiff.lower.value.dy:state garten.tempdiffsensor.west.low:temperature outside_temperatur_upper_threshold_dy:state
3 garten.tempdiffsensor.west.high.low:temperature garten.tempdiff.lower.value.dy:state garten.tempdiffsensor.west.low:temperature outside_temperatur_upper_threshold_dy:state
4 garten.tempdiffsensor.west.high.low:temperature garten.tempdiff.upper.value.dy:state garten.tempdiffsensor.west.low:temperature outside_temperatur_upper_threshold_dy:state wohn.thermostat.climate:desired-temp tempdiff_inside_outside_threshold_dy:state
5 mytwilight:twilight_weather twilight_weather_threshold_west.dy:state
all mytwilight:twilight_weather twilight_weather_threshold_morning.dy:state twilight_weather_threshold_west.dy:state garten.tempdiffsensor.west.high.low:temperature garten.tempdiff.lower.value.dy:state garten.tempdiffsensor.west.low:temperature outside_temperatur_upper_threshold_dy:state garten.tempdiff.upper.value.dy:state wohn.thermostat.climate:desired-temp tempdiff_inside_outside_threshold_dy:state
realtime:
0 12:01:00
1 23:59:00
time:
0 12:01:00
1 23:59:00
timeCond:
0 5
1 5
timer:
0 0
1 0
timers:
trigger:
triggertime:
1527631140:
localtime 1527631140
hash:
uiState:
uiTable:
Attributes:
DbLogInclude 1
alias Steuerung Küchenrollo
cmdpause 3600
disable 0
event-on-change-reading .*
event-on-update-reading .*
group Steuerungslogik
repeatsame 0:0:0:0:0:0
room Steuerung Rolladen
wait rand(600):0:900:900:900:rand(600)
Davor hat's so angefangen und das zuvor beschriebene Verhalten erzeugt (der einzige Unterschied ist die Position der ersten öffnenden Klammer):
Internals:
DEF
## =====================================
## HOCHFAHREN MIT ZUFÄLLIGER VERZÖGERUNG
(
## Beginn Bedingungen
( ## Beginn Änderungsbedingungen
## WENN DIE WETTERABHÄNGIGE HELLIGKEIT DEN SCHWELLWERT ÜBERSCHREITET
[mytwilight:twilight_weather] >= [twilight_weather_threshold_morning.dy:state]
) ## Ende Änderungsbedingungen
and
( ## Beginn Nebenbedingungen (müssen mit einem "?" beginnen)
[?kueche.rollo:pct] != ...
Dann benutzt du offenbar nicht die aktuelle DOIF-Version.
Gegenbeweis:
list test liefert:
Internals:
CFGFN
DEF
## =====================================
## HOCHFAHREN MIT ZUFÄLLIGER VERZÖGERUNG
(
## Beginn Bedingungen
( ## Beginn Änderungsbedingungen
## WENN DIE WETTERABHÄNGIGE HELLIGKEIT DEN SCHWELLWERT ÜBERSCHREITET
[mytwilight:twilight_weather] >= [twilight_weather_threshold_morning.dy:state]
) ## Ende Änderungsbedingungen
)
MODEL FHEM
NAME test
NR 592
NTFY_ORDER 50-test
STATE initialized
TYPE DOIF
READINGS:
...