Hallo,
ich habe weiter nachgeforscht.
In anderen Foren wird die FritzBox! per SOAP ausgelesen. Dabei gehen verschiedenste Befehle.
Ich habe nur einen Verfolgt.
Genau gesagt können die aktiven WLAN-Teilnehmer ausgelesen werden.
Das passiert mit eine PHP Datei.
Somit braucht man einen PHP-Server
Da fängt der gnaze Scheiß an zu hinken.
Ich hab einen Beckhoff CX1xxx. Darauf läuf nur der IIS ohne PHP. Noch.
Die Frage wäre nun, ob das Beispiel irgendwie weiterhilft, um das auf SPS-Ebene einzubinden.
Ich häng es mal in den Anhang.
Edit:
P.S. Dateianhänge gehen wohl immer noch nicht! Schade
Hier der PHP-Code zum testen:
Hier den Benutzer eintragen: $login = "123456789"; //ggf. eintragen
Hier das Passwort eintragen: $password = "123456789"; //ggf. eintragen
Hier die gesuchte IP eintragen: $handy = preg_match("/A.B.C.D/",$table); //IP Adresse vom Handy/Tablet usw.
<?
/*//////////////////////////////////////////////////////////////////////////////
Fritzbox Script Aktive WLan-Geräte
/*//////////////////////////////////////////////////////////////////////////////
//Definitionen//////////////////////////////////////////////////////////////////
$fritzboxIP = "fritz.box"; //falls umbenannt IP eintragen
$fritzboxPort = "49000"; //konstant
$login = "123456789"; //ggf. eintragen
$password = "123456789"; //ggf. eintragen
////////////////////////////////////////////////////////////////////////////////
$client = new SoapClient(
null,
array(
'location' => "http://".$fritzboxIP.":".$fritzboxPort."/upnp/control/wlanconfig1",
'uri' => "urn:dslforum-org:service:WLANConfiguration:1",
'noroot' => True,
'login' => $login,
'password' => $password
)
);
//print_r($client);
$NumberOfHosts = $client->GetTotalAssociations();
echo "<pre>";
print_r($NumberOfHosts);
echo "</pre>";
//Ausgabe der angelegten Geräte
for ($i=0;$i<$NumberOfHosts;$i++)
{
$Host = $client->GetGenericAssociatedDeviceInfo(new SoapParam($i,'NewAssociatedDeviceIndex'));
//echo "<pre>";
//print_r($Host);
//echo "</pre>";
$Hosts[] = $Host;
}
/*Muster des Array://///////////////////////////////////////////////////////////
Array
(
[NewAssociatedDeviceMACAddress] =>
[NewAssociatedDeviceIPAddress] => *.*.*.*
[NewAssociatedDeviceAuthState] => 0
[NewX_AVM-DE_Speed] => 0
[NewX_AVM-DE_SignalStrength] => 0
)
Struktur des Popup / Tabelle:
--------------------------------------------------------------------------------
|Übersicht WLan: [Anzahl]Aktive Geräte |
--------------------------------------------------------------------------------
| Nr | IPAddress | MACAddress | AUTHState |
--------------------------------------------------------------------------------
| | | | |
--------------------------------------------------------------------------------
/*//////////////////////////////////////////////////////////////////////////////
//Ausgabe der aktiven Geräte
for ($i=0;$i<$NumberOfHosts;$i++)
{
if($Hosts[$i]['NewAssociatedDeviceAuthState'] == 1)
{
$NewIPAddress = $Hosts[$i]['NewAssociatedDeviceIPAddress'];
$NewMACAddress = $Hosts[$i]['NewAssociatedDeviceMACAddress'];
$NewAuthState = $Hosts[$i]['NewAssociatedDeviceAuthState'];
$ActiveDevices[] = $Hosts[$i]['NewAssociatedDeviceAuthState'];
$table = '<tr><th>Nr. </th><th>IPAddress </th><th>MACAddress </th><th>AUTHState</th></tr>';
echo "<pre>";
echo $table;
echo "</pre>";
$table = "$i $NewIPAddress $NewMACAddress $NewAuthState";
echo "<pre>";
echo $table;
echo "</pre>";
}
}
//Beispiel Zeilenumbruch
//echo "{$table}<br />\n";
echo "<pre>";
echo "Anzahl Geraete: ";
echo(count($NumberOfHosts));
echo "</pre>";
$handy = preg_match("/A.B.C.D/",$table); //IP Adresse vom Handy/Tablet usw.
echo "<pre>";
echo($handy);
echo "</pre>";
?>
Was der Code dann zurückgiebt sieht so aus:
8
Nr. IPAddress MACAddress AUTHState
1 123.456.789.1 00:1e:65:61:89:d0 1
Nr. IPAddress MACAddress AUTHState
3 123.456.789.2 48:59:29:f2:4c:2b 1
Nr. IPAddress MACAddress AUTHState
5 123.456.789.3 48:9d:24:8e:eb:6f 1
Anzahl Geraete: 1
1Der original Code ist übrigens nicht von mir, sondern stammt von hier
https://www.symcon.de/forum/threads/25745-FritzBox-mit-SOAP-auslesen-und-steuern?p=259011#post259011
also gehört das Original dem Urheber.
Ich hoffe keine Rechte verletzt zu haben.
Da gibt's nen ganzen Thread zum Thema, allerdings im Zusammenhang mit anderen Gerätschaften. Dennoch...