Fehler beim Aufruf von FB_Mail

Begonnen von Elektrolurch, 22 Juni 2013, 07:26:12

Vorheriges Thema - Nächstes Thema

Elektrolurch

Hallo,

ich mache gerade als Anfänger meine ersten Übungen mit fhem und komme an diesser Stelle nicht mehr weiter.
Hintergrund: Mit presence frage ich den Status deiv. Geräte im WLAN an der Fritzbox ab.
Das funktioniert auch. Auch die Struktur "HandyAlle" wird richtig gesetzt. Sobald ein Gerät im WLAN eingebucht ist, geht sie von "Absent" auf "present". Ich möchte nun bei Statusänderung jeweils eine Mail  versenden. Aber da bekomme ich folgende Fehlermeldung:

2013.06.21 22:13:50 3: JemandzuHause return value: Undefined subroutine &main::fb_mail called at (eval 29) line 1.
1. Was habe ich da falsch gemacht?
2. Die presence-Funktion wird aber anders als die Parameter mehrmals in der Minute aufgerufen und nicht alle 300 Sekunden.

Hier der Logeintrag:
2013-06-21_20:37:13 HandyMarina present
2013-06-21_20:37:47 HandyMarina present
2013-06-21_20:38:20 HandyMarina present
2013-06-21_20:38:53 HandyMarina present

Und hier der Auszug aus der fhem.cfg:



define HandyMarina PRESENCE fritzbox HandyMarina 300
attr HandyMarina HandyAlle_Structure HandyAlle
attr HandyMarina room Haus
define FileLog_HandyMarina FileLog ./log/HandyMarina-%Y.log HandyMarina
attr FileLog_HandyMarina logtype text
...


define HandyAlle structure HandyAlle_Structure  HandyMarina HandyTatjana HandyRaimund LaptopTatjana
attr HandyAlle clientstate_behavior relative
attr HandyAlle clientstate_priority present absent


define JemandzuHause notify HandyAlle:present {\
      use FritzBoxUtils;;\
      fb_mail ('xxx@@xxx.de' (@@xxx.de'),'Jemand zu Hause','Bodytext zum Test');;}


define NiemandzuHause notify HandyAlle:absent {\
     fb_mail ('xx@@xxx.de' (@@xxx.de'),'Niemand zu Hause','Bodytext zum Test');;}


Ich habe es auch schon mit nur einem @ probiert.
Das Ganze läuft auf einer FB7390 unter root.

Für Hilfe wäre ich dankbar.

Elektrolurch


configDB und Windows befreite Zone!

Markus

Kannst du über fhem überhaupt Mails versenden?
Funktioniert der Fritzbox eigene Mailversand?

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Klaus Rubik

Hallo,

warum schreibst du den Aufruf der FritzBoxUtils in die Notify Definition?

Zitatdefine JemandzuHause notify HandyAlle:present {\
use FritzBoxUtils;;\
fb_mail ('xxx@@xxx.de' (@@xxx.de'),'Jemand zu Hause','Bodytext zum Test');;}

Schreibe nur den Aufruf (use FritzBoxUtils) in die 99_MyUtils.pm, dann werden die Funktionen beim Start von FHEM geladen und können verwendet werden.

Klaus
FHEM 6.0 auf RPI4 mit CUL868, AEOTEC, RFXTRX 433
CUL_WS  : S300TH              FHT         : FHT80B, FHT80TF
HMS        : HMS100-TF         FBDECT   : DECT!200, FRITZ!Powerline 546E
FS20       : FS20DI10, FS20ST, FS20WS1, FS20DU-2, FS20 FMS

Elektrolurch

Hallo Markus,

gute Frage. Ich habe mal in der fhem-Eingabezeile in geschweiften Klammern einen FB_Mail - Befehlt eingegeben. Da kam aber eine Fehlermeldung, irgendsowas mit "missing main". Ist ja so auch kein Perl-Programm.
Da das Presence-Modul sowol mit LAN-Ping, als auch mit "fritzbox" als Parameter funktioniert, müsste das Mailen eigentlich auch klappen.
configDB und Windows befreite Zone!

Markus

Hast du im Fritzbox eigenem Menü deine E-Maildaten hinterlegt und den Fritzbox Mailservice Aktiviert?
und Funktioniert das? Wenn nicht kann es über FHEM nicht klappen.

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Elektrolurch

Hallo Markus,

ja, die Push-Mail der Fritzbox läuft und meldet mir z.B. einmal am Tag den Zustand einer DECT200.
@Klaus: ich habe in der 99-Utils vor der ersten Subroutine und hinter der letzten use-Anweisung das eingefügt:
Das schaut jetzt so aus:
use POSIX;
use FritzBoxUtils;

sub
Utils_Initialize($$)

Muss da um die USE Fritzbox.. noch eine runde Klammer
Aus der fhem.cfg habe ich bei der Notify-Anweisung dass dann herausgenommen.
Nach einem Neustart stehen aber immer noch die gleichen Fehlermeldungen im log:
2013.06.22 08:44:36 3: JemandzuHause return value: Undefined subroutine &main::fb_mail called at (eval 159) line 1.

2013.06.22 08:45:06 3: JemandzuHause return value: Undefined subroutine &main::fb_mail called at (eval 161) line 1.

configDB und Windows befreite Zone!

Klaus Rubik

Hallo,

Zitat@Klaus: ich habe in der 99-Utils vor der ersten Subroutine und hinter der letzten use-Anweisung das eingefügt:
Das schaut jetzt so aus:
use POSIX;
use FritzBoxUtils;

sub
Utils_Initialize($$)

Muss da um die USE Fritzbox.. noch eine runde Klammer

Nein, der Eintrag stimmt so, du solltest ihn aber lieber in die 99_MyUtils machen, da die 99_Utils bei einem Update evtl. überschrieben wird. Wie du dir ggf. eine 99_MyUtils anlegst findest du im Wiki.
Nach dem Eintrag sollest du das Modul mit reload 99_MyUtils.pm neu laden.

Gruß

Klaus
FHEM 6.0 auf RPI4 mit CUL868, AEOTEC, RFXTRX 433
CUL_WS  : S300TH              FHT         : FHT80B, FHT80TF
HMS        : HMS100-TF         FBDECT   : DECT!200, FRITZ!Powerline 546E
FS20       : FS20DI10, FS20ST, FS20WS1, FS20DU-2, FS20 FMS

Elektrolurch

Ok. Habe ich gemacht. Beim Starten von fhem gibt es auch keine Fehlermeldung. Die 99_myUtils.pm sollte ja laut wiki auch automatisch geladen werden.
Ich habe den einen Fehler gefunden: Die Routine heisst FG-mail und nicht fb_mail!

Jetz bleibt aber noch das zweite Problem:
Obwohl der Status "HandyAlle" sich nicht ändert, wird alle 30 Sekunden das notifyJemandzuHause ausgeführt.
Ich dachte, das notify würde nur bei Änderungen getriggert werden. Was ist da falsch.

Bei der presence fritzbox LaptopTatjana 300 - Anweisung steht ja eigentlich, dass die prsence nur alle 5 Minuten geprüft werden soll. Offensichtlich wird aber der Default-Wert von 30 Sekdunden genommen. Was ist da falsch?


configDB und Windows befreite Zone!

Markus

event-on-change ist dein Freund :-)

zb
attr HandyMarina event-on-change-reading .*

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Elektrolurch

Hallo Markus,

mit dem zusätzlichen attr event-on-change-reading ist dein Freund :-)
war das wohl genau das richtige. Ich hatte mir schon überlegt, das mit einem dummy und einer Zuweisung bei Wechsel zu machen, damit erst dann das notify kreiiert wird.
Habe mal ein bisserl die Optionen nun bei Attr gelesen: Sind ja unendliche Möglichkeiten.
Wenn man aus C und C++ kommt, muss man erst ja einmal die vielen Facetten eines solchen Projektes kennenlernen.
Am besten geht das mit einem einfachen Ziel und mit Unterstützung freundlicher Forumsmitglieder. Also Danke. Jetzt komme ich erst einmal wieder ein Stück weiter.

Elektrolurch

P.S.: Wer kennt das Stück von Kraftwerk?
configDB und Windows befreite Zone!