.absenceThresholdCounter zurücksetzen

Begonnen von rakohr, 19 Dezember 2019, 08:41:22

Vorheriges Thema - Nächstes Thema

rakohr

Hallo zusammen,

ich stecke noch ziemlich frisch in der FHEM Materie. Aber dank dieses Forums und diverser guter Tutorials habe ich in kürzester Zeit viel dazu gelernt und schon eine Menge umgesetzt.

Unter anderem läuft bei mir die Anwesenheitserkennung via G-tags. Das funktioniert auch soweit alles prächtig. Allerdings habe ich hier ein Problemchen, bei dem ich nun schon eine ganze Weile hänge und keine Lösung finde. Vielleicht gibt es hier noch eine Idee. Mein FHEM läuft auf einem Raspi 4, für die Bluetootherkennung nutze ich dessen internes Bluetoothmodul. Das Problem ist nun, dass der Empfang der G-tags nicht durch das ganze Haus reicht und es so sehr oft zur Abwesenheitserkennung kommt. Ich suche also einen Weg die ,,Reichweite" der G-tags zu erhöhen.
Mein G-tag PRESENCE device sieht folgendermaßen aus.

define my_Gtag PRESENCE lan-bluetooth AA:AA:AA:AA:AA:AA 127.0.0.1:5333 60
attr my_Gtag room Bewohner
attr my_Gtag  absenceThreshold 5
attr my_Gtag event-on-change-reading .*

Dabei entstehen unter anderen die beiden Readings

presence
state

die bekanntermaßen die Werte present, maybe absent oder absent annehmen.
Meine Idee war jetzt folgende. Ich nutze neben dem Raspi noch einen (oder auch mehrere) ESP32 den ich im Haus geeignet platziere. Die Kommunikation zwischen Raspi und den ESP32 soll über MQTT laufen. Die Vorgehensweise war jetzt so, dass ich eines der Readings (z.B. presence) mit einem DOIF abgreife und sobald dieses den Wert maybe absent annimmt einen MQTT publish an den ESP32 verschicke. Der ESP32 startet daraufhin einen BLE scan und sucht meinen verschollenen G-tag. Falls dieser gefunden wird, so published der ESP32 wiederum eine entsprechende Nachricht an mein FHEM. Die Nachricht würde über ein DOIF ausgewertet und die beiden Readings presence und state per setreading wieder auf anwesend gesetzt. Diese Kommunikation funktioniert soweit auch super. Nur leider stimmt das Ergebnis noch nicht.
Es würde jetzt so weiter gehen, dass mein FHEM meinen G-tag wieder nicht findet, die Readings auf maybe absent gesetzt werden, der MQTT publish an den ESP32 erfolgt, dieser anfängt zu scannen, eine MQTT Nachricht zurückschickt, usw. usw.  Das Ganze würde sich so lange wiederholen bis der eingestellte absenceThreshold erreicht wird und das PRESENCE device endgültig auf abwesend wechselt.
Es muss also einen Zähler geben, der trotz manueller Änderung der Readings einfach weiter gezählt wird. Also habe ich mich auf die Suche danach gemacht und im Perl-Code des PRESENCE Moduls unter anderem das versteckte Reading .absenceThresholdCounter gefunden. Die versteckten Readings habe ich mir daraufhin erst einmal mit

attr global showInternalValues 1

sichtbar gemacht, so dass ich den Counter in meinem G-tag device sehe. Also dachte ich mir, setze ich zusätzlich neben den beiden Readings presence und state auch noch den .absenceThresholdCounter wieder auf 0. Das klappt leider auch nur oberflächlich. Sobald die Anwesenheit wieder auf maybe absent springt wird hier der alte Wert weiter gezählt bis wiederum der eingestellte absenceThreshold erreicht wird.

An dieser Stelle stehe ich nun recht ratlos. Habt ihr einen Tip für wie ich diesen Counter von außen wieder auf 0 bekomme.

Besten Dank und vorweihnachtliche Grüße

frober

Ich würde für jede Erkennung ein Reading schreiben oder Device anlegen.
Diese mittels notify/Doif über eine oder- Abfrage auf die Anwesenheit testen und danach erst das eigentliche state auf Anwesend setzten.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DeeSPe

Gab es nicht hier irgendwo mal sowas wie ein lepresenced für ESP32?
Mir war so darüber hier im Forum mal gelesen zu haben.
Wenn es den gibt, dann wäre doch eine Umstellung auf collectord möglich.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

rakohr

#4
Danke für den Hinweis, dass schaue ich mir an