Autor Thema: IP Check / Anwesenheit  (Gelesen 23557 mal)

0 Mitglieder und 2 Gäste betrachten dieses Thema.

Offline vicky

  • Jr. Member
  • **
  • Beiträge: 54
    • Profil anzeigen
    • E-Mail
Re: IP Check / Anwesenheit
« Antwort #15 am: 29. November 2015, 18:01:46 »
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
1


Der 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...
« Letzte Änderung: 29. November 2015, 21:40:43 von vicky »

Offline linsenpago

  • Jr. Member
  • **
  • Beiträge: 84
    • Profil anzeigen
    • E-Mail
Re: IP Check / Anwesenheit
« Antwort #16 am: 29. November 2018, 20:49:26 »
Hallo!

Ich habe vor einiger Zeit mal telefonisch den Wago Support in Wien kontaktiert und genau nach so einer Funktion gefragt.

Der Herr am anderen Ende war von der Idee überzeugt und meinte, er schreibt mir was zusammen.

Herausgekommen ist das angehängte Projekt welches ich soeben erfolgreich in meine Steuerung integriert habe.

Wenn entweder das Smartphone meiner Frau oder von mir sich ins Wlan hängt, dann erkennt die Steuerung dass das Gerät da ist und somit Anwesend ist. Dann deaktiviere ich die Alarmfunktion.
Man muss natürlich den Geräten eine fixe IP im Netzwerk zuweisen.

Bin erst jetzt dazu gekommen es zu integrieren.
Aber vielleicht kann es ja noch jemand brauchen.. wenn ich das schaffe, dann ihr auch. ;-)

Achja es läuft auf einer Wago 750-880

LG und viel Spaß damit!!

[gelöscht durch Administrator]

Offline vicky

  • Jr. Member
  • **
  • Beiträge: 54
    • Profil anzeigen
    • E-Mail
Re: IP Check / Anwesenheit
« Antwort #17 am: 02. Dezember 2018, 20:51:42 »
Hallo linsenpago,
schöne Sache, daß Du das hinbekommen hast.

Ich habe mir das angeschaut. Wenn ich das richtig verstehe, sendest Du PINGs an die IP-Adressen.
Ist das richtig?

Frage an die Community:
Gibt es das ganze auch für Beckhoff-Hardware?

oder
mit welchem Baustein aus der "Network.lib" kann man PINGs senden und auswerten?



Danke vorab
Vicky

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re: IP Check / Anwesenheit
« Antwort #18 am: 04. Dezember 2018, 16:25:23 »
ping befehle werden von der oscat lib nicht unterstützt
man kann nur normale UDP und TCP Nachrichten verarbeiten die auf basis von IP-Adressen arbeiten

Offline vicky

  • Jr. Member
  • **
  • Beiträge: 54
    • Profil anzeigen
    • E-Mail
Re: IP Check / Anwesenheit
« Antwort #19 am: 04. Dezember 2018, 22:40:27 »
Ah ok,

Gibt es einen Ansatz für die Beckhoff-Hardware wie linsenpago in seinem Beispiel gemacht hat?

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re: IP Check / Anwesenheit
« Antwort #20 am: 05. Dezember 2018, 04:58:42 »
oscat erfordert die Installation des„TwinCAT TCP/IP Connection Server“
Benötigt somit die Bibliothek „TcpIp.Lib“(Standard.Lib; TcBase.Lib; TcSystem.Lib werden danach automatisch eingebunden )

Schau mal in der Doku von Beckhoff nach ob diese Bausteine dir das ermöglichen
Einen anderen Weg um Ethernet-Kommunikation frei zu programmieren gibt es nicht !