FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Elektrolurch am 22 Juni 2013, 07:26:12

Titel: Fehler beim Aufruf von FB_Mail
Beitrag von: Elektrolurch am 22 Juni 2013, 07:26:12
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


Titel: Aw: Fehler beim Aufruf von FB_Mail
Beitrag von: Markus am 22 Juni 2013, 08:07:04
Kannst du über fhem überhaupt Mails versenden?
Funktioniert der Fritzbox eigene Mailversand?

Gruß Markus
Titel: Aw: Fehler beim Aufruf von FB_Mail
Beitrag von: Klaus Rubik am 22 Juni 2013, 08:12:54
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
Titel: Aw: Fehler beim Aufruf von FB_Mail
Beitrag von: Elektrolurch am 22 Juni 2013, 08:13:35
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.
Titel: Aw: Fehler beim Aufruf von FB_Mail
Beitrag von: Markus am 22 Juni 2013, 08:20:45
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
Titel: Aw: Fehler beim Aufruf von FB_Mail
Beitrag von: Elektrolurch am 22 Juni 2013, 08:47:24
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.

Titel: Aw: Fehler beim Aufruf von FB_Mail
Beitrag von: Klaus Rubik am 22 Juni 2013, 08:57:47
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 (//www.fhemwiki.de/wiki/99_myUtils_anlegen).
Nach dem Eintrag sollest du das Modul mit reload 99_MyUtils.pm neu laden.

Gruß

Klaus
Titel: Aw: Fehler beim Aufruf von FB_Mail
Beitrag von: Elektrolurch am 22 Juni 2013, 16:51:33
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?


Titel: Aw: Fehler beim Aufruf von FB_Mail
Beitrag von: Markus am 22 Juni 2013, 17:36:23
event-on-change ist dein Freund :-)

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

Gruß Markus
Titel: Aw: Fehler beim Aufruf von FB_Mail
Beitrag von: Elektrolurch am 22 Juni 2013, 23:06:08
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?