Modul: 98_livetrackingconn.pm - zur Anbindung von livetracking an RESIDENTS

Begonnen von klausw, 22 November 2018, 12:30:16

Vorheriges Thema - Nächstes Thema

binford6000

Zitat von: klausw am 24 November 2018, 00:41:15
nachdem mein umfangreicher Post eben im Nirvana verschwunden ist hier eine Kurzform  >:(

das ist ein Bug, liegt vermutlich dran, das distance fälschlicherweise ausgewertet wurde.
Korrektur (noch ungetestet) ist angehängt.

wayhomeradius wird nur ausgewertet wenn auch homeradius existiert.
Mischbetrieb mit zone_x ist nicht vorgesehen.
Dafür gibt es rr_locationWayhome um eine Zone als Wayhomezone zu nutzen.
homeradius/wayhomeradius werden bevorzugt aus dem livetracking verwendet, wenn dort nicht vorhanden dann aus livetrackingconn.
So kann man es in livetrackingconn quasi global für mehrere livetracking Geräte definieren.
Soll Zone verwendet werden darf es natürlich weder im livetrackingconn noch im entsprechenden livetracking verwendet werden

Moin Klaus,
ok hab ich verstanden. Spiele die angehängte Version ein und teste. Lösche noch die distance Atribute
da ich ja eh nur mit Zonen arbeiten möchte.

VG Sebastian

binford6000

Hallo Klaus,
ein erster Test zeigt dieses Verhalten:

Beim manuellen Abfragen in der iOS App erschein das im Log


2018.11.24 11:32:58 5: livetrackingconn: Notify from iphone5SE
2018.11.24 11:32:58 4: livetrackingconn: Notify received latitude: 50.123456789
2018.11.24 11:32:58 4: livetrackingconn: Notify received longitude: 8.123456789
2018.11.24 11:32:58 4: livetrackingconn: Notify received location: 50.123456789,8.123456789
2018.11.24 11:32:58 4: livetrackingconn: Notify received altitude: 160
2018.11.24 11:32:58 4: livetrackingconn: Notify received id: SE
2018.11.24 11:32:58 4: livetrackingconn: Notify received accuracy: 10
2018.11.24 11:32:58 4: livetrackingconn: Notify received velocity: 0
2018.11.24 11:32:58 4: livetrackingconn: Notify received batteryPercent: 82
2018.11.24 11:32:58 4: livetrackingconn: Notify received batteryState: ok
2018.11.24 11:32:58 4: livetrackingconn: Notify received connection: wifi
2018.11.24 11:32:58 4: livetrackingconn: Notify received trigger: manual
2018.11.24 11:32:58 4: livetrackingconn: Notify received zone_0: active
2018.11.24 11:32:58 3: livetrackingconn livetracking_conn: Checking r*_geofenceUUIDs for rr_Sebastian
2018.11.24 11:32:58 3: livetrackingconn livetracking_conn: Found matching UUID at ROOMMATE device rr_Sebastian
2018.11.24 11:32:58 4: livetrackingconn livetracking_conn: location = home active , Trigger = 1
2018.11.24 11:32:59 4: livetrackingconn: Notify received zone_2: inactive
2018.11.24 11:32:59 3: livetrackingconn livetracking_conn: Checking r*_geofenceUUIDs for rr_Sebastian
2018.11.24 11:32:59 3: livetrackingconn livetracking_conn: Found matching UUID at ROOMMATE device rr_Sebastian
2018.11.24 11:32:59 4: livetrackingconn livetracking_conn: location = billard inactive , Trigger = 0
2018.11.24 11:32:59 3: cmdalias message2queryEditInline called recursively, skipping execution
2018.11.24 11:32:59 4: livetrackingconn: Notify received zone_1: inactive
2018.11.24 11:32:59 3: livetrackingconn livetracking_conn: Checking r*_geofenceUUIDs for rr_Sebastian
2018.11.24 11:32:59 3: livetrackingconn livetracking_conn: Found matching UUID at ROOMMATE device rr_Sebastian
2018.11.24 11:32:59 4: livetrackingconn livetracking_conn: location = buero-mz inactive , Trigger = 0
2018.11.24 11:32:59 4: livetrackingconn: Notify received distance: 0
2018.11.24 11:32:59 3: livetrackingconn livetracking_conn: Checking r*_geofenceUUIDs for rr_Sebastian
2018.11.24 11:32:59 3: livetrackingconn livetracking_conn: Found matching UUID at ROOMMATE device rr_Sebastian
2018.11.24 11:32:59 4: livetrackingconn: Notify received address: ...
2018.11.24 11:32:59 4: livetrackingconn: Notify received address: ...
2018.11.24 11:32:59 4: livetrackingconn: Notify received address: ...


und das steht im Eventmonitor (nur location):


2018-11-24 11:32:59 ROOMMATE rr_Sebastian location: zuhause
...
2018-11-24 11:32:59 ROOMMATE rr_Sebastian location: billard
...
2018-11-24 11:32:59 ROOMMATE rr_Sebastian location: buero-...
...


Die location wird für jede Zone erneut gesetzt - unabhängig ob aktiv oder nicht.
homaradius und wayhomeradius sind nicht gesetzt.

VG Sebastian

binford6000

In der commandref ist noch ein Sonderzeichen bei "können".
Andere Umlaute in der Hlife sind ok.

...Die Attribute homeradius und wayhomeradius k�nnen auch in den livetracking...

VG Sebastian

klausw

OK, da muss ich nochmal schauen.
Eventuell habe ich den Mechanismus falsch verstanden.
Ich schicke auch jede Location raus. Bei active ist der Trigger allerdings 1 und bei inaktive 0. Dies sollte wenn ich zu Hause ankomme (active) mich auf Home setzen und wenn ich gehe (inactive) underway.
Dazu sollten sich vermutlich die Zonen nicht überlappen. Das scheint bei dir der Fall zu sein. Da zone_0 und zone_1 direkt aufeinander im log folgen.
In diesem Fall müsste ich anders auswerten.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

binford6000

Hallo Klaus,
nein die Zonen überlappen sich nicht.
Sie sind mehrere Kilometer voneinander entfernt.

Sie sind in der Reihenfolge in OwnTracks angelegt.

VG Sebastian


Gesendet von iPhone mit Tapatalk

binford6000

Hallo Klaus,
ich habe jetzt mal durch den Code geschaut und folgende Änderung gemacht:

if ($trigger == 1) {
      Log3 $hash->{NAME}, 4, "livetrackingconn $hash->{NAME}: " . "location = $locName $rvalue , Trigger = $trigger";
livetrackingconn_setresidents($deviceAlias, $locName, $trigger, $devName);
}


Damit wird die location nur noch einmal an den ROOMMATE weitergegeben.

VG Sebastian

klausw

Gibt es dann aber nicht nur eine Aktualisierung wenn du eine Zone betrittst?
Ich hätte es halt gern wenn die Koordinaten und Adresse immer aktualisiert werden sobald eine Position empfangen wird.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

binford6000

ZitatGibt es dann aber nicht nur eine Aktualisierung wenn du eine Zone betrittst?

Ja, und die trigger "region" und "automatic" werden nicht behandelt. Hätte jetzt in der Mittagspause
ja auf underway springen müssen, da keine Zone mehr aktiv und distance > 0 $trigger = 0.
Hab daher noch das dazugebaut:

if ($trigger == 1) {
        Log3 $hash->{NAME}, 4, "livetrackingconn $hash->{NAME}: " . "location = $locName $rvalue , Trigger = $trigger";
livetrackingconn_setresidents($deviceAlias, $locName, $trigger, $devName);
        }
        else {
        $locName = "underway";
}


ZitatIch hätte es halt gern wenn die Koordinaten und Adresse immer aktualisiert werden sobald eine Position empfangen wird.

Das macht ja auch Sinn, aber dann nur für die gerade aktive Zone und nicht für alle.

VG Sebastian

binford6000

Zitatelse {
           $locName = "underway";
   }

funktioniert leider auch nicht. Bekomme jetzt immerhin die location nur einmalig.
Werde aber nicht weiter experimentieren. Produktiv läuft immer noch ein doif welches
auf die owntracks enter und leave Events lauscht.

EDIT:
So gehts aber:
else {
   $locName = "underway";
   livetrackingconn_setresidents($deviceAlias, $locName, $trigger, $devName);
}


VG Sebastian

klausw

Kein Ding, ich schaue mir das bei Gelegenheit nochmal an.

soll Verhalten:

betreten einer Zone:
location -> Zonenname
locationPresence -> present
presence -> present (wenn Zone = rr_locationHome) underway (wenn Zone = rr_locationUnderway) sonst absent

verlassen einer Zone:
location -> Zonenname
locationPresence -> absent
presence -> absent


locationAddr, locationLat, locationLong sollten bei jedem Update aktualisiert werden

sehe ich das richtig?




RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

binford6000

Zitat von: klausw am 27 November 2018, 12:27:35
Kein Ding, ich schaue mir das bei Gelegenheit nochmal an.

soll Verhalten:

betreten einer Zone:
location -> Zonenname
locationPresence -> present
presence -> present (wenn Zone = rr_locationHome) underway (wenn Zone = rr_locationUnderway) sonst absent

verlassen einer Zone:
location -> Zonenname
locationPresence -> absent
presence -> absent


locationAddr, locationLat, locationLong sollten bei jedem Update aktualisiert werden

sehe ich das richtig?

Hallo Klaus,
im Prinzip ja, beim Verlassen aber m.M.n. so:

verlassen einer Zone:
location -> underway
locationPresence -> absent
presence -> absent

betreten einer Zone:
location -> Zonenname
locationPresence -> present
presence -> present (wenn Zone = rr_locationHome) sonst absent

Unter underway verstehe ich dass KEINE Zone aktiv ist. Hab dazu mal ein Bild angehängt.
VG Sebastian

klausw

Zitat von: binford6000 am 27 November 2018, 13:17:58
verlassen einer Zone:
location -> underway
locationPresence -> absent
presence -> absent

betreten einer Zone:
location -> Zonenname
locationPresence -> present
presence -> present (wenn Zone = rr_locationHome) sonst absent

Unter underway verstehe ich dass KEINE Zone aktiv ist. Hab dazu mal ein Bild angehängt.

Ja presence macht so Sinn
Sollte auch so umgesetzt sein.
underway ist absent und für Wayhome gibt es ein separates Reading.

location -> underway beim verlassen einer Zone ist auch sinnvoll wenn ich darüber nachdenke.

Ich baue mir mit NodeRed mal eine Testumgebung um alles schnell zu überprüfen.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

binford6000

Und wenn ohne Zonen - also nur auf distance - getrackt wird, hast du das ganze ja glaube ich schon soweit im Code:

distance > wayhomeradius:
location: underway
locationPresence: absent
presence: absent

distance <= wayhomeradius && > homeradius
location: wayhome bzw. was imn Attribut rr_locationWayhome steht
locationPresence: absent
presence: absent

distance <= homeradius:
location: home
locationPresence: present
presence: present

VG Sebastian

DerKoerper

Heyho,

ich nutz das Modul auch seit ein paar Tagen - läuft bisher ganz ordentlich. Aktuell nutze ich nur die Entfernung, das mit den Zonen was ihr hier schon diskutiert habt klingt allerdings auch sehr interessant. Danke schonmal für die Mühe!

Hätte noch einen Wunsch zu äußern: Könnte man noch ein distanceGone Attribut einführen? Sprich ab sagen wir 300km Abstand zu Home wird der Resident auf gone bzw. verreist gesetzt?

Grüße & einen schönen 2. Weihnachtsfeiertag
Richard
FHEM aufm Cubietruck (armbian inkl. Samba, DHCP, DNS & VPN) für eine Wohnung.
1x CUL für WMBUS, 1x nanoCUL für MAX

Kaum Ahnung... aber hartnäckig!

klausw

Zitat von: DerKoerper am 25 Dezember 2018, 17:36:19
ich nutz das Modul auch seit ein paar Tagen - läuft bisher ganz ordentlich. Aktuell nutze ich nur die Entfernung, das mit den Zonen was ihr hier schon diskutiert habt klingt allerdings auch sehr interessant. Danke schonmal für die Mühe!

Hätte noch einen Wunsch zu äußern: Könnte man noch ein distanceGone Attribut einführen? Sprich ab sagen wir 300km Abstand zu Home wird der Resident auf gone bzw. verreist gesetzt?

So langsam habe ich wieder bisschen Zeit...

Darüber habe ich auch schon nachgedacht.
Die Schnittstelle, die ich für das Modul nutze scheint das aber nicht herzugeben.
Ich hake da mal nach.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280