FritzBox: WhoIsAtHome: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Stellt fest, ob ein bestimmter WLAN-Nutzer in der FB angemeldet ist. == Anmerkung == '''Da das folgende Beispiel Shell-Befehle direkt durch FHEM aufruft, kann …“) |
KKeine Bearbeitungszusammenfassung |
||
(2 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Stellt fest, ob ein bestimmter WLAN-Nutzer in der FB angemeldet ist. | Stellt fest, ob ein bestimmter WLAN-Nutzer in der FB angemeldet ist. | ||
== Anmerkung == | == Anmerkung == | ||
'''Da das folgende Beispiel Shell-Befehle direkt durch FHEM aufruft, kann dies zum kompletten Stillstand von FHEM für | '''Da das folgende Beispiel Shell-Befehle direkt durch FHEM aufruft, kann dies zum kompletten Stillstand von FHEM für mehrere Sekunden führen. Es wird daher empfohlen das FHEM Modul [[PRESENCE]] zu verwenden. Dieses bietet mehrere Möglichkeiten der Anwesenheitserkennung, die alle von FHEM entkoppelt sind und so einen reibungslosen Ablauf gewährleisten.''' | ||
== fhem.cfg == | == fhem.cfg == | ||
<pre> | |||
define MyAttendance dummy | |||
attr MyAttendance icon icoHouse.png | attr MyAttendance icon icoHouse.png | ||
attr MyAttendance room WhoIsAtHome | attr MyAttendance room WhoIsAtHome | ||
attr MyAttendance setList Anwesend Abwesend | attr MyAttendance setList Anwesend Abwesend | ||
define WLAN notify WLAN {FBWlanStat('MyWLANDeviceName', "MyAttendance")} | define WLAN notify WLAN {FBWlanStat('MyWLANDeviceName', "MyAttendance")} | ||
define search_for_MyWLANDeviceName at +*00:05:00 trigger WLAN</ | |||
define search_for_MyWLANDeviceName at +*00:05:00 trigger WLAN | |||
</pre> | |||
== Sub z.B. 99 MyUtils.pm == | == Sub z.B. 99 MyUtils.pm == | ||
<pre>sub | |||
FBWlanStat($$) | FBWlanStat($$) | ||
{ | { | ||
Zeile 27: | Zeile 32: | ||
if ($status == 1) {$attendance="Anwesend";}else{$attendance="Abwesend";} | if ($status == 1) {$attendance="Anwesend";}else{$attendance="Abwesend";} | ||
if(Value("@_[1]") ne $attendance){ | if(Value("@_[1]") ne $attendance){ | ||
fhem "set @_[1] $attendance"}}</ | fhem "set @_[1] $attendance"}} | ||
</pre> | |||
== Test == | == Test == | ||
Eingabe im fhem Frontend: | Eingabe im fhem Frontend: | ||
{FBWlanStat("MyWLANDeviceName", "MyAttendance")} | |||
<pre>{FBWlanStat("MyWLANDeviceName", "MyAttendance")}</pre> | |||
== Hinweis == | == Hinweis == | ||
Benutzername (hier"MyWLANDeviceName") aus dem FB Frontend ermitteln. | Benutzername (hier "MyWLANDeviceName") aus dem FB Frontend ermitteln. | ||
Status wird jetzt auch gesetzt, wenn das Gerät nicht im Netzwerk existiert und man kann nun auch seine Dummys angeben, die man nutzt, falls man mehrere Geräte hat | Status wird jetzt auch gesetzt, wenn das Gerät nicht im Netzwerk existiert und man kann nun auch seine Dummys angeben, die man nutzt, falls man mehrere Geräte hat | ||
== Links == | == Links == | ||
[[Kategorie:FritzBox]] | |||
[[Kategorie:Code Snippets]] |
Aktuelle Version vom 12. August 2014, 20:28 Uhr
Stellt fest, ob ein bestimmter WLAN-Nutzer in der FB angemeldet ist.
Anmerkung
Da das folgende Beispiel Shell-Befehle direkt durch FHEM aufruft, kann dies zum kompletten Stillstand von FHEM für mehrere Sekunden führen. Es wird daher empfohlen das FHEM Modul PRESENCE zu verwenden. Dieses bietet mehrere Möglichkeiten der Anwesenheitserkennung, die alle von FHEM entkoppelt sind und so einen reibungslosen Ablauf gewährleisten.
fhem.cfg
define MyAttendance dummy attr MyAttendance icon icoHouse.png attr MyAttendance room WhoIsAtHome attr MyAttendance setList Anwesend Abwesend define WLAN notify WLAN {FBWlanStat('MyWLANDeviceName', "MyAttendance")} define search_for_MyWLANDeviceName at +*00:05:00 trigger WLAN
Sub z.B. 99 MyUtils.pm
sub FBWlanStat($$) { my ($net_device1)=@_[0]; $net_device1 = $net_device1."\n"; my $number=0; my $status=0; my $net_device=""; my $attendance=""; while($number <= 15){$net_device=qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice$number/name); if($net_device eq $net_device1){ $status=qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice$number/active); last;}$number++;} if ($status == 1) {$attendance="Anwesend";}else{$attendance="Abwesend";} if(Value("@_[1]") ne $attendance){ fhem "set @_[1] $attendance"}}
Test
Eingabe im fhem Frontend:
{FBWlanStat("MyWLANDeviceName", "MyAttendance")}
Hinweis
Benutzername (hier "MyWLANDeviceName") aus dem FB Frontend ermitteln. Status wird jetzt auch gesetzt, wenn das Gerät nicht im Netzwerk existiert und man kann nun auch seine Dummys angeben, die man nutzt, falls man mehrere Geräte hat