erweiterung von PRESENCE/(le)presenced/collectord um rssi werte

Begonnen von justme1968, 10 Juni 2016, 17:36:24

Vorheriges Thema - Nächstes Thema

noshi21

Hat noch jemand mit der neuesten collectord-Version folgenden Fehler im collectord.log ?

PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/sbin/collectord line 948, <GEN5> line 1.

Lässt sich meines Erachtens nach leicht beheben, will aber sicher gehen das es nicht nur mir so geht.

Danke und schöne Ostern!

Phiolin

Kommt die RSSI Erweiterung auch in den presenced?
Ich tracke meine Bewohner hier über unsere Apple Watches, was über den presenced gut funktioniert. Für ein genaueres Raum-Tracking überlappt sich aber das Signal zu oft, so dass im room Reading öfter mal 2 Räume gleichzeitig auftauchen.
Daher wäre es praktisch, wenn der presenced hier ebenfalls die RSSI Werte melden und über den Collectord dann entscheiden lassen würde, in welchem Raum die Anwesenheit wahrscheinlicher ist.

Jamo

Hallo Markus,
der collectord aus Antwort #72 funktioniert nicht richtig,
es wird nur ein rssi_ erzeugt

  Readings:
     2017-04-20 22:59:10   Battery         low
     2017-04-20 22:58:13   command_accepted yes
     2017-04-20 23:01:44   daemon          lepresenced V0.81
     2017-04-20 23:01:44   device_name     Gigaset G-tag
     2017-04-20 23:01:44   presence        present
     2017-04-20 23:01:44   rooms           wohnLE
     2017-04-20 23:01:44   rssi            -66
     2017-04-20 23:01:44   rssi_
     2017-04-20 23:01:44   state           present
   Helper:
     CURRENT_STATE present
     CURRENT_TIMEOUT normal
     PRESENT_COUNT 0
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Markus Bloch

Sollte mit angehangener Version behoben sein.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

Ich wollte mal nachfragen, ob jemand die Beseitung des Problems mit dem collectord aus dem letzten Beitrag bestätigen kann? Dann würde ich dieses einchecken und verteilen.

Danke

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

micky0867

Ich habe es mal probiert.
Meldung:
2017-05-29 19:36:12 - (Main Thread) - PERL WARN: Use of uninitialized value in concatenation (.) or string at ./collectord line 950, <GEN4> line 1.

Habe den Code zwar mal wieder nicht ganz verstanden (wozu das grep?), aber nach Änderung in
my $rssi_data = join(";", map("rssi_".$_."='".$rssi_results{$_}."'", (keys %rssi_results)));
hat $rssi_data den Wert
rssi_esp2='-82';rssi_esp1='-69';rssi_esp3='-81'
und die 3 Werte werden auch als Readings in FHEM angezeigt.

$_ sollte man in map nicht per regex verändern, da man nicht das veränderte $_ zurück bekommt, sondern den Returncode des regex, wie in
if ($_ =~ /x/) {

Gruß
Micky

micky0867

Was mir gerade noch aufgefallen ist:
Ich habe die Readings room, rooms, rssi, rssi_raum1, rssi_raum2, rssi_raum3

Wenn die Funktion aggregateRooms erfolgreich ist, wird der Raum mit dem besten RSSI in rooms geschrieben, room bleibt aber unverändert.
Ausserdem wird rssi immer auf den ersten Raum aus dem Array $rooms[0] gesetzt.

Ich habe das bei mir jetzt so geändert, dass room der Raum mit dem besten RSSI ist und rooms eine Liste aller Räume enthält.
rssi wird auf den Wert von "room" gesetzt.

Anbei ein Screenshot

Micky

Jamo

Hallo Micky,
würdest Du die Version mit dem 'room' mal dranhängen? Das finde ich schick mit der rooms übersicht für alle devices, und room für das mit dem besten RSSI.

Danke!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

micky0867


Jamo

Hallo Markus,
zu deiner Frage ob dein letzter collectord aus #78 'OK' ist - Nein, es erscheint nur ein "2017-05-30 22:49:10   rssi_ " und die einzelnen Daemons werden nicht mehr ge-updated, siehe listing unten.

Siehe auch die Analyse von Mickey in Antwort #80



Internals:
   ADDRESS    7C:2F:80:98:C2:2A
   CHANGED
   DEF        lan-bluetooth 7C:2F:80:98:C2:2A 127.0.0.1:5222 63 63
   DeviceName 127.0.0.1:5222
   FD         27
   MODE       lan-bluetooth
   NAME       Presence_GTag_RED_collect
   NOTIFYDEV  global
   NR         2944
   NTFY_ORDER 50-Presence_GTag_RED_collect
   PARTIAL
   STATE      present wohnLE
   TIMEOUT_NORMAL 63
   TIMEOUT_PRESENT 63
   TYPE       PRESENCE
   Readings:
     2017-05-30 22:48:21   Batterie        94
     2017-05-30 22:48:13   Battery         ok
     2017-05-30 22:48:11   command_accepted yes
     2017-05-30 22:49:10   daemon          lepresenced V0.81
     2017-05-30 22:49:10   device_name     Gigaset G-tag
     2017-05-30 22:49:10   presence        present
     2017-05-30 22:49:10   room            wohnLE
     2017-05-30 22:49:10   rssi            -71
     2017-05-30 22:49:10   rssi_
     2017-05-30 22:47:28   rssi_SchlafLE   -86
     2017-05-30 22:47:28   rssi_flurLE     -80
     2017-05-30 22:47:28   rssi_wohnLE     -70
     2017-05-30 22:47:28   rssi_zeroLE     -82
     2017-05-30 22:49:10   state           present
   Helper:
     CURRENT_STATE present
     CURRENT_TIMEOUT normal
     PRESENT_COUNT 0
Attributes:
   comment    lan-bluetooth 7C:2F:80:98:C2:2A 127.0.0.1:5222 120 120
   event-on-change-reading state,Battery,Batterie,presence
   group      PRESENCE
   room       Presence
   sortby     12
   stateFormat state room
   userReadings Batterie,Battery
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Jamo

Hallo Mickey,
danke nochmal fürs posten, dein collectord aus Antwort #83 funktioniert:

Internals:
   ADDRESS    7C:2F:80:98:C2:2A
   CHANGED
   DEF        lan-bluetooth 7C:2F:80:98:C2:2A 127.0.0.1:5222 63 63
   DeviceName 127.0.0.1:5222
   FD         27
   MODE       lan-bluetooth
   NAME       Presence_GTag_RED_collect
   NOTIFYDEV  global
   NR         2944
   NTFY_ORDER 50-Presence_GTag_RED_collect
   PARTIAL
   STATE      present wohnLE
   TIMEOUT_NORMAL 63
   TIMEOUT_PRESENT 63
   TYPE       PRESENCE
   Readings:
     2017-05-30 22:55:29   Batterie        94
     2017-05-30 22:55:21   Battery         ok
     2017-05-30 22:55:40   command_accepted yes
     2017-05-30 22:56:41   daemon          lepresenced V0.81
     2017-05-30 22:56:41   device_name     Gigaset G-tag
     2017-05-30 22:56:41   presence        present
     2017-05-30 22:56:41   room            wohnLE
     2017-05-30 22:56:41   rooms           SchlafLE,flurLE,wohnLE,zeroLE
     2017-05-30 22:56:41   rssi            -70
     2017-05-30 22:56:41   rssi_SchlafLE   -83
     2017-05-30 22:56:41   rssi_flurLE     -80
     2017-05-30 22:56:41   rssi_wohnLE     -70
     2017-05-30 22:56:41   rssi_zeroLE     -80
     2017-05-30 22:56:41   state           present
   Helper:
     CURRENT_STATE present
     CURRENT_TIMEOUT normal
     PRESENT_COUNT 0
Attributes:
   comment    lan-bluetooth 7C:2F:80:98:C2:2A 127.0.0.1:5222 120 120
   event-on-change-reading state,Battery,Batterie,presence
   group      PRESENCE
   room       Presence
   sortby     12
   stateFormat state room
   userReadings Batterie,Battery
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Markus Bloch

Vielen Dank euch beiden. Dann würde ich den collectord von Mickey heute abend einchecken und neue Pakete bauen.

Danke für die Unterstützung.

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Phiolin

Zitat von: Phiolin am 20 April 2017, 17:03:17
Kommt die RSSI Erweiterung auch in den presenced?
Ich tracke meine Bewohner hier über unsere Apple Watches, was über den presenced gut funktioniert. Für ein genaueres Raum-Tracking überlappt sich aber das Signal zu oft, so dass im room Reading öfter mal 2 Räume gleichzeitig auftauchen.
Daher wäre es praktisch, wenn der presenced hier ebenfalls die RSSI Werte melden und über den Collectord dann entscheiden lassen würde, in welchem Raum die Anwesenheit wahrscheinlicher ist.

Gibt es schon was neues, in Sachen RSSI für den "normalen" presenced?
Theoretisch sollte das ja gehen, über hcitool rssi... eventuell muss dazu vorher gepaired werden.

Phiolin

Übrigens, der collectord im SVN ist nicht identisch mit dem aus Mickeys Post #83. Stattdessen ist im SVN noch die Version mit dem Concatenation error in Zeile 948, was daran liegt, dass

map { s/\s+/_/g }

korrekt eigentlich

map { s/\s+/_/rg }

heißen müsste. Ohne die /r Option gibt der Befehl nämlich ansonsten nur die Anzahl der Änderungen zurück. /r sorgt dafür, dass die geänderten Werte zurückgegeben werden.
Hat mich einiges an Kopfzerbrechen gekostet.
Markus, vielleicht kannst du noch mal prüfen, warum im SVN noch die alte Version drin ist, vermute mal, dass ist so nicht gewollt?

Ich bastle gerade die RSSI Erkennung in den normalen presenced rein, was aktuell zumindest schon mal so halbwegs bei mir funktioniert. Kann sicher noch etwas Optimierung vertragen, deshalb teste ich mal noch ein paar Tage...

Markus Bloch

Hallo Phiolin,

Zitat von: Phiolin am 25 Juli 2017, 09:23:56
Markus, vielleicht kannst du noch mal prüfen, warum im SVN noch die alte Version drin ist, vermute mal, dass ist so nicht gewollt?

Ja, da hast Du Recht. Das habe ich ganz vergessen  ::) Ich habe nun eine modifizierte Version von Mickey eingecheckt. Bitte prüft diesen collectord nochmal, dann würde ich neue DEB-Pakete bauen.

Zitat von: Phiolin am 25 Juli 2017, 09:23:56
Ich bastle gerade die RSSI Erkennung in den normalen presenced rein, was aktuell zumindest schon mal so halbwegs bei mir funktioniert. Kann sicher noch etwas Optimierung vertragen, deshalb teste ich mal noch ein paar Tage...

Da bin ich mal gespannt. Ich habe das damals bewusst nicht gemacht, da es zu viel Akku ziehen könnte (getestet habe ich das nicht). Mir reichte die Aussage "anwesend/abwesend". Ich lasse mich überraschen, wie Du das ganze löst.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)