Hallo,
ich habe nach der Anleitung von Tim (https://voizchat.de/fhem-tutorial-serie-teil-06-anwesenheitserkennung-ueber-wlan/)
die Anwesenheitserkennung über das Fritzbox Modul und presence eingebaut.
Dazuhabe ich in myUtilsTemplate.pm eine Routine eingehängt :
sub
NetDevDa($)
{
my $n = 0;
my ($Reading) = @_;
$Reading =~ tr/:/_/;
my @fbs = devspec2array("TYPE=FRITZBOX");
foreach( @fbs ) {
my $Name = ReadingsVal($_,"mac_" . $Reading,"");
if( ($Name ne "") && ($Name ne "inactive") ) {
$n++;
}
}
if( $n == 0) {
return 0;
} else {
return 1;
}
}
Nach einigen Tagen aber scheint FHEM diese NETDEVDA routine zu vergessen , dann bekomme ich mit presence nur noch ERROR gemeldet und im Log file steht:
PRESENCE (lynckmeister) - error while processing check: unexpected function output (expected 0 or 1): Undefined subroutine &main::NetDevDa called at (eval 4641) line 1.
Wenn ich die Funktion dann umbenenne ein NetDevDaDa und das Presence modul auf diese Funktion verweise funktioniert es wieder eine Zeit ...
Wie kommt es dazu ?`
Seltsam das sie Funktion überhaupt geladen wird.
Du musst die Datei auch umbenennen. Vielleicht mal lieber erst was offizielles lesen wie FHEM Wiki.
https://wiki.fhem.de/wiki/99_myUtils_anlegen
Hi CoolTux, danke für deinen Tip,
aber dort ist ja zu lesen :
Bei der Bearbeitung über den Integrierten Editor wird die Programmdatei beim Abspeichern automatisch mit den Änderungen neu geladen.
da ich das einfach in den integrierten Editor gepastet habe, kann man demnach davon ausgehen, dass sie geladen wird beim speichern.
Und das merkt man ja auch daran, dass es zunächst funktioniert.
Warum aber "entädt" sich die Funktion noch einer gewissen Zeit?
myUtilsTemplate.pm
Was sagt Dir das Wort Template und was steht genau im Wiki wie die Datei für eine reibungslose Funktion heißen soll?
8) ich versthehe... danke für die Hilfe - jetzt wird es wohl laufen... werde es die Tage beobachten!