NEWS
[Neuer Adapter] ioBroker.places
-
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
-
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
-
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?
-
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
-
ich dachte er schreibt das gleich mit in einen Datenpunkt, `
Das passiert natürlich auch, aber die Response enthält auch das Ergebnis, ob sich die per sendTo übergebene Position atHome befindet.
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 `
Wenn du ein gutes Programm hast: immer her mot der Info. Ich muss zugeben, dass ich bei Android etwas enttäuscht bin. Damals bei Apple gab es noch zumindest per iCloud die Chance, halbwegs aktuell ein Phone tracken zu können. Bei Android vermisse ich bis jett eine stabile Lösung, die mir zuverlässig spätestens alle x Minuten oder y Meter Abstand eine Position meldet. OwnTracks klappt, zickt aber manchmal rum, EgiGeoFence das gleiche und Tasker habe ich noch nicht wirklich durchblickt
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 `
Sorry, bei Blockly bin ich leider raus, schreibe selbst nur JavaScript. Aber Blockly kann kein JSON parsen? Irgendeinen (anderen) Weg wird es aber wohl geben … hoffe ich.
-
Hallo,
eigentlich finde ich ja die Abwesenheitserkennung mit Hilfe der Google-Koordinaten, also mit google-sharedlocations, ideal, da man dann auf Apps wie egigeozone, geofence, owntrack etc ganz verzichten könnte. Aber leider habe ich bisher noch nicht den richtigen Zugang dazu gefunden und habe keine Ahnung, wie ich den Adapter einrichten soll. Vielleicht kann mir ja hier jemand helfen.
Google-sharedlocations ist installiert, Benutzername und Passwort sind eingegeben, das Objekt 'google-sharedlocations.0.info.connection' hat den Wert true. Und nun?
Muss ich in Google-Maps noch irgendwas einstellen? In der Beschreibung des Adapters heißt es
> It can not retrieve the location of the user that is used to access google.
Bedeutet das, dass ich meine eigenen Koordinaten gar nicht sehen kann und erst noch einen Nutzer einrichten muss, der mir seine Koordination frei gibt? Sorry, aber ich stehe ziemlich auf dem Schlauch. Vielleicht kann mir jemand auf die Sprünge helfen.
Gruß
Strizz
-
Hallo
Google-sharedlocations ist installiert, Benutzername und Passwort habe ich erstmal so gelassen .
Das Objekt 'google-sharedlocations.0.info.connection' hat den Wert true .
Wie komm ich nun weiter?
Gruß NetFritz
-
Hallo
Mal in der Adaoter index.htm geschaut und dort gesehen das von
google_username": "google_password": eingetragen werden muss.
Habe ich nachgeholt aber keine änderung.
In der Places Konfig ist der API-Schlüssel für Google Maps auch eingetragen.
Und nun, weis keiner einen Rat?
Gruß NetFritz
-
Könntest du die Instanz mal so konfigurieren, dass Debug-Meldungen ins Log geschrieben werden und uns darüber weitere Informationen zukommen lassen?
Der Google-Maps-Key ist prinzipiell unwichtig: er wird nur zur Darstellung der Google-Maps-Karte in der Konfiguration des places-Adapters verwendet. Viel wichtiger sind in deinem Fall aber die Zugangsdaten im google-sharedlocations-Adapter, deshalb: bitte diese Instanz im ioBroker unter Instanzen derart ändern, dass das Log-Level auf "Debug" steht, dann kurz später ins Log gucken und schauen, ob da Fehler kommen :?:
-
Hallo
Debug hatte ich schon heute Mittag eingeschaltet.
google-sharedlocations.0 2018-06-04 17:41:50.051 debug system.adapter.admin.0: logging true google-sharedlocations.0 2018-06-04 17:40:24.586 info Checking fences. google-sharedlocations.0 2018-06-04 17:40:24.585 debug Response: OK google-sharedlocations.0 2018-06-04 17:40:24.415 info Polling locations. google-sharedlocations.0 2018-06-04 17:30:24.547 info Checking fences. google-sharedlocations.0 2018-06-04 17:30:24.546 debug Response: OK google-sharedlocations.0 2018-06-04 17:30:24.404 info Polling locations. google-sharedlocations.0 2018-06-04 17:20:24.538 info Checking fences. google-sharedlocations.0 2018-06-04 17:20:24.537 debug Response: OK google-sharedlocations.0 2018-06-04 17:20:24.394 info Polling locations. google-sharedlocations.0 2018-06-04 17:10:24.537 info Checking fences. google-sharedlocations.0 2018-06-04 17:10:24.535 debug Response: OK google-sharedlocations.0 2018-06-04 17:10:24.382 info Polling locations.
Gruß NetFritz
-
Debug hatte ich schon heute Mittag eingeschaltet. `
Als filter im log oder als logstufe in der Instanz?Gruß
Rainer
-
Hallo
Debug wurde in der Instanz google-sharedlocations unter Log-Stufe eigeschaltet.
Hier nochmal die Log ohne Filter:
google-sharedlocations.0 2018-06-04 19:24:15.093 debug system.adapter.admin.0: logging true javascript.0 2018-06-04 19:24:15.085 debug system.adapter.admin.0: logging true google-sharedlocations.0 2018-06-04 19:20:24.626 info Checking fences. google-sharedlocations.0 2018-06-04 19:20:24.625 debug Response: OK google-sharedlocations.0 2018-06-04 19:20:24.498 info Polling locations. google-sharedlocations.0 2018-06-04 19:10:24.630 info Checking fences. google-sharedlocations.0 2018-06-04 19:10:24.629 debug Response: OK google-sharedlocations.0 2018-06-04 19:10:24.491 info Polling locations. google-sharedlocations.0 2018-06-04 19:00:24.629 info Checking fences. google-sharedlocations.0 2018-06-04 19:00:24.628 debug Response: OK google-sharedlocations.0 2018-06-04 19:00:24.477 info Polling locations. google-sharedlocations.0 2018-06-04 18:50:24.628 info Checking fences. google-sharedlocations.0 2018-06-04 18:50:24.627 debug Response: OK google-sharedlocations.0 2018-06-04 18:50:24.469 info Polling locations. google-sharedlocations.0 2018-06-04 18:40:24.590 info Checking fences. google-sharedlocations.0 2018-06-04 18:40:24.589 debug Response: OK google-sharedlocations.0 2018-06-04 18:40:24.461 info Polling locations. google-sharedlocations.0 2018-06-04 18:30:24.588 info Checking fences. google-sharedlocations.0 2018-06-04 18:30:24.587 debug Response: OK google-sharedlocations.0 2018-06-04 18:30:24.453 info Polling locations. google-sharedlocations.0 2018-06-04 18:20:24.584 info Checking fences. google-sharedlocations.0 2018-06-04 18:20:24.583 debug Response: OK google-sharedlocations.0 2018-06-04 18:20:24.444 info Polling locations. google-sharedlocations.0 2018-06-04 18:10:24.618 info Checking fences. google-sharedlocations.0 2018-06-04 18:10:24.616 debug Response: OK google-sharedlocations.0 2018-06-04 18:10:24.435 info Polling locations. google-sharedlocations.0 2018-06-04 18:00:24.666 info Checking fences. google-sharedlocations.0 2018-06-04 18:00:24.665 debug Response: OK google-sharedlocations.0 2018-06-04 18:00:24.432 info Polling locations.
Gruß NetFritz
-
Hallo
Eine gute Nachricht, google-sharedlocations.0 funktioniert.
Ich habe 2 Google Kontos.
Nach dem ich mein 2. Google Konto in der Konfig von google-sharedlocations.0
eingetragen habe.
Und ich auf meinen Smartphone 1. Google Konto die Standort Freigabe für mein
2. Google Konto eingetragen habe konnte ich unter Objekte, google-sharedlocations.0,
user, lat und long den Standort des Smartphones verfolgen.
In places.0 ist noch keine Änderung zu sehen.
Gruß NetFritz
-
Ich habe mir nun alles durchgelesen, aber trotz eigentlich guter Doku bekomme ich es nicht ans laufen. Es fängt schon damit an, das ich zwar in der Whit List im Cloud Adapter einen Namen eintragen kann und diesen dann auch in der Config vom Places Adapter auswählen kannn, aber in den Objekten des Cloud Adaper ist dann nichts zu finden ?
Als nächstes wäre die Frage der Android App Einrichtung. Reicht da dann wirklich der Link ohne Benutzer und Passwort ? Ich bekomme in der App unter Info eine 502 Meldung bei Endpoint. Klingt für mich wie nicht erreichbar. (wo auch, ist ja irgendwie kein Objekt da)
Cloud ist in der pro und free Version Vorhanden.
Was mache ich falsch ?
-
Was ist denn genau der Wunsch: die Android-App soll ihre Position per Pro-Cloud an den Places-Adapter schicken, richtig?
Nur, damit ich den richtigen Ansatz habe und dir vielleicht Hinweise geben kann
-
Was ist denn genau der Wunsch: die Android-App soll ihre Position per Pro-Cloud an den Places-Adapter schicken, richtig?
Nur, damit ich den richtigen Ansatz habe und dir vielleicht Hinweise geben kann ` Ja genau, das ist der Wunsch. Ich hatte Probleme mit dem richtigen Link für die App, aber das funktioniert nun. Nun habe ich auch ein Objekt im Cloud Adapter und die App meldet keinen Fehler mehr.
Im Moment nutze ich zur Anwesenheitserkennung cloud pro und free über ifttt, einmal Android und einmal Apple Handy(meine Fau Apple und ich Android) was auch "meistens" funktioniert. Beim Apple eigentlich immer. Aber bei meinem Android oft erst sehr spät, oder erst wenn ich WLAN am Gerät aus und wieder einschalte. Ich habe aber WLAN eigentlich immer an, da das Handy sich dann mit BT und WLAN im Auto automatisch verbindet. Aber genau da vermute ich den Knackpunkt, weil das Handy im Auto im Grunde "flach" gelegt wird und das Auto quasi die SIM Karte übernimmt. Ich denke das dann ifttt erst nach der Abmeldung bzw. nach dem entfernen vom Auto den neuen Standort erkennt, obwohl es manchmal auch im Auto funktioniert ???
Nun zu Deinem Adapter[emoji3]. Jetzt wollte ich damit die Anwesenheit für zu Hause umsetzen. Unter places.0 stehen vier Datenpunkte.
anybodyAtHome = false
clearHome = button
numberAtHome = 0
personsAzHome []
wann werden die Datenpunkte "befüllt" ?
Da hat sich bisher nichts geändert. Ich habe zwei Benutzer und zwei Orte angelegt. Einmal Home und einmal Büro und dort die Koordinaten hinterlegt.
Wie kann ich das jetzt nutzen ?
PS: vielleicht noch für Deine Doku (mein letzter Kommentar, das der Schlüssel auch mit in den Link für die App muss, eigentlich im Nachhinein logisch, aber es steht nicht in Deiner Doku und hatte mich verwirrt.)
-
Nun zu Deinem Adapter[emoji3]. Jetzt wollte ich damit die Anwesenheit für zu Hause umsetzen. Unter places.0 stehen vier Datenpunkte.
anybodyAtHome = false
clearHome = button
numberAtHome = 0
personsAzHome []
wann werden die Datenpunkte "befüllt" ? `
Die Punkte werden genau dann befüllt, wenn der Adapter das erste Mal Daten bekommt (z.B. von deinem Service). Er prüft dann, ob die Koordinaten im Umkreis für "zuhause" liegen und würde entsprechend anybodyAtHome auf true setzen.
Was mich ein wenig verwirrt: die Android-App senden ja nativ Positionsangaben? Geht es nur ums Apple-Device in Verbindung mit der Cloud und deren Service?
-
Nun zu Deinem Adapter[emoji3]. Jetzt wollte ich damit die Anwesenheit für zu Hause umsetzen. Unter places.0 stehen vier Datenpunkte.
anybodyAtHome = false
clearHome = button
numberAtHome = 0
personsAzHome []
wann werden die Datenpunkte "befüllt" ? `
Die Punkte werden genau dann befüllt, wenn der Adapter das erste Mal Daten bekommt (z.B. von deinem Service). Er prüft dann, ob die Koordinaten im Umkreis für "zuhause" liegen und würde entsprechend anybodyAtHome auf true setzen.
Was mich ein wenig verwirrt: die Android-App senden ja nativ Positionsangaben? Geht es nur ums Apple-Device in Verbindung mit der Cloud und deren Service? `
hm, jetzt im Moment teste ich mit meinem Android. (das Apple Handy von meiner Frau ist leider schon wieder zu alt für owntracks. Die App lässt sich dort nicht installieren, ios11 oder höher wird verlangt.)
Also Daten sind ja unter cloud.0.services.custom_standort angekommen, aber bei places.0 hat sich nix verändert. anybodyAtHome ist false, ich bin aber zu Hause[emoji3]
-
OK, soweit habe ich verstanden.
1. Im Places-Adapter hast du custom_standort bzw. standort als Datenpunkt für die Cloud konfiguriert? Daher würde der Adapter dann die Requests abgreifen und sie analysieren.
2. Kannst du den Adapter ggf. mal auf die Logstufe "Debug" stellen und schauen, ob sich da was ändert sobald du mal das Haus verlässt? Wenn ja, kannst du mir dann ein paar Auszüge aus dem Log schicken? Irgendwelche Angaben à la "Receive request …" sollten da auf jeden Fall drinstehen.
Sobald ein Request eingeht, sollte auf jeden Fall ein neuer Knoten in places.0 erstellt werden für den Benutzer, den der Adapter im Request erkannt hat. Wenn dort kein Knoten ist, sondern lediglich die drei Felder anybodyAtHome, numberAtHome und personsAtHome sowie der Button für clearHome, dann hat der Adapter noch keinen Request bekommen (weshalb auch immer, falsche Konfiguration, nicht erkannter Inhalt eines Requests etc.).
-
okay, mache ich, wenn ich mal weg gehe/fahre. Ich war tatsächlich noch nirgend wo anders hin (habe Urlaub und bin zu Hause)