NEWS
Test Adapter google-sharedlocations2
-
@BananaJoe
Der Adapter bringt alles mit. Sollte auch unter Linux (wo von iobroker unterstüzt) die ganzen Abhängigkeiten installieren.(falls die Frage nach dem puppeteer Adapter war: der wird nicht benötigt und ist unabhängig von diesem Adapter. puppeteer ist halt die Technologie hinter beiden Adaptern jetzt :-) )
@David-G. sagte in Test Adapter google-sharedlocations2:
Error in puppeteer: Timed out after waiting 30000ms
Hm. Das kommt, wenn er an einem Schritt vom login nicht weiter kam... das sind ja mehrere Schritte, Eingabefeld für Username finden, Weiter klicken, Eingabefeld für Passwort finden, Weiter klicken. Bei jedem kann dieser Fehler kommen (oder auch überhaupt beim Verbindungsaufbau, vermutlich). Leider hab ich da bisher nicht viel bessere Fehlermeldungen bekommen. Da muss ich mir nochwas überlegen (debug log sagt extra immer an, welchen Schritt er als nächstes versucht).
Ging es danach?
@Garfonso
Erster Test, der Adapter holt sich beim ersten Start einen Cookie. Damit kann er sich offenbar nicht anmelden.No shared locations found in the response, probably not logged in.Dann habe ich manuell einen Cookie aus Chrome geholt und ihn in den Datenpunkt eingetragen. Das hat der Adapter erkannt und auch gleich Positionsdaten abgerufen. (Warum die Cookies aus Chrome und Puppeteer so unterschiedlich aussehen weiß ich nicht)
Nach ca. 2h ist der Cookie abgelaufen:Trying to login to Google to get new cookies. Obtained new cookies from Google login.Und er ruft mit dem neuen "andersartigen" Cookie die Positionsdaten brav weiter ab.
Vielen Dank! Natürlich auch an @david-g. !@krys
Ich meine Locations bietet dir mehr Möglichkeiten. Du legst quasi einmalig Nutzer und Orte an und der Adapter sagt dir wer wo ist.
Hat den Vorteil, wenn man noch andere "Ortungsadapter" nutzt kann man die Daten da auch hinsenden.
Ich schicke z.B. meine Positionsdaten minütlich bei längeren Autofahrten via Owntracks auch an den Places Adapter. So kann meine Holde quasi live sehen wo ich bin. Google macht ja kein Echtzeittracking. -
@Garfonso
Erster Test, der Adapter holt sich beim ersten Start einen Cookie. Damit kann er sich offenbar nicht anmelden.No shared locations found in the response, probably not logged in.Dann habe ich manuell einen Cookie aus Chrome geholt und ihn in den Datenpunkt eingetragen. Das hat der Adapter erkannt und auch gleich Positionsdaten abgerufen. (Warum die Cookies aus Chrome und Puppeteer so unterschiedlich aussehen weiß ich nicht)
Nach ca. 2h ist der Cookie abgelaufen:Trying to login to Google to get new cookies. Obtained new cookies from Google login.Und er ruft mit dem neuen "andersartigen" Cookie die Positionsdaten brav weiter ab.
Vielen Dank! Natürlich auch an @david-g. !@krys
Ich meine Locations bietet dir mehr Möglichkeiten. Du legst quasi einmalig Nutzer und Orte an und der Adapter sagt dir wer wo ist.
Hat den Vorteil, wenn man noch andere "Ortungsadapter" nutzt kann man die Daten da auch hinsenden.
Ich schicke z.B. meine Positionsdaten minütlich bei längeren Autofahrten via Owntracks auch an den Places Adapter. So kann meine Holde quasi live sehen wo ich bin. Google macht ja kein Echtzeittracking.meinst du Places? Das habe ich mir noch nicht genauer angeschaut und habe da noch keinen Ansatz.
War mit der bisherigen Lösung über den Adapter von Garfonso mehr als zufrieden.Muss ich mich wohl einfuchsen. Nutze iOS und zusätzlich noch Geofency.
Vielleicht hast du noch 2-3 Stichworte, die mir auf die Sprünge helfen :D
-
@BananaJoe
Der Adapter bringt alles mit. Sollte auch unter Linux (wo von iobroker unterstüzt) die ganzen Abhängigkeiten installieren.(falls die Frage nach dem puppeteer Adapter war: der wird nicht benötigt und ist unabhängig von diesem Adapter. puppeteer ist halt die Technologie hinter beiden Adaptern jetzt :-) )
@David-G. sagte in Test Adapter google-sharedlocations2:
Error in puppeteer: Timed out after waiting 30000ms
Hm. Das kommt, wenn er an einem Schritt vom login nicht weiter kam... das sind ja mehrere Schritte, Eingabefeld für Username finden, Weiter klicken, Eingabefeld für Passwort finden, Weiter klicken. Bei jedem kann dieser Fehler kommen (oder auch überhaupt beim Verbindungsaufbau, vermutlich). Leider hab ich da bisher nicht viel bessere Fehlermeldungen bekommen. Da muss ich mir nochwas überlegen (debug log sagt extra immer an, welchen Schritt er als nächstes versucht).
Ging es danach?
@Garfonso sagte in Test Adapter google-sharedlocations2:
Ging es danach?
Ja,
Email korrigiert unf alles lies top.
Offtopic:
Places nutze ich auch.
Finde ich sehr praktisch. Gibt noch ein paar nützliche DPs und mache Geräte orte ich nicht über google shared locations.
Da ist die zentrale Anlaufstelle praktisch.
Aber A kann man es ja selber über send to an Places senden und B sollte der neue Adapter ja erstmal an sich rund laufen bis die weiteren (gewohnten) Features rein kommen. -
meinst du Places? Das habe ich mir noch nicht genauer angeschaut und habe da noch keinen Ansatz.
War mit der bisherigen Lösung über den Adapter von Garfonso mehr als zufrieden.Muss ich mich wohl einfuchsen. Nutze iOS und zusätzlich noch Geofency.
Vielleicht hast du noch 2-3 Stichworte, die mir auf die Sprünge helfen :D
@Krys sagte in Test Adapter google-sharedlocations2:
meinst du Places? Das habe ich mir noch nicht genauer angeschaut und habe da noch keinen Ansatz.
War mit der bisherigen Lösung über den Adapter von Garfonso mehr als zufrieden.Die beiden Features sind halt weitgehend identisch. Bei beiden hast du eine Position mit einem Radius. Der Hauptunterschied ist die Art der Datenpunkte, die erzeugt werden. Bei den fences im Adapter hast du quasi nur einen true/false Wert. Bei places hast du für jeden Nutzer ne ganze Reihe inklusive einen, wo steht wo der Nutzer gerade ist und auch für die Places einen, wo steht, wie viele Nutzer bzw. welche Nutzer gerade da sind.
Wenn man mehrere Geolocation-Dienste nutzt, ist places sicher besser, weil es man es von mehreren Adaptern befüllen kann. Die Places Unterstützung ist auch nur ein send-To. Fences ist dafür etwas mehr Code im Adapter und besonders der Config.
-
Um noch einen Ansatz hinzu zu fügen: Ich nutze Traccar und sende die Positionen per http-Request von ioBroker zur diesem.
Über den Traccar-Adapter bekomme ich wiederum die Positionen zurück in ioBroker.
Vorteil Traccar ist das man da auch ungewöhnliche Fences ziehen kann:


-
@Krys sagte in Test Adapter google-sharedlocations2:
meinst du Places? Das habe ich mir noch nicht genauer angeschaut und habe da noch keinen Ansatz.
War mit der bisherigen Lösung über den Adapter von Garfonso mehr als zufrieden.Die beiden Features sind halt weitgehend identisch. Bei beiden hast du eine Position mit einem Radius. Der Hauptunterschied ist die Art der Datenpunkte, die erzeugt werden. Bei den fences im Adapter hast du quasi nur einen true/false Wert. Bei places hast du für jeden Nutzer ne ganze Reihe inklusive einen, wo steht wo der Nutzer gerade ist und auch für die Places einen, wo steht, wie viele Nutzer bzw. welche Nutzer gerade da sind.
Wenn man mehrere Geolocation-Dienste nutzt, ist places sicher besser, weil es man es von mehreren Adaptern befüllen kann. Die Places Unterstützung ist auch nur ein send-To. Fences ist dafür etwas mehr Code im Adapter und besonders der Config.
@Garfonso Ok, scheinbar bin ich zu hohl dafür. Mit owntracks bekomme ich es nicht hin, mit iOS Kurzbefehlen auch nicht. Ich bleibe bei deinem alten Adapter und hoffe, dass er erhalten bleibt. Dort kann ich per Blockly auch die Standorte abfragen, das passt schon so.
-
So, heute umgestellt, hat auf Anhieb geklappt.
Musste in meinen Skripten überall nur eine "2" einbauen (ausgoogle-sharedlocations.0.eingoogle-sharedlocations2.0.machen) und es läuft wie gewohnt -
So, heute umgestellt, hat auf Anhieb geklappt.
Musste in meinen Skripten überall nur eine "2" einbauen (ausgoogle-sharedlocations.0.eingoogle-sharedlocations2.0.machen) und es läuft wie gewohnt@BananaJoe sagte in Test Adapter google-sharedlocations2:
So, heute umgestellt, hat auf Anhieb geklappt.
Musste in meinen Skripten überall nur eine "2" einbauen (ausgoogle-sharedlocations.0.eingoogle-sharedlocations2.0.machen) und es läuft wie gewohntuserhat sich noch zuusersverändert.@Krys sagte in Test Adapter google-sharedlocations2:
@Garfonso Ok, scheinbar bin ich zu hohl dafür. Mit owntracks bekomme ich es nicht hin, mit iOS Kurzbefehlen auch nicht. Ich bleibe bei deinem alten Adapter und hoffe, dass er erhalten bleibt. Dort kann ich per Blockly auch die Standorte abfragen, das passt schon so.
Was genau bekommst du nicht hin? Places ist doch "einfach" ein Adapter in ioBroker...?
-
@garfonso
Seit dem ich den Adapter installiert bekomme ich regelmäßig eine Mail mit der Sicherheitsfrage ob ich mich wirklich eingeloggt habe.
Er meint von einem Windows Rechner aus.Hat das noch jemend?
Edit
Gtad im Code vom Adapter geschaut, gibt sich als Windows aus, dann wird es wirklich davon kommen.
Dabei hab ich gesehen, dass du die Fences und Places eingebaut hast. Super. -
@BananaJoe sagte in Test Adapter google-sharedlocations2:
So, heute umgestellt, hat auf Anhieb geklappt.
Musste in meinen Skripten überall nur eine "2" einbauen (ausgoogle-sharedlocations.0.eingoogle-sharedlocations2.0.machen) und es läuft wie gewohntuserhat sich noch zuusersverändert.@Krys sagte in Test Adapter google-sharedlocations2:
@Garfonso Ok, scheinbar bin ich zu hohl dafür. Mit owntracks bekomme ich es nicht hin, mit iOS Kurzbefehlen auch nicht. Ich bleibe bei deinem alten Adapter und hoffe, dass er erhalten bleibt. Dort kann ich per Blockly auch die Standorte abfragen, das passt schon so.
Was genau bekommst du nicht hin? Places ist doch "einfach" ein Adapter in ioBroker...?
@Garfonso sagte in Test Adapter google-sharedlocations2:
user hat sich noch zu users verändert.
Gut das du das geschrieben hast ... Danke!
-
@garfonso
Seit dem ich den Adapter installiert bekomme ich regelmäßig eine Mail mit der Sicherheitsfrage ob ich mich wirklich eingeloggt habe.
Er meint von einem Windows Rechner aus.Hat das noch jemend?
Edit
Gtad im Code vom Adapter geschaut, gibt sich als Windows aus, dann wird es wirklich davon kommen.
Dabei hab ich gesehen, dass du die Fences und Places eingebaut hast. Super. -
@David-G. sagte in Test Adapter google-sharedlocations2:
Hat das noch jemend?
Ja, hab ich auch mehrere bekommen.
@Garfonso sagte in Test Adapter google-sharedlocations2:
Ja, hab ich auch mehrere bekommen.
Man kann puppeteer ja einen Arbeitsordner mitgeben, um Session fortsetzen zu können.Evtl bekommt man es damit hin dass nicht jede Anmeldung als neues Gerät erkannt wird. Oder hast du es extra so gemacht, dass sicher ein login mit Passwort erscheint?
Edit.
Evtl nur mit Pw einloggen wenn das Coockie abgelaufen ist. Zum Ordner laut Gemini:Ja, das ist sogar eine sehr gute Idee! Bei Puppeteer nennt sich das userDataDir.
Wenn du diesen Ordner angibst, speichert Chrome dort das gesamte Browser-Profil – inklusive Cookies, Cache und vor allem den Session-Status. Beim nächsten Start greift Puppeteer auf diesen Ordner zu. Google sieht dann keinen "völlig neuen" Browser, was die Wahrscheinlichkeit massiv erhöht, dass du eingeloggt bleibst oder keine erneute 2FA-Abfrage kommt.
So baust du es in deine Cookie.ts ein
Du musst die puppeteer.launch-Optionen in der Methode loginToGetNewCookies anpassen.
1. Pfad definieren
Zuerst solltest du einen Pfad festlegen. Da es ein ioBroker-Adapter ist, bietet sich ein Ordner im Adapter-Verzeichnis an:const path = require('path'); // Im ioBroker-Kontext sinnvoll: ein Ordner im Instanz-Verzeichnis const dataDir = path.join(utils.getAbsoluteDefaultDataDir(), 'google-sharedlocations2-profile');- Den Launch-Befehl anpassen
Ändere den Block in deiner loginToGetNewCookies wie folgt ab:
this.browser = await puppeteer.launch({ headless: true, userDataDir: './google_profile', // Hier wird die Session gespeichert args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-blink-features=AutomationControlled' ], ignoreDefaultArgs: ['--enable-automation'], });Warum das für dein Script wichtig ist:
Vermeidung von 2FA: Wenn du dich einmal erfolgreich eingeloggt hast (vielleicht indem du headless: false kurzzeitig zum Testen nutzt), erkennt Google das "Gerät" beim nächsten Mal wieder.
Cookie-Persistenz: Selbst wenn das Script abstürzt, sind die Cookies noch im userDataDir gespeichert und müssen nicht jedes Mal neu per Tipp-Simulation erzeugt werden.
Glaubwürdigkeit: Ein Browser mit Historie und Cache wirkt für die Google-Sicherheitsalgorithmen weniger wie ein bösartiger Bot.EDIT 2
Mein Script nutzt die Option eines Cookie-Refresh. Evtl kann der Adapter erstmal versuchen, sich mit dem per User und Pw abgerufenen Coockie zu verbinden und dieses zu aktualisieren, und das nächste mal dann mit diesem usw. Wenn das nicht klappt neu einloggen mit user und pw. - Den Launch-Befehl anpassen