Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Definieren Sie Ihr Szenario
- Schritt 2: (Intro) Trigger einstellen - Mehrere Benutzer
- Schritt 3: (Intro) Trigger einstellen - Begrenzte Benutzer
- Schritt 4: (Setup) - IFTTT
- Schritt 5: (Setup) IOT-Gerät *optional*
- Schritt 6: (Setup) IFTTT Webhook Api *Erfahrene Benutzer*
- Schritt 7: (Setup) IFTTT Webhook Api * Für Anfänger mit Fotos *
- Schritt 8: (Code) Programmierung des ESP32
- Schritt 9: (Code) Laden Sie den Code auf den ESP32 hoch
- Schritt 10: (Code) Laden Sie den Code auf den ESP32 hoch *optional*
- Schritt 11: Platzieren Sie das ESP und kalibrieren Sie
- Schritt 12: Herzlichen Glückwunsch! Du bist fertig
Video: Anwesenheitssensor - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Wearables sind in der Regel BLE-fähige Geräte. Es ist üblich, dass sie regelmäßig einige Daten entlang ihrer MAC-Adresse ankündigen. Wir verwenden einen ESP, um diese Daten zu scannen und ein Ereignis über das Internet auszulösen, wenn es eine bestimmte MAC-Adresse findet. Diese spezielle Implementierung ist für einen einzelnen Benutzer an einem mit einer Lampe verbundenen Smart Plug. Es kann aber auch mit einer Reihe von registrierten Geräten mit jeder Art von IOT-fähigen Geräten verwendet werden.
Lieferungen
- ESP32
- (optional) TECKIN WiFi-Wandstecker S10
- BLE-fähiges Gerät jeglicher Art
Schritt 1: Definieren Sie Ihr Szenario
Für den Auslöser können Sie die meisten modernen Wearables verwenden. Dies kann eine Apple Watch, ein Mi-Fit-Band, ein Telefon oder sogar Ihr eigenes DIY-Wearable auf Basis eines ESP32 sein.
Wahrscheinlich einer der wichtigsten Schritte. Du musst in 3 Dingen vorausdenken:
1. Welches Wearable oder Gerät wird der Auslöser des Näherungssensors sein?
2. Was wird den Sensor auslösen (dies geschieht über IFTTT).
3. Wenn der Sensor auslöst
In diesem Beispiel verwende ich meine Apple Watch, um einen Smart Plug auszulösen, um eine Lampe einzuschalten, wenn ich an meinem Schreibtisch sitze.
In diesem Tutorial schauen wir uns einen Smart Plug von TECKIN an. Zu einem guten Preis findest du es bei Amazon. Es ist auch mit Alexa und Google Home kompatibel. Großer Wert!
Schritt 2: (Intro) Trigger einstellen - Mehrere Benutzer
Wenn Sie die Konfiguration so konfigurieren möchten, dass es für jede Person mit einem BLE-fähigen Gerät in der Nähe Ihres Sensors funktioniert, überspringen Sie den nächsten Schritt. Das ist ziemlich nützlich, ist die Einstellung, die ich persönlich verwende. Denken Sie daran, dass dieser Sensor leicht gehackt oder ausgenutzt werden kann, um ihn auszulösen, also würde ich einem Sicherheitsstand-Pint nicht viel vertrauen. nur aus praktischen Gründen (dh ich möchte nicht, dass es von meinem PC ausgelöst wird, da es sich immer neben dem Sensor befindet).
Schritt 3: (Intro) Trigger einstellen - Begrenzte Benutzer
Dieser Schritt hängt stark von Ihrem Setup ab. Um einzuschränken, welche Geräte den Sensor auslösen können, müssen Sie viele Wege begrenzen:
- BLE MAC-Adresse (entspricht der IP-Adresse in einem WLAN-Netzwerk. Der Grund, warum es keine Sicherheit garantiert, da nicht die echte MAC-Adresse des Moduls ist. Auf iOS-Geräten ändert es sich bei jedem Neustart des Bluetooth, nicht so lustig)
- Herstellercode (bessere Option, aber keine Möglichkeit, bestimmte Geräte desselben Herstellers/Modells einzuschränken)
- Name, Service-UIDD (selten, aber die beste Option, meistens DIY-Wearables oder vielleicht eine Android-App)
Einige Notizen:
1. Wenn es sich um ein iOS-Gerät handelt:
- Sie haben einige wichtige Vor- und Nachteile. Pro übertragen sie die Leistungsstufe, bei der es sich um Werbedaten handelt. Dies ist in der Kalibrierungsphase hilfreich. Sie werden feststellen, dass die Verwendung einer Apple Watch hilfreich ist, da sie mit 24 dB sendet, iPhones und die meisten Geräte mit 12 dB senden.
CON, müssen Sie Problemumgehungen finden. Die beworbene MAC-Adresse (die Hauptidentifizierungsmethode) ändert sich jedes Mal, wenn das Bluetooth-Signal neu gestartet wird, was bedeutet, dass Sie den Code jedes Mal hochladen müssen … kein Spaß. Sie können die Herstellerdaten verwenden, die zwischen den Modellen variieren können. Dies bedeutet, dass Sie einschränken können, damit es "alle iPhone 8" erkennt.
2. Wenn es sich um ein Android-Gerät handelt:
- Ich persönlich habe kein Android-Gerät. Aber es gibt wahrscheinlich viele Anwendungen, die die MAC-Adresse korrigieren oder sogar einen personalisierten Namen hinzufügen können (wenn Sie das möchten). Auf iOS-Geräten gibt es eine App "nrf connect", die dies kann. Ist aber nicht dauerhaft, d.h. wenn Sie den Bildschirm sperren oder Apps wechseln.. die Konfiguration wird in wenigen Sekunden deaktiviert.
3. Ein weiterer ESP32. (Ihre beste Wette)
- Ein einfacher Code wie dieser kann in einem Gerät wie diesem implementiert werden; ein esp32-betriebenes Smart-Band. Der Code ist eigentlich ein Beispiel aus der ESP BLE-Bibliothek BLE_IBeacon.ino. Ich habe es nicht viel getestet, da mein Smartband im Versand ist, werde wahrscheinlich bald Updates veröffentlichen.
Schritt 4: (Setup) - IFTTT
Ok, in dieser Phase sollten Sie wahrscheinlich alle Entscheidungen Ihres Workflows treffen. Sie haben Ihr auslösendes Gerät, Sie haben einen Ort, an dem Sie das ESP mit einer drahtlosen Verbindung zum Internet platzieren können, und Sie haben eine Aktion im Sinn, die IFTTT automatisieren kann.
IFTTT ist leistungsstark; Egal, ob Sie nur eine einfache Benachrichtigung an Ihr Gerät senden, einen Tweet senden oder eine Glühbirne mit einem intelligenten Stecker einschalten möchten. In diesem Tutorial werden wir das letzte mit TECKIN Smart Plugs implementieren, die mit IFTTT kompatibel sind. Laden Sie in jedem Fall die IFTTT-App herunter oder besuchen Sie das Web IFTTT.com und erstellen Sie ein Konto.
Das ist es für jetzt!
Wenn Sie nur eine Benachrichtigung oder etwas anderes als den Smart Life-Stecker senden möchten, können Sie den nächsten Schritt überspringen.
Schritt 5: (Setup) IOT-Gerät *optional*
Laden Sie die „Smart Life“-App aus dem PlayStore (Android) oder AppStore (iOS) herunter. Die Anweisungen sind ziemlich einfach, obwohl der Prozess ein bisschen schwierig ist. Ich habe in der Phase des Scannens herausgefunden (als die blaue Taste blinkte), dass es irgendwann aufhörte, dann habe ich es ein paar Mal manuell gedrückt, um es ein- und auszuschalten. Das hat mir geholfen. Wie auch immer; Die Einrichtung dieses Steckers ist bei unserer Anwendung nicht anders. Wenn Sie also bereits einen besitzen und ihn mit Ihrer App verbunden haben, sollten Sie bereit sein.
HINWEIS: Sie müssen in der Lage sein, den Schalter über die App ein- und auszuschalten, bevor Sie mit diesem Schritt fortfahren. Das bedeutet, dass Sie den Smart Plug richtig konfiguriert haben.
Die IFTTT-App sollte sich nahtlos mit der "Smart Life"-App synchronisieren und wahrscheinlich eine Authentifizierung beim Erstellen eines Ereignisses im nächsten Schritt veranlassen.
Schritt 6: (Setup) IFTTT Webhook Api *Erfahrene Benutzer*
Wenn Sie die IFTTT-App noch nicht verwendet haben und mit einigen technischen Begriffen nicht vertraut sind, überspringen Sie diesen Schritt für die detaillierte Anleitung (mit Fotos) im nächsten Schritt.
1. Erstellen Sie ein neues Ereignis.
2. Legen Sie "this" als Webhook-API fest. Notieren Sie den Namen, den Sie für das Ereignis festgelegt haben.
3. Stellen Sie "das" auf Ihr gewünschtes Verhalten ein. Suchen Sie für den Smart Plug nach Smart Life und wählen Sie "Einschalten".
4. Wählen Sie Ihren Smart Plug aus und klicken Sie auf Fertig stellen.
5. Suchen Sie auf dem Startbildschirm nach der Karte 'Webhooks'. Nachdem Sie es gedrückt haben, drücken Sie unten auf "Mehr".
6. Pressedokumentation. Dies zeigt Ihnen Ihren API-Schlüssel zusammen mit einem URL-Builder und -Tester.
7. Verwenden Sie den URL-Builder mit dem Namen, den Sie bei #2 geschrieben haben. Kopiere das und schreibe es auf.
8. Wiederholen Sie dies, wenn Sie möchten, dass ein Verhalten ausgelöst wird, wenn der Präsenzsensor nicht mehr aktiv ist. In unserem Fall wiederholen Sie #3, aber wählen Sie "Ausschalten". Auch bei #2 sollte der Name dieses Mal anders sein.
Wenn Sie fertig sind, überspringen Sie den nächsten Schritt.
Schritt 7: (Setup) IFTTT Webhook Api * Für Anfänger mit Fotos *
Detaillierte Anleitung *Die Fotoanleitung sollte bei Android und im Web ähnlich sein*
IFTTT ist ein einfacher Workflow, wenn "dies passiert", dann "das passiert". Sie müssen einen neuen erstellen, 1. Drücken Sie in der App auf "Mehr erhalten" und eine Liste wird angezeigt.
2. Direkt unter der Suchleiste steht "Erstellen Sie Ihre eigenen Applets von Grund auf", drücken Sie das Pluszeichen.
3. Drücken Sie "dieses" Pluszeichen
In unserem Fall wird "dies" ein API-Aufruf über das Internet sein. Ein API-Aufruf ist eine Abfrage zu einer URL, ähnlich wie wenn Sie eine Google-Suche eingeben und die URL google.com/ ist (eine lange Zeichenfolge). So erstellen Sie die API: (nachdem Sie "dieses" gedrückt haben)
4. Suche nach "Webhooks"
5. Wählen Sie die einzige Option
6. Benennen Sie Ihre Veranstaltung (in diesem Beispiel verwenden wir "Sit"). Schreiben Sie diesen Namen auf, sehr wichtig.
7. Drücken Sie Trigger erstellen
Okay! wir sind näher, jetzt zu dem "diesen" Teil. Für dieses Tutorial stellen wir "das" ein, um den Smart Plug einzuschalten. Aber Sie können alles von IFTTT wählen. Eine gute Möglichkeit, das Setup zu testen, besteht darin, "Benachrichtigungen" auszuwählen, die jedes Mal eine Benachrichtigung an Ihr Telefon senden, wenn der Sensor auslöst (oder die API aufgerufen wird, sogar von einem Webbrowser: nützlich zum Testen!)
8. Drücken Sie "das" Pluszeichen
9. Suche nach "Smart Life" (oder "Benachrichtigungen")
10. Drücken Sie auf "Einschalten" (Sie müssen diese Schritte wiederholen, um ein weiteres Ereignis zu erstellen, das Sie beim Verlassen ausschalten können)
11. Wenn Sie beide Apps und den Stecker richtig konfiguriert haben, sollten Sie Ihren Stecker in der Dropdown-Liste „welches Gerät/Gruppe“sehen.
12. Wählen Sie Aktion erstellen und beenden Sie dann den Vorgang.
Jetzt sollten Sie sehen, dass das Ereignis verbunden ist. Jetzt müssen wir die API-URL abrufen. Dafür:
13. Gehen Sie zum IFTTT-Startbildschirm
14. Webhoos-Karte finden
15. Wählen Sie "Mehr erhalten"
16. Tippen Sie auf die Schaltfläche Dokumentation. Sie sollten eine Webseite mit Ihrem Schlüssel sehen.
17. Tragen Sie bei den Platzhaltern "{event}" den Namen Ihres Events ein (denken Sie an Punkt 6)
18. Gehen Sie zum Ende der Seite und tippen Sie auf "Testen"
Was Sie wahrscheinlich sehen sollten, ist ein grünes Banner "Ereignis wurde ausgelöst" und Sie sollten sehen, ob es funktioniert hat oder nicht. In unserem Fall sollte sich der Stecker einschalten. Oder Sie sollten eine Benachrichtigung sehen, wenn Sie sich für diesen Weg entschieden haben. Es kann eine Weile dauern, aber nicht länger als eine Minute, um zu sehen, ob Sie es geschafft haben. Denken Sie daran, dass wahrscheinlich die Groß-/Kleinschreibung beachtet wird.
19. Endlich. Kopieren Sie die URL, in der Sie den Namen Ihrer Veranstaltung (bei 17) ersetzt haben, und speichern Sie sie an einem sicheren Ort. Das wirst du bald brauchen.
20. Wiederholen Sie 1-12. Um 6 werden wir diesmal "Stand" verwenden. Bei 10 wählen Sie stattdessen "Ausschalten".
21. Wiederholen Sie 13-18, wenn Sie möchten, aber Sie können mit der URL, die Sie mit 19 kopiert haben, durchkommen, aber jetzt ändern Sie die Stelle, an der Sie "Sitz" geschrieben haben, und ersetzen Sie sie durch "Stand". Sie können dies in einem Webbrowser testen. Es sollte „Herzlichen Glückwunsch! Sie haben das Stand-Event ausgelöst. Dann sollte der Stecker ausgeschaltet sein.
Schritt 8: (Code) Programmierung des ESP32
Sie können diesen Schritt überspringen, wenn Sie gerne Skizzen von der Arduino-IDE auf Ihr ESP32-Board hochladen. Denken Sie nur daran, eine Partition von 2 MB für die App festzulegen, zumindest da die Skizze etwas mehr als das übliche Limit von 1,2 MB wiegt.
Es gibt viele tolle Tutorials da draußen, hier sind einige von denen ich empfehle:
circuitdigest.com/microcontroller-projects…
Aber trotzdem, damit Sie nicht so verloren sind, werde ich einige wichtige Kernpunkte aufschlüsseln.
- ESP32 ist kein Arduino-Board, kann aber dennoch von der Arduino-IDE programmiert werden. Mit einfachem Arduino-Code. Sie müssen die IDE jedoch weiterhin für die Arbeit mit dem ESP32 konfigurieren.
- Sie müssen einige Bibliotheken über den 'Zusätzliche Boards-Manager' in den Einstellungen installieren. Dies ist die URL, die Sie einfügen sollten:
- (optional, kann helfen) Unter Tools->Bibliotheken verwalten… -> (finde esp BLE-Bibliothek)
- bei Tools sollten Sie jetzt eine lange Liste von ESP-Geräten haben, ich empfehle das ESP32-Entwicklungsmodul
- (WICHTIG) Wählen Sie (keine Ota 2 MB App/2 MB Spifs) im Partitionsmanager. Dieser Schritt ist wichtig, da die App durch die Verwendung sowohl von WLAN / HTTP-Verbindungen als auch eines BLE-Scanners ziemlich schwer wird.
Wenn Sie alles richtig gemacht haben, sollten Sie den ESP32 programmieren können. Jetzt ähnelt der Vorgang dem Arduino in einigen Boards. Einstecken, passendes Board, USB-Port auswählen und fertig. In vielen anderen Fällen müssen Sie jedoch fortfahren
Schritt 9: (Code) Laden Sie den Code auf den ESP32 hoch
Ok, wenn Sie hier sind, haben Sie erfolgreich eine Skizze auf das ESP32-Board hochgeladen, vorzugsweise die blink.ino-Skizze.
Hier ist nun der Hauptcode angehängt, den Sie auch im GitHub-Repository finden können. Folgendes musst du ersetzen:
SSID - Ihr WLAN-Name
PSK - Ihr WLAN-Passwort
sit - Die URL mit "Sit" aus der IFTTT-API, die Sie zuvor geschrieben haben
stand - Die URL mit "Stand" Von der IFTTT-API, die Sie zuvor geschrieben haben
Bringen Sie nun Ihr Triggergerät in die Nähe des Boards und laden Sie dann den Code hoch. Öffnen Sie dann den Serial Monitor (Baud 115200), nachdem der Code erfolgreich geladen wurde.
Wenn Sie dies mit einem beliebigen BLE-fähigen Gerät verwenden möchten, überspringen Sie den nächsten Schritt.
HINWEIS: Wenn Sie Speicherfehlermeldungen erhalten, liegt dies daran, dass die Standardeinstellungen nur 1 mB Speicher (von den vorhandenen 4 mB) für den ESP-Rohcode lassen. Es lässt einen Teil für ein paar Dinge als Option, um über die Luft zu programmieren. Normalerweise mache ich folgendes:
- Bei Tools sollten Sie jetzt eine lange Liste von ESP-Geräten haben, ich empfehle ESP32-Entwicklungsmodul - Wählen Sie beim Partitionsmanager "no Ota 2mb app/2mb spifs" aus.
Dadurch habe ich den doppelten Speicherplatz, der für diese Anwendung benötigt wird.
Schritt 10: (Code) Laden Sie den Code auf den ESP32 hoch *optional*
Hier ist der knifflige Teil, der im Schritt "Setzen des Auslösers" erwähnt wird. Der Monitor gibt die MAC-Adresse aus (sollte aussehen wie ##:##:##:##:## wobei # entweder eine Zahl oder ein Buchstabe von a bis f ist), den Herstellercode und die RSSI (eine negative Zahl). Hier müssen Sie ein wenig herumspielen, um herauszufinden, welches Ihr Gerät ist. Normalerweise lege ich sie neben die Tafel, damit ich deutlich sehen kann, welche Zahl die kleinste ist. Ich deaktiviere das 'Autoscroll'-Kästchen, damit ich die Werte kopieren kann.
- Wenn es die Mac-Adresse ist, füllen Sie 'myDevice' damit aus. Dann entkommentieren Sie Zeile #96 und kommentieren Sie Zeile #95
- Wenn es der Name ist, füllen Sie 'myDevice' damit aus. Dann entkommentieren Sie Zeile #97 und kommentieren Sie Zeile #95
- Wenn es die MaufactureData sind, die Sie im Moment Pech haben, entwickle ich diesen Teil immer noch.
Um Unterstützung für viele Geräte hinzuzufügen, sollten Sie die Bedingungsanweisung entweder unter #96 oder #97 kopieren und in dieser Syntax nebeneinander platzieren können:
if((Bedingung1) || (Bedingung2) || (Bedingung3)){
Fügen Sie entsprechend weitere Variablen (myDevice1, myDevice2, myDevice3) hinzu.
Schritt 11: Platzieren Sie das ESP und kalibrieren Sie
Dies ist der wichtigste Teil der Einrichtung. Wenn Sie diesen Prozess sorgfältig durchlaufen, wird er wie von Zauberhand funktionieren oder Ihnen nur starke Kopfschmerzen bereiten.
Zu diesem Zeitpunkt arbeitet der von Ihnen hochgeladene Code mit den Parametern, die ich persönlich getestet habe und täglich mit meinem Telefon auf meinem Schreibtisch verwende; das heißt nicht, dass es auch bei dir funktioniert. Sie müssen die Kalibrierung also selbst durchführen.
1. Platzieren Sie die ESP32-Platine an ihrer endgültigen FESTEN Position. Wenn Sie aus irgendeinem Grund die Position Ihres ESP32 verschieben, sollten Sie dies wahrscheinlich erneut tun. Dies garantiert Ihnen insgesamt eine gute Erfahrung.
1. (extra) Denken Sie daran, dass Sie währenddessen eine Verbindung zu Ihrem PC herstellen können. Wenn Sie dies nicht können, weil Sie sich auf einem Desktop befinden, müssen Sie Trial-and-Error durchführen, wobei Sie daran denken müssen, dass jeder Test in der Positionierung, dem Triggergerät und anderen Faktoren, die zählen können, nahezu identisch sein muss.
2. Öffnen Sie Serial Monitor mit laufendem Code.
Der Code sendet standardmäßig über den seriellen Monitor die RSSI (Anzeige der empfangenen Signalstärke) jedes gefundenen Bluetooth-Geräts (oder nur der Geräte, die Ihren Parametern entsprechen). Spielen Sie ein wenig mit Ihrem Hauptaktionsgerät (Auslösegerät). Sie müssen festlegen, welche Schwellenwerte Sie verwenden möchten. Eine sorgfältige Anpassung dieser Konfiguration wird
3. Wenn Sie die Schwellenwerte bestimmen, ersetzen Sie sie hier:
- near_thrsh
- far_thrsh
4. Laden Sie den Code erneut hoch, testen Sie ihn und wiederholen Sie ihn, bis Sie die optimale Leistung gefunden haben.
Ein paar Dinge zu beachten:
1. Sie möchten etwa 20 dB Unterschied zwischen den Schwellenwerten. Wenn near_thrsh auf 50 gesetzt ist, ist es erwünscht, dass far_thrsh 70 oder mehr beträgt. Wenn der Unterschied zu gering ist, können Sie einige Entfernungen oder Stellen finden, an denen das Board nonstop ein- und auslöst. Wenn Sie diesen Unterschied erhöhen, wird sichergestellt, dass Sie dieses unerwünschte Verhalten vermeiden. Ich persönlich fand, dass 20 dB Marge gut genug sind.
2. Bei Kalibrierungstests werden so viele reale Szenarien wie möglich durchgeführt, um die beste Leistung zu ermitteln.
3. Studieren Sie die Klasse in Zeile 82 des Codes; Hier ist die ganze Logik gemacht. Der Code ist aber gut kommentiert. Fragen Sie gerne auf dem GitHub nach!
Schritt 12: Herzlichen Glückwunsch! Du bist fertig
Lassen Sie es mich in den Kommentaren von Vorschlägen oder Problemen wissen. Denken Sie daran, den GitHub zu überprüfen, wenn Ihr Problem bereits gelöst wurde!