Modul: 98_livetracking - Geokoordinaten von OwnTracks / Life360 / Swarm (4Sq)

Begonnen von Markus M., 22 Mai 2015, 02:01:46

Vorheriges Thema - Nächstes Thema

Lowbird

Hallo Markus.

Ich dachte ich hätte dieses bereits getan. Das zweites List zeigt das Device:

Internals:
   CHANGED
   IODev      mqtt
   NAME       owntracks
   NR         135
   STATE      incoming publish received
   TYPE       MQTT_DEVICE
   qos        1
   retain     0
   Readings:
     2016-08-03 14:42:24   transmission-state incoming publish received
   Message_ids:
   Publishsets:
     :
       topic      owntracks/test/iphone
       values:
   Sets:
   subscribe:
     owntracks/test/iphone
   subscribeExpr:
     ^owntracks\/test\/iphone$
   Subscribereadings:
     owntracks/test/iphone .*
Attributes:
   IODev      mqtt
   autoSubscribeReadings owntracks/test/iphone
   event-on-change-reading iphone,iphoneevent
   publishSet owntracks/test/iphone
   qos        at-least-once
   room       Tracking
   stateFormat transmission-state
   subscribeReading_.* owntracks/test/iphone


leider hat es nicht alle deiner beschriebenen Subscriptions.

Habe eigentlich bis jetzt alles immer hinbekommen, aber an dieser Sache beiße ich mir die Zähne aus.

Evtl erbarmt sich jemand und schreibt ein kleines How-to für Dummy´s.  :-[

LG Chris
FHEM 5.7
FritzBox 7490
Vu+ Duo2
IP-Cam Instar 6012HD
IP-Cam Instar 5907HD

Markus M.

Da müsstest du mal beim MQTT Modul anfragen.
Oder du versuchst die Attribute direkt anzulegen


Sent from my iPhone using Tapatalk
Aktuell weder Smarthome noch FHEM vorhanden

Lowbird

Ich probiere mal sie direkt anzulegen, allerdings habe ich da nicht viel Hoffnung.

Ich werde berichten. Danke für die schnelle Antwort.
FHEM 5.7
FritzBox 7490
Vu+ Duo2
IP-Cam Instar 6012HD
IP-Cam Instar 5907HD

kleinerDrache

Cooles Modul.

kommt da eigentlich noch was bezüglich ROOMEMATE und Co. ?
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

Loredo


Falls Markus da mal wieder drüber nachdenkt:

Es gibt in 20_ROOMMATE.pm und 20_GUEST.pm dafür zwei Funktionen ROOMMATE_SetLocation() und GUEST_SetLocation(), die aus dem 98_livetracking.pm Modul angesprochen werden müssen. Die Erkennung des richtigen ROOMMATE/GUEST Devices über das Attribut r*_geofenceUUIDs muss entsprechend zuvor in 98_livetracking.pm implementiert werden. Beispielcode dafür findet sich in 98_GEOFANCY.pm Zeilen 401-464 und 591-610.




Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

kleinerDrache

Na dann warten wir mal ab ob da noch was kommt. Bin leider selber nicht so bewandert in Programmieren.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

Markus M.

Ich benutze die Module nicht, aktuell auch keine Beacons mehr. Ist das dafür?
Wenn jemand einen Patch bastelt baue ich es gerne ein.


Sent from my iPhone using Tapatalk
Aktuell weder Smarthome noch FHEM vorhanden

kleinerDrache

ich möchte halt gerne den Zonenname aus Owntracks für ROMEMATE nutzen zur Erkennung ob jemand im Bereich einer Zone ist diese betritt oder verlässt um bestimmte Aktionen zu starten. Hab das schon mit den SetLocation Funktionen probiert aber das funkt soweit ich das verstehe nur für EINE Zone.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

hillbicks

Zitat von: kleinerDrache am 21 September 2016, 16:01:28
ich möchte halt gerne den Zonenname aus Owntracks für ROMEMATE nutzen zur Erkennung ob jemand im Bereich einer Zone ist diese betritt oder verlässt um bestimmte Aktionen zu starten. Hab das schon mit den SetLocation Funktionen probiert aber das funkt soweit ich das verstehe nur für EINE Zone.

Genau diese Frage stelle ich mir auch. Die Informationen liegen eigentlich vor, der Name der Zone im livetracking Modul unter place, es fehlt aber das event (enter/leaving). Das event wiederum wird in owntracks gespeichert. Ich werde mir wohl uebergangsweise damit behelfen diese Werte  in einen seperaten dummy zu schreiben, das sollte ja relativ problemlos moeglich sein.

So, mit Hilfe von zwei Userreadings habe ich nun den Ort und das Event als Readings im livetracking drin. Damit kann man dann per DOIF entsprechende Aktionen ausfuehren lassen.

Irgendwas stimmt hier noch nicht.....
So, damit funktioniert es jetzt.
attr owntracks userReadings 6POrt { (split '"',ReadingsVal("owntracks","nexus6pevent",0))[13]}, 6PKommenGehen { (split '"',ReadingsVal("owntracks","nexus6pevent",0))[17]}

Mit den readings kann ich dann jetzt per DOIF Aktionen ausfuehren lassen.

stromer-12

Moin,

Ich habe gerade festgestellt, das in der Funktion
sub livetracking_distance($$$)

folgende Zeile 1010 nicht stimmt:
my $round = AttrVal($hash->{NAME}, "roundlivetracking_distance", 0.1);
richtig:
my $round = AttrVal($hash->{NAME}, "roundDistance", 0.1);
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

andreas_n

Wenn ich das Ganze richtig verstanden habe, dann wird folgender Aufbau bei Owntracks benötigt.

1.0: Ein MQTT Brocker, der idealerweise im eigenen Heim läuft. (Bei mit auf einer Synology mit User und Password abgesichert)
1.1: Hier senden dann die Handys ihre Positonen mithilfe der App Owntracks
2.0: Auf FHEM wird benötigt:
2.1: MQTT um die Verbindung zum MQTT Brocker herzustellen.
2.2: MQTT_Device um den jeweiligen Nutzer zu ermitteln.
2.3: Das Moudl 90_Lifetracking um die Nutzerdaten weiter zu verarbeiten (z.B. Entfernung von zu Hause)

Fragen:
* Stimmt das?
* Wie und wo werden die Login Daten eingegeben?

Schon mal im Vorraus danke für die Auskunft!!

Markus M.

Zitat von: andreas_n am 15 Januar 2017, 15:44:43
* Stimmt das?
* Wie und wo werden die Login Daten eingegeben?

Stimmt genau.
In deiner Mosquitto Config und in der Owntracks App.


Zitat von: stromer-12 am 29 Dezember 2016, 11:57:26
Ich habe gerade festgestellt, das in der Funktion...folgende Zeile 1010 nicht stimmt

Danke, hab die Version im ersten Thread aktualisiert.
Aktuell weder Smarthome noch FHEM vorhanden

andreas_n

OK und danke hierfür. Habe gerade gesehen, das im MQTT_DEVICE eine neue Version im Januar rausgekommen ist. Hier können die Logindaten eingeben werden.

MQTT ist nun OK und erfolgreich mit dem Brocker verbunden.

Bei MQTT_DEVICE benötige ich aber eine laufffähige FHEM-Beispiel-Konfiguration. Glaube sonst komme ich nicht weiter. Es ist doch richtig, dass ich bei Erfolg einige Readings sehen müsste oder?

... und danach kommt das livetracking modul dran.

Gruß Andreas

Markus M.

Die owntracks (MQTT_DEVICE) Attribute für das Telefon mit einem User fhem und einer DeviceID iphone würden so aussehen:

IODev   mqtt
publishSet_cmd   owntracks/fhem/iphone/cmd
publishSet_msg   owntracks/fhem/iphone/msg
qos   at-least-once
subscribeReading_beacon   owntracks/fhem/iphone/beacon
subscribeReading_cmd   owntracks/fhem/iphone/cmd
subscribeReading_dump   owntracks/fhem/iphone/dump
subscribeReading_event   owntracks/fhem/iphone/event
subscribeReading_iphone   owntracks/fhem/iphone
subscribeReading_msg   owntracks/fhem/iphone/msg
subscribeReading_step   owntracks/fhem/iphone/step
subscribeReading_waypoints   owntracks/fhem/iphone/waypoints

Aktuell weder Smarthome noch FHEM vorhanden

andreas_n

Danke hierfür,

jetzt bekomme ich ein Reading....

handyan
{"_type":"location","tid":"an","acc":42,"batt":67,"conn":"w","doze":false,"lat":53.2427187,"lon":7.3555849,"tst":1484589389} 2017-01-16 18:56:29
transmission-state incoming publish received 2017-01-16 18:56:29


Dann werde ich mich jetzt mal ans livetracking ranmachen. ... und es geht. Ich bekomme 3 Readings
accuracy,battery und location mit (lon,lat)

Nun wäre es ja toll wenn es gelinge die Entfernung von Zuhause zu ermitteln. Hier wäre evt. folgender kurzer Code hilfreich. Würdest Du den wohl einbauen können?
Die ersten beiden Parameter von distance wäre die Zuhauseposition, die beiden anderen die aktuelle Position und unit =K/r M für KM/Meilen.
Denke damit könnte man im nächsten Schritt z.B. WayHome oder Zuhause leicht ermitteln.



sub distance {
        my ($lat1, $lon1, $lat2, $lon2, $unit) = @_;
        my $theta = $lon1 - $lon2;
        my $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  $dist  = acos($dist);
  $dist = rad2deg($dist);
  $dist = $dist * 60 * 1.1515;
  if ($unit eq "K") {
        $dist = $dist * 1.609344;
  } elsif ($unit eq "N") {
        $dist = $dist * 0.8684;
                }
        return ($dist);
}

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#:::  This function get the arccos function using arctan function   :::
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
sub acos {
        my ($rad) = @_;
        my $ret = atan2(sqrt(1 - $rad**2), $rad);
        return $ret;
}

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#:::  This function converts decimal degrees to radians             :::
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
sub deg2rad {
        my ($deg) = @_;
        return ($deg * $pi / 180);
}

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#:::  This function converts radians to decimal degrees             :::
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
sub rad2deg {
        my ($rad) = @_;
        return ($rad * 180 / $pi);
}