Inhaltsverzeichnis:

[15min] Weasley Clock / Who Is Home Indicator - Basierend auf TR-064 (Beta) - Gunook
[15min] Weasley Clock / Who Is Home Indicator - Basierend auf TR-064 (Beta) - Gunook

Video: [15min] Weasley Clock / Who Is Home Indicator - Basierend auf TR-064 (Beta) - Gunook

Video: [15min] Weasley Clock / Who Is Home Indicator - Basierend auf TR-064 (Beta) - Gunook
Video: Dr. Seuss - The Lorax (1972) 2024, November
Anonim
Image
Image
[15min] Weasley Clock / Who Is Home Indicator - Basierend auf TR-064 (Beta)
[15min] Weasley Clock / Who Is Home Indicator - Basierend auf TR-064 (Beta)

UPDATE: Siehe Schritt 3.

Lange Geschichte (TL;DR unten): Vor einiger Zeit habe ich ein kleines Bash-Skript auf meinem Computer geschrieben, das das Netzwerk nach registrierten Geräten durchsucht und deren Hostnamen mit einer Liste mit zugehörigen Namen vergleicht. Jedes Mal, wenn sich ein Gerät im Netzwerk an- oder abmeldet, bekomme ich eine Benachrichtigung. Auf diese Weise hätte ich eine Idee, wer zu Hause ist (es ist nicht nur manchmal schön zu wissen, wer zu Hause ist, um ihn zu fragen, ob er an einer Mahlzeit oder ähnlichem teilnehmen möchte, sondern es kann Ihnen auch möglicherweise helfen, unangenehme Situationen zu vermeiden). Das Problem ist, dass diese Methode nicht sehr zuverlässig ist. Leider antworten einige Geräte nicht auf Pings (z. B. Smartphones) und scheinen in einen Energiesparmodus zu gehen, sind also mit Befehlen wie nmap nicht zuverlässig erkennbar. Ich habe versucht, dies zu überwinden, indem ich mindestens 10 Negative benötigte, bevor ich schließlich ankündigte, dass das Gerät das Netzwerk verlassen hat. Alles in allem hat es funktioniert, aber langsam, unzuverlässig und nicht sehr schön. Außerdem wollte ich überprüfen können, wer zu Hause ist, ohne meinen Computer zu öffnen. Also hatte ich diese ESP8266s herumliegen - und wollte damit spielen. Aber ich wollte nicht die 10.120.124.812. ESP-basierte Wetterstation oder so bauen (warum willst du das Wetter mit deinem beschissenen ±2°C-Thermometer überwachen, wenn du sowieso nur eine Website besuchen kannst?). Der Plan war also gemacht. Leider stellt sich heraus, dass der ESP anscheinend nicht dafür ausgestattet ist, richtig zu pingen (was anfangs schlecht war, erinnern Sie sich?), geschweige denn einen vollständigen Netzwerkscan durchführen. Ich habe überlegt, dafür eine Bibliothek zu schreiben - aber da mein C++ sehr begrenzt ist, ist dies mein erstes ESP-Projekt und ich bin auch kein Genie mit Netzwerkkram Router (Marke Fritz!Box) hat tatsächlich eine API! YAY!!!! Das Protokoll heißt TR-064. So ein inspirierender Name, oder? Als ich etwas recherchierte, fand ich online eine (ziemlich beschissene) Dokumentation. Ich habe einige Zeit gebraucht, um es herauszufinden. Ich könnte in den nächsten Tagen eine praktischere Anleitung veröffentlichen (und wie man mit dieser API mit einem Browser-Add-On kommuniziert / testet). Nachdem ich die API verstanden hatte, begann ich, sie von meinem ESP aus zu verwenden. Lange Rede, kurzer Sinn: Ich habe eine Duck-Tape-and-wd40-Lösung laufen und tun, was ich wollte (die API für angeschlossene Geräte abfragen, sie mit einer Liste von MAC-Adressen vergleichen und die LEDs entsprechend schalten). Aber ich wollte eine robustere und flexible Lösung und diese API hat so viel mehr zu bieten (Sie können Einstellungen ändern (WLAN ein-/ausschalten, Passwort ändern, Gast-WLAN öffnen/schließen, Signalstärke ändern), Router neu starten, Verbindungsgeschwindigkeit abfragen, …) - also habe ich mich entschlossen eine universelle TR-064 Bibliothek zu erstellen!TL;DR;Gerät, das über LEDs anzeigt, wer gerade zu Hause ist. Funktioniert super, hat noch kein tolles Gehäuse (hey - die Beta im Titel bemerkt?). Verwendet das SOAP-Protokoll, um mit dem Router zu kommunizieren. Schrieb Arduino-Bibliothek, um dies zu ermöglichen. Erforderliche Kenntnisse • Grundlegende Arduino / ESP-Kenntnisse • Wenn Sie ein Blink-Beispiel mit Ihrem ESP zusammengebaut haben, wird es Ihnen gut gehen! • Wenn nicht, können Sie den ersten beiden Schritten dieses instructable folgen • Löten könnte Kommen Sie als praktisch, wenn Sie die Breadboard-Bühne verlassen möchten• Einige 3D-Designs und / oder Holzbearbeitungen könnten sich für ein Gehäuse als nützlich erweisenGithub-Projektlink [https://github.com/Aypac/Arduino-TR-064-SOAP-Library] zum schnellen Nachschlagen.

Lieferungen

  • ESP8266 oder ESP32 auf Development-Board oder mit anderem Programmierer (2~6€)
  • USB-Kabel passend zum Programmiergerät
  • Netzteil (z. B. USB oder Akku ~2€)
  • Ein paar LEDs und Widerstände (~1€)
  • (Gehäuse)

=> Etwa 4-6€ für ein minimalistisches Design. Das bedeutet für mich, dass ich problemlos ein paar im Haus aufhängen kann. Wenn Sie faul sind, können Sie auch ein Entwicklungsboard mit mitgelieferten LEDs verwenden (siehe Schritt 4 für weitere Details).

Schritt 1: Richten Sie Ihren Router ein (optional, aber empfohlen)

Richten Sie Ihren Router ein (optional, aber empfohlen)
Richten Sie Ihren Router ein (optional, aber empfohlen)
Richten Sie Ihren Router ein (optional, aber empfohlen)
Richten Sie Ihren Router ein (optional, aber empfohlen)

Das Protokoll wurde als allgemeines Protokoll für Router entwickelt, aber ich weiß nur, dass (die meisten) Fritz!Box-Router (zumindest in Europa sehr verbreitet) es verwenden. Kenne keine anderen Marken. Ich gehe also davon aus, dass Sie eine Fritz!Box verwenden. Wenn Sie dies auf einem anderen Router zum Laufen bringen (oder dies nicht tun können), würde ich es gerne zu diesem instructable hinzufügen (vielleicht sogar eine kurze Kompatibilitätsliste starten?).

Dieser Schritt ist nicht notwendig, Sie könnten auch einfach Ihr Admin-Konto verwenden, aber das ist aus offensichtlichen Gründen nicht ratsam (könnte abgefangen oder aus Ihrem ESP extrahiert werden, Sie könnten versehentlich Dinge ändern, die Sie nicht möchten, …) - also ich raten Ihnen, es zu tun.

Egal, los gehts:

  1. Melden Sie sich bei Ihrer Fritz!Box an, indem Sie fritz.box in die URL-Leiste Ihres bevorzugten Browsers eingeben.
  2. Suchen Sie die Seite zum Anlegen eines neuen FRITZ!Box-Benutzers (diese muss unter System erweitert sein, wenn Sie sie nicht finden, versuchen Sie, Ihr Gerät zu aktualisieren).
  3. Erstellen Sie ein neues Konto, wie Sie es im Bild sehen (mit einem anderen Benutzernamen/Passwort!).
  4. Ausloggen.

Schritt 2: Code

Image
Image
Hardware (Beta)
Hardware (Beta)
  1. Sie können die Bibliothek von Github beziehen.

  2. In den Beispielen finden Sie eine Datei namens home-indicator.ino, die den Code für dieses Projekt darstellt. Legen Sie den Beispielordner in den Home-Ordner Ihres Arduino-IDE-Projekts und den anderen Ordner in den Bibliotheken-Ordner im gleichen Projekt-Home-Ordner.
  3. (Neu)Starten Sie Ihre IDE.
  4. Öffnen Sie home-indicator.ino in der IDE und geben Sie Ihre Einstellungen ein. Es sollte klar sein, was wohin gehört. Wenn Sie Fragen haben, lassen Sie es mich wissen!
  5. Jetzt können Sie es kompilieren und auf Ihr ESP übertragen!

Schritt 3: Hardware (Beta)

Hardware (Beta)
Hardware (Beta)
Hardware (Beta)
Hardware (Beta)
Hardware (Beta)
Hardware (Beta)

Ja… Dies ist der Schritt, an dem ich noch etwas arbeiten muss. Aber ich denke, es gibt genug Material im Web, um etwas herauszufinden:) Das Setup wie auf den Bildern ist nur eine Diode mit einem ~ 100 Ohm Widerstand, der mit dem GPIO {5, 4, 0, 2} verdrahtet ist, das sind die D1, D2, D3, D4 (in dieser Reihenfolge) Pins meiner MCU ESP8266-Platine und das kleine orangefarbene Kabel, das die Kathoden zu GND führt (auf meiner Platine mit G gekennzeichnet). Wenn Sie faul sind, können Sie tun, was Sie im zweiten Bild sehen. Verwenden Sie einfach ein Entwicklungsboard mit mitgelieferten LEDs (wie das "ESP-202", siehe Bilder - ca. 3,50-5,00€ inkl. Versand). Sie können es dann einfach an USB-Strom anschließen oder den mitgelieferten Akku verwenden, eine Schnittstelle auf ein Blatt Papier zeichnen und an die Wand kleben. Fertig. Für dieses spezielle Board sind die Ports:

int userPins[numUser] = {5, 4, 2, 14, 16};

von oben nach unten.

Schritt 4: Outlook/Referenzen

Das habe ich noch vor: 1. Ein schönes Gehäuse machen (offensichtlich) 2. Eine schöne GUI zum Verwalten von Benutzern/LEDs/MACs/bekannten Geräten hinzufügen 3. Die Bibliothek verbessern (siehe dazu Github) 4. Fix: manchmal die LEDs reagieren träge (es dauert eine Weile, bis sie sich ausschalten, nachdem ein Gerät verlassen wurde) ohne ersichtlichen Grund 5. Schließen Sie das Ding im Flur und vielleicht noch ein paar mehr im Haus an Würde gerne ein paar Inputs von euch bekommen! Und wie immer macht es mich wirklich glücklich zu sehen, wie andere Scheiße bauen, die du dir ausgedacht hast, also nimm dir bitte die Minute, um zu kommentieren und Bilder zu posten!:):)Einige weitere ReferenzenIch werde hier einige Dinge verlinken, die dir helfen könnten: • TR-064-Referenz • Ein Typ, der mit der Shell und TR-064 herumspielt (gut, um die API zu verstehen) • Harry Potter Wikipedia: Weasley Clock-Eintrag • Einige Leute bauen eine schöne, aber komplizierte Weasly Clock*_* Sie basiert auf einer App für dein Handy, die deinen Standort erfasst. Wenn Sie sich in bestimmten vordefinierten Bereichen befinden, leuchtet das entsprechende Licht der Uhr auf. Für mich war das zu kompliziert und hatte zu viele Stellen, an denen es kaputt gehen konnte: • Apps müssen auf dem neuesten Stand gehalten werden • Jeder muss diese Apps benutzen • Und mit den Auswirkungen auf die Privatsphäre in Ordnung sein • Die App funktioniert nur mit Internet Verbindung • Sie müssen einen Zwischenserver für die Kommunikation verwenden (es sei denn, Sie möchten Ihren esp als Server einrichten und Ihr Heimnetzwerk für den Außenverkehr öffnen - yay, noch ein unsicheres IOT-Gerät, das direkt mit dem Internet verbunden ist!) • Die Zwischendienst könnte eines Tages offline gehen/seine API ändern, • …Sie benötigen mehr Software. Mehr Software bedeutet mehr Orte, an denen Fehler gemacht werden können;) Aber sie haben einen tollen Job gemacht und wenn Sie so etwas tun möchten, besuchen Sie ihre Website, sie ist wirklich großartig!

Empfohlen: