Inhoudsopgave:

[15min] Weasley Clock / Who Is Home-indicator - Gebaseerd op TR-064 (bèta): 4 stappen (met afbeeldingen)
[15min] Weasley Clock / Who Is Home-indicator - Gebaseerd op TR-064 (bèta): 4 stappen (met afbeeldingen)

Video: [15min] Weasley Clock / Who Is Home-indicator - Gebaseerd op TR-064 (bèta): 4 stappen (met afbeeldingen)

Video: [15min] Weasley Clock / Who Is Home-indicator - Gebaseerd op TR-064 (bèta): 4 stappen (met afbeeldingen)
Video: This Video Breaks Youtube. 2024, November
Anonim
Image
Image
[15min] Weasley Clock / Who Is Home-indicator - Gebaseerd op TR-064 (bèta)
[15min] Weasley Clock / Who Is Home-indicator - Gebaseerd op TR-064 (bèta)

UPDATE: Zie stap 3.

Lang verhaal (TL;DR hieronder): Enige tijd geleden schreef ik een klein bash-script op mijn computer dat het netwerk zou scannen op geregistreerde apparaten en hun hostnamen zou vergelijken met een lijst met bijbehorende namen. Elke keer dat een apparaat in- of uitlogt op het netwerk, kreeg ik een melding. Op deze manier zou ik een idee hebben wie er thuis is (niet alleen is het soms fijn om te weten wie er thuis is om hen te vragen of ze mee willen eten of iets dergelijks, maar het kan je mogelijk ook helpen lastige situaties te voorkomen). Het probleem is dat deze methode niet erg betrouwbaar is. Helaas reageren sommige apparaten niet op pings (bijv. smartphones) en lijken ze in een energiebesparende modus te gaan en zijn dus niet betrouwbaar detecteerbaar met opdrachten zoals nmap. Ik probeerde dit te verhelpen door ten minste 10 negatieven te eisen voordat ik uiteindelijk aankondigde dat het apparaat het netwerk had verlaten. Al met al werkte het, maar langzaam, onbetrouwbaar en niet erg mooi. Ook wilde ik kunnen zien wie er thuis is, zonder mijn computer te openen. Dus ik had deze ESP8266's liggen - en wilde ermee spelen. Maar ik wilde niet het 10.120.124.812e ESP-gebaseerde weerstation of iets dergelijks bouwen (waarom zou je het weer willen volgen met je waardeloze ±2°C-thermometer als je toch gewoon een website kunt bezoeken?). Dus het plan was gemaakt. Helaas blijkt de ESP niet te zijn uitgerust om goed te pingen (wat in het begin slecht was, weet je nog?) Laat staan een volledige netwerkscan uitvoeren. Ik overwoog om daar een bibliotheek voor te schrijven - maar aangezien mijn C++ erg beperkt is, is dit mijn eerste ESP-project en ik ben ook geen genie met netwerkdingen. Ik heb dat idee geschrapt. Na wat onderzoek kwam ik erachter dat mijn router (merk Fritz!Box) heeft eigenlijk een API! JAAAAA!!!! Het protocol heet TR-064. Wat een inspirerende naam, toch? Toen ik wat onderzoek naar de zaak deed, vond ik een (nogal waardeloze) documentatie online. Het kostte me wat tijd om het uit te werken. Ik zou de komende dagen een meer praktische instructie kunnen posten (en hoe te communiceren met/testen van deze API met behulp van een browser-add-on). Toen ik de API eenmaal begreep, begon ik hem te gebruiken vanuit mijn ESP. Lang verhaal kort: ik kreeg een duck-tape-en-wd40-oplossing die werkte en deed wat ik wilde (de API opvragen voor aangesloten apparaten, ze vergelijken met een lijst met MAC-adressen en dienovereenkomstig schakelen tussen LED's). Maar ik wilde een robuustere en flexibele oplossing en deze API heeft zoveel meer te bieden (u kunt instellingen wijzigen (wifi in-/uitschakelen, wachtwoord wijzigen, wifi voor gasten openen/sluiten, signaalvermogen wijzigen), de router opnieuw opstarten, de verbindingssnelheid opvragen, …) - dus besloot ik een universele TR-064-bibliotheek te maken!TL;DR;Apparaat dat via LED's aangeeft wie er momenteel thuis is. Werkt prima, heeft nog geen geweldige behuizing (hey - zag de beta in de titel?). Gebruikt SOAP-protocol om met router te communiceren. Schreef Arduino-bibliotheek om dat mogelijk te maken. Vereiste kennis• Basiskennis van Arduino/ESP• Als je een Blink-voorbeeld hebt samengesteld met je ESP, komt alles goed! handig als je het breadboard-stadium wilt verlaten• Sommige 3D-ontwerpen en/of houtbewerking kunnen van pas komen voor een behuizing Github-projectlink [https://github.com/Aypac/Arduino-TR-064-SOAP-Library] voor snelle referentie.

Benodigdheden

  • ESP8266 of ESP32 op Development-Board of met andere programmeur (2~6€)
  • USB-kabel passend bij de programmer
  • Stroomadapter (bijv. USB of batterij ~2€)
  • Een paar LED's en weerstanden (~1€)
  • (Behuizing)

=> Ongeveer 4-6€ voor een minimaal ontwerp. Dat betekent voor mij dat ik er makkelijk een paar in huis kan hangen. Als je lui bent, kun je ook een ontwikkelbord met meegeleverde LED's gebruiken (zie stap 4 voor meer details).

Stap 1: Stel uw router in (optioneel, maar aanbevolen)

Stel uw router in (optioneel, maar aanbevolen)
Stel uw router in (optioneel, maar aanbevolen)
Stel uw router in (optioneel, maar aanbevolen)
Stel uw router in (optioneel, maar aanbevolen)

Het protocol is ontworpen als een algemeen protocol voor routers, maar ik weet alleen dat (de meeste) Fritz!Box-routers (zeer gebruikelijk in ieder geval in Europa) het gebruiken. Weet niet hoe het met andere merken zit. Ik ga er dus vanuit dat je een Fritz!Box gebruikt. Als je dit kunt laten werken (of niet kunt doen) op een andere router, zou ik het graag aan deze instructable toevoegen (misschien zelfs een korte compatibiliteitslijst starten?).

Deze stap is niet nodig, je kunt ook gewoon je beheerdersaccount gebruiken, maar dat is om voor de hand liggende redenen niet aan te raden (kan worden onderschept of uit je ESP worden gehaald, je kunt per ongeluk dingen veranderen die je niet wilt, …) - dus ik adviseren om het te doen.

Hoe dan ook, hier gaan we:

  1. Log in op je Fritz!Box door fritz.box in de url-balk van je favoriete browser te typen.
  2. Zoek de pagina voor het maken van een nieuwe FRITZ!Box-gebruiker (je moet geavanceerd zijn, het moet onder Systeem staan, als je het niet kunt vinden, probeer dan je apparaat bij te werken).
  3. Maak een nieuw account aan zoals je op de afbeelding ziet (met een andere gebruikersnaam/wachtwoord!).
  4. Uitloggen.

Stap 2: Coderen

Image
Image
Hardware (bèta)
Hardware (bèta)
  1. U kunt de bibliotheek van Github krijgen.

  2. In de voorbeelden vindt u een bestand met de naam home-indicator.ino, de code voor dit project. Plaats de map met voorbeelden in de thuismap van je arduino IDE-project en de andere map in de map met bibliotheken in dezelfde thuismap van het project.
  3. (Her)Start je IDE.
  4. Open home-indicator.ino in de IDE en voer uw instellingen in. Het moet duidelijk zijn wat waar gaat. Als je vragen hebt, laat het me weten!
  5. Nu kun je het compileren en overzetten naar je ESP!

Stap 3: Hardware (bèta)

Hardware (bèta)
Hardware (bèta)
Hardware (bèta)
Hardware (bèta)
Hardware (bèta)
Hardware (bèta)

Ja… Dit is de stap, waar ik nog wat aan moet werken. Maar ik denk dat er genoeg materiaal op het web is om iets uit te zoeken:) De opstelling zoals op de foto's is slechts een diode met een weerstand van ~ 100 Ohm die is aangesloten op de GPIO {5, 4, 0, 2}, de D1, D2, D3, D4 (in die volgorde) pinnen van mijn MCU ESP8266-bord en de kleine oranje kabel die de kathodes naar GND brengt (gemarkeerd met G op mijn bord). Als je lui bent, kun je doen wat je in de tweede afbeelding ziet. Gebruik gewoon een ontwikkelbord met meegeleverde LED's (zoals de "ESP-202", zie foto's - ongeveer € 3,50-5,00 inclusief verzendkosten). Je kunt het dan gewoon aansluiten op USB-voeding of het meegeleverde batterijpakket gebruiken, een interface op een stuk papier tekenen en aan de muur plakken. Klaar. Voor dit specifieke bord zijn de poorten:

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

van boven naar beneden.

Stap 4: Outlook/Referenties

Dit is wat ik nog van plan ben: 1. Een mooie behuizing maken (uiteraard) 2. Een mooie GUI toevoegen voor het beheren van gebruikers/LED's/MAC's/bekende apparaten 3. De bibliotheek verbeteren (zie daarvoor Github) 4. Fix: soms de LED's reageer traag (het duurt even voordat ze worden uitgeschakeld, nadat een apparaat is achtergelaten) zonder duidelijke reden 5. Hang het ding op in de gang en misschien nog een paar meer in huis Ik zou graag wat input van jullie willen krijgen! En zoals altijd maakt het me erg blij om te zien hoe anderen dingen bouwen die jij hebt bedacht, dus neem even de tijd om te reageren en foto's te plaatsen!:):) Nog wat referenties Ik zal hier wat dingen linken, die je misschien kunnen helpen: • TR-064 referentie • Iemand die aan het rommelen is met de shell en TR-064 (goed om de API te begrijpen) • Harry Potter Wikipedia: Weasley Clock entry • Sommige jongens bouwen een mooie, maar gecompliceerde Weasly Clock*_*Het is gebaseerd op een app voor je telefoon die je locatie bepaalt. Als u zich in bepaalde vooraf gedefinieerde gebieden bevindt, gaat het bijbehorende lampje op de klok branden. Dat was voor mij te ingewikkeld en moest op veel plekken waar het kon stuk gaan/mislukken: • Apps moeten up-to-date worden gehouden • Iedereen moet deze apps gebruiken • En de impact op de privacy oke vinden • De app werkt alleen met internet verbinding • Je moet een tussenliggende server gebruiken om de communicatie te koppelen (tenzij je je esp als server wilt instellen en je thuisnetwerk wilt openen voor extern verkeer - yay, alweer zo'n onveilig IOT-apparaat dat direct op internet is aangesloten!) • De tussenliggende service kan op een dag offline gaan/de API wijzigen, • …Je hebt meer software nodig. Meer software betekent meer plaatsen om een fout te maken;) Maar ze hebben geweldig werk geleverd en als je zoiets wilt doen, ga dan naar hun site, het is echt geweldig!

Aanbevolen: