FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: myCastle am 19 Oktober 2014, 15:40:44

Titel: Use of uninitialized value $NewMailtime in numeric gt
Beitrag von: myCastle am 19 Oktober 2014, 15:40:44
Hallo,

ich möchte meine HM Rauchmelder Mails versenden lassen. Habe ich ich auch hinbekommen. Die Mails sollen nun aber nicht bei jedem Event, sondern nur alle 30 Minuten neu versendet werden. Da ich mit Perl wirklich nicht fit bin, war ich begeistert, einen Wiki Eintrag zu genau dem Thema zu finden: http://www.fhemwiki.de/wiki/E-Mail_per_notify_nach_Zeitablauf_erneut_senden (http://www.fhemwiki.de/wiki/E-Mail_per_notify_nach_Zeitablauf_erneut_senden)

Ich habe die Variable $NewMailtime wie beschrieben in 99_myUtils.pm angelegt und meine Mail-Versende Routine wie im Wiki angepasst.

Nun hat ein Rauchmelder endlich mal ausgelöst  ;D

Ich habe wie gewünscht nur eine Mail bekommen, obwohl der Melder noch lt. Logfile einen zweiten Alarm gesendet hat. Allerdings finde ich im Logfile direkt vor dem Event folgenden Eintrag:
Use of uninitialized value $NewMailtime in numeric gt (>) at (eval 135) line 2.

Es sieht so aus, als sei die Definition der Variablen NewMailtime irgendwie nicht korrekt. Sie sieht aber genau aus wie im Beispiel in 99_myUtils.pm:
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
my $NewMailtime = time;
}

Hier noch die Routine aus fhem.cfg:
define RauchAlarm notify RM_Flur_EG:smoke-Alarm.* {\
if(time > $main::NewMailtime) {\
  my $rm = ReadingsVal("RM_Flur_EG", "smoke_detect","leer");;\
  my $tim = ReadingsTimestamp("RM_Flur_EG", "smoke_detect",0);;\
  Log 3 ,"Rauchalarm von: $rm um $tim";;\
  DebianMail('mymail@@gmx.de',"Feueralarm $rm","Rauchmelder $rm wurde ausgeloest $tim");;\
  $main::NewMailtime = time + 600;;\
}\
}


Hat jemand einen Tipp oder eine Erklärung für mich?
Titel: Antw:Use of uninitialized value $NewMailtime in numeric gt
Beitrag von: Puschel74 am 19 Oktober 2014, 15:48:54
Hallo,

http://forum.fhem.de/index.php/topic,16311.0.html (http://forum.fhem.de/index.php/topic,16311.0.html)
Bitte lesen.
Danke.

Mit DOIF wäre das vermutlich einfacher zu lösen.
siehe commandref und Unterbereich-->Automatisierung.

Grüße
Titel: Antw:Use of uninitialized value $NewMailtime in numeric gt
Beitrag von: justme1968 am 19 Oktober 2014, 15:50:00
das beispiel ist falsch und unsinnig. eine variable die mit my in einer sub deklariert wird ist nur innerhalb dieser sub sichtbar.

wenn du es tatsächlich mit einer eigenen variablen umsetzen möchtest geht das z.b. in dem du ein my $NewMailtime; außerhalb der sub hast und dann im initialize das my weg lässt.

dein anwendungsfall lässt sich aber ganz ohne diese unwege einfach durch passendes setzen der event-on-change-reading und event-min-intervall lösen.

gruß
  andre
Titel: Antw:Use of uninitialized value $NewMailtime in numeric gt
Beitrag von: myCastle am 19 Oktober 2014, 21:23:05
Hallo und danke für die Hinweise,

ich werde mir DOIF und event-min-intervall auf jeden Fall genauer anschauen und ausprobieren. Muß nur mal sehen, wann mir die Familie Zeit dafür gibt ;-)

Bis dann
Herbert

PS: Habe jetzt wie von Andre als Hilfslösung beschrieben, die Definition von $NewMailtime vor die sub gelegt und die Variable in der sub initialize dann nur noch mit der Uhrzeit belegt. Syntaktisch scheint alles ok zu sein. Muss jetzt nur noch bis zum nächsten Feuer warten, um die Funktionalität auch zu testen. Bis dahin kann ich mir in Ruhe die anderen Tipps anschauen und versuchen, sie zu verstehen...