Nodes and media
Standortbefehl
Kurzfassung
location.getist ein Node-Befehl, der übernode.invokeoderopenclaw nodes location getaufgerufen wird.- Standardmäßig deaktiviert.
- Android-Builds von Drittanbietern verwenden eine Auswahl: Aus / Während der Nutzung / Immer. Play-Builds bieten weiterhin Aus / Während der Nutzung.
- Der genaue Standort ist ein separater Schalter.
Warum eine Auswahl (und nicht nur ein Schalter)?
Standortberechtigungen von Betriebssystemen sind mehrstufig. Der genaue Standort ist ebenfalls eine separate Betriebssystemfreigabe (iOS 14+ „Genau“, Android „genau“ gegenüber „ungefähr“). Die Auswahl in der App bestimmt den angeforderten Modus, aber das Betriebssystem entscheidet weiterhin über die tatsächlich erteilte Berechtigung.
Einstellungsmodell
Pro Node-Gerät:
location.enabledMode:off | whileUsing | alwayslocation.preciseEnabled: bool
Verhalten der Benutzeroberfläche:
- Die Auswahl von
whileUsingfordert die Vordergrundberechtigung an. - Bei Auswahl von
alwaysim Android-Build eines Drittanbieters wird zunächst die Vordergrundberechtigung angefordert, anschließend der Hintergrundzugriff erläutert und dann die Android-App-Einstellungen für die separate Berechtigung Allow all the time geöffnet. - Android-Play-Builds deklarieren keine Berechtigung für den Standortzugriff im Hintergrund und zeigen
alwaysnicht an. - Wenn das Betriebssystem die angeforderte Stufe verweigert, wechselt die App zur höchsten gewährten Stufe zurück und zeigt den Status an.
Berechtigungszuordnung (node.permissions)
Optional. Der macOS-Node meldet location über die Zuordnung permissions bei node.list/node.describe; unter iOS/Android kann diese Angabe fehlen.
Befehl: location.get
Aufruf über node.invoke oder die CLI-Hilfsfunktion:
openclaw nodes location get --node <idOrNameOrIp>openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000Parameter:
{ "timeoutMs": 10000, "maxAgeMs": 15000, "desiredAccuracy": "coarse|balanced|precise"}CLI-Flags werden direkt zugeordnet: --location-timeout -> timeoutMs, --max-age -> maxAgeMs, --accuracy -> desiredAccuracy.
Antwortnutzlast:
{ "lat": 48.20849, "lon": 16.37208, "accuracyMeters": 12.5, "altitudeMeters": 182.0, "speedMps": 0.0, "headingDeg": 270.0, "timestamp": "2026-01-03T12:34:56.000Z", "isPrecise": true, "source": "gps|wifi|cell|unknown"}Fehler (stabile Codes):
LOCATION_DISABLED: Die Auswahl ist deaktiviert.LOCATION_PERMISSION_REQUIRED: Die Berechtigung für den angeforderten Modus fehlt.LOCATION_BACKGROUND_UNAVAILABLE: Die App befindet sich im Hintergrund, aber es wurde nur „Während der Nutzung“ gewährt.LOCATION_TIMEOUT: Innerhalb der vorgegebenen Zeit wurde keine Position ermittelt.LOCATION_UNAVAILABLE: Systemfehler oder keine Provider.
Verhalten im Hintergrund
- Android-Builds von Drittanbietern akzeptieren
location.getim Hintergrund nur, wenn der BenutzerAlwaysausgewählt und Android den Standortzugriff im Hintergrund gewährt hat. Der vorhandene persistente Node-Dienst fügt den Diensttyplocationhinzu und weist während der Aktivität aufLocation: Alwayshin. - Android-Play-Builds und der Modus
While Usingverweigernlocation.get, während sich die App im Hintergrund befindet. - Andere Node-Plattformen können sich anders verhalten.
Linux-Node-Host
Das gebündelte Linux-Node-Plugin fügt dem CLI-Dienst openclaw node die Funktion location.get hinzu, einschließlich Headless-Hosts ohne Linux-Desktop-App. Der Standort ist standardmäßig deaktiviert. Aktivieren Sie ihn im Plugin-Eintrag und starten Sie anschließend den Node-Dienst neu:
{ plugins: { entries: { "linux-node": { config: { location: { enabled: true }, }, }, }, },}Installieren Sie GeoClue2 und dessen Demo where-am-i (geoclue-2-demo unter Debian und Ubuntu). Der Benutzer des Node-Dienstes muss durch die GeoClue-Richtlinie und den Autorisierungsagenten des Hosts zugelassen sein.
Das Plugin verwendet where-am-i anstelle einer Abfolge von busctl-Aufrufen. GeoClue bindet die Client-Erstellung, Eigenschaften, den Start, Aktualisierungen und den Stopp an eine einzelne D-Bus-Clientverbindung; die Demo hält diesen Lebenszyklus zusammen, während separate busctl-Unterprozesse dies nicht tun. Es wird keine npm-Abhängigkeit hinzugefügt.
Linux ordnet coarse, balanced und precise den GeoClue-Genauigkeitsstufen 4, 6 und 8 zu. maxAgeMs wird anhand des zurückgegebenen Zeitstempels validiert. Die Demo von GeoClue stellt den ausgewählten Provider nicht bereit, daher ist source gleich unknown; isPrecise ist nur dann wahr, wenn die gemeldete Genauigkeit 100 Meter oder besser beträgt.
Linux verwendet dieselben stabilen Fehler: LOCATION_DISABLED, LOCATION_TIMEOUT und LOCATION_UNAVAILABLE.
Modell-/Tooling-Integration
- Agent-Tool: die Aktion
location_getdes Toolsnodes(Node erforderlich). - CLI:
openclaw nodes location get --node <id>. - Agent-Richtlinien: Nur aufrufen, wenn der Benutzer den Standort aktiviert hat und den Umfang versteht.
UX-Text (Vorschlag)
- Aus: „Die Standortfreigabe ist deaktiviert.“
- Während der Nutzung: „Nur, wenn OpenClaw geöffnet ist.“
- Immer: „Angeforderte Standortprüfungen zulassen, während OpenClaw im Hintergrund ausgeführt wird.“
- Genau: „Genauen GPS-Standort verwenden. Deaktivieren Sie diese Option, um den ungefähren Standort zu teilen.“