Erkennen ob ein Computer im Netzwerk an ist und Ausgang schalten

1,650 views
Skip to first unread message

Matthias Soll

unread,
Jul 21, 2012, 1:51:58 AM7/21/12
to fhem-...@googlegroups.com
Hallo zusammen,
ist es mit fhem möglich den Netzwerkstatus der Fritzbox auszulesen um damit zu erkennen welche computer eingeschaltet sind?
Ich möchte einen ausgang am net-io schalten wenn bestimmte Rechner an sind.
 

puschel74

unread,
Jul 21, 2012, 2:39:07 AM7/21/12
to fhem-...@googlegroups.com
Hallo,

sollte machbar sein - siehe diverse Wiki-Einträge zur FB und fhem.

Grüße

Matthias

unread,
Jul 21, 2012, 4:55:30 AM7/21/12
to fhem-...@googlegroups.com
Hi,

das WOL Modul frägt regelmäßig ab, ob ein Rechner im Netz per Ping erreichbar ist.

Matthias

Sebastian

unread,
Jul 21, 2012, 9:27:33 AM7/21/12
to fhem-...@googlegroups.com

dudler

unread,
Jul 21, 2012, 11:41:44 AM7/21/12
to fhem-...@googlegroups.com
Hi

This routine does a better job as expected by its definitions.
In
  define WLAN notify WLAN {FBWlanStat("MyWLANDeviceName", "MyAttendance")} 
  define search_for_MyWLANDeviceName at +*00:05:00 trigger WLAN
FBWlanStat($$)
you can leave W out of WLAN. It detects all devices in your LAN.

Excellent job guys.

{HT}


Op zaterdag 21 juli 2012 15:27:33 UTC+2 schreef Sebastian het volgende:
http://fhemwiki.de/wiki/FritzBox:_WhoIsAtHome 

Lg 

Matthias Soll

unread,
Jul 22, 2012, 3:08:48 PM7/22/12
to fhem-...@googlegroups.com
Hallo zusammen, erstmal danke für die Tipps das könnte für meinen einsatzzweck funktionieren.

habe das hier in der fhem.cfg ergänzt:

define MyAttendance dummy
attr MyAttendance icon icoHouse.png
attr MyAttendance room WhoIsAtHome
attr MyAttendance setList Anwesend Abwesend
define WLAN notify WLAN {FBWlanStat("PC-192-168-1-23", "MyAttendance")}
define search_for_PC-192-168-1-23 at +*00:05:00 trigger WLAN

Bekomme aber immer die Fehlermeldung, dass die Sonderzeichen nicht erlaubt sind.
So meldet aber meine Fritzbox das Gerät.
Hat jemand einen Tip?

Matthias Soll

unread,
Jul 22, 2012, 3:50:46 PM7/22/12
to fhem-...@googlegroups.com
Das Problem mit den Sonderzeichen hab ich gelöst (in der Fritzbox einen anderen namen vergeben)
Trotzdem ändert sich der Status nicht.

auch wenn ich jetzt {FBWlanStat("xperia", "MyAttendance")} direkt eingebe ändert sich nichts


define MyAttendance dummy
attr MyAttendance icon icoHouse.png
attr MyAttendance room WhoIsAtHome
attr MyAttendance setList Anwesend Abwesend
define WLAN notify WLAN {FBWlanStat("xperia", "MyAttendance")}
define search_for_xperia at +*00:05:00 trigger WLAN

ist hier etwas falsch?

Sebastian

unread,
Jul 22, 2012, 6:18:59 PM7/22/12
to fhem-...@googlegroups.com, j.ma...@googlemail.com
Wenn du alles richtig eingefügt hast und dein Handy wirklich xperia heißt und es auch in der Fritz!Box xperia heißt, sollte das eigentlich laufen ...

Lg 

Mitch

unread,
Jul 23, 2012, 4:20:37 AM7/23/12
to fhem-...@googlegroups.com, j.ma...@googlemail.com
eine Frage dazu: geht das auch, wenn FHEM nicht auf der FB läuft?
Habe eine FB, aber fhem läuft auf einem Linux Server im gleichen Netz.

Danke!

Matthias Soll

unread,
Jul 23, 2012, 9:59:51 AM7/23/12
to Mitch, fhem-...@googlegroups.com
läuft bei mir nicht kann mir vielleicht noch jemand einen Tip geben?
Ich habe neben der 99_Utils.pm noch die 99_MyUtils.pm angelegt und folgendes hineinkopiert:

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"}}

Und in der fhem.cfg habe ich das ergänzt:


define MyAttendance dummy
attr MyAttendance icon icoHouse.png
attr MyAttendance room WhoIsAtHome
attr MyAttendance setList Anwesend Abwesend
define WLAN notify WLAN {FBWlanStat("printserver", "MyAttendance")}
define search_for_printserver at +*00:05:00 trigger WLAN

Status bleibt immer abwesend
Ich habe auch schon einige male komplett gebootet, kann mir jemand helfen?

Guido

unread,
Jul 23, 2012, 10:44:23 AM7/23/12
to fhem-...@googlegroups.com, Mitch, j.ma...@googlemail.com
Hallo Matthias,



Ich habe neben der 99_Utils.pm noch die 99_MyUtils.pm angelegt und folgendes hineinkopiert:

die 99_Utils.pm sollte eigentlich schon vorhanden gewesen sein, und du hast jetzt in beide den Code kopiert ?

http://fhemwiki.de/wiki/99_myUtils_anlegen

hast du mehr als 15 Lan bzw WlanDevices in deiner Fritzbox Netzwerkliste ?

Was sagt der Log ?



Sebastian

unread,
Jul 23, 2012, 6:04:01 PM7/23/12
to fhem-...@googlegroups.com, j.ma...@googlemail.com
@Mitch : Nein, es läuft nicht, wenn FHEM nicht auf der Fritz!Box läuft, da ich es so programmiert habe, das der Status des Gerätes in der Fritz!Box ausgelesen wird.

@Matthias Soll : Manchmal kann es auch sein, das die FritzBox nicht den Namen des Gerätes nimmt, sondern das Gerät z.B PC-192-168-178-23 nennt. Dann muss man nach diesem Namen suchen, oder ihn in der Fritz!Box ändern, wäre eine möglichkeit.

Lg

Gerd

unread,
Jul 24, 2012, 12:25:48 PM7/24/12
to fhem-...@googlegroups.com
Hallo Sebastian,

Das war eine Superidee, dein HowTo hat auf Anhieb geklappt.


Vielleicht sollte man noch anmerken, das die Fritz!Box im WLAN Namen keine "_" mag und FHEM nicht "-" an dieser Stelle. Da ist diese kleine Falle, wenn der WLAN Name automatisch vergeben wird.


Lg

Gerd


Volker

unread,
Jul 24, 2012, 12:41:24 PM7/24/12
to fhem-...@googlegroups.com, j.ma...@googlemail.com
Hallo,

bei mir funktioniert es leider aus Fhem nicht.
Wenn ich die Befehle (/usr/bin/ctlmgr_ctl r landevice settings/landevice$number/name) zum auslesen in einer Telnet Konsole, direkt auf der Fritzbox eingebe, bekomme ich den Namen und den Status zurück.
Bei aufrufen der Funktion aus Fhem, bekomme ich keinen Rückgabewert.

Kann es vielleicht etwas mit den Berechtigungen des Fhem-Users "boxusr80" zu tun haben?

MfG

Volker

Guido

unread,
Jul 24, 2012, 12:52:42 PM7/24/12
to fhem-...@googlegroups.com, j.ma...@googlemail.com
Hallo,



Kann es vielleicht etwas mit den Berechtigungen des Fhem-Users "boxusr80" zu tun haben?

ja die Lösung dazu steht irgendwo in diesem fred:

https://groups.google.com/forum/?fromgroups#!starred/fhem-users/qr8lZQuSJvE

Sebastian

unread,
Jul 24, 2012, 2:39:08 PM7/24/12
to fhem-...@googlegroups.com, j.ma...@googlemail.com
Hallo,

Wenn man mit der Fhem-Kommandozeile dies testen will, muss man folgendes Eingeben:

{qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice2/name)}

#Gibt Name des Gerätes, in diesem Fall den Namen des landevice2 zurückt.

{qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice2/active)}  

# Gibt Status 0 oder 1 zurück des Gerätes,  in diesem Fall landevice2, zurück.


Wenn man mit der FritzBox direkt über Telnet testen will, musss man folgendes Eingeben:

/usr/bin/ctlmgr_ctl r landevice settings/landevice2/name

bzw.

/usr/bin/ctlmgr_ctl r landevice settings/landevice2/active


Die Zahl kann man natürlich ändern ;)

Lg



Am Dienstag, 24. Juli 2012 18:41:24 UTC+2 schrieb Volker:

Sebastian

unread,
Jul 24, 2012, 2:41:24 PM7/24/12
to fhem-...@googlegroups.com
Hallo Gerd,

ich weiß nicht, ob ich es gerade falsch verstanden habe, aber eigentlich können Netzwerkgeräte "-" (Bindestriche) haben.

Lg

Matthias Soll

unread,
Jul 24, 2012, 4:24:35 PM7/24/12
to fhem-...@googlegroups.com
Also:
{qx(/usr/bin/ctlmgr_ctl r landevice settings/landevice2/active)}
funktioniert super wenn ich alle Landevices durchprobiere habe ich manchmal eine 0 und manchmal eine 1 je nachdem welches angemeldet ist.
Bekomme trotzdem keine weitere Funktion ans laufen.
Message has been deleted

Gerd

unread,
Jul 24, 2012, 4:50:39 PM7/24/12
to fhem-...@googlegroups.com
Hallo Sebastian

Netzwerkgeräte haben schon Bindestriche zB. bei der autom. Namensvergabe in der Box.

Aber wie in dem Beispiel von Matthias weiter oben zu sehen ist:

define WLAN notify WLAN {FBWlanStat("PC-192-168-1-23", "MyAttendance")} 
define search_for_PC-192-168-1-23 at +*00:05:00 trigger WLAN

Bekomme aber immer die Fehlermeldung, dass die Sonderzeichen nicht erlaubt sind. 


klappt das innerhalb von FHEM nicht.

Deshalb mein Hinweis, bevor andere noch verzweifeln.

LG


Am Dienstag, 24. Juli 2012 20:41:24 UTC+2 schrieb Sebastian:

Sebastian

unread,
Jul 24, 2012, 6:44:44 PM7/24/12
to fhem-...@googlegroups.com
Hallo Gerd,

die Bindestriche dürfen nicht in einer define Anweisung benutzt werden. Im Aufruf selber, also als Übergabewert in z.B einer Funktion dürfen sie benutzt werden, da sie in "" stehen.

Lg

Sebastian

unread,
Jul 24, 2012, 6:52:05 PM7/24/12
to fhem-...@googlegroups.com, j.ma...@googlemail.com
Hallo Matthias,

also active läuft aber mit /name läuft es nicht ?

Habe das ganze auf meiner Fritz!Box 7270v3 getestet, läuft auch, welche Fritz!Box hast du ?

Eigentlich sollte der Quellcode so einwandfrei funktionieren ....

Lg

Sebastian

unread,
Jul 24, 2012, 6:53:21 PM7/24/12
to fhem-...@googlegroups.com
@Gerd : P.S.: Danke, das du diesen Hinweis angesprochen hast :)

dudler

unread,
Jul 25, 2012, 10:55:20 AM7/25/12
to fhem-...@googlegroups.com, j.ma...@googlemail.com

For the archiving function:

Just use
  define WLAN notify WLAN {FBWlanStat('PC-192-168-1-23', "MyAttendance")}
instead of
  define WLAN notify WLAN {FBWlanStat("PC-192-168-1-23", "MyAttendance")}

(Single quotes)

{HT}

jorge

unread,
Jul 25, 2012, 3:35:43 PM7/25/12
to fhem-...@googlegroups.com, j.ma...@googlemail.com
Changed in wiki.

Matthias Soll

unread,
Jul 26, 2012, 8:19:27 AM7/26/12
to jorge, fhem-...@googlegroups.com
@ Sebastian
Jetzt geht´s Vielen Dank für deine Hilfe.
Ich glaube das größte Problem war die Device Zahl <15.
Die Fritzbox merkt sich jedes Gerät was irgendwann mal angemeldet war und das waren mehr als 15 bei mir.
Ich dachte dass nur die Anzahl der angezeigten Geräte interessant ist.

Und was mir noch auffällt, mein xperia bleibt verbunden in der Fritzbox wenn ich wlan ausschalte, nur wenn ich auf flugmodus schalte wird es als nicht verbunden angezeigt, dann kann das mit fhem natürlich auch nicht funktionieren.


Sebastian

unread,
Jul 26, 2012, 8:59:00 AM7/26/12
to fhem-...@googlegroups.com, j.ma...@googlemail.com
Das freut mich, das es nun funktioniert und ich erfolgreich helfen konnte :)

Mhm, das ist komisch, obwohl mein Xperia auch manchmal komische Sachen mit dem WLAN macht. Vielleicht kannst du mal probieren, das Gerät aus dem Netzwerk zu löschen und nochmal neu anzumelden am WLAN, vielleicht hilft das ja, weil das Problem hatte ich irgendwann auch schon mal in so einer Art.

Lg

neomorph

unread,
Jul 27, 2012, 9:38:34 AM7/27/12
to fhem-...@googlegroups.com, j.ma...@googlemail.com
Hallo,

ich wollte hier einmal nachhaken. Bei mir läuft FHEM auf einem Mac-mini, WLAN macht bei mir eine TimeCapsule und meine Fritzbox macht eigentlich nur DHCP, Portforwarding usw.
Jetzt ist die Frage, ob ich die aktiven Geräte die sich an der FB angemeldet haben, also eine IP-Adresse erhalten haben, mit dem Mac auslesen und mit FHEM auswerten könnte??

Hat jemand soetwas schon einmal versucht?

Viele Grüße
neo

JoWiemann

unread,
Jul 27, 2012, 1:06:37 PM7/27/12
to FHEM users
Hallo,

da bei mir für FHEM eine ausgediente FB 7170 zuständig ist und alle
Geräte sich an der FB 7270 anmelden habe ich folgendes umgesetzt:

Unter fhem/FhemUtils

das folgende Script: lanping.sh ablegen und ausführbar machen ( chmod
755 lanping.sh ):

#!/bin/bash
if [ -n "$1" ]; then
/bin/ping -q -c1 $1 &> /dev/null
else
echo "Ergebnis: $0 <host>"
exit 1
fi
if [ "$?" -gt 0 ]; then
echo $1 Fehler
else
echo $1 Ok
fi
exit 0

In der 99_myutils.pm folgendes eintragen:

sub right{
my ($string,$nr) = @_;
return substr $string, -$nr, $nr;
}

sub left{
my ($string,$nr) = @_;
return substr $string, 0, $nr;
}

# http://www.somacon.com/p114.php
# Perl trim function to remove whitespace from the start and end of
the string
sub trim($)
{
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+$//;
return $string;
}

# Left trim function to remove leading whitespace
sub ltrim($)
{
my $string = shift;
$string =~ s/^\s+//;
return $string;
}

# Right trim function to remove trailing whitespace
sub rtrim($)
{
my $string = shift;
$string =~ s/\s+$//;
return $string;
}

sub
FhemLanStat($$)
{
my $net_device=$_[0];
my $attendance="Abwesend";

$net_device=qx(/var/media/ftp/uStor01/fhem/fhem/fhem/FhemUtils/
lanping.sh $net_device);
if(right(trim($net_device), 2) eq "Ok"){
$attendance="Anwesend";
} else {
$attendance="Abwesend";
}

fhem "set $_[1] $attendance";
}

Beispiel fuer Definition in fhem.cfg:

define BinDa dummy
attr BinDa icon icoHouse.png
attr BinDa room WerIstZuHause
attr BinDa setList Anwesend Abwesend

# Netzadresse = ip oder Name
# Name von Dummy hier = BinDa
define SucheBinDa notify SucheBinDa {FhemLanStat("Netzadresse", "Name
von Dummy")}
define TriggerBinDa at +*00:05:00 trigger SucheBinDa

Viele Spaß beim ausprobieren Jörg

neomorph

unread,
Jul 27, 2012, 5:28:19 PM7/27/12
to fhem-...@googlegroups.com
ja, großartig!!! danke

ich hab das gerade mal eingerichtet und werde mal abwarten ob ich es schon verstanden habe, bzw. ob es tut was es soll :)
ich hatte kurz Schwierigkeiten mit dem kopierten Code von Dir, aber soweit hab ich es geschafft Dein Beispiel fehlerlos zu "importieren".

ich melde mich dazu sicher nochmal, da ich den Ansatz sehr interessant finde.

danke und einen schönen Abend
neo


Am Samstag, 21. Juli 2012 07:51:58 UTC+2 schrieb Matthias Soll:
Hallo zusammen,
ist es mit fhem möglich den Netzwerkstatus der Fritzbox auszulesen um damit zu erkennen welche computer eingeschaltet sind?
Ich möchte einen ausgang am net-io schalten wenn bestimmte Rechner an sind.
 

puschel74

unread,
Jul 28, 2012, 2:28:32 AM7/28/12
to fhem-...@googlegroups.com
Hallo,

wenn noch nicht vorhanden - ich hab jetzt noch nicht nachgeschaut.
Eintrag ins WIKI ;-)

grüße

neomorph

unread,
Jul 28, 2012, 4:39:52 AM7/28/12
to fhem-...@googlegroups.com
Ich mach gern einen Wikieintrag.
Leider läuft das nocht nicht ganz rund, da offensichtlich das lanping.sh noch nichts zurückmeldet. Beim Versuch das Script per Hand aufzurufen, bekomme ich momentan noch folgenden fehler:

per Hand das Script auslösen: "./lanping.sh 192.168.1.30"
bekomme ich nur das Ergebnis: "Fehler".

löse ich das Script ohne Parameter aus: "./lanping.sh"

bekomme ich: "Ergebnis:  ./lanping.sh <host>"

jetzt muss ich erstmal sicherstellen, dass das Script auch etwas zurückliefert.

lg
neo

JoWiemann

unread,
Jul 28, 2012, 6:10:31 AM7/28/12
to FHEM users

Hallo Neo,

ich hatte zunächst auch das Problem. Das Script war nicht korrekt
ausführbar gemacht. Versuch doch mal chmod -x. Weiter funktioniert das
Script bei mir nur mit vollständigem Pfad im Aufruf.

Lg Jörg

neomorph

unread,
Jul 28, 2012, 8:51:09 AM7/28/12
to fhem-...@googlegroups.com
Ja, vielen Dank erstmal, dass Du dir bei diesem Wetter die Zeit nimmst (mir) zu helfen.
Ich habe Deinen Tipp befolgt und das Script wie beschrieben versucht ausführbar zu machen....allerdings bekomme ich jetzt die Fehlermeldung, wenn ich das Script per Hand aufrufe mit: "./lanping.sh" ein "Permission denied".
Rufe ich es mit Parametern auf: "sudo ./lanping.sh 192.168.1.30" erhalte ich plötzlich: "./lanping.sh: command not found".
Ich war der Meinung, dass es vorher auch schon lief, aber eben kein Ergebnis brachte...ich suche einfach weiter - ich muss doch  erstmal sicherstellen, dass das Script bei mir läuft und mir ne Antwort liefert, oder!?

Also ich mach das natürlich alles unte OSX-SnowLeopard....

LG
neo

neomorph

unread,
Jul 28, 2012, 9:09:28 AM7/28/12
to fhem-...@googlegroups.com
Ich löse auf.

Im Prinzip hatte ich alles korrekt eingerichtet. Allerdings musste ich unter Mac-OS-X das Script ein wenig abändern:

#!/bin/bash
if [ -n "$1" ]; then
ping -q -c1 $1 &> /dev/null
else
echo "Ergebnis:  $0 <host>"
exit 1
fi
if [ "$?" -gt 0 ]; then
echo $1 Fehler
else
echo $1 Ok
fi
exit 0

Das "Problem" war, dass das Ping-Kommando offensichtlich mit der Pfadangabe nicht geklappt hat.
Entscheidend war auch der Tipp mit dem kompletten Pfad in der 99_myUtils.pm zum Script!

Vielen Dank für die Hilfe, ich teste das jetzt mal ausgiebig und der Wiki-Eintrag wird gern gemacht!

lg
neo
Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
Message has been deleted
0 new messages