PRESENCE cover version - anderer Ansatz basierend auf aktuellem Code

Begonnen von martinp876, 23 Dezember 2020, 14:38:45

Vorheriges Thema - Nächstes Thema

JoWiemann

Zitat von: Invers am 21 März 2024, 18:00:52Sorry, kann nicht viel schreiben. Hoffe, war nicht mein Fehler.
Nochmals vielen Dank.


Hallo,

danke für die positive Rückmeldung. Dann geht die Version morgen ins SVN.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

juemuc

Hallo Jörg,

ich habe nachdem ich einen Rechner neu aufgesetzt habe diese Meldung im Logfile:

2024.04.10 19:43:16.677 1: PERL WARNING: Can't exec "hcitool": Datei oder Verzeichnis nicht gefunden at ./FHEM/73_PRESENCE2.pm line 290, <$fh> line 3985.
2024.04.10 19:43:16.681 2: [FB_Internet_check | Define.433] - SIGNIFICANT:define gaceful done

Welches Modul muss ich noch installieren?

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

JoWiemann

Hallo Jürgen,

welchen PC und welches Betriebssystem?

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

juemuc

Hallo Jörg,

ich nutze aktuell einen Lenovo ThinkCenter mit Debian 12.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

JoWiemann

Hallo Jürgen,

Du musst hcitool nach installieren. Das ist wohl in Debian 12 nicht vorhanden. In der cammandRef im Modul ist ein Link hinterlegt. Ich kann gerade nicht nach sehen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

juemuc

Hallo Jörg,

habe es gefunden. Ich musste nur mit sudo apt install bluez das hcitool installieren.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

bertl

Hallo Leute,

wahrscheinlich lacht ihr mich jetzt aus, aber was bedeutet bitte der Log-Eintrag
define gaceful done
Gruß Robert

JoWiemann

Zitat von: bertl am 08 Mai 2024, 19:16:08Hallo Leute,

wahrscheinlich lacht ihr mich jetzt aus, aber was bedeutet bitte der Log-Eintrag
define gaceful done
Gruß Robert

Hallo Robert, soll wohl gracefully sein. Die Definition wurde würdig durchgeführt. Hat doch was.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

bertl

Zitat von: JoWiemann am 08 Mai 2024, 19:47:52soll wohl gracefully sein

Dacht ich mir schon  :)

Beim nächsten Update bitte einfach das 'r' ergänzen  ;)

Gruß Robert

Nobbynews

#264
Guten Morgen in die Runde.

Ich habe hier mit PRESENCE2 ein Problem und habe nach vielen Versuchen keinen Ansatzpunkt mehr.
Es sollen Handys Google Pixel 8 Pro mit Android 15 per lan-ping auf Anwesenheit überprüft werden.
Auf meinem Produktivsystem habe ich noch das Model PRESENCE am Start und möchte eigentlich auf PRESENCE2 umstellen.
Leider funktioniert die Überwachung mittels PRESENCE2 nicht zuverlässig, da keine stabile Erkennung erfolgt. Das Handy wechselt alle 5 bis 10 Minuten willkürlich von present nach absent usw., manchmal auch erst nach einer Stunde.
Die Überwachung mittels PRESENCE funktioniert dagegen tadelos. Also kann es ja eigentlich nicht an der WLAN-Einstellung des Handys oder dem Netzwerk liegen.
Produktivsystem: Bookworm
Testsystem: Bullseye

Hat jemand eine Idee für die Konfiguration von PRESENCE2 für mich??

Die Definition mit PRESENCE ist folgende:
define HandyCarina PRESENCE lan-ping HandyCarina 30
attr HandyCarina userattr Handy Handy_map structexclude
attr HandyCarina Handy Praesenz
attr HandyCarina absenceThreshold 3
attr HandyCarina event-on-change-reading .*
attr HandyCarina presenceThreshold 3
attr HandyCarina room 08_Heizung,Unsorted
#   ADDRESS    HandyCarina
#   DEF        lan-ping HandyCarina 30
#   FUUID      5c95ec64-f33f-8873-f9bd-c0f8fa57fd9b5a4a
#   FVERSION   73_PRESENCE.pm:0.289400/2024-06-03
#   INTERVAL_NORMAL 30
#   INTERVAL_PRESENT 30
#   MODE       lan-ping
#   NAME       HandyCarina
#   NOTIFYDEV  global
#   NR         93
#   NTFY_ORDER 50-HandyCarina
#   STATE      present
#   TYPE       PRESENCE
#   eventCount 222
#   READINGS:
#     2024-11-18 17:03:54   appearCnt       1
#     2024-11-18 17:03:54   lastAppear      2024-11-18 17:03:54
#     2024-11-18 17:03:27   lastDisappear   2024-11-18 17:03:27
#     2024-12-04 18:14:55   model           lan-ping
#     2024-12-15 06:30:47   presence        present
#     2024-12-15 06:30:47   state           present
#   helper:
#     CURRENT_STATE present
#     PRESENT_COUNT 2
#
setstate HandyCarina present
setstate HandyCarina 2024-12-15 06:30:47 .absenceThresholdCounter 0
setstate HandyCarina 2024-11-18 17:02:49 .associatedWith PsnceDaemon
setstate HandyCarina 2024-12-15 06:30:47 .presenceThresholdCounter 2
setstate HandyCarina 2024-11-18 17:03:54 appearCnt 1
setstate HandyCarina 2024-11-18 17:03:54 lastAppear 2024-11-18 17:03:54
setstate HandyCarina 2024-11-18 17:03:27 lastDisappear 2024-11-18 17:03:27
setstate HandyCarina 2024-12-04 18:14:55 model lan-ping
setstate HandyCarina 2024-12-15 06:30:47 presence present
setstate HandyCarina 2024-12-15 06:30:47 state present

Das Ergbnis von ping lautet:
pi@fhem3:~ $ ping -c 4 HandyCarina
PING HandyCarina (192.168.2.45) 56(84) bytes of data.
64 bytes from HandyCarina.fritz.box (192.168.2.45): icmp_seq=1 ttl=64 time=767 ms
64 bytes from HandyCarina.fritz.box (192.168.2.45): icmp_seq=2 ttl=64 time=109 ms
64 bytes from HandyCarina.fritz.box (192.168.2.45): icmp_seq=3 ttl=64 time=397 ms
64 bytes from HandyCarina.fritz.box (192.168.2.45): icmp_seq=4 ttl=64 time=1240 ms

--- HandyCarina ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 108.672/628.183/1239.921/423.290 ms
pi@fhem3:~ $

Die Definitionen für PRESENCE2 lauten für den Daemon:
define PsnceDaemon PRESENCE2 daemon daemon
attr PsnceDaemon intervalNormal 30
attr PsnceDaemon nonblockingTimeOut 60
#   ADDRESS    daemon
#   DEBUGLOG   OFF
#   DEF        daemon daemon
#   FUUID      65cf0521-f33f-c8c9-8eed-22ef7763eb015f8c
#   FVERSION   73_PRESENCE2.pm:0.289400/2024-06-03
#   INTERVAL   30
#   MODE       daemon
#   NAME       PsnceDaemon
#   NOTIFYDEV  global
#   NR         52
#   NTFY_ORDER 50-PsnceDaemon
#   STATE      active
#   TIMEOUT    60
#   TYPE       PRESENCE2
#   VERSION    01.03b
#   eventCount 10161
#   READINGS:
#     2024-12-10 11:39:23   daemonAboartCnt 1
#     2024-12-01 14:41:24   daemonMaxScanTime 61
#     2024-12-10 11:39:23   daemonSkipCnt   1
#     2024-12-11 17:51:16   model           daemon
#     2024-12-15 06:32:15   pGrp__total     dis:0 ab:1 pres:7
#     2024-12-15 06:32:15   pGrp_default    dis:0 ab:1 pres:7
#     2024-12-15 06:32:15   pr_HandyBirgit  present
#     2024-12-15 06:32:15   pr_HandyBuero   absent
#     2024-12-15 06:32:15   pr_HandyCarina  absent
#     2024-12-15 06:32:15   pr_HandyHenrike present
#     2024-12-15 06:32:15   pr_HandyNorbert present
#     2024-12-15 06:32:15   pr_TabletBirgit present
#     2024-12-15 06:32:15   pr_TabletHenrike2 present
#     2024-12-15 06:32:15   pr_TabletNorbert present
#     2024-12-15 06:32:15   state           active
#   helper:
#     DISABLED   0
#     FhemLog3Std 0
#     curState   init
#     debugLog   PsnceDaemon_debugLog
#     logDebug  
#     maybe      0
#     nextScan   1733935906.29419
#     updateConfig PsnceDaemon.Initialize
#     cnt:
#       exec       0
#       maybe      0
#       state      0
#       th         0
#     disp:
#       condense   1
#       verbose    0
#     evnt:
#     interval:
#       absent     30
#       init       30
#       present    30
#     prGroups:
#
setstate PsnceDaemon active
setstate PsnceDaemon 2024-12-11 17:51:17 .associatedWith HandyBirgit,HandyBuero,HandyCarina,HandyHenrike,HandyNorbert,TabletBirgit,TabletHenrike2,TabletNorbert
setstate PsnceDaemon 2024-12-10 11:39:23 daemonAboartCnt 1
setstate PsnceDaemon 2024-12-01 14:41:24 daemonMaxScanTime 61
setstate PsnceDaemon 2024-12-10 11:39:23 daemonSkipCnt 1
setstate PsnceDaemon 2024-12-11 17:51:16 model daemon
setstate PsnceDaemon 2024-12-15 06:32:15 pGrp__total dis:0 ab:1 pres:7
setstate PsnceDaemon 2024-12-15 06:32:15 pGrp_default dis:0 ab:1 pres:7
setstate PsnceDaemon 2024-12-15 06:32:15 pr_HandyBirgit present
setstate PsnceDaemon 2024-12-15 06:32:15 pr_HandyBuero absent
setstate PsnceDaemon 2024-12-15 06:32:15 pr_HandyCarina absent
setstate PsnceDaemon 2024-12-15 06:32:15 pr_HandyHenrike present
setstate PsnceDaemon 2024-12-15 06:32:15 pr_HandyNorbert present
setstate PsnceDaemon 2024-12-15 06:32:15 pr_TabletBirgit present
setstate PsnceDaemon 2024-12-15 06:32:15 pr_TabletHenrike2 present
setstate PsnceDaemon 2024-12-15 06:32:15 pr_TabletNorbert present
setstate PsnceDaemon 2024-12-15 06:32:15 state active


Die Definition für das Handy:
define HandyCarina PRESENCE2 lan-ping HandyCarina
attr HandyCarina event-on-change-reading .*
attr HandyCarina intervalNormal 1
attr HandyCarina intervalPresent 1
attr HandyCarina thresholdAbsence 3
#   ADDRESS    HandyCarina
#   DEBUGLOG   OFF
#   DEF        lan-ping HandyCarina
#   FUUID      675714fe-f33f-c8c9-0c40-e6e221d6cbb3e6db
#   FVERSION   73_PRESENCE2.pm:0.289400/2024-06-03
#   INTERVAL   1
#   MODE       lan-ping
#   NAME       HandyCarina
#   NOTIFYDEV  global
#   NR         149
#   NTFY_ORDER 50-HandyCarina
#   STATE      present
#   TIMEOUT    60
#   TYPE       PRESENCE2
#   VERSION    01.03b
#   eventCount 4204
#   READINGS:
#     2024-12-15 06:17:14   appearCnt       325
#     2024-12-15 06:17:14   lastAppear      2024-12-15 06:17:14
#     2024-12-15 06:16:14   lastDisappear   2024-12-15 06:16:14
#     2024-12-15 06:32:15   maybeCnt        1004
#     2024-12-11 17:51:17   model           lan-ping
#     2024-12-15 06:33:14   presence        present
#     2024-12-15 06:33:14   state           present
#     2024-12-15 06:33:14   thresHldCnt     0
#   helper:
#     DISABLED   0
#     FhemLog3Std 0
#     curState   present
#     debugLog   HandyCarina_debugLog
#     logDebug  
#     maybe      0
#     nextScan   1734240795.92918
#     updateConfig HandyCarina.Initialize
#     cnt:
#       exec       3677
#       maybe      1004
#       state      325
#       th         0
#     disp:
#       condense   1
#       verbose    0
#     interval:
#       absent     1
#       init       30
#       present    1
#     os:
#       Cmd        ping -c 1 -w 1 HandyCarina 2>&1
#       search     (ttl|TTL)=\d+
#     timestamp:
#       absent     2024-12-15 06:16:14
#       present    2024-12-15 06:17:14
#
setstate HandyCarina present
setstate HandyCarina 2024-12-11 17:51:17 .associatedWith PsnceDaemon
setstate HandyCarina 2024-12-15 06:17:14 appearCnt 325
setstate HandyCarina 2024-12-15 06:17:14 lastAppear 2024-12-15 06:17:14
setstate HandyCarina 2024-12-15 06:16:14 lastDisappear 2024-12-15 06:16:14
setstate HandyCarina 2024-12-15 06:32:15 maybeCnt 1004
setstate HandyCarina 2024-12-11 17:51:17 model lan-ping
setstate HandyCarina 2024-12-15 06:33:14 presence present
setstate HandyCarina 2024-12-15 06:33:14 state present
setstate HandyCarina 2024-12-15 06:33:14 thresHldCnt 0


Und das Ergebnis vom ping auf dem Testsystem:

pi@FHEM2:~ $ ping -c 4 HandyCarina
PING HandyCarina.fritz.box (192.168.2.45) 56(84) bytes of data.
64 bytes from HandyCarina.fritz.box (192.168.2.45): icmp_seq=1 ttl=64 time=1866 ms
64 bytes from HandyCarina.fritz.box (192.168.2.45): icmp_seq=2 ttl=64 time=861 ms
64 bytes from HandyCarina.fritz.box (192.168.2.45): icmp_seq=3 ttl=64 time=24.8 ms
64 bytes from HandyCarina.fritz.box (192.168.2.45): icmp_seq=4 ttl=64 time=167 ms

--- HandyCarina.fritz.box ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 24.802/729.860/1865.931/728.241 ms, pipe 2
pi@FHEM2:~ $


Norbert

flummy1978

Hallo Norbert,

da bisher niemand geantwortet hat, mal meine Idee (kurz weil mobil):

Du bist sicher, dass im normalen Zustand der Ping einwandfrei funktioniert? Ich weiss, dass seit einigen Jahren die Akkuoptimierung dafür sorgt, dass man diese Verbindung nicht mehr 100% zuverlässig abfragen kann.
Aus dem Grund wäre mein Vorschlag auch primär das thresholdAbsence zu erhöhen und den Log nochmal genauer zu betrachten, ob es mit dem presence Modul wirklich 100% klappt.

Die Definition schau ich mir zu Hause mal an und vergleiche die mal mit meinen.
Das Presence2 läuft bei mir seit der Umstellung einwandfrei
VG
Andreas

Nobbynews

#266
Guten Morgen Andreas,

die Energieeinstellung hatte ich auch zuerst im Verdacht.
Ist aber alles deaktiviert.
Auch die Verwendung der Geräte-MAC für das WLAN (2,4 und 5 GHz) ist aktiviert.
Aufgefallen ist mir das Problem halt mit dem kürzlichen Update auf Android 15.
Zum Verifizieren habe ich bei beiden Instanzen das state gelogged. Daran kann man halt sofort sehen, dass PRESENCE funktioniert und PRESENCE2 die Problem hat.

Den tresholdAbsent zu erhöhen ist eigentlich nicht so optimal, da dadurch angepasst an den Daemon die Abwesenheitserkennung in die Länge gezogen wird.

Allerdings sind mir beim Schreiben des Beitrags die teilweise langen Antwortzeiten beim Ping aufgefallen (1,2 bzw. 1,8 Sekunden).
Innerhalb des Moduls sind die Parameter des ping hart codiert, und zwar
ping -c 1 -w 1Also 1 Ping mit einem Timeout von 1 Sekunde bis zum Abbruch ohne Antwort.

Zitat-w ENDE    ENDE wird in Sekunden angegeben. ping wird nach dieser Zeit beendet, egal wie viele Anfragen (un-) beantwortet wurden.
-W AUSZEIT    AUSZEIT wird in Sekunden angegeben und gibt an, wie lange ping auf eine Antwort wartet, bevor es automatisch stoppt

Eine Änderung auf
ping -c 1 -w 2 bzw.
ping -c 1 -w 3hat da schon wesentliche Verbesserungen gebracht.
Zum Test habe ich jetzt aktuell mal umgeändert auf:
ping -c 2 -w 3
Werde als nächstes auch mal -W anstatt -w probieren.

Da ich am Wochenende wg. eines anderen Problems mein Testsystem auf Bookworm neu aufgesetzt habe, fehlen mir jetzt erst einmal ein paar Log-Dateien.

Im Wochenbericht der Fritte kann man allerdings auch sehr gut sehen, dass das Handy ständig ab- und angemeldet wird. Allerdings habe ich noch keinen Hinweis im Netz gefunden, wie man dieses Verhalten abstellen kann.

Mit Tablets (Android 14) und Moto G 100 mit Android 12 gibt es diese Probleme nicht.


Norbert


Jojo11

#267
Hallo,

auch ich habe aus der Not heraus (PRESENCE bremst mein FHEM) zufällig dieses Modul gefunden (danke dafür!) und möchte gerne meine zahlreichen Instanzen von PRESENCE zu PRESENCE2 migrieren.
Mit der aktuellen Version aus dem repo habe ich die gleichen Probleme wie bmwfan hier beschreibt: Link
Ich habe jetzt ein ganz einfaches LAN-Ping eingerichtet und keine zusätzlichen Attribute gesetzt bzw geändert. Ist es ein bug oder ein feature, wenn der Status nicht automatisch aktualisiert wird? Wenn ich das anzupingende Gerät ausschalte, bleibt der Status auf "present". Löse ich allerdings manuell ein "statusRequest" aus, wird er richtig aktualisiert auf "absent". Allerdings sehe ich gerade, dass dann im log Folgendes auftaucht:

2024.12.20 14:14:58.596 1: stacktrace:
2024.12.20 14:14:58.596 1:     main::readingsBeginUpdate           called by ./FHEM/73_PRESENCE2.pm (1227)
2024.12.20 14:14:58.596 1:     main::PRESENCE2_daemonScanReply     called by (eval 23289) (1)
2024.12.20 14:14:58.596 1:     (eval)                              called by fhem.pl (1180)
2024.12.20 14:14:58.596 1:     main::AnalyzePerlCommand            called by fhem.pl (1209)
2024.12.20 14:14:58.596 1:     main::AnalyzeCommand                called by fhem.pl (1136)
2024.12.20 14:14:58.597 1:     main::AnalyzeCommandChain           called by ./FHEM/98_telnet.pm (263)
2024.12.20 14:14:58.597 1:     main::telnet_Read                   called by fhem.pl (3988)
2024.12.20 14:14:58.597 1:     main::CallFn                        called by fhem.pl (789)
2024.12.20 14:14:58.597 1: readingsUpdate(,state,active) missed to call readingsBeginUpdate first.
2024.12.20 14:14:58.597 1: stacktrace:
2024.12.20 14:14:58.597 1:     main::readingsBulkUpdate            called by ./FHEM/73_PRESENCE2.pm (1228)
2024.12.20 14:14:58.597 1:     main::PRESENCE2_daemonScanReply     called by (eval 23289) (1)
2024.12.20 14:14:58.598 1:     (eval)                              called by fhem.pl (1180)
2024.12.20 14:14:58.598 1:     main::AnalyzePerlCommand            called by fhem.pl (1209)
2024.12.20 14:14:58.598 1:     main::AnalyzeCommand                called by fhem.pl (1136)
2024.12.20 14:14:58.598 1:     main::AnalyzeCommandChain           called by ./FHEM/98_telnet.pm (263)
2024.12.20 14:14:58.598 1:     main::telnet_Read                   called by fhem.pl (3988)
2024.12.20 14:14:58.598 1:     main::CallFn                        called by fhem.pl (789)
2024.12.20 14:14:58.598 1: readingsUpdate(,pr_CAM01_presence,present) missed to call readingsBeginUpdate first.
2024.12.20 14:14:58.598 1: stacktrace:
2024.12.20 14:14:58.599 1:     main::readingsBulkUpdate            called by ./FHEM/73_PRESENCE2.pm (1231)
2024.12.20 14:14:58.599 1:     main::PRESENCE2_daemonScanReply     called by (eval 23289) (1)
2024.12.20 14:14:58.599 1:     (eval)                              called by fhem.pl (1180)
2024.12.20 14:14:58.599 1:     main::AnalyzePerlCommand            called by fhem.pl (1209)
2024.12.20 14:14:58.599 1:     main::AnalyzeCommand                called by fhem.pl (1136)
2024.12.20 14:14:58.599 1:     main::AnalyzeCommandChain           called by ./FHEM/98_telnet.pm (263)
2024.12.20 14:14:58.599 1:     main::telnet_Read                   called by fhem.pl (3988)
2024.12.20 14:14:58.599 1:     main::CallFn                        called by fhem.pl (789)

Neu gestartet habe ich schon mehrfach ohne Erfolg.

schöne Grüße
Jojo

JoWiemann

Hallo Jo-Jo,

ich schaue mir das die Tage mal an.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Jojo11

Vielen Dank Jörg. Ich denke ich habe es ans Laufen bekommen. Ich hatte erst versucht, ein existierendes PRESENCE-device abzuändern. Nachdem ich es gelöscht und über define... wieder als PRESENCE2 erstellt habe, scheint es jetzt zu laufen. Ich teste mal weiter.

schöne Grüße
Jojo