Folgendes "Problem" (eher eine Unvollkommenheit) taucht hier beim Neustart von FHEM (aktuellste geupdatete Fassung) im Logfile auf:
2015.04.15 08:02:11 1: PERL WARNING: Use of uninitialized value $end in string gt at ./FHEM/98_DOIF.pm line 476.
2015.04.15 08:02:11 1: PERL WARNING: Use of uninitialized value $begin in string gt at ./FHEM/98_DOIF.pm line 476.
2015.04.15 08:02:11 1: PERL WARNING: Use of uninitialized value $begin in string ge at ./FHEM/98_DOIF.pm line 481.
Die DOIF-Devices sehen wie folgt aus und funktionieren auch:
define di_WZLampe DOIF ([[Sonnenuntergang]] or ([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power on) \
DOELSEIF ([[WZLampe_Ausschaltzeit_abends]] or ([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power off)
attr di_WZLampe room Wohnzimmer
define di_ZWDongle_0 DOIF ([ZWDongle_0] eq "disconnected") ({\
send_mail('mail@xxxxxxxxxx.net','FHEM ZWDongle di-Watchdog','ZWDongle_0 disconnected: DOIF-Watchdog is trying to reconnect....'),\
restart_usbip_7490\
})
define di_temperaturtest DOIF ([ZWave_wassersensor_keller_temperatur]) ({\
Log 1, "Notify Temperatur-Event Keller: OldValue:".OldValue("ZWave_wassersensor_keller_temperatur")." Value:".Value("ZWave_wassersensor_keller_temperatur")\
})
attr di_temperaturtest do always
attr di_temperaturtest room Keller,Tests
define di_LuefterKeller DOIF ([+02:00]) (set ZWave_luefter_waschkeller_power on-for-timer 600)
attr di_LuefterKeller do always
attr di_LuefterKeller room Keller,Tests
Vermutlich fehlt wieder irgendwo ein Semikolon oder ein Klämmerchen oder es eines überflüssig... ::) Jedenfalls war das schon bei anderen Fehlermeldungen des Rätsels Lösung. Leider finde ich diesmal die Ursache nicht und wäre daher für einen hilfreichen Tipp dankbar.
Zitat von: alpha1974 am 15 April 2015, 08:11:19
Folgendes "Problem" (eher eine Unvollkommenheit) taucht hier beim Neustart von FHEM (aktuellste geupdatete Fassung) im Logfile auf:
2015.04.15 08:02:11 1: PERL WARNING: Use of uninitialized value $end in string gt at ./FHEM/98_DOIF.pm line 476.
2015.04.15 08:02:11 1: PERL WARNING: Use of uninitialized value $begin in string gt at ./FHEM/98_DOIF.pm line 476.
2015.04.15 08:02:11 1: PERL WARNING: Use of uninitialized value $begin in string ge at ./FHEM/98_DOIF.pm line 481.
Die DOIF-Devices sehen wie folgt aus und funktionieren auch:
define di_WZLampe DOIF ([[Sonnenuntergang]] or ([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power on) \
DOELSEIF ([[WZLampe_Ausschaltzeit_abends]] or ([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power off)
attr di_WZLampe room Wohnzimmer
define di_ZWDongle_0 DOIF ([ZWDongle_0] eq "disconnected") ({\
send_mail('mail@xxxxxxxxxx.net','FHEM ZWDongle di-Watchdog','ZWDongle_0 disconnected: DOIF-Watchdog is trying to reconnect....'),\
restart_usbip_7490\
})
define di_temperaturtest DOIF ([ZWave_wassersensor_keller_temperatur]) ({\
Log 1, "Notify Temperatur-Event Keller: OldValue:".OldValue("ZWave_wassersensor_keller_temperatur")." Value:".Value("ZWave_wassersensor_keller_temperatur")\
})
attr di_temperaturtest do always
attr di_temperaturtest room Keller,Tests
define di_LuefterKeller DOIF ([+02:00]) (set ZWave_luefter_waschkeller_power on-for-timer 600)
attr di_LuefterKeller do always
attr di_LuefterKeller room Keller,Tests
Vermutlich fehlt wieder irgendwo ein Semikolon oder ein Klämmerchen oder es eines überflüssig... ::) Jedenfalls war das schon bei anderen Fehlermeldungen des Rätsels Lösung. Leider finde ich diesmal die Ursache nicht und wäre daher für einen hilfreichen Tipp dankbar.
Diese Fehlermeldung hatte ich auch schon. Ich vermute hier ist die Ursache:
define di_WZLampe DOIF ([[Sonnenuntergang]] or ([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power on) \
DOELSEIF ([[WZLampe_Ausschaltzeit_abends]] or ([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power off)
attr di_WZLampe room Wohnzimmer
Versuch mal den Fehler einzukreisen, indem Du die Bedingungen zum Testen vereinfachst:
define di_WZLampe DOIF ([[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power on)
attr di_WZLampe room Wohnzimmer
oder
define di_WZLampe DOIF ([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power on)
attr di_WZLampe room Wohnzimmer
evtl. ist Sonnenuntergang beim Starten noch nicht definiert?
Zitat von: flurin am 15 April 2015, 10:25:34
Diese Fehlermeldung hatte ich auch schon. Ich vermute hier ist die Ursache:
define di_WZLampe DOIF ([[Sonnenuntergang]] or ([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power on) \
DOELSEIF ([[WZLampe_Ausschaltzeit_abends]] or ([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power off)
attr di_WZLampe room Wohnzimmer
Versuch mal den Fehler einzukreisen, indem Du die Bedingungen zum Testen vereinfachst:
define di_WZLampe DOIF ([[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power on)
attr di_WZLampe room Wohnzimmer
oder
define di_WZLampe DOIF ([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power on)
attr di_WZLampe room Wohnzimmer
evtl. ist Sonnenuntergang beim Starten noch nicht definiert?
ja, mit der aktuellen Version des Moduls:
$Id: 98_DOIF.pm 8432 2015-04-13 19:34:11Z damian-s $
sollte in solchen Fällen beim entsprechendem Timer-Reading (timer_c...) ein Hinweis stehen, der Realtimer intern mit 00:00:00 belegt werden und damit die Perl-Warnung nicht mehr kommen.
Gruß
Damian
Zitat von: Damian am 15 April 2015, 11:08:52
ja, mit der aktuellen Version des Moduls:
$Id: 98_DOIF.pm 8432 2015-04-13 19:34:11Z damian-s $
sollte in solchen Fällen beim entsprechendem Timer-Reading (timer_c...) ein Hinweis stehen, der Realtimer intern mit 00:00:00 belegt werden und damit die Perl-Warnung nicht mehr kommen.
Gruß
Damian
Ich hatte bei mir in DOIF_time($$$$$) noch Folgendes eingefügt:
+ return undef if (!$end or !$begin);
if ($end gt $begin) {
if ($hms ge $begin and $hms lt $end) {
$ret=1;
}
...
oder return 0, ich erinnere mich nicht mehr.
Gruss
flurin
Hier liegt wohl irgendwo die Ursache:
([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power off)
Mit vorstehender Definition kommen die Warnungen, während das hier problemlos geht:
([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power off)
Einziger Unterschied ">" und "<="...
Merkwürdig: Bei [WZ_Helligkeit]<10 kommt auch keine Warnung, nur bei ">".
Zitat von: alpha1974 am 15 April 2015, 13:20:13
Hier liegt wohl irgendwo die Ursache:
([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power off)
Mit vorstehender Definition kommen die Warnungen, während das hier problemlos geht:
([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power off)
Einziger Unterschied ">" und "<="...
Merkwürdig: Bei [WZ_Helligkeit]<10 kommt auch keine Warnung, nur bei ">".
Vermutlich, weil die 1. Bedingung nicht wahr ist, dann wird die 2. Bedingung nicht geprüft.
was zeigt:
version 98_DOIF.pm
Poste folgende Lists:
list WZLampe_BeginnReaktionszeit_morgens
list Sonnenuntergang
Zitat von: flurin am 15 April 2015, 13:57:49
version 98_DOIF.pm
# $Id: 98_DOIF.pm 8432 2015-04-13 19:34:11Z damian-s $
list WZLampe_BeginnReaktionszeit_morgens
list Sonnenuntergang
Internals:
NAME WZLampe_BeginnReaktionszeit_morgens
NR 63
STATE 07:45:00
TYPE dummy
Readings:
2015-03-21 18:02:48 state 07:45:00
Attributes:
Internals:
NAME Sonnenuntergang
NR 65
STATE 20:08:54
TYPE dummy
Readings:
2015-04-15 00:05:00 state 20:08:54
Attributes:
Nur mit nachstehender Bedingung kommt auch keine Warnung:
(?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]) (set ZWave_stehlampe_wz_power on)
Noch zur Erläuterung (auch wenn es sich für den Kenner vermutlich von selbst erschließt): Die Lampe soll angehen
- bei Sonnenuntergang
- tagsüber (zwischen Reaktionszeit_morgens und Sonnenuntergang), wenn die WZ_Helligkeit <= 10 ist.
Zitat von: alpha1974 am 15 April 2015, 14:40:49
# $Id: 98_DOIF.pm 8432 2015-04-13 19:34:11Z damian-s $
list WZLampe_BeginnReaktionszeit_morgens
list Sonnenuntergang
Internals:
NAME WZLampe_BeginnReaktionszeit_morgens
NR 63
STATE 07:45:00
TYPE dummy
Readings:
2015-03-21 18:02:48 state 07:45:00
Attributes:
Internals:
NAME Sonnenuntergang
NR 65
STATE 20:08:54
TYPE dummy
Readings:
2015-04-15 00:05:00 state 20:08:54
Attributes:
Nur mit nachstehender Bedingung kommt auch keine Warnung:
(?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]) (set ZWave_stehlampe_wz_power on)
Noch zur Erläuterung (auch wenn es sich für den Kenner vermutlich von selbst erschließt): Die Lampe soll angehen
- bei Sonnenuntergang
- tagsüber (zwischen Reaktionszeit_morgens und Sonnenuntergang), wenn die WZ_Helligkeit <= 10 ist.
Ich vermute, Damian arbeitet bereits an einer Lösung :)
Aber wenn Du nicht warten willst, könntest folgendes ausprobieren:
in 98_DOIF.pm vor der Zeile 476 einfügen:
if (!$end or !$begin) {
Log (3,"begin = $begin - end = $end");
return 0;
}
"attr global verbose 3" sollte auf 3 gesetzt sein.
Deine ursprünglichen DOIF's wieder einbauen.
Nach der Änderung:
shutdown restart ausführen und in fhem-2015-04.log nachschauen.
Gesagt, getan. Mit den Änderungen und meinen ursprünglichen DOIF´s steht im Log:
2015.04.15 15:47:22 1: PERL WARNING: Use of uninitialized value $begin in concatenation (.) or string at ./FHEM/98_DOIF.pm line 477.
2015.04.15 15:47:22 1: PERL WARNING: Use of uninitialized value $end in concatenation (.) or string at ./FHEM/98_DOIF.pm line 477.
2015.04.15 15:47:22 3: begin = - end =
Bestätigt im Grunde Deine Annahme, dass begin und end nicht gesetzt sind? Komischerweise ist das kein Problem mit
(?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]) (set ZWave_stehlampe_wz_power on)
Bin mal gespannt, ob Damian noch einen Tipp hat. Jetzt erstmal wieder raus in die Sonne 8)
Zitat von: alpha1974 am 15 April 2015, 15:54:59
Gesagt, getan. Mit den Änderungen und meinen ursprünglichen DOIF´s steht im Log:
2015.04.15 15:47:22 1: PERL WARNING: Use of uninitialized value $begin in concatenation (.) or string at ./FHEM/98_DOIF.pm line 477.
2015.04.15 15:47:22 1: PERL WARNING: Use of uninitialized value $end in concatenation (.) or string at ./FHEM/98_DOIF.pm line 477.
2015.04.15 15:47:22 3: begin = - end =
Bestätigt im Grunde Deine Annahme, dass begin und end nicht gesetzt sind? Komischerweise ist das kein Problem mit
(?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]) (set ZWave_stehlampe_wz_power on)
Bin mal gespannt, ob Damian noch einen Tipp hat. Jetzt erstmal wieder raus in die Sonne 8)
ja, ich habe die Vorbelegung mit 00:00:00 programmiert, wenn das Reading oder Device nicht existiert, das kann ich zukünftig auch bei nicht gültigen Zeiten machen.
Gruß
Damian
Zitat von: Damian am 15 April 2015, 16:02:09
ja, ich habe die Vorbelegung mit 00:00:00 programmiert, wenn das Reading oder Device nicht existiert, das kann ich zukünftig auch bei nicht gültigen Zeiten machen.
Gruß
Damian
Ich möchte Dir keine Ratschläge geben aber ich würde Folgendes auch einbauen:
return 0 if (!$end or !$begin);
Zitat von: Damian am 15 April 2015, 16:02:09
ja, ich habe die Vorbelegung mit 00:00:00 programmiert, wenn das Reading oder Device nicht existiert, das kann ich zukünftig auch bei nicht gültigen Zeiten machen.
Gruß
Damian
Also ich kann den Fall bei mir nicht nachstellen, egal ob Device nicht existiert oder nicht belegt oder sonst wie belegt ist, Realtime wird immer mit 00:00:00 belegt und es gibt keine Warnings bei mir.
Du musst mal von solch einem Fall list von deinem DOIF-Modul hier posten.
Gruß
Damian
Das hier ist das Device, das die Warnungen erzeugt:
Internals:
DEF ([[Sonnenuntergang]] or ([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power on)
DOELSEIF ([[WZLampe_Ausschaltzeit_abends]] or ([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power off)
NAME di_WZLampe
NR 60
NTFY_ORDER 50-di_WZLampe
STATE cmd_2
TYPE DOIF
Readings:
2015-04-15 16:00:38 cmd_event WZ_Helligkeit
2015-04-15 16:00:38 cmd_nr 2
2015-04-15 18:39:00 e_WZ_Helligkeit_STATE 189
2015-04-15 16:00:38 state cmd_2
2015-04-15 18:39:00 timer_1_c1 15.04.2015 20:08:54
2015-04-15 18:39:00 timer_2_c1 16.04.2015 07:45:00
2015-04-15 18:39:00 timer_3_c1 15.04.2015 20:08:54
2015-04-15 18:39:00 timer_4_c2 15.04.2015 22:45:00
2015-04-15 18:39:00 timer_5_c2 16.04.2015 07:45:00
2015-04-15 18:39:00 timer_6_c2 15.04.2015 20:08:54
Condition:
0 DOIF_time_once($hash->{timer}{0},$wday,"") or (InternalDoIf('WZ_Helligkeit','STATE','')<=10 and DOIF_time($hash->{realtime}{1},$hash->{realtime}{2},$wday,$hms,""))
1 DOIF_time_once($hash->{timer}{3},$wday,"") or (InternalDoIf('WZ_Helligkeit','STATE','')>10 and DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,""))
Days:
Devices:
0 WZ_Helligkeit
1 WZ_Helligkeit
all WZ_Helligkeit
Do:
0 set ZWave_stehlampe_wz_power on
1 set ZWave_stehlampe_wz_power off
Helper:
last_timer 6
sleeptimer -1
Internals:
0 WZ_Helligkeit:STATE
1 WZ_Helligkeit:STATE
all WZ_Helligkeit:STATE
Itimer:
all Sonnenuntergang WZLampe_BeginnReaktionszeit_morgens WZLampe_Ausschaltzeit_abends
Readings:
Realtime:
0 20:08:54
1 07:45:00
2 20:08:54
3 22:45:00
4 07:45:00
5 20:08:54
State:
Time:
0 [Sonnenuntergang]
1 [WZLampe_BeginnReaktionszeit_morgens]
2 [Sonnenuntergang]
3 [WZLampe_Ausschaltzeit_abends]
4 [WZLampe_BeginnReaktionszeit_morgens]
5 [Sonnenuntergang]
Timecond:
0 0
1 0
2 0
3 1
4 1
5 1
Timer:
0 0
1 0
2 0
3 0
4 0
5 0
Timerfunc:
Timers:
0 0
1 3
Trigger:
Attributes:
room Wohnzimmer
Zitat von: alpha1974 am 15 April 2015, 18:40:17
Das hier ist das Device, das die Warnungen erzeugt:
Internals:
DEF ([[Sonnenuntergang]] or ([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power on)
DOELSEIF ([[WZLampe_Ausschaltzeit_abends]] or ([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power off)
NAME di_WZLampe
NR 60
NTFY_ORDER 50-di_WZLampe
STATE cmd_2
TYPE DOIF
Readings:
2015-04-15 16:00:38 cmd_event WZ_Helligkeit
2015-04-15 16:00:38 cmd_nr 2
2015-04-15 18:39:00 e_WZ_Helligkeit_STATE 189
2015-04-15 16:00:38 state cmd_2
2015-04-15 18:39:00 timer_1_c1 15.04.2015 20:08:54
2015-04-15 18:39:00 timer_2_c1 16.04.2015 07:45:00
2015-04-15 18:39:00 timer_3_c1 15.04.2015 20:08:54
2015-04-15 18:39:00 timer_4_c2 15.04.2015 22:45:00
2015-04-15 18:39:00 timer_5_c2 16.04.2015 07:45:00
2015-04-15 18:39:00 timer_6_c2 15.04.2015 20:08:54
Condition:
0 DOIF_time_once($hash->{timer}{0},$wday,"") or (InternalDoIf('WZ_Helligkeit','STATE','')<=10 and DOIF_time($hash->{realtime}{1},$hash->{realtime}{2},$wday,$hms,""))
1 DOIF_time_once($hash->{timer}{3},$wday,"") or (InternalDoIf('WZ_Helligkeit','STATE','')>10 and DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,""))
Days:
Devices:
0 WZ_Helligkeit
1 WZ_Helligkeit
all WZ_Helligkeit
Do:
0 set ZWave_stehlampe_wz_power on
1 set ZWave_stehlampe_wz_power off
Helper:
last_timer 6
sleeptimer -1
Internals:
0 WZ_Helligkeit:STATE
1 WZ_Helligkeit:STATE
all WZ_Helligkeit:STATE
Itimer:
all Sonnenuntergang WZLampe_BeginnReaktionszeit_morgens WZLampe_Ausschaltzeit_abends
Readings:
Realtime:
0 20:08:54
1 07:45:00
2 20:08:54
3 22:45:00
4 07:45:00
5 20:08:54
State:
Time:
0 [Sonnenuntergang]
1 [WZLampe_BeginnReaktionszeit_morgens]
2 [Sonnenuntergang]
3 [WZLampe_Ausschaltzeit_abends]
4 [WZLampe_BeginnReaktionszeit_morgens]
5 [Sonnenuntergang]
Timecond:
0 0
1 0
2 0
3 1
4 1
5 1
Timer:
0 0
1 0
2 0
3 0
4 0
5 0
Timerfunc:
Timers:
0 0
1 3
Trigger:
Attributes:
room Wohnzimmer
Also hier sind alle Realtimer korrekt belegt, die können keine Warnings bringen.
Gruß
Damian
Hmmm... ich habe das DOIF-Device gerade mal gelöscht und alle Warnungen sind verschwunden... Mysteriös!
Zitat von: alpha1974 am 15 April 2015, 19:16:23
Hmmm... ich habe das DOIF-Device gerade mal gelöscht und alle Warnungen sind verschwunden... Mysteriös!
ja, damit ich etwas analysieren kann, musst du es schaffen ein list vom DOIF-Modul zu liefern, wo ein Realtimer nicht belegt ist.
Gruß
Damian
Herzlichen Dank für Eure Hilfe!!! Ich probiere weiter herum, befürchte aber, dass ich es im laufenden Betrieb nicht nachgestellt bekomme, da die Warnungen nur beim Start von FHEM auftauchen.
Zitat von: alpha1974 am 15 April 2015, 20:30:34
Herzlichen Dank für Eure Hilfe!!! Ich probiere weiter herum, befürchte aber, dass ich es im laufenden Betrieb nicht nachgestellt bekomme, da die Warnungen nur beim Start von FHEM auftauchen.
Hast du die fhem.cfg manuell editiert?
Womöglich steht dann die Definition der Dummys hinter dem DOIF-Modul.
Wenn man alles über die Weboberfläche definiert, dann kann so etwas nicht passieren, weil sich DOIF nicht definieren lässt, wenn die Dummys noch nicht existieren.
Gruß
Damian
Zitat von: Damian am 15 April 2015, 21:25:55
Hast du die fhem.cfg manuell editiert?
Womöglich steht dann die Definition der Dummys hinter dem DOIF-Modul.
Wenn man alles über die Weboberfläche definiert, dann kann so etwas nicht passieren, weil sich DOIF nicht definieren lässt, wenn die Dummys noch nicht existieren.
Gruß
Damian
Was jedoch vorkommen kann, ist das ein Dummy nach der Definition vom DOIF fälschlicherweise auf 10 statt 10:00 gesetzt wird.
Gruss
flurin
Die Reihenfolge der Definitionen müsste eigentlich stimmen (sicher bin ich mir nicht). Vielleicht resultiert das Problem daraus, dass "Sonnenaufgang" und "Sonnenuntergang" dynamisch über ein at-Device (sun_riseSet_timer) gesetzt werden. Allerdings sind beide Dummys direkt nach dem FHEM-Start richtig gesetzt.
Hier die einschlägigen Code-Schnipsel auf fhem.cfg:
define WZLampe_Ausschaltzeit_abends dummy
define WZLampe_BeginnReaktionszeit_morgens dummy
define Sonnenaufgang dummy
define Sonnenuntergang dummy
define sun_riseSet_timer at *00:05:00 { my $s = sunrise();; fhem("set Sonnenaufgang $s");; $s = sunset_abs('HORIZON=2',0,"16:00","22:00");; fhem("set Sonnenuntergang $s");; }
define WZ_Helligkeit readingsProxy ZWave_multisensor:luminance
attr WZ_Helligkeit alias Helligkeit (Lux)
attr WZ_Helligkeit fp_FHEMServer 151,191,1,,
attr WZ_Helligkeit group Wohnzimmer-Sensoren
attr WZ_Helligkeit room Wohnzimmer
attr WZ_Helligkeit stateFormat { substr(ReadingsVal("ZWave_multisensor","luminance",0),0,length(ReadingsVal("ZWave_multisensor","luminance",0))-4) }
define di_WZLampe DOIF (([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) or [[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power on) \
DOELSEIF ([[WZLampe_Ausschaltzeit_abends]] or ([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power off)
attr di_WZLampe room Wohnzimmer
Zitat von: alpha1974 am 16 April 2015, 09:05:58
Die Reihenfolge der Definitionen müsste eigentlich stimmen (sicher bin ich mir nicht). Vielleicht resultiert das Problem daraus, dass "Sonnenaufgang" und "Sonnenuntergang" dynamisch über ein at-Device (sun_riseSet_timer) gesetzt werden. Allerdings sind beide Dummys direkt nach dem FHEM-Start richtig gesetzt.
Hier die einschlägigen Code-Schnipsel auf fhem.cfg:
define WZLampe_Ausschaltzeit_abends dummy
define WZLampe_BeginnReaktionszeit_morgens dummy
define Sonnenaufgang dummy
define Sonnenuntergang dummy
define sun_riseSet_timer at *00:05:00 { my $s = sunrise();; fhem("set Sonnenaufgang $s");; $s = sunset_abs('HORIZON=2',0,"16:00","22:00");; fhem("set Sonnenuntergang $s");; }
define WZ_Helligkeit readingsProxy ZWave_multisensor:luminance
attr WZ_Helligkeit alias Helligkeit (Lux)
attr WZ_Helligkeit fp_FHEMServer 151,191,1,,
attr WZ_Helligkeit group Wohnzimmer-Sensoren
attr WZ_Helligkeit room Wohnzimmer
attr WZ_Helligkeit stateFormat { substr(ReadingsVal("ZWave_multisensor","luminance",0),0,length(ReadingsVal("ZWave_multisensor","luminance",0))-4) }
define di_WZLampe DOIF (([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) or [[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power on) \
DOELSEIF ([[WZLampe_Ausschaltzeit_abends]] or ([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power off)
attr di_WZLampe room Wohnzimmer
Für einen ähnlichen Anwendungsfall habe ich eine KISS-Lösung:
define di_floorlamp_motion DOIF ([multi_living:luminance:d] < 15 and [multi_living:?open]) \
({myLog("Living: Motion detected")}, set dining_floorlamp on-for-timer 60)
attr di_floorlamp_motion do always
Es wird unabhängig von der Zeit bei luminance < 15 eine Lampe 60 sec lang eingeschaltet.
Gruss
flurin
Zitat von: alpha1974 am 16 April 2015, 09:05:58
Die Reihenfolge der Definitionen müsste eigentlich stimmen (sicher bin ich mir nicht). Vielleicht resultiert das Problem daraus, dass "Sonnenaufgang" und "Sonnenuntergang" dynamisch über ein at-Device (sun_riseSet_timer) gesetzt werden. Allerdings sind beide Dummys direkt nach dem FHEM-Start richtig gesetzt.
Hier die einschlägigen Code-Schnipsel auf fhem.cfg:
define WZLampe_Ausschaltzeit_abends dummy
define WZLampe_BeginnReaktionszeit_morgens dummy
define Sonnenaufgang dummy
define Sonnenuntergang dummy
define sun_riseSet_timer at *00:05:00 { my $s = sunrise();; fhem("set Sonnenaufgang $s");; $s = sunset_abs('HORIZON=2',0,"16:00","22:00");; fhem("set Sonnenuntergang $s");; }
define WZ_Helligkeit readingsProxy ZWave_multisensor:luminance
attr WZ_Helligkeit alias Helligkeit (Lux)
attr WZ_Helligkeit fp_FHEMServer 151,191,1,,
attr WZ_Helligkeit group Wohnzimmer-Sensoren
attr WZ_Helligkeit room Wohnzimmer
attr WZ_Helligkeit stateFormat { substr(ReadingsVal("ZWave_multisensor","luminance",0),0,length(ReadingsVal("ZWave_multisensor","luminance",0))-4) }
define di_WZLampe DOIF (([WZ_Helligkeit]<=10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) or [[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power on) \
DOELSEIF ([[WZLampe_Ausschaltzeit_abends]] or ([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])) (set ZWave_stehlampe_wz_power off)
attr di_WZLampe room Wohnzimmer
So richtig kann ich es nicht nachvollziehen. Die Realtimer werden erst beim Hochfahren gesetzt, wenn die Initialisierungsphase abgeschlossen ist und davor können eigentlich keine Trigger kommen, die dazu führen dass die Warnings kommen, weil die Realtimer noch nicht gesetzt wären.
Gruß
Damian
Zitat von: flurin am 16 April 2015, 10:20:29
Für einen ähnlichen Anwendungsfall habe ich eine KISS-Lösung:
define di_floorlamp_motion DOIF ([multi_living:luminance:d] < 15 and [multi_living:?open]) \
({myLog("Living: Motion detected")}, set dining_floorlamp on-for-timer 60)
attr di_floorlamp_motion do always
Es wird unabhängig von der Zeit bei luminance < 15 eine Lampe 60 sec lang eingeschaltet.
Vielleicht muss ich die Verwendung der Dummy-Devices nochmals überdenken. Mein Anwendungsfall weicht etwas ab: Hier soll jeden Abend nach Sonnenuntergang bis 22:45h die Beleuchtung an sein und tagsüber solange die Helligkeit unter 10 liegt. Hintergrund ist eine simple Anwesenheitssimulation: Wenn es draußen dunkel ist, soll drinnen eine Lampe eingeschaltet sein und zwar - als "Zwangsbeleuchtung" - unabhängig davon, ob der Bewegungsmelder anschlägt.
Zitat von: Damian am 16 April 2015, 19:13:16
So richtig kann ich es nicht nachvollziehen. Die Realtimer werden erst beim Hochfahren gesetzt, wenn die Initialisierungsphase abgeschlossen ist und davor können eigentlich keine Trigger kommen, die dazu führen dass die Warnings kommen, weil die Realtimer noch nicht gesetzt wären.
Ich habe mal die fhem.cfg angehängt, vielleicht ergibt sich daraus für das geschulte Auge noch etwas Hilfreicheres.
Zitat von: alpha1974 am 16 April 2015, 19:58:51
Ich habe mal die fhem.cfg angehängt, vielleicht ergibt sich daraus für das geschulte Auge noch etwas Hilfreicheres.
Es wäre interessant zu wissen, wann genau die Warnings im Log kommen, welche Logs kommen zuvor und welche danach. Damit könnte man den Zeitpunkt besser einstufen.
Gruß
Damian
Zitat von: alpha1974 am 16 April 2015, 19:56:27
Vielleicht muss ich die Verwendung der Dummy-Devices nochmals überdenken. Mein Anwendungsfall weicht etwas ab: Hier soll jeden Abend nach Sonnenuntergang bis 22:45h die Beleuchtung an sein und tagsüber solange die Helligkeit unter 10 liegt. Hintergrund ist eine simple Anwesenheitssimulation: Wenn es draußen dunkel ist, soll drinnen eine Lampe eingeschaltet sein und zwar - als "Zwangsbeleuchtung" - unabhängig davon, ob der Bewegungsmelder anschlägt.
Evtl. hilft Dir eine solche Aufteilung weiter (ungetestet):
define di_abend DOIF ([Sonnenuntergang]-[WZLampe_Ausschaltzeit_abends])
attr di_abend cmdState on|off
define di_tag DOIF ([WZ_Helligkeit] < 10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])
attr di_tag cmdState on|off
define di_WZLampe DOIF ([di_abend:?on] or [di_tag:?on])
(set ZWave_stehlampe_wz_power on)
DOELSE
(set ZWave_stehlampe_wz_power off)
attr di_WZLampe do always
Gruss
flurin
Zitat von: Damian am 16 April 2015, 20:04:25
Es wäre interessant zu wissen, wann genau die Warnings im Log kommen, welche Logs kommen zuvor und welche danach. Damit könnte man den Zeitpunkt besser einstufen.
Gruß
Damian
Also ich habe jetzt alles bei mir nachgebaut: Dummys definiert, DOIF definiert, Belegung der Dummys sogar in der fhem.save gelöscht, damit sie nicht belegt sind. Das Ergebnis nach dem Hochfahren:
I
nternals:
DEF (([hell]>0 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) or [[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power on)
NAME di_WZLampe
NR 409
NTFY_ORDER 50-di_WZLampe
STATE cmd_1
TYPE DOIF
Readings:
2015-04-16 20:32:13 cmd_event hell
2015-04-16 20:32:13 cmd_nr 1
2015-04-16 20:42:35 e_hell_STATE 6.3
2015-04-16 20:32:13 error set ZWave_stehlampe_wz_power on: Please define ZWave_stehlampe_wz_power first
2015-04-16 20:32:13 state cmd_1
2015-04-16 20:38:36 timer_1_c1 error: Wrong timespec ???: either HH:MM:SS or {perlcode}
2015-04-16 20:38:36 timer_2_c1 error: Wrong timespec ???: either HH:MM:SS or {perlcode}
2015-04-16 20:38:36 timer_3_c1 error: Wrong timespec ???: either HH:MM:SS or {perlcode}
Condition:
0 (InternalDoIf('hell','STATE','')>0 and DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")) or DOIF_time_once($hash->{timer}{2},$wday,"")
Devices:
0 hell
all hell
Do:
0 set ZWave_stehlampe_wz_power on
Helper:
last_timer 3
sleeptimer -1
Internals:
0 hell:STATE
all hell:STATE
Itimer:
all WZLampe_BeginnReaktionszeit_morgens Sonnenuntergang
Readings:
Realtime:
0 00:00:00
1 00:00:00
2 00:00:00
State:
Time:
0 [WZLampe_BeginnReaktionszeit_morgens]
1 [Sonnenuntergang]
2 [Sonnenuntergang]
Timecond:
0 0
1 0
2 0
Timer:
0 0
1 0
2 0
Timerfunc:
Timers:
0 2
Trigger:
Attributes:
Alles verhält sich hier, wie von mir erwartet, Fehlermeldungen bei den Timern, Realtimer mit 00:00:00 belegt, Bedingung wurde auch schon überprüft, weil Heilligkeitssensor gesendet hat - von Warning allerdings keine Spur.
Gruß
Damian
Sehr bizarr, aber mit meiner fhem.cfg kommen regelmäßig nach jedem "shutdown restart" dieselben Warnings. Hier die vollständigen Einträge im Logfile nach einem shutdown restart:
2015.04.17 10:14:37 0: Server shutdown
2015.04.17 10:14:39 1: Including fhem.cfg
2015.04.17 10:14:39 3: telnetPort: port 7072 opened
2015.04.17 10:14:39 3: WEB: port 8083 opened
2015.04.17 10:14:39 3: WEBphone: port 8084 opened
2015.04.17 10:14:39 3: WEBtablet: port 8085 opened
2015.04.17 10:14:40 2: eventTypes: loaded 756 events from ./log/eventTypes.txt
2015.04.17 10:14:40 3: Opening ZWDongle_0 device /dev/ttyACM0
2015.04.17 10:14:40 3: Setting ZWDongle_0 baudrate to 115200
2015.04.17 10:14:40 3: ZWDongle_0 device opened
2015.04.17 10:14:41 1: Including ./log/fhem.save
2015.04.17 10:14:41 1: PERL WARNING: Use of uninitialized value $end in string gt at ./FHEM/98_DOIF.pm line 476.
2015.04.17 10:14:41 1: PERL WARNING: Use of uninitialized value $begin in string gt at ./FHEM/98_DOIF.pm line 476.
2015.04.17 10:14:41 1: PERL WARNING: Use of uninitialized value $begin in string ge at ./FHEM/98_DOIF.pm line 481.
2015.04.17 10:14:41 3: ZWave reading config for fibaro/fgwpe.xml
2015.04.17 10:14:41 2: ZWave set ZWave_stehlampe_wz_power off
Ich habe jetzt mal Dein Beispiel verkürzt (ohne "or [[Sonnenuntergang]]") und bekomme weiterhin Warnings, wobei der Wert für die Helligkeit noch gespeichert war (noch keine aktuelle Meldung des Sensors):
DEF ([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power off)
NAME di_WZLampe
NR 60
NTFY_ORDER 50-di_WZLampe
STATE cmd_1
TYPE DOIF
Readings:
2015-04-17 10:14:41 cmd_event WZ_Helligkeit
2015-04-17 10:14:41 cmd_nr 1
2015-04-17 10:14:41 e_WZ_Helligkeit_STATE 189
2015-04-17 10:14:41 state cmd_1
2015-04-17 10:14:41 timer_1_c1 18.04.2015 07:45:00
2015-04-17 10:14:41 timer_2_c1 17.04.2015 20:12:06
Condition:
0 InternalDoIf('WZ_Helligkeit','STATE','')>10 and DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")
Days:
Devices:
0 WZ_Helligkeit
all WZ_Helligkeit
Do:
0 set ZWave_stehlampe_wz_power off
Helper:
last_timer 2
sleeptimer -1
Internals:
0 WZ_Helligkeit:STATE
all WZ_Helligkeit:STATE
Itimer:
all WZLampe_BeginnReaktionszeit_morgens Sonnenuntergang
Readings:
Realtime:
0 07:45:00
1 20:12:06
State:
Time:
0 [WZLampe_BeginnReaktionszeit_morgens]
1 [Sonnenuntergang]
Timecond:
0 0
1 0
Timer:
0 0
1 0
Timerfunc:
Trigger:
Attributes:
room Wohnzimmer
Zitat von: flurin am 16 April 2015, 20:24:43
Evtl. hilft Dir eine solche Aufteilung weiter (ungetestet):
define di_abend DOIF ([Sonnenuntergang]-[WZLampe_Ausschaltzeit_abends])
attr di_abend cmdState on|off
define di_tag DOIF ([WZ_Helligkeit] < 10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]])
attr di_tag cmdState on|off
define di_WZLampe DOIF ([di_abend:?on] or [di_tag:?on])
(set ZWave_stehlampe_wz_power on)
DOELSE
(set ZWave_stehlampe_wz_power off)
attr di_WZLampe do always
Sehr gute Idee, vielen Dank!!! Das probiere ich die Tage mal aus. Würde es übersichtlicher machen, wobei meine Lösung ja auch funktioniert (bis auf die Warnings).
Zitat von: alpha1974 am 17 April 2015, 10:23:33
Sehr bizarr, aber mit meiner fhem.cfg kommen regelmäßig nach jedem "shutdown restart" dieselben Warnings. Hier die vollständigen Einträge im Logfile nach einem shutdown restart:
2015.04.17 10:14:37 0: Server shutdown
2015.04.17 10:14:39 1: Including fhem.cfg
2015.04.17 10:14:39 3: telnetPort: port 7072 opened
2015.04.17 10:14:39 3: WEB: port 8083 opened
2015.04.17 10:14:39 3: WEBphone: port 8084 opened
2015.04.17 10:14:39 3: WEBtablet: port 8085 opened
2015.04.17 10:14:40 2: eventTypes: loaded 756 events from ./log/eventTypes.txt
2015.04.17 10:14:40 3: Opening ZWDongle_0 device /dev/ttyACM0
2015.04.17 10:14:40 3: Setting ZWDongle_0 baudrate to 115200
2015.04.17 10:14:40 3: ZWDongle_0 device opened
2015.04.17 10:14:41 1: Including ./log/fhem.save
2015.04.17 10:14:41 1: PERL WARNING: Use of uninitialized value $end in string gt at ./FHEM/98_DOIF.pm line 476.
2015.04.17 10:14:41 1: PERL WARNING: Use of uninitialized value $begin in string gt at ./FHEM/98_DOIF.pm line 476.
2015.04.17 10:14:41 1: PERL WARNING: Use of uninitialized value $begin in string ge at ./FHEM/98_DOIF.pm line 481.
2015.04.17 10:14:41 3: ZWave reading config for fibaro/fgwpe.xml
2015.04.17 10:14:41 2: ZWave set ZWave_stehlampe_wz_power off
Ich habe jetzt mal Dein Beispiel verkürzt (ohne "or [[Sonnenuntergang]]") und bekomme weiterhin Warnings, wobei der Wert für die Helligkeit noch gespeichert war (noch keine aktuelle Meldung des Sensors):
DEF ([WZ_Helligkeit]>10 and [?[WZLampe_BeginnReaktionszeit_morgens]-[Sonnenuntergang]]) (set ZWave_stehlampe_wz_power off)
NAME di_WZLampe
NR 60
NTFY_ORDER 50-di_WZLampe
STATE cmd_1
TYPE DOIF
Readings:
2015-04-17 10:14:41 cmd_event WZ_Helligkeit
2015-04-17 10:14:41 cmd_nr 1
2015-04-17 10:14:41 e_WZ_Helligkeit_STATE 189
2015-04-17 10:14:41 state cmd_1
2015-04-17 10:14:41 timer_1_c1 18.04.2015 07:45:00
2015-04-17 10:14:41 timer_2_c1 17.04.2015 20:12:06
Condition:
0 InternalDoIf('WZ_Helligkeit','STATE','')>10 and DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")
Days:
Devices:
0 WZ_Helligkeit
all WZ_Helligkeit
Do:
0 set ZWave_stehlampe_wz_power off
Helper:
last_timer 2
sleeptimer -1
Internals:
0 WZ_Helligkeit:STATE
all WZ_Helligkeit:STATE
Itimer:
all WZLampe_BeginnReaktionszeit_morgens Sonnenuntergang
Readings:
Realtime:
0 07:45:00
1 20:12:06
State:
Time:
0 [WZLampe_BeginnReaktionszeit_morgens]
1 [Sonnenuntergang]
Timecond:
0 0
1 0
Timer:
0 0
1 0
Timerfunc:
Trigger:
Attributes:
room Wohnzimmer
Offensichtlich kommt ein Event von e_WZ_Helligkeit_STATE paar Millisekunden bevor das DOIF-Moduls per global:INIT getrigger wird.
Ich denke, ich werde zukünftig die Vorbelegung mit 00:00:00 rausnehmen und den Vorschlag von flurin in der DOIF_Timer-Funktion einbauen, dann sind wir auf der sicheren Seite und dann ist die Bedingung in solch einem Fall auch immer false.
Gruß
Damian
Zitat von: Damian am 17 April 2015, 11:30:50
Offensichtlich kommt ein Event von e_WZ_Helligkeit_STATE paar Millisekunden bevor das DOIF-Moduls per global:INIT getrigger wird.
WZ_Helligkeit ist ein readingsProxy, der nichts anderes machen soll, als den Wert vom Helligkeitssensor "umzuformatieren": Der Sensor liefert "130 Lux" und WZ_Helligkeit macht daraus 130.
Zitat von: alpha1974 am 17 April 2015, 12:02:25
WZ_Helligkeit ist ein readingsProxy, der nichts anderes machen soll, als den Wert vom Helligkeitssensor "umzuformatieren": Der Sensor liefert "130 Lux" und WZ_Helligkeit macht daraus 130.
ja, was mich erstaunt ist, dass offenbar Events bereits kommen, bevor die Initialisierung (Trigger GLOBAL:INITIALIZED) abgeschlossen ist.
Gruß
Damian
Zitat von: alpha1974 am 17 April 2015, 12:02:25
WZ_Helligkeit ist ein readingsProxy, der nichts anderes machen soll, als den Wert vom Helligkeitssensor "umzuformatieren": Der Sensor liefert "130 Lux" und WZ_Helligkeit macht daraus 130.
es geht einfacher:
[ZWave_multisensor:luminanace:d]
Du kannst die Helligkeit direkt vom Sensor lesen und mit :d filtern, damit "Lux" nicht stört.
meine Sensoren von Dirk liefern alle...
luminosity
da stehen auch nur die Werte hinter ohne Lux
Zitat von: moonsorrox am 17 April 2015, 14:42:15
meine Sensoren von Dirk liefern alle...
luminosity
da stehen auch nur die Werte hinter ohne Lux
Ich meine, es handle sich hier um einen Fibaro-Sensor und der liefert XXX Lux
Zitat von: flurin am 17 April 2015, 14:54:08
Ich meine, es handle sich hier um ein Fibaro-Sensor und der Liefert XXX Lux
OK dann bin ich falsch, sorry ;)
Zitat von: flurin am 17 April 2015, 14:36:07
es geht einfacher:
[ZWave_multisensor:luminanace:d]
Du kannst die Helligkeit direkt vom Sensor lesen und mit :d filtern, damit "Lux" nicht stört.
Ich habe deinen Vorschlag jetzt mal in das DOIF-Device, das die Warnings erzeugt, eingebaut = keine Warnings mehr.
Für alle Mitleser, die sich ebenso wie ich fragten, was das ":d" bedeutet, ist es unter http://fhem.de/commandref_DE.html#DOIF (http://fhem.de/commandref_DE.html#DOIF) erklärt:
Filtern nach Zahlen
Es soll aus einem Reading, das z. B. ein Prozentzeichen beinhaltet, nur der Zahlenwert für den Vergleich genutzt werden:
define di_heating DOIF ([adjusting:actuator:d] < 10) (set heating off) DOELSE (set heating on)
Das geht dann aber nur in DOIF-Devices, oder?
Zitat von: flurin am 17 April 2015, 14:54:08
Ich meine, es handle sich hier um ein Fibaro-Sensor und der Liefert XXX Lux
So ist es :)
Zitat von: alpha1974 am 17 April 2015, 15:06:10
Das geht dann aber nur in DOIF-Devices, oder?
Ja
Die Meldungen sind seit einiger Zeit bei mir ebenfalls:
Es schadet zwar offenbar nicht, aber ist halt unschön. Kann man da was machen?
2015.06.16 19:37:34 1: PERL WARNING: Use of uninitialized value $end in string gt at ./FHEM/98_DOIF.pm line 476.
2015.06.16 19:37:34 1: PERL WARNING: Use of uninitialized value $begin in string gt at ./FHEM/98_DOIF.pm line 476.
2015.06.16 19:37:34 1: PERL WARNING: Use of uninitialized value $begin in string ge at ./FHEM/98_DOIF.pm line 481.
Zitat von: Invers am 16 Juni 2015, 19:54:46
Die Meldungen sind seit einiger Zeit bei mir ebenfalls:
Es schadet zwar offenbar nicht, aber ist halt unschön. Kann man da was machen?
2015.06.16 19:37:34 1: PERL WARNING: Use of uninitialized value $end in string gt at ./FHEM/98_DOIF.pm line 476.
2015.06.16 19:37:34 1: PERL WARNING: Use of uninitialized value $begin in string gt at ./FHEM/98_DOIF.pm line 476.
2015.06.16 19:37:34 1: PERL WARNING: Use of uninitialized value $begin in string ge at ./FHEM/98_DOIF.pm line 481.
Das Problem habe ich so gelöst: in 98_DOIF.pm vor Zeile 476 einfügen:
return 0 if (!$end or !$begin);
Siehe auch weiter oben.
Gruss
flurin
Mach ich, danke.
Zitat von: Invers am 16 Juni 2015, 20:44:59
Mach ich, danke.
Korrektur: Zeile 476 in der Sub DOIF_time
sub
DOIF_time($$$$$)
{
my $ret=0;
my ($begin,$end,$wday,$hms,$days)=@_;
my $we=DOIF_we($wday);
+ return 0 if (!$end or !$begin);
if ($end gt $begin) {
if ($hms ge $begin and $hms lt $end) {
$ret=1;
}
War schon zu spät, hatte die Ändedrung gemacht und die lange Latte der Fehlermeldungen begutachtet, es krachte, ich habe zurück geändert, dann hier gelesen und neu geändert. Nun gehts. LOL
Danke. :)