Hallo,
ich habe ein neues DOIF erstellt:
define Balkonbeleuchtung_Tuer_DOIF DOIF ([MAX_177cdd] eq "opened" and [{sunset(-3600)}-{sunrise(+3600)}])\
(set Balkonbeleuchtung on) \
DOELSEIF\
([MAX_177cdd] eq "closed")\
(set Balkonbeleuchtung off)\
# DEF ([MAX_177cdd] eq "opened" and [{sunset(-3600)}-{sunrise(+3600)}])
#(set Balkonbeleuchtung on)
#DOELSEIF
#([MAX_177cdd] eq "closed")
#(set Balkonbeleuchtung off)
#
# FUUID 674755bd-f33f-8836-fbb3-76558fb1aadc7a77
# MODEL FHEM
# NAME Balkonbeleuchtung_Tuer_DOIF
# NOTIFYDEV MAX_177cdd,global
# NR 661
# NTFY_ORDER 50-Balkonbeleuchtung_Tuer_DOIF
# STATE initialized
# TYPE DOIF
# VERSION 28546 2024-02-23 20:11:05
# eventCount 1
# Helper:
# DBLOG:
# cmd:
# logdb:
# TIME 1732729997.50492
# VALUE 0
# mode:
# logdb:
# TIME 1732729997.50492
# VALUE enabled
# state:
# logdb:
# TIME 1732729997.50492
# VALUE initialized
# READINGS:
# 2024-11-27 18:53:17 cmd 0
# 2024-11-27 18:53:17 mode enabled
# 2024-11-27 18:53:17 state initialized
# 2024-11-27 18:53:17 timer_01_c01 28.11.2024 15:55:33
# 2024-11-27 18:53:17 timer_02_c01 28.11.2024 08:17:55
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# cond:
# MAX_177cdd:
# 0:
# &STATE ^MAX_177cdd$
# 1:
# &STATE ^MAX_177cdd$
# condition:
# 0 ::InternalDoIf($hash,'MAX_177cdd','STATE') eq "opened" and ::DOIF_time($hash,0,1,$wday,$hms)
# 1 ::InternalDoIf($hash,'MAX_177cdd','STATE') eq "closed"
# days:
# do:
# 0:
# 0 set Balkonbeleuchtung on
# 1:
# 0 set Balkonbeleuchtung off
# 2:
# helper:
# NOTIFYDEV MAX_177cdd,global
# globalinit 1
# last_timer 2
# sleeptimer -1
# internals:
# all MAX_177cdd:STATE
# interval:
# 0 -1
# 1 0
# intervalfunc:
# localtime:
# 0 1732805733
# 1 1732778275
# realtime:
# 0 15:55:33
# 1 08:17:55
# time:
# 0 {sunset(-3600)}
# 1 {sunrise(+3600)}
# timeCond:
# 0 0
# 1 0
# timer:
# 0 0
# 1 0
# timers:
# 0 0 1
# triggertime:
# 1732778275:
# localtime 1732778275
# hash:
# 1732805733:
# localtime 1732805733
# hash:
# uiState:
# uiTable:
#
setstate Balkonbeleuchtung_Tuer_DOIF initialized
setstate Balkonbeleuchtung_Tuer_DOIF 2024-11-27 18:53:17 cmd 0
setstate Balkonbeleuchtung_Tuer_DOIF 2024-11-27 18:53:17 mode enabled
setstate Balkonbeleuchtung_Tuer_DOIF 2024-11-27 18:53:17 state initialized
setstate Balkonbeleuchtung_Tuer_DOIF 2024-11-27 18:53:17 timer_01_c01 28.11.2024 15:55:33
setstate Balkonbeleuchtung_Tuer_DOIF 2024-11-27 18:53:17 timer_02_c01 28.11.2024 08:17:55
So weit funktioniert das auch, allerdings brauche ich ja, damit nicht auf die Sonnenauf und -untergangszeiten getriggert wird, noch ein Fragezeichen nach der eckigen Klammer vor dem Perl-Teil. Also quasi so:
([MAX_177cdd] eq "opened" and [?{sunset(-3600)}-{sunrise(+3600)}])
Wenn ich das einfüge, lässt sich das modifizierte DOIF aber nicht mehr abspeichern. Es kommt auch keine Fehlermeldung.Nur der Rahmen um "modify ...doif" wird rot.
Also habe ich ein "altes" DOIF mit ähnlichen Voraussetzungen aufgerufen, auf DEF geklickt, ohne was zu ändern und es ließ sich ebenfalls nicht speichern.
Hat sich da etwas geändert? Was muss ich tun, um nicht auf die Tageszeit zu triggern?
Gruß Mike
Ich kann deine Definition bei mir anlegen, mit Fragezeichen abändern und wieder speichern. Es muss mit deinem FHEM-System zusammenhängen.
Probiere es doch mal unten im Raw-Fenster. Musst da aber auf die "/" achten.
Uff.
Ich wüsste nicht mal, wo ich da anfangen müsste zu suchen...
Versucht habe ich jetzt über die RAW-Definition, da besteht das gleiche Problem, bei klick auf execute passiert nix.
Setze ich ein beliebiges Zeichen an die Stelle (getestet "x", "!" und "@") übernimmt er es klaglos. Egal ob in der Raw-def oder beim normalen Bearbeiten. Nur mit meinem Fragezeichen hat er ein Problem.
Fahre ich fhem runter und ändere es in der fhem.cfg geht es nach dem restart wie es soll... Aber das ist ja nicht die Weise, wie ich das in Zukunft machen will :-\
Hat jemand vielleicht nen wertvollen Tip, wo ich anfangen könnte zu suchen?
Gruß Mike
Probier erst mal
defmod di_test DOIF ([09:00-10:00])
wenn das klappt, dann
defmod di_test DOIF ([?09:00-10:00])
wenn das geht, dann veränderst du die Definition weiter bis du zu deiner Definition kommst oder der Fehler eintritt.
Dann solltest du die Problemquelle einkreisen können.
Zitat von: Damian am 28 November 2024, 15:19:54Probier erst mal
defmod di_test DOIF ([09:00-10:00])
wenn das klappt, dann
defmod di_test DOIF ([?09:00-10:00])
wenn das geht, dann veränderst du die Definition weiter bis du zu deiner Definition kommst oder der Fehler eintritt.
Dann solltest du die Problemquelle einkreisen können.
Das ist ja interessant!!!
Mit dem defmod und dem folgenden Befehl funktioniert es. Egal ob mit oder ohne Fragehaken, es funktioniert. Das hilft mir insofern schonmal weiter, dass ich ohne fhem-Neustart DOIFs mit Fragezeichen erstellen kann. Warum es nun mit diesem internen Editor nicht funktioniert weiß ich allerdings trotzdem nicht.
Ich danke Dir, das hat mir erst einmal sehr weitergeholfen. Wenn Du noch Ideen zu dem Problem hast, immer her damit.
Gruß Mike