Hauptmenü

DOIF speichert nicht

Begonnen von Salvi5, 27 November 2024, 19:09:39

Vorheriges Thema - Nächstes Thema

Salvi5

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

Damian

#1
Ich kann deine Definition bei mir anlegen, mit Fragezeichen abändern und wieder speichern. Es muss mit deinem FHEM-System zusammenhängen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Probiere es doch mal unten im Raw-Fenster. Musst da aber auf die "/" achten.

Salvi5

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

Damian

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.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Salvi5

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