FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: alpha1974 am 15 April 2015, 08:11:19

Titel: DOIF: PERL WARNING: Use of uninitialized value
Beitrag 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.
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 15 April 2015, 10:25:34
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?
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Damian am 15 April 2015, 11:08:52
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 15 April 2015, 11:25:42
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag 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 ">".
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 15 April 2015, 13:57:49
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: alpha1974 am 15 April 2015, 14:40:49
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.
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 15 April 2015, 15:06:48
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.
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag 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)
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Damian am 15 April 2015, 16:02:09
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 15 April 2015, 16:10:43
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);

Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Damian am 15 April 2015, 18:36:26
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag 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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Damian am 15 April 2015, 18:59:12
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag 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!
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Damian am 15 April 2015, 19:19:29
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag 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.
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Damian am 15 April 2015, 21:25:55
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

Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 15 April 2015, 21:45:01
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag 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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 16 April 2015, 10:20:29
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Damian am 16 April 2015, 19:13:16
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: alpha1974 am 16 April 2015, 19:56:27
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.
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: alpha1974 am 16 April 2015, 19:58:51
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.
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Damian am 16 April 2015, 20:04:25
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 16 April 2015, 20:24:43
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Damian am 16 April 2015, 20:49:08
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:

Internals:
   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




Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag 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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: alpha1974 am 17 April 2015, 10:27:28
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).
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Damian am 17 April 2015, 11:30:50
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: alpha1974 am 17 April 2015, 12:02:25
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.
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Damian am 17 April 2015, 12:54:55
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 17 April 2015, 14:36:07
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.
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag 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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 17 April 2015, 14:54:08
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: moonsorrox am 17 April 2015, 15:03:25
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  ;)
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: alpha1974 am 17 April 2015, 15:06:10
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  :)
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 17 April 2015, 15:27:57
Zitat von: alpha1974 am 17 April 2015, 15:06:10
Das geht dann aber nur in DOIF-Devices, oder?

Ja
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 17 April 2015, 15:32:12
Zitat von: moonsorrox am 17 April 2015, 15:03:25
OK dann bin ich falsch, sorry  ;)

Kein Problem.
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag 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.
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 16 Juni 2015, 20:32:08
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
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Invers am 16 Juni 2015, 20:44:59
Mach ich, danke.
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: flurin am 16 Juni 2015, 20:51:50
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;
    }   
Titel: Antw:DOIF: PERL WARNING: Use of uninitialized value
Beitrag von: Invers am 16 Juni 2015, 21:08:44
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.  :)