OSCAT Forum

network.lib => Codesys 2 => Thema gestartet von: erdbeerschaeler am 05. November 2015, 19:35:09

Titel: IP Check / Anwesenheit
Beitrag von: erdbeerschaeler am 05. November 2015, 19:35:09
Hallo,
ich suche eine Möglichkeit mit der Wago eine Anwesenheitserkennung zu realisieren.
Gibt es einen Baustein mit dem ich zyklisch nach einer IP suchen kann, und wenn diese erreichbar ist ein TRUE bekomme?

Momentan realisiere ich das mit der Logic vom Xsolution, aber ich möchte auf IP-Symcon umsteigen.

Am Ende möchte ich alle Logikfunktionen und Schnittstellen in der Wago haben und die IP Überwachung ist so ziemlich das einzige was mir noch fehlt.

Also falls mir jemand eine Tipp geben kann, würde ich mich freuen.

Gruß
Der Bem
Titel: Re: IP Check / Anwesenheit
Beitrag von: peewit am 05. November 2015, 19:40:51
die möchtest mit deiner sps einen anderen netzwerkteilnehmer auf reaktion prüfen ?

was ist das für ein teilnehmer ...
Titel: Re: IP Check / Anwesenheit
Beitrag von: erdbeerschaeler am 05. November 2015, 19:41:49
2 x Smartphone mit einem Apfel drauf  ;)
Titel: Re: IP Check / Anwesenheit
Beitrag von: shrimps am 06. November 2015, 12:50:05
Schade,
vor 2 Jahren war genau die gleiche Frage und der TE hat sich nicht mehr zurückgemeldet, echt schade um die Wissensverbreitung !

http://www.oscat.de/community/index.php?topic=1904.0 (http://www.oscat.de/community/index.php?topic=1904.0)

Habe auch Interesse an diesem Thema !

Im SPS-Forum ebefalls:
http://www.sps-forum.de/codesys-und-iec61131/44424-ereichbarkeit-von-ethernet-geraeten-pruefen.html (http://www.sps-forum.de/codesys-und-iec61131/44424-ereichbarkeit-von-ethernet-geraeten-pruefen.html)

LG
Shrimps
Titel: Re: IP Check / Anwesenheit
Beitrag von: peewit am 08. November 2015, 11:15:37
ein smartphone kannst du über mobile-netz nicht ansprechen bzw. anpingen !
das geht nur wenn du im wlan bist

im mobilen netz ist dein handy hinter der firewall vom provider
darum müssen auch alle apps vo teilnehmer miteinander kommunizieren über einen server verbunden werden (vermittler)

Titel: Re: IP Check / Anwesenheit
Beitrag von: Benzko am 09. November 2015, 12:42:27
Hat dies schon jemand hier im Forum fürs Wlan umgesetzt?

Gruß
Benzko
Titel: Re: IP Check / Anwesenheit
Beitrag von: erdbeerschaeler am 09. November 2015, 17:38:16
Hallo peewit,

natürlich erst wenn ich im WLAN bin, bei XHome habe ich den Geräten eine feste IP Verpasst, und sobald das Gerät im WLAN ist, ist die Anwesenheit auf TRUE.
Ich habe noch eine Verzögerung von 30 Minuten eingebaut, sodass die Anwesenheitserkennung nicht sofort bei jedem nicht erreichen der Geräte die Anwesenheit deaktiviert und andere Automatismen anwirft.

DER BEM
Titel: Re: IP Check / Anwesenheit
Beitrag von: vicky am 22. November 2015, 16:20:34
Hallo Zusammen,
gibt es denn nun so eine Funktion, die die Anwesendheit eines Teilnehmers auf WLAN-Ebene abfragen kann.
Hat Jemand einen funktionierenden Lösungsansatz?
Titel: Re: IP Check / Anwesenheit
Beitrag von: erdbeerschaeler am 22. November 2015, 17:50:58
ich hab außer mit xsolution noch keine Lösung gefunden.
Titel: Re: IP Check / Anwesenheit
Beitrag von: vicky am 22. November 2015, 20:06:59
Hallo,
ich kenn mich ja nicht aus, dennoch habe ich gerade mal damit angefangen das Demo "IP2GEO_DEMO" zu verwenden, um vorhandene IP-Adressen abzufragen.
Ich weiß nicht, ob dies die richtige Funktion hierfür ist.
Wenn ich meinen Router abfrage, wird die Funktion mit Done beendet. Der Datenbereich "GEO" bleibt dennoch leer.
Anfragen zu andere Teilnehmern im WLAN-Netzwerk, wie Tablet, Smartphone, quittiert der Baustein mit Fehlercode:
error_t:16#01
error_c:16#FD000000

Weiß jemand von OSCAT, welche Funktion man zur Abfrage verwenden kann/soll?


P.S.: Dateianhänge gehen leider nicht:
Das Dateianhangsverzeichnis ist nicht beschreibbar. Ihr Dateianhang oder Benutzerbild kann nicht gespeichert werden!
Titel: Re: IP Check / Anwesenheit
Beitrag von: peewit am 24. November 2015, 17:37:46
ip2geo kann natürlich nur offizielle internet-ip-adressen rückmelden

deine wlan geräte haben normalerweise einen privaten ip-bereich und logischerweise kann keiner aus dem internet deine geräte kennen.

die fehlermeldung deutet darauf hin das die adressangabe im wlan keine reine ip-adresse war und dadurach der baustein versucht mittels dns_client den namen in eine ip-adresse zu wandeln

beim versuch die aadresse anzusprechen gibt es ein problem

kurz um für lokale geräte kann es nicht funktionieren
nur mit deinem router oder internet-teilnehmern
 
Titel: Re: IP Check / Anwesenheit
Beitrag von: vicky am 24. November 2015, 22:06:44
Hallo peewit,
gibts eine Funktion/Baustein für den privaten Bereich oder bestimmte IP-Adressen Abzufragen?
Titel: Re: IP Check / Anwesenheit
Beitrag von: peewit am 24. November 2015, 22:17:43
du musst noch beschreiben was du unter "abfragen" versteht
bzw. welches art und weise du meinst

wie z.b. ping befehl

Titel: Re: IP Check / Anwesenheit
Beitrag von: vicky am 24. November 2015, 22:27:19
Naja,
Abfragen, wer im Netzwerk als aktiver Teilnehmer vorhanden ist.

Einen Ping auf aktive IP-Adressen geht ja wohl offensichtlich nicht, sonst wäre hier schon lange eine Lösung präsentiert worden.
Es kann irgendeine Art sein, Hauptsache man bekommt die aktiven Teilnehmer im Netzwerk.

Ist es denn möglich, das man seinen Router auf aktive Teilnehmer abfrägt?
Titel: Re: IP Check / Anwesenheit
Beitrag von: vicky am 26. November 2015, 23:25:42
Hallo nochmal,
in dem Zusammenhang und Bezug auf FritzBox! hier eventuell ein Ansatz den Router abzufragen:
https://blog.pregos.info/2015/11/07/anwesenheitserkennung-fuer-smarthome-mit-der-fritzbox-via-tr-064/ (https://blog.pregos.info/2015/11/07/anwesenheitserkennung-fuer-smarthome-mit-der-fritzbox-via-tr-064/)

Kann dieser "SOAP"-Dienst mit dem "TR-064"-Standard von einem der Netzwerkbausteinen realisiert werden?
Titel: Re: IP Check / Anwesenheit
Beitrag von: vicky 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 (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...
Titel: Re: IP Check / Anwesenheit
Beitrag von: linsenpago 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]
Titel: Re: IP Check / Anwesenheit
Beitrag von: vicky 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
Titel: Re: IP Check / Anwesenheit
Beitrag von: peewit 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
Titel: Re: IP Check / Anwesenheit
Beitrag von: vicky 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?
Titel: Re: IP Check / Anwesenheit
Beitrag von: peewit 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 !