ESPresense

Begonnen von The-Holgi, 31 August 2022, 15:28:19

Vorheriges Thema - Nächstes Thema

denis.robel

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?
VG

Denis

denis.robel

#16
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
VG

Denis

denis.robel

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?

VG

Denis

Icinger

Du kannst in den ESPresence-Einstellungen unter "Filtering" angeben, welche Geräte durchgereicht werden sollen.

https://espresense.com/configuration/settings#filtering
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

denis.robel

Danke für den Hinweis, damit klappt es natürlich.
VG

Denis

Reinschki

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

Klaus Heynen

ich benutze ESPresense nun seit einiger Zeit, echt klasse Modul, nur ein Problem:
In den readings sind Doppelpunkte das verhindert das ich die im stateFormat verwende um anstatt der drei ? den momentanen Ort anzeige.

Internals:
   FUUID      653a4b81-f33f-a81e-dc51-f321464e1ecbda37
   IODev      KHdb_Blumen_MQTT_Broker
   NAME       JuiYu_ESPresense
   NR         207
   STATE      lctn_iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4701-0-0
   TYPE       MQTT2_DEVICE
   READINGS:
     2024-07-02 20:43:55   IODev           KHdb_Blumen_MQTT_Broker
     2024-06-30 12:22:31   _counter        69244
     2024-07-02 20:43:45   _lastUpdate     2024-07-02 20:43:45
     2024-06-30 09:05:02   dist_iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4701-0-0_hobbyraum ∞
     2024-06-30 12:22:51   dist_iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4701-0-0_kueche ∞
     2024-06-30 09:05:02   dist_iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4701-0-0_schlafzimmer ∞
     2024-06-30 09:05:00   dist_iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4701-0-0_wohnzimmer ∞
     2024-06-30 09:05:02   dist_iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4701-0-0_wohnzimmer2 ∞
     2024-06-30 12:22:51   lctn_iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4701-0-0 -
     2024-06-30 08:48:53   room_hobbyraum  0
     2024-06-30 12:22:51   room_kueche     0
     2024-06-30 08:15:46   room_schlafzimmer 0
     2024-06-30 09:03:18   room_wohnzimmer 0
     2024-06-30 09:04:46   room_wohnzimmer2 0
     2024-06-30 12:22:51   total           0
Attributes:
   IODev      KHdb_Blumen_MQTT_Broker
   autocreate 1
   event-on-change-reading .*
   readingList espresense/devices/iBeacon_ee2150ae-03da-41a2-8b1d-1573740e4701-0-0..*:.* { MyUtils_ESPresense_updateFromMQTT($NAME, $TOPIC, $EVENT) }
   room       ESPresence
   stateFormat lctn_iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4701-0-0
   timestamp-on-change-reading .*
   verbose    0

Irgend eine Idee wie ich das lösen kann?

TomLee

#22
Hallo,

hab mich noch nie mit ESPresence beschäftigt, nur den Thread durchgelesen.

Ändere doch einfach den Doppelpunkt in der ID zu Unterstrich (wo auch immer man das macht), hast Du doch selbst vor über einem Jahr geschrieben.

Zitat von: Klaus Heynen am 09 März 2023, 21:10:24Habs hinbekommen:
die ID muss <iBeacon_ee2150ae-03da-41a2-8b1d-1573740e4700-0-0> lauten, irgend wer/was bringt die : _ - etc. durcheinander.

Gruß

Thomas



Mit setreading kann man gar keine Readings mit Doppelpunkt schreiben, mit readingsSingleUpdate scheint das wohl doch zu gehen ? Das muss ich mal testen.

Klaus Heynen

#23
Danke, guter Hinweis TomLee,
muss mal raus finden wer die Doppelpunkte da rein fummelt.
Auf der App im Handy gibt man nur "ee2150ae-03da-41a2-8b1d-1573740e4700-0-0" ein.
Hab's gescannt das Handy sendet nur  "ee2150ae-03da-41a2-8b1d-1573740e4700-0-0".
Beim fhem device kommt aber "lctn_iBeacon:ee2150ae-03da-41a2-8b1d-1573740e4700-0-0" an.

Die App auf dem Handy heißt iBeacon!

Klaus Heynen

Ich komme einfach nicht weiter, habe mir die ESPresense Funktion genau angesehen, da kommen die : wohl nicht her.
Weiß jemand Rat?

TomLee

#25
Es hat sich so ergeben das ich mich etwas (nicht viel) mit Espresense beschäftigt habe.
Wenn Du in der 99_MyUtils_ESPresense.pm nach Zeile 73 ein $id =~ s/:/_/g; ergänzt, wird, falls die ID einen Doppelpunkt enthält, dieser durch einen Unterstrich ersetzt. Weitere Folgen sollte das meinem bisherigen Verständnis nicht haben.

Danach ein deletereading JuiYu_ESPresense .* ausführen.

Klaus Heynen

Hallo TomLee,

ich hatte es mit $id =~ tr/:/_/g; versuch das ging nicht.
Deine Lösung läuft perfekt, man nur einen reload des moduls machen bevor es funktioniert.
Vielen Dank Klaus :-)

TomLee

Zitat... man nur einen reload des moduls machen bevor es funktioniert.

Wenn man die Datei extern editiert ja, über Edit files in FHEM ist das reload nicht notwendig.