Use of uninitialized value $NewMailtime in numeric gt

Begonnen von myCastle, 19 Oktober 2014, 15:40:44

Vorheriges Thema - Nächstes Thema

myCastle

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

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?

Puschel74

Hallo,

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

myCastle

#3
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...