Die Schaltung basiert auf einem ESP32 mit einem Relais.
Funktionsweise: ESP32 sucht nach allen Bluetooth BLE Geräten in der Nähe und vergleicht deren MAC Adressen mit abgespeicherten Trigger MAC Adresse. Wenn die Adresse stimmt wird das Relais eingeschaltet. Wenn das Signal vom ausgewählten BLE Gerät mehr als 15 Sekunden fehlt. schaltet das Relais wieder aus.
Das alles ohne Smartphone.
So kann ein iBeacon, iTag, Bluetooth Tracker Tag Key Finder, Mi Band oder Beliebiger nicht verbundenes BLE Gerät zu Anwesenheitserkennung benutzt werden.
Mögliche Anwendung für die Schaltung: Computer wird elektrisch ausgeschaltet wenn ich nicht in der Nähe bin. Oder Fernseher lässt sich nicht einschalten wenn ich nicht zu Hause bin. Die Tür wird automatisch verriegelt wenn ich mich von der Ort entferne.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
/* ibeacon oder Beliebiger BLE Gerät Präsenz Überwachung mit Relais Anwesenheitserkennung Michael Dworkin http://esp32-server.de/ Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleScan.cpp Ported to Arduino ESP32 by Evandro Copercini */ #include <BLEDevice.h> #include <BLEUtils.h> #include <BLEScan.h> #include <BLEAdvertisedDevice.h> #include <BLEAddress.h> #include <Ticker.h> String Adresse = "00:15:83:40:7c:bc"; // Bluetooth Adresse die zu Anwesenheitserkennung überwacht wird const int RelaisPin = 22; // Pin an dem Relais hängt int Verzoegerung = 15; // Auschaltverzögerung wenn das Signal von BLE ibeacon fehlt int VerzoegerungZaeler = 0; Ticker Tic; static BLEAddress *pServerAddress; BLEScan* pBLEScan ; int scanTime = 30; //In seconds class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks { void onResult(BLEAdvertisedDevice advertisedDevice) // passiert wenn BLE Device ( beacon ) gefunden wurde { Serial.print(advertisedDevice.getAddress().toString().c_str()); // ibeacon Adresse anzeigen if (advertisedDevice.getAddress().equals(*pServerAddress)) // ibeacon Adresse Vergleichen { Serial.print(" Ueberwachte Adresse"); // wenn überwache Adresse gefunden wurde digitalWrite (RelaisPin, 0); // Relais Einschalten VerzoegerungZaeler = 0; // Ausschaltverzögerung zurücksetzen advertisedDevice.getScan()->stop(); // Scanvorgang beenden } // Found our server Serial.println(""); } }; void SekundenTic() // Wird jede Sekunde ausgefüert { VerzoegerungZaeler++; // Sekundenzähler if (VerzoegerungZaeler >= Verzoegerung) digitalWrite (RelaisPin, 1); // Wenn Verzögerungszeit erreicht wurde Auschalten } void setup() { pinMode (RelaisPin, OUTPUT); digitalWrite (RelaisPin, 1); Serial.begin(115200); Serial.println(""); Serial.println("Starte BLE Scanner"); pServerAddress = new BLEAddress(Adresse.c_str()); BLEDevice::init(""); pBLEScan = BLEDevice::getScan(); //create new scan pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster Tic.attach( 1,SekundenTic); } void loop() { pBLEScan->start(scanTime); delay(2000); // Alle 2s nach ibeacon scannen } |
Relais per Anwesenheit von iBeacon, iTag, Eddystone schalten Teil 2
Ich habe obiges Programm erweitert und als Fertige Firmware für ein Selbstbau Projekt bereitgestellt.
Alle Einstellungen werden jetzt nicht mehr im Sketch gemacht. Sondern mit „INI WiFiManager“ über Webinterface. Die Einstellungen können ebenfalls jeder Zeit geändert werden.
Zusätzlich zu Überwachtem Bluetooth MAC Adresse kann Minimale Signalstärke RSSI , Relais Einschaltzeit und Relais Pin des ESP32 eingestellt werden.
Einstellen von der Signalstärke, die das Relais auslöst. Ich habe das eingeführt um zu ermöglichen den Abstand der Anwesenheitserkennung mit dem iBeacon zu reduzieren.
Es gibt auch Möglichkeit die ESP32 Schaltung mit HIGH Aktiven und LOW Aktiven Relaismodulen zu betreiben.
Die Bedienung
Einstellungen Vornehmen – INI WiFiManager Starten
- TXD und RXT vom ESP32 sind verbunden während des Starts
- Pin 13 mit Masse Verbunden während des Starts.
ESP32 Startet als Access Point mit folgenden Eigenschaften
SSID: astral
Passwort: tiramisu
IP: 192.168.4.1
Auf der Setup Webseite haben Sie die Möglichkeit die „setup.ini“ Datei zu bearbeiten.
Inchalt von „setup.ini“ Datei
# Einstellungen für BLE Anwesenheit Schalter
# MAC der Überwachten Bluetooth Gerätes
MACadresse = 00:15:83:40:7c:bc# Minimale Signalstärke für Aktivierung( -60 nahe, -90 fern)
RSSI = -90# Ausschaltverzögerung wenn das Signal von BLE ibeacon fehlt
Verzoegerung = 15# Pin an dem das Relais hängt
RelaisPin = 22# Wenn Relais Modul schaltet bei logisch LOW, dann „1“ einstellen
active_Low = 1
Wenn das BLE Beacon Präsenz Schalter bereits konfiguriert ist, dann genügt es den ESP32 Modul im Verbindung mit Relaismodul an 5V zu hängen. Das Gerät fängt sofort an nach iBeacon, iTag, Eddystone und sonstigen sichtbaren Bluetooth LE Geräten zu suchen. Falls überwachte Bluetooth MAC-Adresse auftaucht wird Relais eingeschaltet. Falls überwachte Bluetooth MAC-Adresse länger als eingestellte Ausschaltverzögerung fehlt schaltet das Relais wieder aus.
Download
Download Firmware BLE Anwesenheitserkennung Firmware ESP32. Sie haben die Möglichkeit ohne Arduino und ohne jegliche Installation, die Firmware (BIN-Datei) in das ESP32-Modul zu laden. Ein Tool und die BAT-Datei mit Kommandozeilenbefehlen sind im Archiv enthalten. Sie müssen lediglich in der Bath-Datei den richtigen COM-Port einstellen und dann diese Datei ausführen.
Download Arduino Projekt BLE Anwesenheitserkennung
Ausprobierte iBeacons und iTags für Anwesenheitserkennung
- HM-10 Bluetooth-Modul ( CC2541 ) in allen Konfigurationen.
- CC2541 als iBeacon
- iTag key finder
- Xiaomi Mi Band 2
Damit Xiaomi Mi Band gleichzeitig mit Smartphone verbunden bleibt und advertising BLE Signale sendet muss im App Mi-Fit Sichtbarmodus aktiviert werden. Profil / Mi Band 3 / Erkennbar.