Aduino Ethernet Netzwerküberwachung

Hi,

Ich brauche Hilfe bei der Umsetzung einer Netzwerküberwachung!

Wir haben einen File-Server auf dem die Daten der Familie gespeichert sind. Dieser Läuft aktuell Tag und Nacht.
Ich möchte mit meinem Adrduino und Ethernet Shield das Netzwerküberwachen und so bald ein Gerät im Netzwerk vorhanden ist den Server starten und auch wieder runterfahren. Das runterfahren und starten funktioniert bereits.

Die Überwachung würde ich gerne per Ping durchführen. Der Arduino soll die Geräte anpingen und das Ergebnis auswerten. Leider konnte ich bisher keine Möglichkeit zum Senden eines Ping Signals finden! Ich hoffe Ihr könnt mir weiter helfen.

mfg

Chris

Du hast nach Arduino und Ping gegoogled?

Google mal nach Arduino und ICMP.

Ping oder ICMP ist sogar schon eine "Schicht" zu hoch. Denn viele Geräte blocken auch pings ganz gerne (Stichwort Personal Firewall).
Es reicht aber schon ein erfolgreicher ARP-Request aus. Zumindest, wenn sich die Geräte im gleichen Netz befinden.
Bei einem ARP-Request (der im übrigen einem lokalen Ping immer vorausgeht) wird per Broadcast gefragt, welcher Host im lokalen Netz auf die (zu pingende) IP (x.x.x.x) reagiert. Der betroffene Host antwortet dann auf diesen Request mit seiner MAC-Adresse, an die dann die weitere Kommunikation erfolgen kann.
Der Vorteil ist, ARP kann nicht geblockt werden, da es integraler Bestandteil der lokalen Netzwerk-Kommunikation ist.

Mario.

Super Danke. Ping geht so weit! Gibts für ARP auch eine Lib?

Jetzt habe ich nur noch folgendes Problem ich bin ein wenig zu Doof um das mit den Bytes zu verstehen. Bräuchte da mal einen denk Anstoß.

Ich habe die IP Adresse ja in Byte Form: byte pingAddr[] = {192,168,0,100};
jetzt möchte ich die letzte Zahl ja hochlaufen lassen bis 150. Wie stelle ich das am besten an?

hi,

for (byte n=100; n<151; n++) {
pingAddr[3] = n;
......
......
}

gruß stefan

müßte doch eigentlich auch gehen:

for (pingAddr[3]=100; pingAddr[3]<151; pingAddr[3]++)

oder?

Gibts für ARP auch eine Lib?

ARP wird nicht im Arduino gemacht, sondern direkt im WizNet-Chip, also: nein, es gibt keine Bibliothek und wird auch keine geben.

Übrigens: In Deinem Netz gibt's bestimmt einen DHCP-Server (der vergibt die IP-Adressen), meist ist der im Router eingebaut. Die meisten Router haben eine Administrationsseite, auf welcher die vergegebenen Leases (also die benutzten IP-Adressen) aufgelistet werden. Wenn Du Dir diese greifst, kommst Du ohne das Pingen an die gewünschte Information und es funktioniert auch, wenn auf einem Rechner der sog. Echo-Reply (also die Ping-Antwort) per Firewall unterbunden wird.

pylon:
ARP wird nicht im Arduino gemacht, sondern direkt im WizNet-Chip, also: nein, es gibt keine Bibliothek und wird auch keine geben.

Wenn es ein WIZnet5100 ist, dann hast Du recht, wobei man ggf. trotzdem an die Informationen kommen könnte. Ist es ein ENC28J60 dann macht der Arduino ARP und das Ganze wäre relativ einfach.

Ich habe auf GitHub - powtac/Autarc_LAN_User_Stats: Autarc LAN/Wifi and Network Device Statistics, by an Arduino UNO with Ethernet Shield (Wiznet w5500). ein Projekt gestartet dass mit einem Arduino Uno und dem Ethernetshield (W5100) etwas sehr änliches macht, nämlich alle IPs im Netzwerk scannen und dann eine Statistik über die Zeit ausgeben welches Gerät wie of online ist... Ich denke da findest Du ein paar der Code teile die Dir weiter helfen könnten.

Was gerade noch nicht funktioniert: die MAC Adresse zu gefundenen (gepingten) IPs herauszubekommen. :frowning: