FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: The-Holgi am 31 August 2022, 15:28:19

Titel: ESPresense
Beitrag von: The-Holgi am 31 August 2022, 15:28:19
Hallo,
bin gerade über ESPresense ,,gestolpert". https://espresense.com/
Da die Kommunikation über MQTT läuft, sollte es doch auch mit Fhem funktionieren.
Hat das schon Jemand getestet ?

Gruß Holger
Titel: Antw:ESPresense
Beitrag von: choenig am 04 September 2022, 14:57:11
Hi Holger,

ich habe gerade angefangen, ESPresense in mein FHEM zu integrieren, sehr cooles Projekt :)

Dafür hab' ich bislang 8 ESP32 DevKits im Haus verteilt und mir ein kleines MyUtils-Modul geschrieben, welches die Daten auswertet.

LG
Christian
Titel: Antw:ESPresense
Beitrag von: The-Holgi am 07 September 2022, 17:12:41
Hallo Christian,
hast du Lust ein bißchen mehr darüber zu erzählen, oder deinen MyUtils ,,Code" zu teilen?

Gruß Holger
Titel: Antw:ESPresense
Beitrag von: choenig am 07 September 2022, 18:45:24
Hi Holger,

gerne beides, den Code aber erst, nachdem ich ihn aufgeräumt habe :)

Das "Modul" wird zusammen mit einem MQTT2_Device verwendet. Das MQTT2_DEVICE lauscht auf dem `espresence/devices/.*` topic und ruft die MyUtils Funktion auf, die dann mittels der kürzesten Entfernung zum Device den aktuellen Raum für jedes Gerät, das ich beobachte, errechnet und in readings speichert. Das Vorgehen funktioniert aber nur gut, wenn viele ESP32s verteilt sind.

Die readings sehen dann ungefähr so aus:


dist_CHo_AppleWatch5_bad 7.04
dist_CHo_AppleWatch5_buero 1.16
dist_CHo_AppleWatch5_eingang ∞
dist_CHo_AppleWatch5_essbereich 7.54
dist_CHo_AppleWatch5_kueche ∞
dist_CHo_AppleWatch5_schlafzimmer 5.66
dist_CHo_AppleWatch5_sportzimmer 5.29
dist_CHo_AppleWatch5_waschraum ∞
dist_CHo_AppleWatch5_wohnzimmer 4.62
dist_CHo_iPhone12Pro_bad 5.86
dist_CHo_iPhone12Pro_buero 2.72
dist_CHo_iPhone12Pro_eingang ∞
dist_CHo_iPhone12Pro_essbereich 8.68
dist_CHo_iPhone12Pro_kueche ∞
dist_CHo_iPhone12Pro_schlafzimmer 8.2
dist_CHo_iPhone12Pro_sportzimmer 5.6
dist_CHo_iPhone12Pro_waschraum ∞
dist_CHo_iPhone12Pro_wohnzimmer 1.46
dist_INE_AppleWatch5_bad ∞
dist_INE_AppleWatch5_buero ∞
dist_INE_AppleWatch5_eingang ∞
dist_INE_AppleWatch5_essbereich ∞
dist_INE_AppleWatch5_kueche ∞
dist_INE_AppleWatch5_schlafzimmer ∞
dist_INE_AppleWatch5_sportzimmer ∞
dist_INE_AppleWatch5_waschraum ∞
dist_INE_AppleWatch5_wohnzimmer ∞
dist_INE_iPhone12Pro_bad ∞
dist_INE_iPhone12Pro_buero ∞
dist_INE_iPhone12Pro_eingang ∞
dist_INE_iPhone12Pro_essbereich ∞
dist_INE_iPhone12Pro_kueche ∞
dist_INE_iPhone12Pro_schlafzimmer ∞
dist_INE_iPhone12Pro_sportzimmer ∞
dist_INE_iPhone12Pro_waschraum ∞
dist_INE_iPhone12Pro_wohnzimmer ∞
lctn_CHo_AppleWatch5 buero
lctn_CHo_iPhone12Pro wohnzimmer
lctn_INE_AppleWatch5 -
lctn_INE_iPhone12Pro -
room_bad 0
room_buero 1
room_eingang 0
room_essbereich 0
room_kueche 0
room_schlafzimmer 0
room_sportzimmer 0
room_waschraum 0
room_wohnzimmer 1
total 2


Aufgrund der hohen Anzahl an Updates, die da berechnet werden, habe ich das auf meinem 2. FHEM laufen, in dem alles läuft, was ruhig dauern darf. Von da pumpe ich es per mqtt in mein Haupt-FHEM.

Das Hauptproblem ist noch, dass es doch immer wieder vorkommt, dass er im 2-5 Sekundentakt den Raum wechselt, wenn ich z.B. unterhalb des Büros im Wohnzimmer bin. Da muss ich noch eine Stabilisierung einbauen. Dabei möchte ich aber nicht die agilität verlieren, die ich zur Zeit habe. Der Raumwechsel wird in der Regel innerhalb von 5-10 Sekunden erkannt, und das "nach-Hause-kommen" sofort, wenn man vor dem Haus steht, da kommt Meine Unifi-basierte Lösung nicht mit.

Was mir noch fehlt, sind Ideen, wie man das ganze Verwenden kann :).

Zwei Anwendungsfälle habe ich umgesetzt:
* Im Keller-Flur bleibt so lange das Licht an, bis niemand mehr im Waschraum ist. Dadurch spare ich mir 2 Bewegungsmelder, die vorher den ganzen Bereich ausleuchten mussten.
* Im Dachgeschoss schliesse ich den Rolladen nicht mehr bei Regen, wenn jemand im Zimmer ist. Der hat das dann wohl selber unter Kontrolle und möchte Lüften.

Soweit erstmal

LG
Christian
Titel: Antw:ESPresense
Beitrag von: Klaus Heynen am 14 September 2022, 15:46:25
Hallo Christian,
hab das jetzt seit gestern auch mal ausprobiert (mit zus. angeschlossenen PIR Sensoren auf Port22).
Habe 5 Räume damit "vermient"
Ja, die Anzahl der readings ist schon beängstigend.
Vielleicht muss man da auf der ESPresense Seite mal schauen ob man es nicht anpassen kann.
Obwohl ich im Set-up Telemetrie aus geschaltet habe, sendet ESPresesne weiterhin die Daten.

Wäre schön wenn Du deinen Code bald veröffentlichen würdest.

Schön wäre eine Funktion die die einzelnen Räume miteinander Abgleicht in dem man Bewegungs- Zeitprofile erstellt und auswertet und auch die PIR Sensoren integriert. Denn BT schaut ja durch die Wände und da kann ja ein Beacon durchaus nahe am einem ESPresense sein aber leider auf der anderen Seite einer Wand.

Anwendung ist neben der Lichtsteuerung eine Steuerung der Heizung und der Audioanlage.


Grüße Klaus
Titel: Antw:ESPresense
Beitrag von: choenig am 14 September 2022, 16:27:05
Na gut,

hier ist mein Code.

Das ist mein MQTT2_DEVICE in meinem secondary-Fhem (hier muss <DEVICES_TO_WATCH_RE> angepasst werden):


defmod ESPresense MQTT2_DEVICE
attr ESPresense IODev mqtt2__client_mosquitto
attr ESPresense event-on-change-reading .*
attr ESPresense readingList espresense/devices/<DEVICES_TO_WATCH_RE>.*:.* { MyUtils_ESPresense_updateFromMQTT($NAME, $TOPIC, $EVENT) }
attr ESPresense room ESPresence
attr ESPresense timestamp-on-change-reading .*


Im Anhang ist mein 99_MyUtils_ESPresense.pm.

Der Code geht davon aus, dass die Räume keine Unterstriche enthalten, die Readings sind so aufgebaut:


dist_<DEVICE>_<ROOM> => aktueller Abstand des <DEVICE> zum <ROOM> ('∞' wenn nicht anwesend)
lctn_<DEVICE>        => aktueller Raum (location) des <DEVICE>    ('-' wenn nicht anwesend)
room_<ROOM>          => aktuelle Anzahl der Devices im <ROOM>     ('0' wenn nicht belegt)


Viel Spass damit :)

Das letzte, was mir so noch nicht gefällt, ist, dass die Geräte manchmal zwischen Räumen hin-und-herspringen. Das möchte ich noch verbessern. Gleichzeitig möchte ich aber die Agilität nicht verlieren. Mal sehen, was da so geht. Ach ja, und vermutlich werde ich noch was implementieren, dass man mehrere ESP32s in einem Raum haben kann. Das unterstützt ESPresense so noch nicht, da werde ich mir ein Schema überlegen.

LG
Christian
Titel: Antw:ESPresense
Beitrag von: Klaus Heynen am 14 September 2022, 16:30:12
Vielen Dank Christian!
Titel: Antw:ESPresense
Beitrag von: Klaus Heynen am 14 September 2022, 17:57:15
Hab mal überlegt, eigentlich müsste mal doch mit 3 ESPresense eine Triangulation hin bekommen und mit 4 oder mehr auch im 3D Raum.
Was meinst Du?
Titel: Antw:ESPresense
Beitrag von: choenig am 14 September 2022, 20:41:13
Puh,

keine Ahnung, ich bin schon oft überrascht, wie unterschiedlich die Entfernungsangaben sind. Mein iPhone ist in meiner Hosentasche und sagt 2,80m, während die Apple Watch 0,75 sagt, und recht damit hat.

Ich glaube eher, dass viele ESPs viel helfen ;).

LG
Christian
Titel: Antw:ESPresense
Beitrag von: ReviloEgros am 29 Oktober 2022, 21:13:42
Ich wollte nur ein mal danke sagen für dein MyUtils Modul. Habe es jetzt seit ein paar Tagen in benutzung und muss sagen es läuft bisher sehr gut. Habe nur eine kleine Anpassung vorgenommen, da FHEM einen : im Readingnamen verbietet, welcher ja bei den IDs vorkommt. Hatte vorher die Anwesenheitserkennung über mehrere PIs mit lepresenced am laufen, aber da war mir die Zuverlässigkeit bisher immer ein Dorn im Auge. Entweder ist das Bluetooth System auf den PIs abgeschmiert, presense Melungen im collector hängen geblieben oder selbst die lepresensed daemons sind ausgestiegen. Nun hab ich ein paar ESPs im Haus verteilt und habe nun endlich ruhe!
Titel: Antw:ESPresense
Beitrag von: Fillip am 18 Februar 2023, 13:49:56
Hallo Ihr,
ich will langsam auch mal in die ESPresense "Welt" einsteigen... Aktuell habe ich zum testen auf einem ESP32 ESPresence (v3.1.1) laufen, 5 weitere sollen heute noch ankommen.

Die myUtility99 von dir habe ich schon angelegt - Vielen dank dafür schon mal.

Mir stellt sich aktuell nur die Frage, wie setzt sich denn deine MQTT Topic
espresense/devices/<DEVICES_TO_WATCH_RE>
zusammen?

Ich habe im ESPresense über die "neue" UI den IRK meines iPhones herausgefunden und dort eingetragen unter "Known BLE identity" sowie "Include only sending these ids to mqtt" um das ganze etwas zu mimimieren was die MQTT auslastung angeht

MQTT2 bzw FHEM hat natürlich für den ESPresense (in meinem Fall Wohnzimmer) ein neues Gerät angelegt, das Topic ist da wie folgt
espresense/rooms/wohnzimmer/...

Edit: Hat sich geklärt die frage, anstelle des "<DEVICES_TO_WATCH_RE>" kommt die ID welche Überwacht werden soll, in meinem Fall steht dann da bsp:
espresense/devices/irk_xxxxxxxx
Titel: Antw:ESPresense
Beitrag von: C0mmanda am 19 Februar 2023, 19:11:36
Habe mich auch mit Espresense beschäftigt und ein Testdevice läuft aktuell wie es soll!
War eigentlich nur neugierig und hatte noch ESP32 rumliegen... aber jetzt überlege
ich natürlich was man damit automatisieren kann  ;D

Licht fällt aufgrund der Trägheit ja aus... daher die Frage:
Was automatisiert ihr damit (oder habt es vor)?

Lasst mal hören eure Ideen  8)

Danke & Gruss
Titel: Antw:ESPresense
Beitrag von: Klaus Heynen am 09 März 2023, 21:10:24
Ich bekomm es nicht hin!

Mein MQTT Server: KHdb_Blumen_MQTT_Broker
In Readings: ,"espresense/rooms/kueche/include":"iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4700


define ESPresense MQTT2_DEVICE
setuuid ESPresense 640a084b-f33f-f012-af98-26b459447d1ea43f
attr ESPresense IODev KHdb_Blumen_MQTT_Broker
attr ESPresense event-on-change-reading .*
attr ESPresense readingList espresense/devices/iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4700.*:.* { MyUtils_ESPresense_updateFromMQTT($NAME, $TOPIC, $EVENT) }
attr ESPresense room ESPresence
attr ESPresense timestamp-on-change-reading .*


aber im ESPresence:


Attributes
IODev
KHdb_Blumen_MQTT_Broker

event-on-change-reading
.*

readingList
espresense/devices/iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4700.*:.* { MyUtils_ESPresense_updateFromMQTT($NAME, $TOPIC, $EVENT) }

room
ESPresence

timestamp-on-change-reading
.*



Im MQTT_Device wird alles angezeigt:
known_irks
2023-03-09 19:18:17
known_macs
2023-03-09 19:18:17
kueche_distance
3.75
2023-03-10 08:17:56
kueche_id
iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4700-0-0
2023-03-10 08:17:56
kueche_idType
180
2023-03-10 08:17:56
kueche_interval
401
2023-03-10 08:17:56
kueche_mac
54b3288393ae
2023-03-10 08:17:56
kueche_raw
4.25
2023-03-10 08:17:56
kueche_rssi
-87
2023-03-10 08:17:56
kueche_rssi_1m
-65
2023-03-10 08:17:56
kueche_speed
0.04


Aber es tut sich nichts im ESPresense device.

Hat jemand eine Idee?

Habs hinbekommen:
die ID muss <iBeacon_ee2150ae-03da-41a2-8b1d-1573740e4700-0-0> lauten, irgend wer/was bringt die : _ - etc. durcheinander.
Titel: Aw: ESPresense
Beitrag von: Klaus Heynen am 23 März 2023, 14:24:37
Hallo Christian,

wie muss ich mehrere devices in

attr ESPresense readingList espresense/devices/iBeacon_ee2150ae-03da-41a2-8b1d-1573740e4700-0-0.*:.* { MyUtils_ESPresense_updateFromMQTT($NAME, $TOPIC, $EVENT) }

voneinander trennen?
Hinter dem 1. Device ein Leerzeichen, Komma oder was anderes?

oder muss ich mehrere attr zB.

attr ESPresense readingList espresense/devices/iBeacon_ee2150ae-03da-41a2-8b1d-1573740e4700-0-0.*:.* { MyUtils_ESPresense_updateFromMQTT($NAME, $TOPIC, $EVENT) }

attr ESPresense readingList espresense/devices/iBeacon_ee2150ae-03da-41a2-8b1d-1573740e4701-0-0.*:.* { MyUtils_ESPresense_updateFromMQTT($NAME, $TOPIC, $EVENT) }

attr ESPresense readingList espresense/devices/iBeacon_ee2150ae-03da-41a2-8b1d-1573740e4702-0-0.*:.* { MyUtils_ESPresense_updateFromMQTT($NAME, $TOPIC, $EVENT) }

machen?

Grüße Klaus
Titel: Aw: ESPresense
Beitrag von: ReviloEgros am 24 Mai 2023, 05:41:59
Ich habe das für mehrere Beacons bei mir so:

attr ESPresense readingList espresense/devices/.*(fab45d0f6f2b|cb4adc70f897|da1062d8386e|ffff10aab200|ffff10aa5d10|cd1128e7bf7f).*:.* { MyUtils_ESPresense_updateFromMQTT($NAME, $TOPIC, $EVENT) }
Und der Übersicht halber da ich mir nicht merken kann welche Mac zu wem gehört noch ein:

attr ESPresense userReadings presense_frank {if (ReadingsVal('ESPresense', 'lctn_tile-cb4adc70f897', '-') eq "-") {return "absent"} else {return "present"}},\
presense_oliver {if (ReadingsVal('ESPresense', 'lctn_tile-fab45d0f6f2b', '-') eq "-") {return "absent"} else {return "present"}},\
presense_patricia {if (ReadingsVal('ESPresense', 'lctn_itag-ffff10aab200', '-') eq "-") {return "absent"} else {return "present"}}
Titel: Aw: ESPresense
Beitrag von: denis.robel am 16 November 2023, 22:32:06
Hallo,

ich möchte das Beispiel anpassen und habe verschiedene Mifit Fitnestracker am Start. Ich verstehe aber nicht so richtig woher lctn_tile-cb4adc70f897 kommt.

Zitat von: ReviloEgros am 24 Mai 2023, 05:41:59attr ESPresense userReadings presense_frank {if (ReadingsVal('ESPresense', 'lctn_tile-cb4adc70f897', '-') eq "-") {return "absent"} else {return "present"}}

Brauche ich zwingend mehrere ESP32 oder geht auch zum Testen ein einzelner?
Muss der Name des MQTT Devices 'ESPresense' heissen, oder kann ich den frei wählen?
Brauche ich pro ESP32 ein MQTT device? (wird ja via autocreate angelegt)

Es wäre ein kleines Howto für "Anfänger" gut, kann mir da jemand ein paar Hinweise geben?
Titel: Aw: ESPresense
Beitrag von: denis.robel am 17 November 2023, 12:01:37
Ok, ich hab es hinbekommen:

1. ESP flashen
2. MQTT Device für ESP wird automatisch angelegt via autocreate
3. 99_MyUtils_ESPresense.pm anlegen und mit dem Inhalt von Christian befüllen
4. Sammeldevice ESPresense anlegen

Jetzt muss ich das ganze nur noch mit dem ROMMATE-Device verheiraten. Dazu brauche ich aber einzelne Devices mit einem Presence Reading.
Kann ich pro BLE Device ein ESPresense Devices anlegen oder muss ich das über einzelne Dummies erledigien?

@Christian: vielen Dank für das Teilen Deines Codes
Titel: Aw: ESPresense
Beitrag von: denis.robel am 23 November 2023, 20:52:16
Prinzipiell funktioniert alles.
Da einige ESPs auber auch die Straße vor dem Haus scannen,wir die readingList des ESP Devices immer länger.
Jedes vorbeifahrende BLE Device bekommt ein neues eigenes Reading.

Kann man irgendwie unterbinden, dass das Anlegen neuer Readings für das Device nicht erfolgt?

Titel: Aw: ESPresense
Beitrag von: Icinger am 24 November 2023, 03:09:22
Du kannst in den ESPresence-Einstellungen unter "Filtering" angeben, welche Geräte durchgereicht werden sollen.

https://espresense.com/configuration/settings#filtering
Titel: Aw: ESPresense
Beitrag von: denis.robel am 24 November 2023, 17:26:48
Danke für den Hinweis, damit klappt es natürlich.
Titel: Aw: ESPresense
Beitrag von: Reinschki am 19 Januar 2024, 17:10:08
Zitat von: choenig am 14 September 2022, 16:27:05Na gut,

hier ist mein Code.

Das ist mein MQTT2_DEVICE in meinem secondary-Fhem (hier muss <DEVICES_TO_WATCH_RE> angepasst werden):

defmod ESPresense MQTT2_DEVICE
attr ESPresense IODev mqtt2__client_mosquitto
attr ESPresense event-on-change-reading .*
attr ESPresense readingList espresense/devices/<DEVICES_TO_WATCH_RE>.*:.* { MyUtils_ESPresense_updateFromMQTT($NAME, $TOPIC, $EVENT) }
attr ESPresense room ESPresence
attr ESPresense timestamp-on-change-reading .*

Im Anhang ist mein 99_MyUtils_ESPresense.pm.

Der Code geht davon aus, dass die Räume keine Unterstriche enthalten, die Readings sind so aufgebaut:

dist_<DEVICE>_<ROOM> => aktueller Abstand des <DEVICE> zum <ROOM> ('∞' wenn nicht anwesend)
lctn_<DEVICE>        => aktueller Raum (location) des <DEVICE>    ('-' wenn nicht anwesend)
room_<ROOM>          => aktuelle Anzahl der Devices im <ROOM>     ('0' wenn nicht belegt)

Viel Spass damit :)

Das letzte, was mir so noch nicht gefällt, ist, dass die Geräte manchmal zwischen Räumen hin-und-herspringen. Das möchte ich noch verbessern. Gleichzeitig möchte ich aber die Agilität nicht verlieren. Mal sehen, was da so geht. Ach ja, und vermutlich werde ich noch was implementieren, dass man mehrere ESP32s in einem Raum haben kann. Das unterstützt ESPresense so noch nicht, da werde ich mir ein Schema überlegen.

LG
Christian


Hallo Christian,

habe deinen Code "99_MyUtils_ESPresense.pm" in Verwendung und bin sehr zufrieden.
Ich hätte das mit meinen Fähigkeiten nicht so professionell hinbekommen.

Vielen Dank dafür!!

Gruß
Reiner