Inhoudsopgave:

Aanwezigheidssensor: 12 stappen
Aanwezigheidssensor: 12 stappen

Video: Aanwezigheidssensor: 12 stappen

Video: Aanwezigheidssensor: 12 stappen
Video: How to use Allegro ACS712 AC/DC Current Sensor with Arduino 2024, November
Anonim
Aanwezigheidssensor
Aanwezigheidssensor

Wearables zijn meestal BLE-apparaten. Het is gebruikelijk dat ze periodiek bepaalde gegevens op hun MAC-adres adverteren. We gebruiken een ESP om deze gegevens te scannen en een gebeurtenis via internet te activeren wanneer een specifiek MAC-adres wordt gevonden. Deze specifieke implementatie is voor een enkele gebruiker op een slimme stekker aangesloten op een lamp. Maar het kan ook worden gebruikt met een reeks geregistreerde apparaten met elk soort IOT-apparaat.

Benodigdheden

  1. ESP32
  2. (optioneel) TECKIN WiFi-wandstekker S10
  3. BLE-apparaat van welke soort dan ook

Stap 1: Definieer uw scenario

Definieer uw scenario
Definieer uw scenario

Voor de trigger zou je de meeste moderne wearables kunnen gebruiken. Dit kan een Apple Watch zijn, een mi-fit band, een telefoon of zelfs je eigen doe-het-zelf wearable op basis van een ESP32.

Waarschijnlijk een van de belangrijkste stappen. Je moet op 3 dingen vooruit denken:

1. Welke wearable of welk apparaat wordt de trigger van de naderingssensor.

2. Wat gaat de sensor activeren (dit gebeurt via IFTTT).

3. Wanneer de sensor gaat activeren

Voor dit voorbeeld zal ik mijn Apple Watch gebruiken om een slimme stekker te activeren om een lamp in te schakelen wanneer ik aan mijn bureau zit.

In deze tutorial kijken we naar een slimme stekker van TECKIN. Je vindt het bij amazon voor een goede prijs. Het is ook compatibel met Alexa en Google Home. Grote waarde!

Stap 2: (Intro) Trigger instellen - Meerdere gebruikers

Als je wilt configureren dat het werkt voor iedereen met een BLE-apparaat dat dicht genoeg bij je sensor is, sla dan de volgende stap over. Dit is best handig, is de instelling die ik persoonlijk gebruik. Houd er rekening mee dat deze sensor gemakkelijk kan worden gehackt of misbruikt om te activeren, dus ik zou niet veel vertrouwen van een pint van een beveiligingsstand; alleen voor een praktische (dwz ik wil niet dat het wordt geactiveerd door mijn pc omdat het altijd naast de sensor zal zijn).

Stap 3: (Intro) Trigger instellen - Beperkte gebruikers

Deze stap is sterk afhankelijk van uw installatie. Om te beperken welke apparaten de sensor kunnen activeren, moet u veel routes beperken:

- BLE MAC-adres (gelijk aan het IP-adres op een wifi-netwerk. De reden dat het geen veiligheid garandeert, is omdat het niet het echte MAC-adres van de module is. Op iOS-apparaten verandert het elke keer dat je de bluetooth opnieuw start, niet zo leuk)

- Fabrikantcode (betere optie, maar geen manier om specifieke apparaten van dezelfde fabrikant / hetzelfde model te beperken)

- Naam, Service UIDD (zeldzaam maar de beste optie, meestal doe-het-zelf wearables of misschien een Android-app)

Enkele opmerkingen:

1. Als het een iOS-apparaat is:

- Je hebt een aantal belangrijke voor- en nadelen. Pro, ze verzenden het vermogensniveau waarop het advertentiegegevens zijn. Dat is handig in de kalibratiefase, u zult merken dat het gebruik van een Apple Watch nuttig is omdat deze uitzendt op 24db, iPhones en de meeste apparaten verzenden op 12db.

CON, je zult oplossingen moeten vinden. Het geadverteerde MAC-adres (de belangrijkste identificatiemethode) verandert elke keer dat het bluetooth-signaal opnieuw wordt gestart, wat betekent dat je de code elke keer moet uploaden … niet leuk. U kunt de fabrikantgegevens gebruiken die per model kunnen verschillen. Dit betekent dat je kunt beperken zodat het "alle iPhone 8" voelt.

2. Als het een Android-apparaat is:

- Ik heb persoonlijk geen Android-apparaat. Maar er zijn waarschijnlijk veel toepassingen die het MAC-adres kunnen repareren of zelfs een persoonlijke naam kunnen toevoegen (als dat de manier is waarop u wilt gaan). Op iOS-apparaten is er een app "nrf connect" die dit kan. Maar is niet persistent, wat betekent dat als je het scherm vergrendelt of van app wisselt… de configuratie binnen een paar seconden uitgaat.

3. Nog een ESP32. (je beste gok)

- Een eenvoudige code als deze kan worden geïmplementeerd in een apparaat als dit; een esp32-aangedreven smartband. De code is eigenlijk een voorbeeld uit de ESP BLE-bibliotheek BLE_IBeacon.ino. Ik heb het niet te veel getest omdat mijn smartband wordt verzonden, zal waarschijnlijk binnenkort updates plaatsen.

Stap 4: (Instellen) - IFTTT

(Instellen) - IFTTT
(Instellen) - IFTTT

Oké, dus in dit stadium zou je waarschijnlijk alle beslissingen van je workflow moeten nemen. Je hebt je triggerapparaat, je hebt een plek om de ESP met een draadloze verbinding met internet te plaatsen en je hebt een actie in gedachten die IFTTT kan automatiseren.

IFTTT is krachtig; of je nu een simpele melding naar je apparaat wilt sturen, een tweet wilt sturen of een gloeilamp wilt aanzetten met een slimme stekker. In deze tutorial zullen we de laatste implementeren met TECKIN smart plugs die compatibel zijn met IFTTT. Hoe dan ook, download de IFTTT-app of ga naar internet IFTTT.com en maak een account aan.

Dat is het voor nu!

Als je alleen een melding of iets anders dan de Smart Life plug wilt sturen kun je de volgende stap overslaan.

Stap 5: (configuratie) IOT-apparaat *optioneel*

Download de app "Smart Life" uit de PlayStore (android) of AppStore (iOS). De instructies zijn vrij eenvoudig, hoewel het proces een beetje lastig is. Ik ontdekte tijdens het scannen (toen de blauwe knop knipperde) het op een gegeven moment stopte, en toen drukte ik het handmatig een paar keer in en uit. Dat heeft mij geholpen. Hoe dan ook; de installatie van deze plug is niet anders met onze applicatie, dus als je er al een hebt en deze hebt aangesloten op je app, zou je klaar moeten zijn om te gaan.

LET OP: u moet de schakelaar vanuit de app kunnen in- en uitschakelen voordat u verder gaat met deze stap. Dat betekent dat u de slimme stekker correct hebt geconfigureerd.

De IFTTT-app zou naadloos moeten synchroniseren met de "Smart Life"-app, waarbij waarschijnlijk een authenticatie wordt gevraagd tijdens het maken van een evenement bij de volgende stap.

Stap 6: (Setup) IFTTT Webhook Api *Ervaren gebruikers*

(Setup) IFTTT Webhook Api *Ervaren gebruikers*
(Setup) IFTTT Webhook Api *Ervaren gebruikers*

Als je de IFTTT-app nog niet eerder hebt gebruikt en niet zo vertrouwd bent met sommige technische termen, sla deze stap dan over voor de gedetailleerde handleiding (met foto's) bij de volgende stap.

1. Maak een nieuw evenement aan.

2. Stel "this" in als een webhook-api. Schrijf de naam op die je aan het evenement hebt gegeven.

3. Stel "dat" in op uw gewenste gedrag. Zoek voor de slimme stekker smart life en selecteer 'aanzetten'.

4. Selecteer je slimme stekker en druk op voltooien.

5. Zoek in het startscherm naar de 'webhooks'-kaart. Nadat je erop hebt gedrukt, druk je onderaan op "meer ophalen".

6. Persdocumentatie. Dit toont u uw api-sleutel samen met een URL-builder en tester.

7. Gebruik de URL builder met de naam die je bij #2 hebt geschreven. Kopieer dat en schrijf op.

8. Herhaal dit als u wilt dat een gedrag wordt geactiveerd wanneer de aanwezigheidssensor niet langer actief is. Herhaal in ons geval #3 maar selecteer 'uitschakelen'. Ook zou bij #2 de naam deze keer ook anders moeten zijn.

Als u klaar bent, slaat u de volgende stap over.

Stap 7: (Setup) IFTTT Webhook Api *Voor beginners met foto's*

(Setup) IFTTT Webhook Api *Voor beginners met foto's*
(Setup) IFTTT Webhook Api *Voor beginners met foto's*
(Setup) IFTTT Webhook Api *Voor beginners met foto's*
(Setup) IFTTT Webhook Api *Voor beginners met foto's*
(Setup) IFTTT Webhook Api *Voor beginners met foto's*
(Setup) IFTTT Webhook Api *Voor beginners met foto's*

Gedetailleerde gids *de fotogids moet vergelijkbaar zijn met Android en op internet*

IFTTT is een eenvoudige workflow, als "dit gebeurt" dan "dat gebeurt". U moet een nieuwe aanmaken, 1. druk in de app op "meer halen" en er verschijnt een lijst.

2. Rechts onder de zoekbalk staat "maak je eigen applets helemaal opnieuw", druk op het plusteken.

3. Druk op "dit" plusteken

In ons geval wordt "dit" een api-oproep via internet. Een api-aanroep is een raadpleging van een URL, een beetje zoals wanneer u een Google-zoekopdracht typt en de url is google.com/(een lange reeks tekens). Om de api te maken: (na het indrukken van "this")

4. Zoek op "webhooks"

5. Selecteer de enige optie

6. Geef je evenement een naam (in dit voorbeeld gebruiken we "Sit"). Schrijf deze naam op, heel belangrijk.

7. Druk op Trigger maken

OK! we zijn dichterbij, nu naar het "dat" deel. Voor deze tutorial zullen we "dat" instellen om de Smart plug in te schakelen. Maar u kunt alles van IFTTT kiezen. Een goede manier om de instellingen te testen, is door "meldingen" te selecteren die een melding naar uw telefoon sturen telkens wanneer de sensor wordt geactiveerd (of de api wordt aangeroepen, zelfs vanuit een webbrowser: handig om te testen!)

8. Druk op "dat" plusteken

9. Zoek op "Smart Life" (of "meldingen")

10. Druk op 'aanzetten' (je moet deze stappen herhalen om een ander evenement te maken om uit te schakelen wanneer je weggaat)

11. Als je beide apps en de plug correct hebt geconfigureerd, zou je je plug moeten zien in de vervolgkeuzelijst 'welke apparaat/groep.

12. Selecteer Actie maken en voltooi.

Nu zou je moeten zien dat het evenement is verbonden. Nu moeten we de api-URL ophalen. Voor deze:

13. Ga naar het IFTTT-startscherm

14. Zoek Webhooks-kaart

15. Selecteer "Meer ophalen"

16. Tik op de knop Documentatie. U zou een webpagina met uw sleutel moeten zien.

17. Vul bij de placeholders "{event}" de naam van uw evenement in (onthoud punt 6)

18. Ga naar de onderkant van de pagina en tik op "Test het"

Wat je waarschijnlijk zou moeten zien is een groene banner "event is geactiveerd" en je zou moeten zien of het werkte of niet. In ons geval moet de stekker worden ingeschakeld. Of je zou een melding moeten zien als je besluit dat pad te gaan. Het kan even duren, maar niet meer dan een minuut om te zien of je het gehaald hebt. Onthoud dat het waarschijnlijk hoofdlettergevoelig is.

19. Eindelijk. Kopieer de url waar je de naam van je evenement hebt vervangen (bij 17) en sla het ergens veilig op. Dit heb je binnenkort nodig.

20. Herhaal 1-12. Om 6 uur zullen we deze keer "Stand" gebruiken. Selecteer bij 10 in plaats daarvan 'uitschakelen'.

21. Herhaal 13-18 als je wilt, maar je kunt wegkomen met de url die je bij 19 hebt gekopieerd, maar verander nu de plaats waar je "Zit" hebt geschreven en vervang door "Stand". U kunt dit testen in een webbrowser. Er zou moeten staan: 'Gefeliciteerd! Je hebt het Stand-evenement ontslagen'. Dan had de stekker uit moeten zijn.

Stap 8: (Code) Programmeren van de ESP32

(Code) Programmeren van de ESP32
(Code) Programmeren van de ESP32

U kunt deze stap overslaan als u zich op uw gemak voelt bij het uploaden van schetsen van de Arduino IDE naar uw ESP32-bord. Onthoud alleen om een partitie van 2 MB voor de app in te stellen, aangezien de schets iets meer weegt dan de gebruikelijke limiet van 1,2 MB.

Er zijn veel geweldige tutorials, hier zijn er enkele die ik aanbeveel:

circuitdigest.com/microcontroller-projects…

Maar toch, zodat je niet zo verdwaald bent, zal ik enkele belangrijke hoofdpunten uitsplitsen.

- ESP32 is geen Arduino-bord, maar kan nog steeds worden geprogrammeerd door de Arduino IDE. Met eenvoudige Arduino-code. Maar u moet de IDE nog steeds configureren om met de ESP32 te werken.

- Sommige bibliotheken moet je installeren via de 'Extra boards manager' bij voorkeuren. Dit is de URL die je moet plakken:

- (optioneel, kan helpen) Bij Extra-> Bibliotheken beheren… -> (zoek esp BLE-bibliotheek)

- bij Tools zou je nu een lange lijst met ESP-apparaten moeten hebben, ik raad ESP32 dev-module aan

- (BELANGRIJK) Selecteer (geen Ota 2mb app/2mb spifs) bij partitiebeheer. Deze stap is belangrijk omdat de app behoorlijk zwaar wordt als een product van het gebruik van zowel wifi / http-verbindingen als een BLE-scanner.

Als je alles goed hebt gedaan, zou je de ESP32 moeten kunnen programmeren. Nu is het proces om dit te doen vergelijkbaar met de arduino in sommige boards. Plug hem in, selecteer het bijpassende bord, de USB-poort en je bent klaar. Maar in veel andere gevallen zult u verder moeten gaan met

Stap 9: (Code) Upload de code naar de ESP32

(Code) Upload de code naar de ESP32
(Code) Upload de code naar de ESP32

Ok, als je hier bent, betekent dit dat je met succes een schets naar het ESP32-bord hebt geüpload, bij voorkeur de blink.ino-schets.

Nu, hier is de hoofdcode bijgevoegd, je kunt deze ook vinden in de GitHub-repo. Je moet het volgende vervangen:

SSID - Uw wifi-naam

PSK - Uw wifi-wachtwoord

sit - De URL met "Sit" van de IFTTT-api die je eerder hebt geschreven

stand - De URL met "Stand" Van de IFTTT-api die u eerder schreef

Breng nu je triggerapparaat dicht bij het bord en upload vervolgens de code. Open vervolgens de seriële monitor (baud 115200) nadat de code met succes is geladen.

Als u van plan bent dit te gebruiken met een BLE-apparaat, slaat u de volgende stap over.

OPMERKING: als u geheugenfoutmeldingen krijgt, is dit omdat de standaardinstellingen slechts 1 MB geheugen overlaten (van de 4 MB die aanwezig is) voor de onbewerkte ESP-code. Het laat een deel over voor een paar dingen als een optie om via de ether te programmeren. Ik doe meestal het volgende:

- bij Tools zou je nu een lange lijst met ESP-apparaten moeten hebben, ik raad ESP32 dev-module aan - Selecteer 'no Ota 2mb app/2mb spifs' bij partitiebeheer.

Dit geeft me dubbele geheugenruimte, nodig voor deze toepassing.

Stap 10: (Code) Upload de code naar de ESP32 *optioneel*

(Code) Upload de code naar de ESP32 *optioneel*
(Code) Upload de code naar de ESP32 *optioneel*

Hier is het lastige gedeelte dat wordt genoemd bij de stap "De trigger instellen". De monitor geeft het MAC-adres weer (zou eruit moeten zien als ##:##:##:##:## waarbij # een cijfer is of een letter van a tot f), de fabrikantcode en de RSSI (een negatief getal). Hier moet je een beetje spelen om te vinden wat je apparaat is. Ik leg het meestal naast het bord, zodat ik duidelijk kan zien wat het kleinste getal is. Ik verwijder het vinkje bij 'autoscroll' zodat ik de waarden kan kopiëren.

  • Als het het Mac-adres is, vul dan 'myDevice' ermee. Verwijder vervolgens regel #96 en commentaarregel #95
  • Als het de naam is, vul dan 'myDevice' ermee. Verwijder vervolgens regel #97 en commentaarregel #95
  • Als het de MaufactureData is, heb je voorlopig pech, dat deel ben ik nog aan het ontwikkelen.

Voor het toevoegen van ondersteuning voor meerdere apparaten moet u de voorwaarde kunnen kopiëren op #96 of #97 en deze naast elkaar in deze syntaxis plaatsen:

if((voorwaarde1) || (voorwaarde2) || (voorwaarde3)){

Voeg overeenkomstig meer variabelen toe (myDevice1, myDevice2, myDevice3).

Stap 11: plaats de ESP en kalibreren

Plaats de ESP en kalibreren
Plaats de ESP en kalibreren

Dit is het belangrijkste onderdeel van de opstelling. Als je dit proces zorgvuldig doorloopt, zal het verschil uitmaken of het werkt als magie of je gewoon sterke hoofdpijn bezorgt.

Op dit moment werkt de code die je hebt geüpload met de parameters die ik persoonlijk heb getest en dagelijks gebruik met mijn telefoon op mijn bureau; het betekent niet dat het ook voor jou zal werken. U moet de kalibratie dus zelf doen.

1. Plaats het ESP32-bord op zijn definitieve VASTE locatie. Als u om de een of andere reden de positie van uw ESP32 verplaatst, moet u dit waarschijnlijk opnieuw doen. Dit zorgt voor een algehele goede ervaring.

1. Houd er (extra) rekening mee dat je hierbij verbinding moet kunnen maken met je pc. Als je dat niet kunt omdat je op een desktop zit, zul je met vallen en opstaan moeten doen, rekening houdend met het feit dat elke proef bijna identiek moet zijn in positionering, triggerapparaat en andere factoren die van belang kunnen zijn.

2. Open Serial Monitor terwijl de code actief is.

De code zal standaard via de seriële monitor de RSSI (Ontvangen signaalsterkte-indicatie) posten van elk gevonden Bluetooth-apparaat (of alleen het apparaat of de apparaten die overeenkomen met uw parameters). Speel een beetje met je belangrijkste actieapparaat (triggerend apparaat). U moet bepalen wat de drempels zijn die u wilt gebruiken. Het zorgvuldig aanpassen van deze configuratie zal:

3. Wanneer u de drempels bepaalt, vervangt u ze hier:

  • near_thrsh
  • far_thrsh

4. Upload de code opnieuw, test en herhaal totdat u optimale prestaties vindt.

Enkele dingen om te overwegen:

1. U wilt ongeveer 20db verschil tussen de drempels. Als near_thrsh is ingesteld op 50, is het wenselijk dat far_thrsh 70 of meer is. Als het verschil te klein is, vindt u mogelijk enkele afstanden of plaatsen waar het bord non-stop aan en uit wordt geactiveerd. Door dit verschil te vergroten, voorkomt u dit ongewenste gedrag. Ik vond persoonlijk dat 20db marge goed genoeg is.

2. Bij kalibratietests uit de praktijk zal dit zoveel mogelijk helpen bij het bepalen van de beste prestaties.

3. Bestudeer de klas op regel 82 van de code; hier is waar alle logica wordt gedaan. De code is echter goed becommentarieerd. Vraag het gerust op de GitHub!

Stap 12: Gefeliciteerd! Je bent klaar

Laat het me weten in de opmerkingen van eventuele suggesties of als u problemen ondervindt. Vergeet niet om de GitHub te controleren als uw probleem al is opgelost!

Aanbevolen: