Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. [Neuer Adapter] ioBroker.places

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Neuer Adapter] ioBroker.places

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      BasGo last edited by

      @Kev0:

      Hi,

      kann ich auch irgendwie die Daten aus der ioBroker.vis app auslesen?

      Diese werden ja unter vis.0.<gerätename>.coords.XXX abgelegt.

      Wenn ich das als Gerät direkt einbinden kann wäre es ziemlich easy mit dem Adapter die Anwenheit zu regeln.

      Grüße

      Kevin</gerätename> `

      Hier mal ein schneller Wurf ohne Anspruch auch Schönheit … läuft aber bei mir einwandfrei 🙂

      `var placesInstance  = "places.0";
      var visInstance     = "vis.0";
      
      // add VIS app instances: the name will be taken as username (add mapping in places if necessary)
      var visUsers        = ["app", "paul", "uschi"];      
      
      for(var i = 0; i < visUsers.length; i++) {
          var triggers = [visInstance + "."+ visUsers[i] +".coords.latitude", visInstance + "."+ visUsers[i] +".coords.longitude"];
          on({id: triggers, change: "ne"}, function (obj) {
              var res = obj.id.split(".");
              var usr = res[2];
              var lat = getState(visInstance + "."+ usr +".coords.latitude").val;
              var lng = getState(visInstance + "."+ usr +".coords.longitude").val;
              if (lat && lng) {
                  sendTo(placesInstance, {
                      user: usr, 
                      latitude: lat, 
                      longitude: lng, 
                      timestamp: obj.newState.ts
                  });
              }
          });
      }`[/i]
      
      1 Reply Last reply Reply Quote 0
      • K
        Kev0 last edited by

        Danke dir, werde ich gleich testen!

        Ich gebe Rückmeldung.

        Grüße

        Kevin

        1 Reply Last reply Reply Quote 0
        • Bluefox
          Bluefox last edited by

          @BasGo:

          @Bluefox:

          Ich muss gestehen, dass ich den Adapter noch nicht angeschaut habe. Aber fragen darf ich doch 🙂 `

          Aber sicher, immer raus damit 😉

          @Bluefox:

          Ob es mit dem Adapter möglich ist mehrere Punkte zu monitiren? Z.B. GPS von mir und noch von jemandem?

          Ob es möglich nicht nur Hause, sondern auch z.B Schule oder Arbeit beobachten? `

          Ja und ja: Du kannst beliebig viele Benutzer und beliebig viele Orte monitoren, genau das war ja der Grund, weshalb ich den Adapter gebaut habe. Das Grundprinzip ist, dass du per Konfiguration beliebig viele Orte (z.B. Schule, Arbeit etc) mit einem jeweiligen Radius festlegen kannst. Wenn nun eine Message mit Username und Positionsdaten empfangen wird, dann schaut der Adapter, ob sich die Person in einem der konfigurierten Orte befindet und trägt das in das entsprechende Objekt ein. EIne Sondersituation ist "zuhause": hier nehme ich die Position, die im Admin festgelegt wurde und hier erfolgt auch eine Auswertung (analog zu GeoFency), welche Personen zuhause sind.

          @Bluefox:

          Kann Adapter auch aus einem Datenpunkt gefüttert werden "7.5567,49.7845356" oder "7.5567;49.7845356" ? `

          Sollte mit einer gewissen Anpassung auch möglich sein, allerdings würde dann die Info über den Benutzer fehlen (d.h. wer ist an dieser Position?) 😉 `
          Ich denke, dass es auch sehr gefragt wird, wenn "places" auch im voll automatischen Modus laufen wird (ohne sendTo).

          Die Idee:

          Man kann für jeden Anwender noch zwei IDs Longitide/latitude (oder eine ID nur Longitude aber die Werte werden komma getrennt) und dann befühlt Adapter die Variablen places.0.Bluefox.home=true, places.0.Bluefox.Arbeit=false und so weiter von selbst.
          48_2018-04-13_13_45_06-iobroker.admin.png

          1 Reply Last reply Reply Quote 0
          • B
            BasGo last edited by

            Zumindest für den Teil per OwnTracks und die Cloud läuft es ja nahezu vollautomatisch, da wird einmal konfiguriert und man ist durch.

            Die Liste, die du in deinem Screenshot hast, dient nur den Ersetzen von Namen: bei OwnTracks nutze ich z.B. die zweistellige Tracker-ID (“bg“) und ersetze es durch “Bastian“: damit landet meine Position in einem Channel places.0.Bastian mit allen Infos über Latitude, Longitude, Home = true/false, Entfernung und Fahrzeit nach Hause etc.

            Das sendTo wollte ich noch durch konfigurierbare Subscriptions (wie es für fie Cloud schon enthalten ist) für vis und auch MQTT erweitern. Dabei ist nur die allgemeine Frage: ist das eine Sache des Places-Adapters oder sollte ich die besagten Adapter erweitern, so dass sie ihre Infos an den Places-Adapter weiterleiten? (Grundsatzfrage)

            1 Reply Last reply Reply Quote 0
            • Bluefox
              Bluefox last edited by

              > Das sendTo wollte ich noch durch konfigurierbare Subscriptions (wie es für fie Cloud schon enthalten ist) für vis und auch MQTT erweitern. Dabei ist nur die allgemeine Frage: ist das eine Sache des Places-Adapters oder sollte ich die besagten Adapter erweitern, so dass sie ihre Infos an den Places-Adapter weiterleiten? (Grundsatzfrage)

              Ich würde das in Places Adapter implementieren.

              1 Reply Last reply Reply Quote 0
              • K
                Kev0 last edited by

                @BasGo:

                @Kev0:

                Hi,

                kann ich auch irgendwie die Daten aus der ioBroker.vis app auslesen?

                Diese werden ja unter vis.0.<gerätename>.coords.XXX abgelegt.

                Wenn ich das als Gerät direkt einbinden kann wäre es ziemlich easy mit dem Adapter die Anwenheit zu regeln.

                Grüße

                Kevin</gerätename> `

                Hier mal ein schneller Wurf ohne Anspruch auch Schönheit … läuft aber bei mir einwandfrei 🙂

                `var placesInstance  = "places.0";
                var visInstance     = "vis.0";
                
                // add VIS app instances: the name will be taken as username (add mapping in places if necessary)
                var visUsers        = ["app", "paul", "uschi"];      
                
                for(var i = 0; i < visUsers.length; i++) {
                    var triggers = [visInstance + "."+ visUsers[i] +".coords.latitude", visInstance + "."+ visUsers[i] +".coords.longitude"];
                    on({id: triggers, change: "ne"}, function (obj) {
                        var res = obj.id.split(".");
                        var usr = res[2];
                        var lat = getState(visInstance + "."+ usr +".coords.latitude").val;
                        var lng = getState(visInstance + "."+ usr +".coords.longitude").val;
                        if (lat && lng) {
                            sendTo(placesInstance, {
                                user: usr, 
                                latitude: lat, 
                                longitude: lng, 
                                timestamp: obj.newState.ts
                            });
                        }
                    });
                }`
                
                Das Skript geht soweit, leider funktioniert die Werteübergabe vom Handy absolut nicht.
                
                Weder ioBroker.vis app noch owntracks senden zuverlässig die Position. Beide nur bei geöffneter Anwendung oder im Falle von Owntracks extrem falsch.
                
                Kannst du mir ein Skript für egigeozone zusammenzaubern?
                
                Ich weiss nicht wie ich den Syntax auslesen kann.
                
                Grüße
                
                Kevin[/i]
                ``` ` 
                1 Reply Last reply Reply Quote 0
                • B
                  BasGo last edited by

                  @Kev0:

                  Kannst du mir ein Skript für egigeozone zusammenzaubern?

                  Ich weiss nicht wie ich den Syntax auslesen kann. `

                  Mal wieder auf die Schnelle:

                  var placesInstance          = "places.0";
                  var cloudServiceInstance    = "cloud.0.services.custom_egigeofence";
                  
                  on({id: cloudServiceInstance, change: 'any'}, function (obj) {
                      if (obj.newState.val.length > 0) {
                          var search = obj.newState.val.substring(1);
                          var tmp = JSON.parse('{"' + search.replace(/\//g, '","').replace(/=/g,'":"') + '"}', function(key, value) {
                              return key===""?value:decodeURIComponent(value);
                          });
                  
                          sendTo(placesInstance, {
                                  user: tmp.device, 
                                  latitude: tmp.latitude, 
                                  longitude: tmp.longitude, 
                                  timestamp: obj.newState.ts
                              }, function (res) { log('places analyzed telegram position as: ' + JSON.stringify(res)); });
                      }
                  });
                  
                  

                  Problem dabei ist, dass EgiGeoFence (scheinbar) nur eine ID schickt und keinen "richtigen" Benutzernamen. Das bedeutet, du müsstest im Places-Adapter ein Mapping von der ID auf den gewünschten Benutzer konfigurieren, dann sollte es gehen.

                  1 Reply Last reply Reply Quote 0
                  • K
                    Kev0 last edited by

                    dankesehr,

                    da ich mittlerweile feststellen musste das egigeozone auch nicht ordnungsgemäß sendet und auch auf eigentlich unterstützten Geräten nicht zu installieren ist, fällt das für mich auch flach.

                    Ich habe was sehr interessantes gefunden:

                    viewtopic.php?p=144076#p144076

                    dazu habe ich dein skript angepasst (sicherlich absolut nicht schön, da ich gar keinen Plan habe)

                    `var placesInstance  = "places.0";
                    var gslInstance     = "google-sharedlocations.0.user";
                    
                    // add google-sharedlocations.0 app instances: the name will be taken as username (add mapping in places if necessary)
                    var gslUsers        = ["XXXXXUserkennungXXXX"];      
                    
                    for(var i = 0; i < gslUsers.length; i++) {
                        var triggers = [gslInstance + "."+ gslUsers[i] +".lat", gslInstance + "."+ gslUsers[i] +".long"];
                        on({id: triggers, change: "ne"}, function (obj) {
                            var res = obj.id.split(".");
                            var usr = res[3];
                            var lat = getState(gslInstance + "."+ usr +".lat").val;
                            var lng = getState(gslInstance + "."+ usr +".long").val;
                            if (lat && lng) {
                                sendTo(placesInstance, {
                                    user: usr, 
                                    latitude: lat, 
                                    longitude: lng, 
                                    timestamp: obj.newState.ts
                                });
                            }
                        });
                    }`
                    
                    es wäre denke ich der einfachste Geo-Adapter überhaupt wenn .places die funktion von .google-sharedlocations implementieren könnte, bzw du mit dem entwickler vielleicht mal schnackst ;-)[/i]
                    
                    1 Reply Last reply Reply Quote 0
                    • B
                      BasGo last edited by

                      Ich habe mir den Adapter vorhin mal angeschaut und es sieht nicht so leicht aus, hier eine GPS-Position abgreifen zu können.

                      Auf den ersten Blick sieht es so aus, als wenn der Adapter selbst prüft, ob sich ein Benutzer innerhalb eines definierten Orts befindet (also das, was Places ja macht) und erst wenn hier was gefunden wird, wird die Position als Datenpunkt geschrieben. Schöner wäre es, wenn ermittelte Positionen in Form einfacher GPS-Koordinaten pro Benutzer gespeichert würden … dann könnte ich mich dort einhaken 😞

                      1 Reply Last reply Reply Quote 0
                      • K
                        Kev0 last edited by

                        komisch ich habe einen Datenpunkt mit Koordinaten erhalten

                        466_location.jpg

                        den greife ich ab.

                        1 Reply Last reply Reply Quote 0
                        • X
                          x4tlaoguo last edited by

                          Hey Leute,

                          Fehlermeldungen beim sharedlocations-Adapter treten auf wenn keine Fences angelegt sind (blöder Fehler, ist bei mir bereits gefixt und pushe das heute oder morgen aufs repo).

                          Ich finde den places-adapter auch klasse, ich versuche zeitnah eine Schnittstelle bereitzustellen, leider muss ich vorher noch einige DInge erledigen:

                          1. Bugfixes (sollte erledigt sein)

                          2. Unterstützung von Admin3 (das habe ich mir bisher noch gar nicht angeschaut und ich würde dann sofort alle meine Adapter umstellen)

                          Beste Grüße

                          Christian

                          1 Reply Last reply Reply Quote 0
                          • X
                            x4tlaoguo last edited by

                            Hallo Leute,

                            es gibt Neuigkeiten. Der iobroker.google-sharedlocations-Adapter kann die ermittelten Standorte an eine Instanz des iobroker.places-Adapters schicken. Kann das jemand testen? Der Adapter kann von hier https://github.com/t4qjXH8N/ioBroker.go … es_support bezogen werden.

                            1 Reply Last reply Reply Quote 0
                            • B
                              BasGo last edited by

                              Hi Christian,

                              sehr geil, danke für die Integration, werde es heute Abend direkt mal bei mir testen.

                              Eine Frage hätte ich zu meinem Verständnis: ich hatte letzte Woche mal erste Tests mit deinem Adapter gemacht und mir dabei die Response von Google per Debug ausgeben lassen … darin habe ich aber keine Usernamen gefunden. Woher bekommst du die bzw. was muss ich bei mir noch tun, damit ich auch einen "richtigen" Namen für Positionsangaben bekomme?

                              Viele Grüße

                              Bastian

                              1 Reply Last reply Reply Quote 0
                              • K
                                Kev0 last edited by

                                Hi,

                                @x4tlaoguo:

                                Die aktuelle Verison scheint bis dato durch zu rennen. Was jetzt noch cool wäre, ist eine Unterstützung für die 2-Faktor-Authentifizierung und irgend eine Möglichkeit die Sicherheitswahnungsmails von google beim login abzustellen.

                                Ansonsten top!

                                @BasGo

                                Gibts die Möglichkeit aktuelle Nutzer beim erstellen des Fences mit auf der Karte einzublenden?

                                Ist es machbar das die schon Angelegten Benutzer mit in der Liste erscheinen?

                                Läuft auch schon die ganze Zeit ohne Probleme durch!

                                Geil was ihr hier so reisst !

                                Grüße

                                Kevin

                                1 Reply Last reply Reply Quote 0
                                • B
                                  BasGo last edited by

                                  @Kev0:

                                  Die aktuelle Verison scheint bis dato durch zu rennen. Was jetzt noch cool wäre, ist eine Unterstützung für die 2-Faktor-Authentifizierung und irgend eine Möglichkeit die Sicherheitswahnungsmails von google beim login abzustellen. `

                                  Oh ja, das wäre nett, allerdings habe ich hier wenig Hoffnung: der Login, der im Adapter verwendet wird, ist normalerweise für Benutzer gedacht, d.h. es ist eigentlich richtig, dass Google hier warnt/informiert. Der schönste Weg wäre, wenn Google hier (endlich mal) eine API anbieten würde … aber damit würde ich nicht in den nächsten Wochen rechnen, leider 😞

                                  @Kev0:

                                  Gibts die Möglichkeit aktuelle Nutzer beim erstellen des Fences mit auf der Karte einzublenden? `

                                  Kann ich mir gerne mal anschauen. Also einfach als Marker in der Map, in der man die Fences ziehen kann? Das sollte eigentlich schnell machbar sein … vielleicht heute im Laufe des Abends, da kündigt sich bei mir ein wenig "Freizeit" an 🙂

                                  @Kev0:

                                  Ist es machbar das die schon Angelegten Benutzer mit in der Liste erscheinen? `

                                  Welche Liste meinst du? Die mit den Benutzermappings? Eigentlich sollte diese Liste nur Mappings - also wenn Benutzer mit Name XXX reinkommt, dann ändere ihn auf YYY - enthalten und keine Liste der Benutzer, die schon erfasst wurden, dafür gibt es ja die Objekte. Dennoch bin ich bei dir, dass es u.U. einfacher sein könnte, wenn man bereits bekannte Namen sieht und die ggf. direkt ersetzen könnte. Ich mache mir mal Gedanken. 😉

                                  1 Reply Last reply Reply Quote 0
                                  • O
                                    ottokar last edited by

                                    Hi,

                                    ich hab leider im places Adapter keine Möglichkeit gefunden eine eigene URL zyklisch abzufragen.

                                    Ich benutze aktuell meinen eigenen Server um diesem mitzuteilen ob ich zu Hause bin oder nicht.

                                    aktuell sendet das Handy(mit Tasker, Egigeozone) halt true oder false an den Server und im Server gibt es unter einer bestimmten url eben dies zurück

                                    bis vor kurzem hab ich das von der CCU2 gepollt im minutentakt und in eine sysvar geschrieben, das polling habe ich mittlerweile zum iobroker verlagert.

                                    Ich hab ungern Ports nach aussen offen daher löse ich das so und funktionier ganz passable,

                                    Mit Tasker wär es ja durchaus möglich das formal lat,long, (usr) an den server zu senden oder im server je nach url den user hinzuzufügen.

                                    Könnte man das im Adapter mit einer custom URL + Polling Intervall hinzufügen?

                                    Im Server Log sieht das aktuell dann so aus:

                                    06.05.2018 11:32 ; false

                                    06.05.2018 11:57 ; true

                                    06.05.2018 13:09 ; false

                                    06.05.2018 17:03 ; true

                                    in der abfrage URL werte ich lediglich da true oder false aus, da ich jede Minute abfrage ist das leidlich genau(je nachdem wann das Handy sendet).

                                    hier kommt es je nach Tool zu ca. 10 Minuten Abweichung bei der Abwesenheit. Trq64 hat auch super funktionier bis dann Android 8 kam, da sind dann die nächtlichen Aussetzer zu häufig geworden-> Stromsparmodi.

                                    Ich hab leider noch nichts gefunden was genauer die Abwesenheit tracked ohne zutun des Users, einen extra Raspy zum BT tracken mag ich nicht aufstellen, (->Thema G-tac Schlüsselanhänger).

                                    ein iBeacon werte ich schon zusätzlich aus um die Geschwindigkeit zu erhöhen, dieses wird aber ebenfalls vom Handy aus getracked.

                                    Oli

                                    1 Reply Last reply Reply Quote 0
                                    • B
                                      BasGo last edited by

                                      Das Polling einer externen URL würde ich persönlich eher mit einem kurzen Script implementieren und nicht direkt im Adapter, weil …

                                      Du hast für dich einen Weg mit der externen URL und die ließe sich bestimmt mit wenig Aufwand einbauen. Dann aber kommt der Nächste, der vielleicht zwei URLs abfragen will und/oder komplett andere Werte erhält und diese natürlich auch verarbeiten will. Auch das ließe sich dann natürlich einbauen.

                                      Jetzt kommt das "aber": die Komplexität würde immer mehr steigen und streng genommen war genau diese Komplexität der Grund, einen "einfachen" Adapter zu bauen, der sich lediglich mit der Analyse von GPS-Positionen auseinandersetzt und keine Abhängigkeit von irgendwelchen anderen Dingen hat und auch keine Server-Funktionalitäten bereitstellt ... keep it simple 😉 Für mich liegt die gedankliche Grenze immer in dem, was innerhalb des ioBroker-Kosmos "bekannt" ist, d.h. in Strukturen eines anderen Adapters oder auch in Datenpunkten.

                                      Nun zu deiner Problematik:

                                      Wenn du von deinem Server per Request Daten (Name, Zeit, Position) bekommen kannst (z.B. ein Aufruf einer URL liefert ein JSON zurück), so ist die Weiterleitung in den places-Adapter mit einem kurzen Script (5 bis 6 Zeilen) gemacht. Vorteile: du hast jederzeit die Kontrolle, der Adapter bleibt weiterhin schlank und fokussiert und jeder andere kann eine für seine Situation passende Lösung bauen 🙂

                                      1 Reply Last reply Reply Quote 0
                                      • O
                                        ottokar last edited by

                                        Hi,

                                        ja klar da hast du recht, ich hab einfach wieder zu kompliziert gedacht , im prinzip mach ich das ja jetzt genau so nur das ich halt nur true oder false abfrage und die Auswertung das Handy erledigt.

                                        Ich hab mein Script jetzt mal auf Owntracks umgebaut und integriert, passt so weit und läuft.

                                        Eine Frage hab ich noch, wahrscheinlich ist das so einfach das ich einfach wieder zu kompliziert denk 😉

                                        gibt der Adapter auch ein einfaches true /false zurück oder muss ich den place String auswerten ?

                                        Oli

                                        1 Reply Last reply Reply Quote 0
                                        • B
                                          BasGo last edited by

                                          Als Antwort auf ein sendTo bekommst du ein JSON zurück, das du mit

                                          var obj = JSON.parse(...)
                                          

                                          in ein Objekt bekommst. Darin gibt es eine Eigenschaft "atHome":

                                          {
                                              "user":         "Name of person",       // name of person (may have been replaced by user mapping)
                                              "latitude":     50.9576191,
                                              "longitude":    6.8272409,
                                              "timestamp":    1520932471000,
                                              "date":         "2018-03-13 10:14:31",  // date extracted from timestamp
                                              "atHome":       false,                  // true if inside the configured radius around ioBroker
                                              "homeDistance": 104898,                 // distance in meters between position and ioBroker
                                              "name":         "",                     // name of place found within the configuration
                                              "address":      "",                     // readable address (if geocoding is active)
                                              "elevation":    "",                     // elevation in meters (if geocoding is active)
                                          }
                                          
                                          

                                          Das sollte das sein was du benötigst, oder?

                                          1 Reply Last reply Reply Quote 0
                                          • O
                                            ottokar last edited by

                                            Hi,

                                            nicht wirklich,

                                            ich dachte er schreibt das gleich mit in einen Datenpunkt,

                                            aber ist nicht weiter schlimm den kann ich mir ja selbst anlegen und jeweils befüllen..

                                            nach einem iobroker restart hat er auch die 4 Default Werte befüllt das reicht mir im Prinzip ja auch schon für "alle Lampen" aus oder "achtung fenster noch offen" wenn keiner mehr da ist

                                            (places.0.anybodyAtHome usw… )

                                            Passt so weit , Danke für die Hilfe, jetzt muss ich nur noch das passendste Programm auf den Androiden herausfinden welches am

                                            Schnellsten den Punkt setzt.

                                            Und im Script noch einbauen das er auch nur schreibt wenn sich die Koordinaten auch geändert hab, Kosmetik also 😉

                                            PS: ich bau das mit Blockly, so weit ich informiert bin gibts da kein Jason parse Funktion

                                            Oli

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            789
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            28
                                            99
                                            20765
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo