FritzBox: ActiveDevices: Unterschied zwischen den Versionen
Uli (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Krikan (Diskussion | Beiträge) (FHEM(R)) |
||
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''FritzBox ActiveDevices''' ist eine von ''FBWlanStat'' abgeleitete Funktion (FBWlanStat ist im Detail beschrieben in [[FritzBox: WhoIsAtHome]]). | |||
Diese Funktion stellt fest, ob ein bestimmtes Gerät an der [[AVM Fritz!Box|FritzBox]] angemeldet ist. Bei einem WLAN-Gerät kann es bis zu zehn Minuten dauern, bis die FritzBox feststellt, dass das Gerät nicht mehr angemeldet ist. | |||
'''Hinweis''': Seit FHEM 5.4 gibt es das Modul [[Anwesenheitserkennung|PRESENCE]], das auch im Modus '''fritzbox''' definiert werden kann und dieselben Aufgaben übernimmt wie die hier vorgestellte Routine. | |||
== fhem.cfg == | == fhem.cfg == | ||
Erforderliche Definitionen in der fhem.cfg: | |||
define MyAttendance dummy | |||
attr MyAttendance icon icoHouse.png | |||
attr MyAttendance room WhoIsAtHome | |||
define WLAN notify WLAN {FBWLanDevActive('MyWLANDeviceName', "MyAttendance")} | |||
define search_for_MyWLANDeviceName at +*00:05:00 trigger WLAN | |||
== Unterroutine FBWLanDevActive == | |||
Unterroutine, z. B. in MyUtils.pm definiert: | |||
sub FBWLanDevActive($$) { | |||
my ($net_device1)=@_[0]; | |||
my $myLength=length($net_device1); | |||
my $number=0; | |||
my $status=0; | |||
== | my $net_device=""; | ||
my $net_device2=""; | |||
sub FBWLanDevActive($$) { | my $attendance=""; | ||
while($number <= 25){ | |||
$net_device= | |||
qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice$number/name); | |||
$net_device2=substr($net_device, 0, $myLength); | |||
if($net_device2 eq $net_device1){ | |||
$status= | |||
qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice$number/active); | |||
if ($status == 1) {last;} | |||
} | |||
$number++; | |||
} | } | ||
$ | if ($status == 1) {$attendance="Anwesend";}else{$attendance="Abwesend";} | ||
if(Value("@_[1]") ne $attendance){fhem "set @_[1] $attendance"} | |||
} | } | ||
== Test == | == Test == | ||
Eingabe im | Die Funktion kann getestet werden durch die Eingabe im FHEM Frontend: | ||
< | <nowiki>{ FBWLanDevActive('MyLANDeviceName', "MyAttendance")}</nowiki> | ||
{ FBWLanDevActive('MyLANDeviceName', "MyAttendance")} | |||
</ | |||
== Hinweis == | == Hinweis == | ||
Benutzernamen (hier "MyLANDeviceName") aus dem FB Frontend ermitteln: es ist ausreichend, einen eindeutigen Teil am Anfang des Gerätenames anzugeben. Die Routine sucht über alle Gerätenamen, ob es ein Gerät gibt, dessen name mit dem angegebenen Suchbegriff beginnt. | |||
Beispiel: angenommen, der Gerätename ist "HTC-Harry" or "HTC-Harry-1", dann findet ein Aufruf | |||
:<code>FBWLanDevActive('HTC-Harry', "GSMHarry")</code> | |||
oder sogar auch "nur" | |||
:<code>FBWLanDevActive('HTC', "GSMHarry")</code> | |||
das Gerät (vorausgesetzt, es ist das einzige Gerät, das mit dieser Buchstabenfolge beginnt). | |||
[[Kategorie:FritzBox]] | [[Kategorie:FritzBox]] | ||
[[Kategorie:Code Snippets]] | [[Kategorie:Code Snippets]] |
Aktuelle Version vom 27. Januar 2017, 16:15 Uhr
FritzBox ActiveDevices ist eine von FBWlanStat abgeleitete Funktion (FBWlanStat ist im Detail beschrieben in FritzBox: WhoIsAtHome).
Diese Funktion stellt fest, ob ein bestimmtes Gerät an der FritzBox angemeldet ist. Bei einem WLAN-Gerät kann es bis zu zehn Minuten dauern, bis die FritzBox feststellt, dass das Gerät nicht mehr angemeldet ist.
Hinweis: Seit FHEM 5.4 gibt es das Modul PRESENCE, das auch im Modus fritzbox definiert werden kann und dieselben Aufgaben übernimmt wie die hier vorgestellte Routine.
fhem.cfg
Erforderliche Definitionen in der fhem.cfg:
define MyAttendance dummy attr MyAttendance icon icoHouse.png attr MyAttendance room WhoIsAtHome define WLAN notify WLAN {FBWLanDevActive('MyWLANDeviceName', "MyAttendance")} define search_for_MyWLANDeviceName at +*00:05:00 trigger WLAN
Unterroutine FBWLanDevActive
Unterroutine, z. B. in MyUtils.pm definiert:
sub FBWLanDevActive($$) { my ($net_device1)=@_[0]; my $myLength=length($net_device1); my $number=0; my $status=0; my $net_device=""; my $net_device2=""; my $attendance=""; while($number <= 25){ $net_device= qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice$number/name); $net_device2=substr($net_device, 0, $myLength); if($net_device2 eq $net_device1){ $status= qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice$number/active); if ($status == 1) {last;} } $number++; } if ($status == 1) {$attendance="Anwesend";}else{$attendance="Abwesend";} if(Value("@_[1]") ne $attendance){fhem "set @_[1] $attendance"} }
Test
Die Funktion kann getestet werden durch die Eingabe im FHEM Frontend:
{ FBWLanDevActive('MyLANDeviceName', "MyAttendance")}
Hinweis
Benutzernamen (hier "MyLANDeviceName") aus dem FB Frontend ermitteln: es ist ausreichend, einen eindeutigen Teil am Anfang des Gerätenames anzugeben. Die Routine sucht über alle Gerätenamen, ob es ein Gerät gibt, dessen name mit dem angegebenen Suchbegriff beginnt.
Beispiel: angenommen, der Gerätename ist "HTC-Harry" or "HTC-Harry-1", dann findet ein Aufruf
FBWLanDevActive('HTC-Harry', "GSMHarry")
oder sogar auch "nur"
FBWLanDevActive('HTC', "GSMHarry")
das Gerät (vorausgesetzt, es ist das einzige Gerät, das mit dieser Buchstabenfolge beginnt).