ESPresence im ioBroker nutzen

Anwesenheit im Raum erfassen – Möglichkeiten

Starten wir nun erst einmal mit etwas Theorie – muss ja auch mal sein. Welche Möglichkeiten haben wir eigentlich, um überhaupt zu schauen, ob jemand im Raum ist.

Bewegungsmelder

Sicherlich die am weitesten verbreitete Möglichkeit ist der klassische Bewegungsmelder. Diese kleinen Geräte gibt es schon recht günstig – wie z.B. den von Aquara für circa 15 Euro. Wie der Name aber schon sagt, brauchen wir eine Bewegung im Raum, damit dieses Gerät funktioniert. Das ist irgendwie auch der Nachteil, wie ich finde. Denn oft bewegen sich nur meine Hände, wenn ich z.B. genau dieses Skript schreibe.

Dabei ist es mir schon oft passiert, dass unser Licht einfach ausging. Ebenso als Nachteil empfinde ich es hier, dass der Bewegungsmelder einfach jede Bewegung checkt. Läuft also Katze oder Hund im Raum rum, so wird dieses auch mit als Bewegung aufgenommen.

Präsenzmelder

Der Präsenzmelder ist hier schon besser. So wird hier auch schon die einfache Präsenz im Raum (daher sicher auch der Name) wahrgenommen. Das Licht bleibt eingeschaltet – aber leider auch, wenn meine Katze auf der Tastatur schläft.

Großer Vorteil übrigens vom Bewegungs- und Präsenzmelder ist die Geschwindigkeit. Beide geben Bewegungsdaten recht schnell weiter, sodass fast keine Verzögerung da ist.

Weitere Möglichkeiten

Natürlich gibt es auch viele weitere Möglichkeiten, die Präsenz von Personen im Raum zu überprüfen. So könnte man etwa einen Drucksensor in Stühle oder ins Bett einbauen. Oder überprüft, ob Strom im Raum verbraucht wird. Oder ob jemand Lichter oder andere Geräte ein und ausschaltet. Auch diese Möglichkeiten hat man.

Raumüberwachung via Bluetooth.

Mein Handy und erst recht meine Apple Watch habe ich immer dabei. Jeder ist hier mit Sicherheit anders – aber bei mir ist es so, dass dieses immer in der Hosentasche ist. Und warum nicht dieses Gerät zum Tracken der Anwesenheit nutzen?

Genau dies möchte ich umsetzen. Die Vorteile sind hier recht einfach. Unsere Tiere haben keine Bluetoothgeräte – können daher nicht getrakt werden. Und zusätzlich ist es unter Umständen sogar möglich, dass das System genau weiss wer sich im Raum befindet.

Es gibt aber auch hier einen Nachteil. Die Erkennung ist etwas träge. So dauert es gerne mal 4-5 Sekunden, bis das System weiss, dass jemand im Raum ist. Dies ist zum Schalten vom Licht auf jeden Fall zu langsam. Daher kombiniere ich die Funktion mit einem kleinen Bewegungsmelder – aber dazu gerne später mehr.

Umsetzung

Für die Umsetzung bin ich recht schnell auf das ESPresence Projekt gestoßen. Dieses nutzt einen ESP32, der selbst ein Bluetooth und WLAN Modul besitzt. Was mir auch recht gut passte ist, dass die ESP32 Module recht günstig sind. Ich wollte schließlich keine hunderte Euro ausgeben für das Projekt.

Habe mir also ein paar Module bestellt und diese geflasht. Das Flashen ist suuuuper einfach. Den USB Treiber habe ich schon lange bei mir auf dem Mac installiert.

Das Flashen selbst funktioniert sogar über die Webseite. Bei mir auf dem Mac aber nicht mit Safari – mit Chrome war es aber kein Problem.

Den flashvorgang kannst du am besten im Video verfolgen – ist wirklich einfach.

FLASHEN

Nach dem flashen hab ich mein Handy genommen und mich mit dem vom ESP32 erstellten WLAN verbunden. Auf der Konfig Seite habe ich dann dem ESPresence eine IP zugewiesen sowie die WLAN Daten hinterlegt. Fertig

Weiter geht’s dann am PC – denn nun kann sich ja das Gerät selbst ins WLAN einloggen.

Einstellungen ESP32

Gehen wir nun einmal Schritt für Schritt die Einstellungen durch. Der ESP32 ist übrigens noch am Mac angeschlossen – warum erkläre ich später.

Ganz oben – selbsterklärend – die Sprache. Wichtig ist, dass bei vielen Änderungen einmal das Ganze neu starten muss.

Gleich danach die aktuelle Version. Das Gute ist, dass die Updates automatisch durchlaufen. Damit hat man nichts zu tun.

Danach können wir den Raum konfigurieren. Ebenso – falls erhältlich, den Ethernet Typ. PoE ist hier nämlich auch möglich!

MQTT

Nun wird’s etwas interessanter – die MQTT Einstellungen – also auch die Kommunikation zum ioBroker – wird hier eingestellt. Natürlich kannst Du auch andere Systeme hier einbinden, wenn diese über MQTT kommunizieren.

Im ioBroker habe ich zunächst einmal den MQTT Adapter installiert. MQTT läuft bei mir als Server. Von den Einstellungen her habe ich nicht viel anpassen müssen – nur das ich ein Benutzername und ein Kennwort vergeben wurde, welches wir gleich auch im ESPresence brauchen.

Diese Einstellungen übertragen wir nun ins ESPresence. Die Kommunikation der beiden Systeme ist nun also hergestellt.

Updating

ESPresence hat die Möglichkeit, sich selbst zu updaten. Regelmäßig schaut das System, ob es bei Github eine neue Version gibt. Und wenn dies der Fall ist, wird das Update einfach selbst aufgespielt. In diesem Bereich hast Du die Möglichkeit die Funktion zu deaktivieren, pre-release Updates zu installieren oder aber auch selbst einen Update-Server zu stellen im eigenen Netzwerk.

Ich selbst habe dies bei den Standardeinstellungen gelassen.

Scanning

Kommen wir jetzt zu einem der wichtigeren Punkte. Das Scannen der Geräte. Und hierfür nehme ich nun mein ESP32. Dieser ist nach wie vor mit dem Mac verbunden. Auf der Webseite von espresence gibt es im linken Bereich den Menüpunkt Troubleshooting → Webterminal.

Mithilfe des Webterminals verbinde ich mich nun mit dem ESP32. In der Auflistung sehen wir nun alle Geräte, die sich via Bluetooth in der Nähe befinden. Bei mir sind es ggf. etwas mehr als bei Dir – habe hier um mich rum ja auch meine Tastatur – noch ein iPad – ein Verstärker, der über Bluetooth streamen kann – meine Apple Watch – iPhone – Android Tablet usw usw.

Vielleicht ist es bei Dir aber auch so, dass man mehr Bluetooth Geräte hat, als man eigentlich denkt.

All diese Geräte melden sich mit einer Mac Adresse an. Eine Adresse, mit der es dann möglich sein sollte das die Geräte eine Verbindung herstellen können. Ist quasi wie eine Haus Adresse inkl. Straße, PLZ und Ort. Somit kann also klar gesagt werden – dieses Gerät hat diese Adresse. Ebenso in der Liste wird eine ID angezeigt. Diese ändert sich nicht – und mit dieser können wir auch später die Geräte zuweisen. Aber dazu später mehr.

An dieser Stelle hier kommt noch ein weiterer Punkt hinzu. Apple Geräte haben einen recht hohen Schutz von Tracking. Sollte dies bei Android auch so sein – schreibt es mir gerne in die Kommentare. Ich selbst nutze mehr Apple – darum weiß ich es nur hier.

So eine Bluetooth Mac Adresse kann jeder scannen – wie Du nun ja auch in diesem Beispiel gesehen hast. Und somit ist es quasi auch möglich zu scannen, wer beispielsweise in ein Geschäft kommt, um etwas zu kaufen. Scannt man einmal, wenn der Kunde hineingeht – und einmal wenn er herausgeht – so kann man doch recht schnell ein Profil erstellen, wie lange der Kunde sich im Geschäft aufgehalten hat.

Ebenso ist es möglich, mit mehreren Sensoren zu tracken, wie lange er in welchem Bereich des Geschäftes war, um hier weitere Werbung zu platzieren etc. Man hat hier viele Möglichkeiten.

Die Apple Geräte ändern jetzt ihre Mac Adresse alle paar Minuten, um so ein Tracking zu unterbinden. Das heißt aber leider auch, dass ein genaues Scannen hier für unseren Fall der Raumüberwachung bei Apple schwieriger ist.

Wir können sagen, dass sich jemand im Raum mit einem iPhone befindet – aber wir können nicht genau sagen, wer das ist. Weil die ID und Mac Adresse sich hier ändert.

Laut meinen Recherchen sollte dies bei Android aber nicht der Fall sein.

Einstellungspunkte:

Request scan results – Dies fragt weitere Details zu den Geräten ab. Somit bekommst Du mehr Details – aber im Test lief es nicht stabil. Daher hab ich dies nicht aktiviert. Aktivierst Du hier diese Option, so kannst Du dann – mithilfe der nachfolgenden Felder – weitere Details über die gescannten Geräte erhalten.

Known BLE mac addresses – Wenn Du ein Gerät mit fester Bluetooth Adresse hast, so kann dieses hier eingetragen werden.

Query – Hier kannst Du die IDs eintragen von Geräten. Die ID vom Geräte erhältst Du z.B. aus dem Webterminal, welches ich Dir schon gezeigt habe.

Counting

Mit Counting kann eingegrenzt werden, ob ein Gerät nun im Raum befindet oder nicht. Aber schauen wir uns das im Detail einmal an. Durch das Webterminal weiß ich, dass meine Uhr (apple:1007:11-8) und mein iPhone (apple:1005:9-24) bestimmte IDs haben. Diese IDs trage ich hier nun mit ein. Entsprechend schaut der ESP32 immer, ob diese IDs sich in der Nähe aufhalten.

Und diese Nähe kann auch eingetragen werden. Ich selbst habe bei mir im Raum gute Erfahrungen damit gemacht, dass das Gerät bei 2m oder weniger als “da” markiert wurde – und bei einem Abstand zwischen Handy und ESP von mehr als 3m wieder dies deaktivieren soll. Ebenso kannst Du eintragen, dass es als „nicht in der Nähe“ gekennzeichnet wird, wenn das Gerät eine längere Zeit keine Funkverbindung mehr aufbaut.

Filtering

An dieser Stelle können wir die Daten filtern, welche via MQTT zum ioBroker geschickt werden. Wie Du hier sehen kannst, habe ich auch hier wieder meine Apple Watch und mein iPhone eingetragen. Somit werden nur noch diese Daten verschickt – hält also zum einen den ioBroker etwas aufgeräumter – zum anderen werden weniger Daten transportiert.

Calibration und Misc

Diese Einstellungen habe ich so gelassen, wie sie sind. Du hast hier die Möglichkeit, den Sensor zu kalibrieren. Bei all meinen Geräten gab es keine Probleme – daher habe ich diese Einstellungen auch nicht geändert.

Nur die LED auf dem ESP habe ich ausgestellt.

Insgesamt waren meine Einstellungen aber recht viel ausprobieren. Immer wieder die Meter ändern und anpassen – den Standort wechseln usw.

Bis es nun perfekt für mein Büro läuft, hat es ungefähr eine Woche gebraucht.

ioBroker

Die Einstellungen im ESPresence haben wir jetzt vorgenommen. Aber wie schaut’s nun im ioBroker aus? Dazu kommen wir jetzt.

Die Daten erhalten wir über den MQTT Adapter, den wir ja schon eingerichtet haben. Hier sehen wir unter Devices die IDs der Geräte, die wir im ESPresence bereits gefiltert haben. Würden wir den Filter nicht setzen, so wäre jetzt diese Anzeige recht unübersichtlich.

Die Informationen werden als JSON Objekt übertragen. Auch hier sehen wir z. B. den RSSI Wert – oder die Distanz vom ESP32 zum Geräte selbst. Natürlich können wir über Blockly dann diese Daten auswerten.

Das bringt mich auch zum nächsten Thema – das Blockly. Denn ich habe nun für jeden Raum ein Blockly erstellt, um die Anwesenheit auswerten zu können. Hierfür habe ich als Erstes einen neuen Datenpunkt erstellt, mit den folgenden Einstellungen:

Einen weiteren Datenpunkt habe ich erstellt für die Entfernung. Dieser zeigt mir die Entfernung zwischen iPhone und ESP32 an. Dies ist aber irgendwie eher dafür gedacht, um zu überprüfen, wie die Werte gerade so sind. Wenn Du aber dies nachbauen möchtest, dann erstelle einfach einen weiteren Datenpunkt – dieser sollte aber anstatt dem Boolean den Zustandstyp Number bekommen.

Als Letztes hier noch ein Bild vom Blockly, welches ich nutze. Kann man sicherlich auch anders und besser machen – aber funktioniert:

Links

Dieses Gehäuse habe ich mir selbst gedruckt – passt super für den ESP32: https://www.thingiverse.com/thing:3195951

Den ESP32 bestelle ich immer hier: https://amzn.to/3BbvsnR

Video

Vielleicht auch interessant?

Beitrag teilen:

24 Kommentare. Hinterlasse eine Antwort

  • Günther Bendrat
    27. August 2022 22:24

    Hallo Stefan Tolles Video, kannst Du noch einen Link zu dem von Dir verwendeten ESP32 hinzufügen. Es gibt hier ja eine ganze Menge dieser Teile. Welches hast Du genau verwendet. Für die Stromversorgung sollte in einfaches USB-Netzteil genügen, oder? Gibt es das Gehäuse auch fertig? Ich habe keinen 3 D-Drucker. Toll, mach weiter so

    Antworten
  • Hallo, ich wollte das ganze hier bei mir auch einmal testen, leider ist es zumindest bei meinem Samsung Galaxy S20+ auch der Fall, das sich die MAC fast im Minutentakt ändert. Durch aktivieren/deaktivieren von Bluetooth kann ich das ganze provozieren.

    Antworten
  • Joachim Müller
    30. August 2022 18:40

    Für Schlafzimmerpräsenz verwende ich einen DS1820 unter dem Bettlaken… Das ist einfach und zuverlässig

    Antworten
    • Thomas Stehr
      31. August 2022 22:33

      Hallo Joachim, Wie genau hast du das gemacht suche schon lange nach einer Möglichkeit zu dedecten ob man im Bett liegt oder nicht.

      Antworten
  • Hallo zusammen, auf die Gefahr, dass Ihr mich für dumm haltet, aber ich habe noch nicht ganz gerafft, wie genau die Datenpunkte für die Anwesenheit erstellt werden. Stehe da etwas auf dem Schlau. Könntet ihr mir das noch mal step by step erklären? Ansonsten funktioniert die Anbindung schon mal ganz gut. Danke für die ausführliche Erklärung! Gruß Jörg

    Antworten
  • Hi, welchen Datenpunkt fragst du wie ab, ob das Bluetooth Gerät mit ESP 1-x verbunden ist? Ist es denn prinzipiell möglich, dass das BLE Gerät mit mehr als einem ESP verbunden ist und fragt man dann noch die Distanz ab? Danke und Grüße, Jan

    Antworten
  • Habe es auch dank deiner Anleitung am Laufen. 👍🏾 Leider ist es mir nur jetzt nicht mehr möglich, das Licht manuell aus oder an zu machen. Gibt es hierfür eine Lösung? Ich bedanke mich schon jetzt für eventuelle Lösungsvorschläge.

    Antworten
  • Wieder mal super erklärt, vielen Dank. In deinem Screenshot am Ende vom Blockly sieht man nur bedingt, was man noch machen kann. Deshalb möchte ich gerne den Wert vom MQTT-Datenpunkt bzw. dessen JSON auslesen. Kannst du uns erklären, wie wir per Blockly beispielsweise nur die ID oder Distance aus dem MQTT-Datenpunkt auslesen können? Ist nicht so einfach zu googeln 😉 So hätte man dann je nach Client oder Distanz weitere Möglichkeiten.

    Antworten
    • Hi! Hattest Du mal ein Blick auf mein Blockly geworfen? Hab da selbst viel probiert – weiss darum nicht, ob ich der perfekte Mensch bin, der dieses gut erklären kann 🙂 War mehr try and error

      Antworten
      • Lieber Stefan, niemand ist perfekt, aber ich finde, du erklärst alles äußerst gut und einfach in deinen Videos 🙂 Ich habe nun auch mal auf deinen Blockly-Screenshot geschaut und dort auch die Distanz-Konfiguration gesehen (vorher hatte ich nur das Blockly im Video gesehen). Dies konnte ich nun umsetzen und es klappt. Vielen Dank! Zur Info: Da mein Samsung keine feste MAC oder IP behält, habe ich es nun mit der App “Beacon Simulator” erfolgreich getestet. So kann man jedem Gerät eine feste ID geben und entsprechend filtern. Jetzt geht mein Licht im Wohnzimmer nicht mehr an, falls jemand draußen am Fenster mit einem Android-Gerät vorbei geht 😉

      • Oh super! Das freut mich! Danke für Dein Feedback und viel Spaß mit der weiteren Optimierung 🙂 Irgendwas ist da ja immer zu tun

  • Hallo Stefan, danke für die Anleitung. Ich hab mich hier auch schon vor mehreren Monaten dran gemacht, aber ich habe immer das Problem, das ich an einem ESP32 festhänge, d.h. er nimmt nicht den, der am nächsten ist sondern wohl einen der am weitesten weg ist (ca. 10 Meter)
    Deswegen hab ich das alles erste mal wieder zur Seite gelegt. Werde jetzt nochmal alles genau Studieren und mir nochmal dein Video anschauen um ggf. Abweichungen zu meinem Setup zu finden. Oder es liegt an dem ESP32 ich hab hier die Mini genommen und nicht den großen.

    Antworten
  • Hallo Stefan, mit Version 3 von ESPresence kannst du jetzt auch die Identity Resolving Keys (IRK) für iPhones auslesen und so die iPhones wieder einzeln detektieren. Einfach in der UI von ESPresence ein neues Gerät “enrollen” und dann auf dem iPhone die BT-Verbindung erlauben. Dadurch wird der IRK an ESPresence übermittelt und das Gerät kann zukünftig eindeutig identifiziert werden.

    Antworten
    • Hi Tobias, ist bei mir schon installiert und ich teste eifrig 🙂 Danke für den Hinweis!

      Antworten
    • Hallo Tobias, danke für diese Super Info. Hab gerade mal alle meine ESPs auf 3.1 gebracht und mit den IRK’s für iPhone und Apple Watch schaut das jetzt super mit der Erkennung bei mir aus.

      Antworten
  • Ach vergessen…
    Falls ihr die IRKs von der Watch noch in die Settings vom MQTT bekommen wollt, müsst ihr das momentan noch über den MQTT Explorer über ein Publish machen.

    Bei Topic (wobei das xxx euere irk ist von der Watch)
    espresense/settings/irk:xxxxx/config
    json auswählen und my_new_id euren Namen vergeben
    {“id”:”my_new_id”}
    dann noch retain unten anklicken und Publishen

    Antworten
  • Grundsätzlich eine gute Idee, aber ob ich innerhalb der Wohnung/Haus mein Handy konsequent “mitschleppe” weiß ich wirklich nicht 🙁 Ja selbst das tragen einer Armbanduhr (Smart oder nicht) lehne ich ab, so dass die Erkennung über BT oder WLAN-Connection eher flachfallen, in welchem Raum ich mich aufhalte 🙁 🙁 Dann schon eher in Richtung DS1820???
    Trotzdem suche ich eine Lösung genau für dieses Problem! Wenn ich z.B. ins Bad gehe (idealerweise wenn ich schon die Idee habe das zu tun 😉 ) soll die Warmwasserumwälzpumpe anspringen um mir mit warmen Wasser die Hände zu waschen. Da scheint ein Bewegungsmelder schon eher auszureichen ?
    Die Wärmeabstrahlung einer Person ist für mich schon eher ein Kriterium wo ich mich aufhalte(, inwiefern ich mich da von meiner Katze unterscheide muss ich noch testen 😉
    Es sollte weiterehin unabhängig von der Person sein, die im Raum anwesend ist, wenn ich mein Handy dabei habe um die “Vorteile” des Geotracking zu nutzen mag es funktionieren. Erklär das mal anderen Person (WAF!), dass die “Befehle” ans SmartHome mal so oder so akzeptiert werden 🙁 “Alexa mach die Lampen aus” kann fatale Folgen haben wenn es plötzlich heißt “Alexa mache alle Lampen aus”… in diesem Fall war die Stromüberwachungsteckdose des Kühlschranks durch “Alexa” auch als Lampe definiert 🙁 🙁 ….
    Trotzdem eine gute Idee sich mit der Thematik zu befassen, werde sie aber so leider nicht realsieren können 🙁

    Antworten
  • Das Thema lässt mich nicht los 😉 und ich denke vielleicht ist es gar nicht schlecht, doch irgendwie immer ein “BT-Gerät” mit sich rumzutragen um das “Geotracking” zu nutzen, muss ja keine Uhr oder gar ein Handy sein, vielleicht auch in Form eines “Taschentuchs” oder “präparierte” Hausschuhe oder was weiß ich was man irgendwie ständig bei sich hat (Brille???) … bis hin zur Kamera mit “Gesichtserkennung”, da gibt es ja auch “fertige” ESP32 Konzepte (?) Nicht zuletzt ein Implantat (wohl eher mit sehr geringer Reichweite?) , was ja gar nicht sooo abwegig scheint, wenn man sich manche Berichte über alternative Bezahlmethoden ansieht die offenbar in der Praxis funktionieren (?)
    Der kritische Punkt dürfte aber immer auch der Erfassungsbereich sein, “Radiowellen” durchdringen auch Wände und wenn zwei Zimmer nebeneinanderliegen dürfte es u.U. problematisch sein, ob ich im Bett liege oder auf dem Tron sitze 😉
    Am Ende bleibt es immer eine individuelle Entscheidung welches System in Frage kommt, wahrscheinlich braucht es oft eine Kombination von verschiedenen Erfassungesmöglichkeiten um eine mehr oder weniger eindeutige “Lokalsation” zu bekommen.
    Anwendungen sehe ich neben der räumlichen Zuordnung vom Licht und Wärme und anderen Geräten ein~ und auszuschalten, über “einheitliche Sprachbefehle” die nur im jeweiligen Raum eine Aktion auslösen sollen bis hin zu “weitläufigen” Anwendungen im Garten. Warum soll der Springbrunnen im Garten laufen wenn keiner “hinsieht” oder zumindest in der Nähe ist?
    Auf der anderen Seite ist so ein ESP32 in der Grundkonfikuration auch kein wirklich “stromsparender” Aktor! Vor allem wenn man in jedem Raum einen oder gar mehrere betreibt (das gilt auch für “Alexa”!) So könnte es in einem “Nebenraum” preiswerter sein die (LED)Beleuchtung ständig mehr oder weniger an zu lassen (ggf. mit Dämmerungsschalter?) als mit viel “Aufwand” eine “smarte” Lösung zu haben!
    Es gibt viel zu tun… fangt schon mal an 😉

    Antworten
  • Hallo Stefan, ich verfolge Deine Tutorials und Beiträge schon eine gewisse Zeit und ich muss sagen, Du machst das richtig gut. Auch bei diesem Projekt Espresense habe ich “Lunte” gerochen und habe es sofort in die Tat umgesetzt. Hier mein Setup: ESP8266 NodeMCU, ioBroker, Apple Watch und iPhone XS. Das System habe ich soweit ganz schnell zum laufen bekommen, jedoch habe ich ein kleines Problem und hoffe, Du kannst mir vielleicht weiterhelfen: Es dauert gefühlt eine Ewigkeit, bis Espresense registriert, dass ich mit der Apple Watch in meinem Büro bin um daraufhin die zu steuernde Lampe einschaltet. Kann man die Aktualisierung/Weitergabe des Espresense an irgendeiner Stelle einstellen/einrichten? Für eine entsprechende Hilfe/Antwort zur Lösung dieses Problems wäre ich dankbar.
    Gruß

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.

Weitere ähnliche Beiträge auf verdrahtet.info: