Wie kann ich meinen Raspberry Pi kontinuierlich nach einer MAC-Adresse in meinem Netzwerk suchen lassen und dann eine Aufgabe ausführen, wenn er eine bestimmte MAC-Adresse erkennt?
Ich benutze meinen Pi, um verschiedene Hausautomationsaufgaben auszuführen. Ich möchte, dass es eine Aufgabe ausführt, wenn es feststellt, dass mein Telefon mit dem Wi-Fi verbunden ist (was bedeutet, dass ich gerade zu Hause bin). Wie kann ich den Pi am besten kontinuierlich nach der MAC-Adresse meines Telefons durchsuchen lassen? Ich weiß, dass ich arp-scan
nach MAC-Adressen suchen kann, aber ich muss dies kontinuierlich tun. Ich bin mir sicher, dass es eine bessere Methode gibt, als arp-scan
in einer Schleife oder mit cron jede Minute ausgeführt zu werden.
wifi
home-automation
gsears
quelle
quelle
Antworten:
Zuhause anrufen
Mein Telefon verhält sich anders, da alle Telefone einen Unterschied aufweisen. Eine Ping-Antwort erfolgt nur, wenn das Telefon wach ist. Wenn der Pi neu gestartet wird und sich das Telefon im Energiesparmodus befindet, werden seine IP- und Mac-Adressen mit 100% Paketverlust durch mehrere Pings in der ARP-Tabelle abgelegt. Ich habe gerade erfahren, dass der
arp
Befehl veraltetip neighbor
ist, wird jetzt verwendet.Nach dem Testen würde meine Lösung darin bestehen, zwei Schleifen in einer Endlosschleife zu haben. Die erste innere Schleife wäre, mehrmals einen Ping auf einen Bereich von IP-Adressen durchzuführen, der für mein Telefon möglich wäre. Mein Router hat die ersten 19 IP-Adressen reserviert und ich habe möglicherweise etwa ein halbes Dutzend Adressen, die von DHCP zugewiesen werden, einschließlich meines Telefons, beginnend mit der Adresse 192.168.0.20. Ich werde ein Dutzend IP-Adressen einmal im Hintergrund anpingen, eine Sekunde auf eine Antwort warten und die Ergebnisse als Müll wegwerfen. Ich werde acht Sekunden auf dem ARP-Tisch warten und den
ip neighbor
Befehl ausführen, indem ich die MAC- Adresse nach der IP-Adresse durchsucht . Der Router und das Telefon behalten dieselbe IP-Adresse, sofern nichts Ungewöhnliches passiert. Die arp - Tabelle wird in dem Pi bleiben, sondern Zustände ändert ausREACHABLE
,STALE
undFAILED
von Pings und Zeit.Die zweite interne Schleife pingt alle fünf Minuten und überprüft die Arptabelle, um festzustellen, ob das Telefon zu Hause ist. Mit drei aufeinanderfolgenden Pings 'FAILED' ist das Telefon nicht zu Hause. Wenn das Telefon nicht zu Hause ist, kann das Telefon mit der Einstellung "REACHABLE" (Erreichbar) nach Hause zurückkehren (etwas tun). Es werden Überprüfungen durchgeführt, um die IP-Adresse zu validieren und zur ersten internen Schleife zurückzukehren, wenn Korrekturen erforderlich sind.
quelle
Fügen Sie Ihrer IP-Adresse eine Reservierung hinzu und senden Sie alle paar Minuten einen Ping-Befehl über einen Cron-Job.
Ich bewerkstellige dies auf meinem RPI mithilfe von fhem . Es verfügt über ein integriertes Anwesenheitserkennungsmodul , mit dem ich den Aufenthaltsstatus festlegen kann, der abgefragt werden kann, um die Hausautomationsaufgaben zu beeinflussen.
quelle