Spisu treści:

[15min] Zegar Weasleya / wskaźnik Who Is Home - na podstawie TR-064 (beta): 4 kroki (ze zdjęciami)
[15min] Zegar Weasleya / wskaźnik Who Is Home - na podstawie TR-064 (beta): 4 kroki (ze zdjęciami)

Wideo: [15min] Zegar Weasleya / wskaźnik Who Is Home - na podstawie TR-064 (beta): 4 kroki (ze zdjęciami)

Wideo: [15min] Zegar Weasleya / wskaźnik Who Is Home - na podstawie TR-064 (beta): 4 kroki (ze zdjęciami)
Wideo: 12 Hour - TIMER & ALARM - 1080p - COUNTDOWN 2024, Listopad
Anonim
Image
Image
[15min] Zegar Weasleya / Wskaźnik Kto jest w domu - Na podstawie TR-064 (beta)
[15min] Zegar Weasleya / Wskaźnik Kto jest w domu - Na podstawie TR-064 (beta)

AKTUALIZACJA: patrz krok 3.

Długa historia (TL; DR poniżej): Jakiś czas temu napisałem mały skrypt bash na moim komputerze, który skanował sieć w poszukiwaniu zarejestrowanych urządzeń i porównywał ich nazwy hostów z listą z powiązanymi nazwami. Za każdym razem, gdy urządzenie logowało się lub wylogowywało z sieci, otrzymywałem powiadomienie. W ten sposób mam pomysł, kto jest w domu (nie tylko czasami fajnie jest wiedzieć, kto jest w domu, aby zapytać ich, czy chcą dołączyć do posiłku itp., Ale może to również potencjalnie pomóc w uniknięciu niezręcznych sytuacji). Problem w tym, że ta metoda nie jest zbyt niezawodna. Niestety niektóre urządzenia nie odpowiadają na pingi (np. smartfony) i wydają się przechodzić w jakiś tryb oszczędzania energii, dlatego nie można ich niezawodnie wykryć za pomocą poleceń takich jak nmap. Próbowałem to przezwyciężyć, wymagając co najmniej 10 negatywów, zanim ostatecznie ogłosiłem, że urządzenie opuściło sieć. W sumie zadziałało, ale powoli, zawodnie i niezbyt ładnie. Chciałem też móc sprawdzić, kto jest w domu, bez otwierania komputera. Miałem więc te ESP8266 porozrzucane - i chciałem się nimi pobawić. Ale nie chciałem zbudować 10.120.124.812. stacji pogodowej opartej na ESP lub podobnej (dlaczego miałbyś monitorować pogodę za pomocą swojego gównianego termometru ±2°C, skoro i tak możesz po prostu odwiedzić jakąś stronę?). Więc plan został wykonany. Niestety okazuje się, że ESP wydaje się nie być przystosowany do poprawnego pingowania (co było złe na początku, pamiętasz?), nie mówiąc już o pełnym skanowaniu sieci. Rozważałem napisanie jakiejś biblioteki do tego - ale ponieważ mój C++ jest bardzo ograniczony, to jest mój pierwszy projekt ESP i nie jestem geniuszem w sprawach związanych z siecią, też porzuciłem ten pomysł. Po przeprowadzeniu badań dowiedziałem się, że mój router (marka Fritz!Box) faktycznie ma API! TAK!!!! Protokół nazywa się TR-064. Taka inspirująca nazwa, prawda? Robiąc trochę badań w tej sprawie, znalazłem (dość kiepską) dokumentację online. Rozpracowanie tego zajęło mi trochę czasu. Mogę opublikować bardziej praktyczne instrukcje w ciągu najbliższych dni (i jak komunikować się z tym interfejsem API / testować go za pomocą dodatku do przeglądarki). Kiedy zrozumiałem API, zacząłem go używać z mojego ESP. Krótko mówiąc: uruchomiłem rozwiązanie typu duck-tape-i-wd40 i robiłem to, co chciałem (odpytywanie interfejsu API o podłączone urządzenia, porównanie ich z listą adresów MAC i odpowiednie przełączanie diod LED). Ale chciałem bardziej niezawodnego i elastyczne rozwiązanie, a ten interfejs API ma o wiele więcej do zaoferowania (możesz zmienić ustawienia (włączyć/wyłączyć Wi-Fi, zmienić hasło, otworzyć/zamknąć Wi-Fi dla gości, zmienić moc sygnału), zrestartować router, sprawdzić prędkość połączenia,…) - więc postanowiłem stworzyć uniwersalną bibliotekę TR-064!TL;DR;Urządzenie sygnalizujące za pomocą diod LED kto aktualnie jest w domu. Działa świetnie, nie ma jeszcze świetnej obudowy (hej - zauważyłeś betę w tytule?). Używa protokołu SOAP do komunikacji z routerem. Napisałem bibliotekę Arduino, aby tak się stało. Wymagana wiedza • Podstawowa wiedza na temat Arduino/ESP • Jeśli zmontujesz przykład Blink z ESP, wszystko będzie dobrze! • Jeśli nie, możesz wykonać dwa pierwsze kroki tej instrukcji • Możliwe lutowanie przydają się, jeśli chcesz opuścić scenę prototypową• Niektóre projekty 3D i/lub obróbka drewna mogą się przydać w przypadku linku do projektu obudowy Github [https://github.com/Aypac/Arduino-TR-064-SOAP-Library] do szybkiego odniesienia.

Kieszonkowe dzieci

  • ESP8266 lub ESP32 na płytce rozwojowej lub z innym programatorem (2~6€)
  • Kabel USB pasujący do programatora
  • Zasilacz (np. USB lub bateria ~2€)
  • Kilka diod LED i rezystory (~1€)
  • (Obudowa)

=> Około 4-6 € za minimalistyczny design. Oznacza to dla mnie, że mogę spokojnie powiesić kilka w domu. Jeśli jesteś leniwy, możesz również użyć płytki rozwojowej z dołączonymi diodami LED (więcej szczegółów w kroku 4).

Krok 1: Skonfiguruj router (opcjonalnie, ale zalecany)

Skonfiguruj router (opcjonalnie, ale zalecane)
Skonfiguruj router (opcjonalnie, ale zalecane)
Skonfiguruj router (opcjonalnie, ale zalecane)
Skonfiguruj router (opcjonalnie, ale zalecane)

Protokół został zaprojektowany jako ogólny protokół dla routerów, ale wiem tylko, że (większość) routerów Fritz!Box (bardzo powszechnych przynajmniej w Europie) używa go. Nie wiem o innych markach. Zakładam więc, że używasz Fritz!Box. Jeśli możesz sprawić, by to zadziałało (lub tego nie zrobisz) na dowolnym innym routerze, z przyjemnością dodam go do tej instrukcji (może nawet zacznę krótką listę kompatybilności?).

Ten krok nie jest konieczny, możesz też po prostu użyć swojego konta administratora, ale nie jest to wskazane z oczywistych powodów (może zostać przechwycone lub wydobyte z ESP, możesz przypadkowo zmienić rzeczy, których nie chcesz, …) - więc ja radzę ci to zrobić.

W każdym razie, zaczynamy:

  1. Zaloguj się do Fritz!Box, wpisując fritz.box w pasku adresu swojej ulubionej przeglądarki.
  2. Znajdź stronę do tworzenia nowego użytkownika FRITZ!Box (musisz mieć zaawansowane, powinna znajdować się w Systemie, jeśli nie możesz jej znaleźć, spróbuj zaktualizować swoje urządzenie).
  3. Utwórz nowe konto, jak widać na obrazku (używając innej nazwy użytkownika/hasła!).
  4. Wyloguj.

Krok 2: Kod

Image
Image
Sprzęt (beta)
Sprzęt (beta)
  1. Bibliotekę możesz pobrać z Github.

  2. W przykładach znajdziesz plik o nazwie home-indicator.ino, który jest kodem tego projektu. Umieść folder przykłady w folderze domowym projektu arduino IDE, a drugi folder w folderze library w tym samym folderze domowym projektu.
  3. (Ponownie) Uruchom IDE.
  4. Otwórz home-indicator.ino w IDE i wprowadź swoje ustawienia. Powinno być dość oczywiste, co i gdzie. Jeśli masz jakieś pytania, daj mi znać!
  5. Teraz możesz go skompilować i przesłać do swojego ESP!

Krok 3: Sprzęt (beta)

Sprzęt (beta)
Sprzęt (beta)
Sprzęt (beta)
Sprzęt (beta)
Sprzęt (beta)
Sprzęt (beta)

Tak… To jest etap, w którym wciąż muszę jeszcze trochę popracować. Ale wydaje mi się, że w sieci jest wystarczająco dużo materiału, aby coś wymyślić:) Układ jak na zdjęciach to tylko dioda z rezystorem ~100Ohm podłączona do GPIO {5, 4, 0, 2}, czyli D1, Piny D2, D3, D4 (w tej kolejności) mojej płyty MCU ESP8266 i mały pomarańczowy kabel doprowadzający katody do GND (oznaczone jako G na mojej płycie). Jeśli jesteś leniwy, możesz zrobić to, co widzisz na drugim obrazku. Wystarczy użyć płytki rozwojowej z dołączonymi diodami LED (np. "ESP-202", patrz zdjęcia - około 3,50-5,00 € z wysyłką). Następnie możesz po prostu podłączyć go do zasilania USB lub użyć dołączonego akumulatora, narysować interfejs na kartce papieru i przykleić go do ściany. Gotowe. W przypadku tej konkretnej płyty porty to:

int piny użytkownika[liczbaUżytkownika] = {5, 4, 2, 14, 16};

od góry do dołu.

Krok 4: Outlook/Referencje

To, co wciąż planuję: 1. Stworzenie ładnej obudowy (oczywiście) 2. Dodanie ładnego GUI do zarządzania użytkownikami/LED/MAC/znanymi urządzeniami 3. Ulepszenie biblioteki (zobacz Github) 4. Naprawa: czasami diody LED reaguj ospale (trochę trwa, zanim się wyłączą, po tym, jak urządzenie zostało pozostawione) bez wyraźnego powodu 5. Połącz urządzenie na korytarzu i może jeszcze kilka w domu. I jak zawsze bardzo się cieszę, widząc, jak inni budują gówno, które wymyśliłeś, więc poświęć chwilę, aby skomentować i opublikować zdjęcia!:):) Więcej odniesień Załączę tutaj kilka rzeczy, które mogą ci pomóc: • Odniesienie do TR-064 • Jakiś facet bawiący się powłoką i TR-064 (dobrze, aby zrozumieć API) • Harry Potter Wikipedia: Wpis Zegara Weasley • Niektórzy faceci budują piękny, ale skomplikowany Zegar Weasly* _ *Opiera się na aplikacji na Twój telefon, która pobiera Twoją lokalizację. Jeśli znajdujesz się w określonych, z góry określonych obszarach, zapali się odpowiednie światło na zegarze. Dla mnie było to zbyt skomplikowane i musiało mieć wiele miejsc, w których mogło się zepsuć/zawieść: • Aplikacje muszą być aktualizowane • Każdy musi korzystać z tych aplikacji • I nie przeszkadzaj w kwestii wpływu na prywatność • Aplikacja działa tylko z internetem połączenie • Musisz użyć pośredniczącego serwera do połączenia komunikacji (chyba że chcesz ustawić się szczególnie jako serwer i otworzyć sieć domową dla ruchu z zewnątrz - tak, kolejne niebezpieczne urządzenie IOT podłączone bezpośrednio do Internetu!) • usługa pośrednia może pewnego dnia przejść w tryb offline/zmienić swoje API, • …Potrzebujesz więcej oprogramowania. Więcej oprogramowania oznacza więcej miejsc do zrobienia błędu;) Ale wykonali niesamowitą robotę i jeśli chcesz zrobić coś takiego, odwiedź ich stronę, jest naprawdę świetna!

Zalecana: