[gelöst] Anwesenheitserkennung ins Log schreiben

Begonnen von roemi, 25 November 2022, 23:26:18

Vorheriges Thema - Nächstes Thema

roemi

Hallo,
ich habe geglaubt mit
attr handy_xxx event-on-change-reading state
erfolgreich erreicht zu haben, das ein Statuswechsel ins log geschrieben wird.

Tut es aber nicht. Vermutlich weil ich auch noch sagen muss, was eigentlich gemacht werden muss.

Nun meine Anfängerfrage ... was fehlt?
8)
Danke
Römi
https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren

rabehd

Zitat von: roemi am 25 November 2022, 23:26:18

Nun meine Anfängerfrage ... was fehlt?
8)
Danke
Römi

Grundwissen!
Wo soll man da anfangen.
Welches Log-File?
Hilfe gelesen?
Auch funktionierende Lösungen kann man hinterfragen.

roemi

ZitatGrundwissen!
Wo soll man da anfangen.

Jepp, Du hast Recht ... warum frage ich überhaupt.

Römi
https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren

CoolTux

Das Grundwissen bezieht darauf wie ich eine Frage stellen so das der Helfende alle nötigen Informationen zur adäquaten Lösung des Problems hat.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

enno

Zitat von: roemi am 26 November 2022, 09:18:31
Jepp, Du hast Recht ... warum frage ich überhaupt.

Die Frage ist so allgemein gestellt, da fallen mir ganz viele Antworten zu ein. Ich glaube aber zielführender ist du lieferst ein paar Details.

1. list handy_xxx
2. in welchem Log suchst du die Informationen?

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

MadMax-FHEM

#5
Wobei der Hinweis sich mit den Grundlagen zu beschäftigen und "Doku" zu lesen schon auch stimmig ist...

event-on-change-reading schränkt ja eher Events ein, als dass es zusätzlich was erzeugt oder (wie hier gewünscht) wo einträgt.
Wie kommt der TE auf die Idee, dass das für Logeinträge sorgt? ;)

Wenn du Logeinträge in einem Device-spezifischen Log willst, dann:

Eventmonitor öffnen, auf Events des Devices (von dem du Einträge willst) warten oder "provozieren", Zeile markieren und FileLog anlegen lassen: voila damit sollten die Einträge in DIESEM Logfile landen...
https://wiki.fhem.de/wiki/Event_monitor

EDIT: https://wiki.fhem.de/wiki/FileLog

Wenn du sie im "globalen" fhem-Log willst, dann musst du sie selbst da reinschreiben...
Wieder Eventmonitor, diesmal ein notify erzeugen lassen und dort dann (in die vorgegebenen geschweiften Klammern) sowas eintragen:


Log3(undef, 1, "$EVENT")


EDIT: oder auch

Log3($NAME, 1, "$EVENT")


EDIT: https://wiki.fhem.de/wiki/Notify

fhem ist "Event-basiert", also es muss einen Event geben und dann gibt es Mittel (FileLog, notify, DOIF, ...) darauf zu reagieren.
Wenn du zeitgesteuerte "Events" brauchst/willst: at
Damit kannst du zu bestimmten Zeiten (die du dort einstellst) eben etwas abarbeiten lassen...

Das sind aber Grundlagen fhem...
EDIT: https://wiki.fhem.de/wiki/First_steps_in_FHEM

Und: ich würde das event-on-change erst mal wieder löschen. Erst mal mit allen Events arbeiten und schauen, dass die Aufgabe tut. Dann erst Events einschränken usw. (-> Performance). Weil, wenn dann "plötzlich" etwas nicht mehr tut, war es wohl "zu viel des Guten" ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

roemi

Ja,

die Frage war falsch gestellt.
ZitatInternals:
   ADDRESS    192.168.178.20
   DEF        lan-ping 192.168.178.20
   FUUID      6077495c-f33f-8e37-3013-d6a3decd62d8b2fd
   INTERVAL_NORMAL 30
   INTERVAL_PRESENT 30
   MODE       lan-ping
   NAME       test_handy
   NOTIFYDEV  global
   NR         69
   NTFY_ORDER 50-test_handy
   STATE      absent
   TYPE       PRESENCE
   eventCount 25611
   READINGS:
     2022-11-15 12:01:00   model           lan-ping
     2022-11-26 11:06:32   presence        absent
     2022-11-26 11:06:32   state           absent
   helper:
     CURRENT_STATE present
Attributes:
   pingCount  4
   room       Training

Ich steuere zwei Vorgänge abhängig davon ob ein Handy anwesend ist oder nicht.
Dabei habe ich im Log (welches täglich von fhem erzeugt wird und wo ich relevante Infos reinschreibe (das "globalen" fhem-Log  ;) )) festgestellt, dass die Zirkulationspumpe zwischendurch für wenige Minuten abgeschaltet wird.
Vermutlich weil das Handy ausserhalb des WLANs war.
Das will ich nun zur Kontrolle auch loggen und dann den Intervall für die Abwesenheitmeldung verlängern um so solche Lücken zu überbrücken.

Ich hatte verstanden das der pingCount für die Anzahl der notwendigen Pings zuständig ist bevor der Status sich ändert. Dem ist aber scheinbar nicht so.

Aber ich werde wieder lesen und es irgendwann hinbekommen und als erstes den Tipp von MadMax-FHEM umsetzten (der geantwortet hat während ich geschrieben habe).

Danke

Römi
https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren

MadMax-FHEM

#7
PingCount: wieviele Pings sollen abgesetzt werden (wenn einer davon klappt, so meine ich, dann: anwesend, sonst nicht)

Was du evtl. suchst ist das Attribut absenceThreshold

https://wiki.fhem.de/wiki/PRESENCE
https://fhem.de/commandref_DE.html#PRESENCE

Zitat von: commandref
absenceThreshold
(Nicht im Modus "event" anwendbar)
Die Anzahl an Checks, welche in "absent" resultieren müssen, bevor der Status der PRESENCE-Definition auf "absent" wechselt. Mit dieser Funktion kann man die Abwesenheit eines Gerätes verifizieren bevor der Status final auf "absent" geändert wird. Wenn dieses Attribut auf einen Wert >1 gesetzt ist, werden die Readings "state" und "presence" auf den Wert "maybe absent" gesetzt, bis der Status final auf "absent" wechselt.

Standardwert ist 1 (keine Abwesenheitsverifizierung)

Allerdings bin ich weg von Handy-WLAN bzw. LAN-ping beim Handy, da mir das zu unzuverlässig war (WLAN am Handy aus wegen Stromsparen usw.).
Hatte dann mal eine Zeitlang hping3 im Einsatz aber auch das hat nicht zuverlässig getan...
EDIT: https://forum.fhem.de/index.php/topic,76342.msg682218.html#msg682218

Dann gTag. Hat prima funktioniert (gut zwischendrin mal Probleme wegen PI und internem BT ;)  ) aber halt ein zusätzliches Dingens...

Dann mal Unifi, also Handy "eingebucht" ins Netz. War mir aber zu "träge", hat teilweise 5-10 Minuten gedauert, bis eine Abwesenheit kam.

Aktuell nutze ich npresence: BT des Handys (parallel, weil ich ihn hatte gTag: Übergang bis ich bei npresence gelandet bin):
https://forum.fhem.de/index.php/topic,118917.msg1133609.html#msg1133609

Das funktioniert super.
Einen PI ZeroW in "Wohnungsmitte"...
Es gibt auch was mit ESP32 (hat ja BT) aber dazu muss wohl eine App auf dem Handy laufen, das mag ich nicht.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

roemi

Hallo,

"absenceThreshold" ist genau das was ich gesucht habe und den habe ich auf 30 (ca. 15 min) gesetzt.
Das mit dem notify hat auch geklappt, ist aber nicht das was ich wollte.
So schreibt er ca. alle 30 Sek. ins Log.
Ich möchte aber nur einen Eintrag wenn sich tatsächlich etwas am Status ändert oder den aktuellen Status wenn die Zirkulationspumpe im laufe des Tages abgeschaltet wird.

Aber das schaffe ich auch noch.  ;)

Die Tipps haben sehr geholfen.

Römi
https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren

roemi

Wald ... Bäume ... alles kann so einfach sein.

Alle meine Fragen sind beantwortet.
Ich danke Euch.

Römi
https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren