iobroker.life360ng 1.0.21 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -51,19 +51,125 @@ Add private places not visible to Life360 cloud services. The adapter checks pre
51
51
 
52
52
  ### Integration
53
53
 
54
- Choose which Life360 data to process: circles, places, people. Optionally forward location data to the ioBroker [Places-adapter](https://github.com/ioBroker/ioBroker.places).
54
+ Choose which Life360 data to process: circles, places, people.
55
55
 
56
56
  ### Location-Tracking
57
57
 
58
58
  Enable location-tracking to add geo-positioning details (latitude, longitude, `locationName`) to the people data points.
59
59
 
60
+ ## Migration / Upgrade Notes
61
+
62
+ ### Upgrading from 1.0.x to 1.1.0
63
+
64
+ The internal object hierarchy has been restructured to comply with
65
+ ioBroker's object type rules.
66
+
67
+ **Please perform the following steps after updating:**
68
+ 1. Stop the adapter instance
69
+ 2. Delete all objects of the adapter (in ioBroker Admin:
70
+ Objects → life360ng.0 → Delete all)
71
+ 3. Start the adapter instance again
72
+ 4. All datapoints will be recreated automatically
73
+
74
+ > ⚠️ Your existing scripts and automations do **not** need to be changed –
75
+ > all datapoint IDs remain the same.
76
+
60
77
  ## States
61
78
 
62
- | State | Description |
63
- |---|---|
64
- | `people.<name>.locationName` | Current Life360 place name (e.g. Home) |
65
- | `people.<name>.location` | Geo-position object |
66
- | `info.connection` | `true` when connected to Life360 cloud |
79
+ ### circles
80
+
81
+ Life360 circles with their associated places and member presence.
82
+
83
+ | State | Type | Description |
84
+ |---|---|---|
85
+ | `circles.<id>.name` | text | Circle name (e.g. `Family skvarel`) |
86
+ | `circles.<id>.id` | text | Circle UUID |
87
+ | `circles.<id>.memberCount` | value | Number of circle members *(may be null)* |
88
+ | `circles.<id>.createdAt` | date | Circle creation date |
89
+ | `circles.<id>.timestamp` | date | Last data update |
90
+ | `circles.<id>.places.<placeId>.<memberId>.isPresent` | indicator | Member is present at this place |
91
+ | `circles.<id>.places.<placeId>.membersPresent` | value | Number of members currently at this place |
92
+
93
+ ### info
94
+
95
+ | State | Type | Description |
96
+ |---|---|---|
97
+ | `info.connection` | boolean | `true` when connected to Life360 cloud |
98
+
99
+ ### myplaces
100
+
101
+ Custom places defined in the adapter configuration (not synced to Life360 cloud).
102
+ Structure: `myplaces.<placeName>.<memberName>.*`
103
+
104
+ | State | Type | Description |
105
+ |---|---|---|
106
+ | `myplaces.<place>.<member>.distance` | value.distance | Distance to place center in meters |
107
+ | `myplaces.<place>.<member>.isPresent` | indicator | Member is within the place radius |
108
+ | `myplaces.<place>.<member>.startTimestamp` | date | Timestamp when member entered the place |
109
+ | `myplaces.<place>.<member>.timestamp` | date | Last check timestamp |
110
+ | `myplaces.<place>.gps-coordinates` | value.gps | Place center as JSON `{"lat":..,"lng":..}` |
111
+ | `myplaces.<place>.latitude` | value.gps.latitude | Place center latitude |
112
+ | `myplaces.<place>.longitude` | value.gps.longitude | Place center longitude |
113
+ | `myplaces.<place>.members` | list | All members checked against this place |
114
+ | `myplaces.<place>.membersCount` | value | Total number of tracked members |
115
+ | `myplaces.<place>.membersPresent` | list | Names of members currently present |
116
+ | `myplaces.<place>.membersPresentCount` | value | Number of members currently present |
117
+ | `myplaces.<place>.radius` | value | Configured radius in meters |
118
+ | `myplaces.<place>.timestamp` | date | Last data update |
119
+ | `myplaces.<place>.urlMap` | text.url | OpenStreetMap link to place |
120
+ | `myplaces.<place>.urlMapIframe` | text.url | Google Maps embeddable URL |
121
+
122
+ ### people
123
+
124
+ Each Life360 circle member gets their own channel under `people.<id>`,
125
+ where `<id>` is the member's Life360 UUID.
126
+
127
+ | State | Type | Description |
128
+ |---|---|---|
129
+ | `people.<id>.avatar` | text.url | Profile picture URL |
130
+ | `people.<id>.battery` | value.battery | Battery level in % |
131
+ | `people.<id>.createdAt` | date | Account creation date |
132
+ | `people.<id>.disconnected` | indicator | App is explicitly disconnected |
133
+ | `people.<id>.firstName` | text | First name |
134
+ | `people.<id>.gps-coordinates` | value.gps | GPS position as JSON `{"lat":..,"lng":..}` |
135
+ | `people.<id>.id` | text | Life360 member UUID |
136
+ | `people.<id>.isConnected` | indicator.reachable | App is connected and reachable |
137
+ | `people.<id>.isSharingLocation` | indicator | Location sharing is active |
138
+ | `people.<id>.lastName` | text | Last name |
139
+ | `people.<id>.lastPositionAt` | date | Timestamp of last position update |
140
+ | `people.<id>.latitude` | value.gps.latitude | Current latitude |
141
+ | `people.<id>.locationName` | text | Current place name (e.g. `Home`) |
142
+ | `people.<id>.longitude` | value.gps.longitude | Current longitude |
143
+ | `people.<id>.status` | text | Connection status (e.g. `Ok`) |
144
+ | `people.<id>.timestamp` | date | Timestamp of last data update |
145
+ | `people.<id>.urlMap` | text.url | OpenStreetMap link to current position |
146
+ | `people.<id>.urlMapIframe` | text.url | Google Maps embeddable URL |
147
+
148
+ > **Note:** `isConnected` reflects whether the Life360 app is reachable,
149
+ > while `disconnected` indicates an explicit disconnect state.
150
+ > Both can be `false` simultaneously during a connection loss.
151
+
152
+ ### places
153
+
154
+ Life360 places synced directly from the Life360 cloud (defined in the Life360 app).
155
+ These are **read-only** and cannot be configured in the adapter.
156
+
157
+ | State | Type | Description |
158
+ |---|---|---|
159
+ | `places.<id>.name` | text | Place name (e.g. `Refugium`) |
160
+ | `places.<id>.id` | text | Life360 place UUID |
161
+ | `places.<id>.circleId` | text | UUID of the circle this place belongs to |
162
+ | `places.<id>.ownerId` | text | UUID of the place owner |
163
+ | `places.<id>.gps-coordinates` | value.gps | Place center as JSON `{"lat":..,"lng":..}` |
164
+ | `places.<id>.latitude` | value.gps.latitude | Place center latitude |
165
+ | `places.<id>.longitude` | value.gps.longitude | Place center longitude |
166
+ | `places.<id>.radius` | value | Radius in meters |
167
+ | `places.<id>.timestamp` | date | Last data update |
168
+ | `places.<id>.urlMap` | text.url | OpenStreetMap link to place |
169
+ | `places.<id>.urlMapIframe` | text.url | Google Maps embeddable URL |
170
+
171
+ > **Note:** For custom places with presence detection, see [myplaces](#myplaces).
172
+
67
173
 
68
174
  ## Support
69
175
 
@@ -72,12 +178,23 @@ If you like our work and would like to support us, we appreciate any donation.
72
178
 
73
179
  [![Spende](img/support.png)](https://www.paypal.com/donate?hosted_button_id=7W6M3TFZ4W9LW)
74
180
 
181
+ ## Credits
182
+
183
+ This adapter is based on the original work by [MiGoller](https://github.com/MiGoller).<br>
184
+ Many thanks for the initial implementation and idea!
185
+ This repository contains optimizations and further development.<br>
186
+ Note: The original [repository](https://github.com/MiGoller/ioBroker.life360) is archived and no longer maintained.
75
187
 
76
188
  ## Changelog
77
189
 
78
190
  <!--
79
- ### **WORK IN PROGRESS**
191
+ ### **WORK IN PROGRESS**
80
192
  -->
193
+ ### 1.1.0 (2026-04-23)
194
+ - (skvarel) Fixed invalid object hierarchy (device under channel)
195
+ - (skvarel) Removed dependency on Places adapter
196
+ - (skvarel) NOTE: Delete all adapter objects after updating (see Migration Notes)
197
+
81
198
  ### 1.0.21 (2026-04-13)
82
199
  - (skvarel) Improved help tab in the config
83
200
  - (skvarel) Added new screenshots of browser DevTools
@@ -95,9 +212,6 @@ If you like our work and would like to support us, we appreciate any donation.
95
212
  - (skvarel) ESLint now covers all lib files with strict no-warnings enforcement
96
213
  - (skvarel) Added Copilot instructions for guided development
97
214
 
98
- ### 1.0.17 (2026-04-12)
99
- - (skvarel) Configuration revised, translations adjusted and repo cleaned up
100
-
101
215
  ## Older changes
102
216
  - [CHANGELOG_OLD.md](CHANGELOG_OLD.md)
103
217
 
@@ -8,7 +8,6 @@
8
8
  "life360_token": "Token (ohne 'Bearer' und ohne Leerzeichen)",
9
9
  "life360_username": "E-Mail-Adresse (optional, Ersatz für Passwortauthentifizierung)",
10
10
  "life360_username_help": "Wird nur benötigt, wenn du die passwortbasierte Anmeldung anstelle des Tokens verwenden möchtest (nicht empfohlen)",
11
- "location_object_type": "Geolokalisierungsobjekttyp",
12
11
  "location_unknown_name": "Ersatzname für unbekannten Standort",
13
12
  "location_unknown_name_help": "Text für locationName wenn die Person an keinem bekannten Ort ist (z.B. 'unterwegs'). Leer lassen, um den Wert leer zu belassen.",
14
13
  "paypal_donate": "Falls du uns unterstützen möchtest.",
@@ -25,10 +24,6 @@
25
24
  "section_life360_data": "Life360-Daten",
26
25
  "section_location_tracking": "Standortverfolgung",
27
26
  "section_places_adapter": "Orte-Adapter",
28
- "sendto_places_adapter_instance": "Places-Adapter-Instanz (-1 = deaktiviert)",
29
- "sendto_places_adapter_instance_help": "Gib die Instanznummer des Places-Adapters ein (z. B. 0). Auf -1 setzen, um die Weiterleitung zu deaktivieren.",
30
- "sendto_places_adapter_regexp": "Regex-Filter für Personen (leer = alle senden)",
31
- "sendto_places_adapter_regexp_help": "Regulärer Ausdruck abgeglichen mit „[Vorname] [Nachname]“. Lass das Feld leer, um alle zu senden.",
32
27
  "tab_advanced": "Protokolle/Logging",
33
28
  "tab_general": "Life360-LogIn",
34
29
  "tab_integration": "Integration",
@@ -19,15 +19,10 @@
19
19
  "process_life360_places": "Process Life360 places",
20
20
  "process_life360_people": "Process Life360 people",
21
21
  "section_places_adapter": "Places-adapter",
22
- "sendto_places_adapter_instance": "Places-adapter instance (-1 = disabled)",
23
- "sendto_places_adapter_instance_help": "Enter the instance number of the Places-adapter (e.g. 0). Set to -1 to disable forwarding.",
24
- "sendto_places_adapter_regexp": "Regex filter for people (empty = send all)",
25
- "sendto_places_adapter_regexp_help": "Regular expression matched against '[Firstname] [Lastname]'. Leave empty to send all.",
26
22
  "section_location_tracking": "Location-tracking",
27
23
  "track_location_people": "Enable location-tracking for people",
28
24
  "location_unknown_name": "Fallback name for unknown location",
29
25
  "location_unknown_name_help": "Text shown in locationName when the person is at no known place (e.g. 'on tour'). Leave empty to keep blank.",
30
- "location_object_type": "Geo-location object type",
31
26
  "debugging_verbose": "Enable verbose logging",
32
27
  "helps": "Help & FAQ",
33
28
  "intro_txt": "Help & FAQ.",
@@ -8,7 +8,6 @@
8
8
  "life360_token": "ficha al portador",
9
9
  "life360_username": "Dirección de correo electrónico (opcional, alternativa para la autenticación de contraseña)",
10
10
  "life360_username_help": "Solo es necesario si desea utilizar un inicio de sesión basado en contraseña en lugar de un token",
11
- "location_object_type": "Tipo de objeto de ubicación geográfica",
12
11
  "location_unknown_name": "Nombre alternativo para una ubicación desconocida",
13
12
  "location_unknown_name_help": "Texto que se muestra en LocationName cuando la persona no se encuentra en un lugar conocido (por ejemplo, \"de gira\"). Déjelo vacío para mantenerlo en blanco.",
14
13
  "paypal_donate": "Donar con PayPal",
@@ -21,21 +20,17 @@
21
20
  "process_life360_circles": "Vida del proceso360 círculos",
22
21
  "process_life360_people": "Vida del Proceso360 personas",
23
22
  "process_life360_places": "Proceso de vida360 lugares",
24
- "screenshot_txt": "Captura de pantalla del navegador DevTools (F12) con el valor del token resaltado (se recomienda usar DevTools en una nueva ventana):",
23
+ "screenshot_txt": "Capturas de pantalla del navegador DevTools (F12) con el valor del token resaltado (se recomienda usar DevTools en una nueva ventana):",
25
24
  "section_life360_data": "Datos de vida 360",
26
25
  "section_location_tracking": "Seguimiento de ubicación",
27
26
  "section_places_adapter": "Adaptador de lugares",
28
- "sendto_places_adapter_instance": "Instancia de adaptador de lugares (-1 = deshabilitado)",
29
- "sendto_places_adapter_instance_help": "Introduzca el número de instancia del adaptador de lugares (por ejemplo, 0). Establezca en -1 para deshabilitar el reenvío.",
30
- "sendto_places_adapter_regexp": "Filtro Regex para personas (vacío = enviar todo)",
31
- "sendto_places_adapter_regexp_help": "Expresión regular comparada con '[Nombre] [Apellido]'. Déjelo vacío para enviarlo todo.",
32
27
  "tab_advanced": "Avanzado",
33
28
  "tab_general": "vida360",
34
29
  "tab_integration": "Integración",
35
30
  "tab_myplaces": "Mis lugares",
36
31
  "token1_txt": "Primera variante:",
37
32
  "token2_txt": "Segunda variante:",
38
- "token_hint": "Usuarios de la UE: cómo obtener su token de portador:\n1. Abra https://life360.com/login\n2. Ingrese su dirección de correo electrónico → haga clic en Continuar\n3. Ingrese el código de un solo uso enviado a su correo electrónico\n4. Abra el navegador DevTools (F12) → pestaña Red\n5. Busque la solicitud POST denominada 'token' (no OPCIONES)\n6. Abra la pestaña Vista previa/Respuesta → copie el valor de 'access_token' y péguelo debajo\n\n¡Ingrese el token SIN la palabra 'Portador' y SIN espacios!\n\nLos tokens son válidos por varios meses.",
33
+ "token_hint": "Usuarios de la UE: cómo obtener su token de portador:\n1. Abra https://life360.com/login\n2. Ingrese su dirección de correo electrónico → haga clic en Continuar\n3. Ingrese el código de un solo uso enviado a su correo electrónico\n4. Abra el navegador DevTools (F12) → pestaña Red\n5. Busque la solicitud POST denominada 'token' y/o 'portador' (no OPCIONES)\n6. Abra la pestaña Vista previa/Respuesta → copie el valor de 'access_token' y péguelo debajo\n\n¡Ingrese el token SIN la palabra 'Portador' y SIN espacios!\n\nEl token es válido por varios meses.",
39
34
  "track_location_people": "Habilitar el seguimiento de ubicación de personas",
40
35
  "txt_one": "... ¡más información próximamente!"
41
36
  }
@@ -8,7 +8,6 @@
8
8
  "life360_token": "Jeton du porteur",
9
9
  "life360_username": "Adresse e-mail (facultatif, solution de secours pour l'authentification par mot de passe)",
10
10
  "life360_username_help": "Nécessaire uniquement si vous souhaitez utiliser une connexion par mot de passe au lieu d'un jeton",
11
- "location_object_type": "Type d'objet de géolocalisation",
12
11
  "location_unknown_name": "Nom de secours pour un emplacement inconnu",
13
12
  "location_unknown_name_help": "Texte affiché dans locationName lorsque la personne ne se trouve dans aucun endroit connu (par exemple « en tournée »). Laissez vide pour rester vide.",
14
13
  "paypal_donate": "Faites un don avec PayPal",
@@ -21,21 +20,17 @@
21
20
  "process_life360_circles": "Traiter les cercles Life360",
22
21
  "process_life360_people": "Processus de vie360 personnes",
23
22
  "process_life360_places": "Processus Life360 lieux",
24
- "screenshot_txt": "Capture d'écran du navigateur DevTools (F12) avec la valeur du jeton en surbrillance • (il est recommandé d'utiliser DevTools dans une nouvelle fenêtre) :",
23
+ "screenshot_txt": "Captures d'écran du navigateur DevTools (F12) avec la valeur du jeton en surbrillance • (l'utilisation de DevTools dans une nouvelle fenêtre est recommandée) :",
25
24
  "section_life360_data": "Données Life360",
26
25
  "section_location_tracking": "Suivi de localisation",
27
26
  "section_places_adapter": "Adaptateur de lieux",
28
- "sendto_places_adapter_instance": "Instance d'adaptateur Places (-1 = désactivé)",
29
- "sendto_places_adapter_instance_help": "Entrez le numéro d'instance de l'adaptateur Places (par exemple 0). Réglez sur -1 pour désactiver le transfert.",
30
- "sendto_places_adapter_regexp": "Filtre Regex pour les personnes (vide = tout envoyer)",
31
- "sendto_places_adapter_regexp_help": "Expression régulière comparée à « [Prénom] [Nom] ». Laissez vide pour tout envoyer.",
32
27
  "tab_advanced": "Avancé",
33
28
  "tab_general": "Vie360",
34
29
  "tab_integration": "Intégration",
35
30
  "tab_myplaces": "Mes adresses",
36
31
  "token1_txt": "Première variante :",
37
32
  "token2_txt": "Deuxième variante :",
38
- "token_hint": "Utilisateurs de l'UE – comment obtenir votre jeton Bearer :\n1. Ouvrez https://life360.com/login\n2. Entrez votre adresse e-mail → cliquez sur Continuer\n3. Entrez le code à usage unique envoyé à votre email\n4. Ouvrez le navigateur DevTools (F12) → onglet Réseau\n5. Recherchez la requête POST nommée « jeton » (pas OPTIONS)\n6. Ouvrez l'onglet Aperçu / Réponse → copiez la valeur de 'access_token' et collez-la ci-dessous\n\nEntrez le jeton SANS le mot 'Porteur' et SANS espaces !\n\nLes jetons sont valables plusieurs mois.",
33
+ "token_hint": "Utilisateurs de l'UE – comment obtenir votre jeton Bearer :\n1. Ouvrez https://life360.com/login\n2. Entrez votre adresse e-mail → cliquez sur Continuer\n3. Entrez le code à usage unique envoyé à votre email\n4. Ouvrez le navigateur DevTools (F12) → onglet Réseau\n5. Recherchez la requête POST nommée 'token' et/ou 'bearer' (pas OPTIONS)\n6. Ouvrez l'onglet Aperçu / Réponse → copiez la valeur de 'access_token' et collez-la ci-dessous\n\nEntrez le jeton SANS le mot 'Porteur' et SANS espaces !\n\nLe token est valable plusieurs mois.",
39
34
  "track_location_people": "Activer le suivi de localisation des personnes",
40
35
  "txt_one": "... plus d'informations à venir !"
41
36
  }
@@ -8,7 +8,6 @@
8
8
  "life360_token": "Gettone al portatore",
9
9
  "life360_username": "Indirizzo email (facoltativo, fallback per l'autenticazione della password)",
10
10
  "life360_username_help": "Necessario solo se desideri utilizzare l'accesso basato su password anziché su token",
11
- "location_object_type": "Tipo di oggetto di geolocalizzazione",
12
11
  "location_unknown_name": "Nome di fallback per posizione sconosciuta",
13
12
  "location_unknown_name_help": "Testo mostrato in locationName quando la persona si trova in un luogo sconosciuto (ad esempio \"in tour\"). Lascia vuoto per mantenere vuoto.",
14
13
  "paypal_donate": "Dona con PayPal",
@@ -21,21 +20,17 @@
21
20
  "process_life360_circles": "Cerchi Process Life360",
22
21
  "process_life360_people": "Process Life360 persone",
23
22
  "process_life360_places": "Process Life360 posti",
24
- "screenshot_txt": "Screenshot del browser DevTools (F12) con il valore del token evidenziato • (si consiglia di utilizzare DevTools in una nuova finestra):",
23
+ "screenshot_txt": "Schermate del browser DevTools (F12) con il valore del token evidenziato • (si consiglia di utilizzare DevTools in una nuova finestra):",
25
24
  "section_life360_data": "Dati Life360",
26
25
  "section_location_tracking": "Tracciamento della posizione",
27
26
  "section_places_adapter": "Adattatore di luoghi",
28
- "sendto_places_adapter_instance": "Istanza dell'adattatore Places (-1 = disabilitato)",
29
- "sendto_places_adapter_instance_help": "Inserisci il numero di istanza dell'adattatore Places (ad esempio 0). Impostare su -1 per disabilitare l'inoltro.",
30
- "sendto_places_adapter_regexp": "Filtro regex per persone (vuoto = invia tutto)",
31
- "sendto_places_adapter_regexp_help": "Espressione regolare abbinata a \"[Nome] [Cognome]\". Lascia vuoto per inviare tutto.",
32
27
  "tab_advanced": "Avanzato",
33
28
  "tab_general": "Vita360",
34
29
  "tab_integration": "Integrazione",
35
30
  "tab_myplaces": "I miei posti",
36
31
  "token1_txt": "Prima variante:",
37
32
  "token2_txt": "Seconda variante:",
38
- "token_hint": "Utenti UE: come ottenere il token al portatore:\n1. Apri https://life360.com/login\n2. Inserisci il tuo indirizzo email → fai clic su Continua\n3. Inserisci il codice monouso inviato alla tua email\n4. Aprire il browser DevTools (F12) → scheda Rete\n5. Trova la richiesta POST denominata \"token\" (non OPTIONS)\n6. Apri la scheda Anteprima/Risposta → copia il valore di \"access_token\" e incollalo di seguito\n\nInserisci il gettone SENZA la scritta 'Portatore' e SENZA spazi!\n\nI token sono validi per diversi mesi.",
33
+ "token_hint": "Utenti UE: come ottenere il token al portatore:\n1. Apri https://life360.com/login\n2. Inserisci il tuo indirizzo email → fai clic su Continua\n3. Inserisci il codice monouso inviato alla tua email\n4. Aprire il browser DevTools (F12) → scheda Rete\n5. Trova la richiesta POST denominata \"token\" e/o \"portatore\" (non OPZIONI)\n6. Apri la scheda Anteprima/Risposta → copia il valore di \"access_token\" e incollalo di seguito\n\nInserisci il gettone SENZA la scritta 'Portatore' e SENZA spazi!\n\nIl token è valido per diversi mesi.",
39
34
  "track_location_people": "Abilita il rilevamento della posizione per le persone",
40
35
  "txt_one": "...maggiori informazioni in arrivo!"
41
36
  }
@@ -8,7 +8,6 @@
8
8
  "life360_token": "Token aan toonder",
9
9
  "life360_username": "E-mailadres (optioneel, reserve voor wachtwoordauthenticatie)",
10
10
  "life360_username_help": "Alleen nodig als u op wachtwoord gebaseerde login wilt gebruiken in plaats van een token",
11
- "location_object_type": "Objecttype geolocatie",
12
11
  "location_unknown_name": "Reservenaam voor onbekende locatie",
13
12
  "location_unknown_name_help": "Tekst getoond in locationName wanneer de persoon zich op een onbekende plaats bevindt (bijvoorbeeld 'op tournee'). Laat leeg om leeg te blijven.",
14
13
  "paypal_donate": "Doneer met PayPal",
@@ -21,21 +20,17 @@
21
20
  "process_life360_circles": "Verwerk Life360-cirkels",
22
21
  "process_life360_people": "Verwerk Life360 mensen",
23
22
  "process_life360_places": "Verwerk Life360-plaatsen",
24
- "screenshot_txt": "Schermafbeelding van de browser DevTools (F12) met de tokenwaarde gemarkeerd • (het gebruik van DevTools in een nieuw venster wordt aanbevolen):",
23
+ "screenshot_txt": "Schermafbeeldingen van de browser DevTools (F12) met de tokenwaarde gemarkeerd • (het gebruik van DevTools in een nieuw venster wordt aanbevolen):",
25
24
  "section_life360_data": "Life360-gegevens",
26
25
  "section_location_tracking": "Locatie-tracking",
27
26
  "section_places_adapter": "Plaatsen-adapter",
28
- "sendto_places_adapter_instance": "Plaatsen-adapterinstantie (-1 = uitgeschakeld)",
29
- "sendto_places_adapter_instance_help": "Voer het instancenummer van de Places-adapter in (bijvoorbeeld 0). Stel in op -1 om het doorsturen uit te schakelen.",
30
- "sendto_places_adapter_regexp": "Regex-filter voor mensen (leeg = alles verzenden)",
31
- "sendto_places_adapter_regexp_help": "Reguliere expressie komt overeen met '[Voornaam] [Achternaam]'. Laat leeg om alles te verzenden.",
32
27
  "tab_advanced": "Geavanceerd",
33
28
  "tab_general": "Leven360",
34
29
  "tab_integration": "Integratie",
35
30
  "tab_myplaces": "Mijn plaatsen",
36
31
  "token1_txt": "Eerste variant:",
37
32
  "token2_txt": "Tweede variant:",
38
- "token_hint": "EU-gebruikers – hoe u uw Bearer-token kunt verkrijgen:\n1. Open https://life360.com/login\n2. Voer uw e-mailadres in → klik op Doorgaan\n3. Voer de eenmalige code in die naar uw e-mail is verzonden\n4. Open browser DevTools (F12) → tabblad Netwerk\n5. Zoek het POST-verzoek met de naam 'token' (niet OPTIONS)\n6. Open het tabblad Preview / Response → kopieer de waarde van 'access_token' en plak deze hieronder\n\nVoer het token in ZONDER het woord 'Bearer' en ZONDER spaties!\n\nTokens zijn meerdere maanden geldig.",
33
+ "token_hint": "EU-gebruikers – hoe u uw Bearer-token kunt verkrijgen:\n1. Open https://life360.com/login\n2. Voer uw e-mailadres in → klik op Doorgaan\n3. Voer de eenmalige code in die naar uw e-mail is verzonden\n4. Open browser DevTools (F12) → tabblad Netwerk\n5. Zoek het POST-verzoek met de naam 'token' en/of 'bearer' (niet OPTIONS)\n6. Open het tabblad Preview / Response → kopieer de waarde van 'access_token' en plak deze hieronder\n\nVoer het token in ZONDER het woord 'Bearer' en ZONDER spaties!\n\nHet token is meerdere maanden geldig.",
39
34
  "track_location_people": "Schakel locatietracking voor mensen in",
40
35
  "txt_one": "... binnenkort meer informatie!"
41
36
  }
@@ -8,7 +8,6 @@
8
8
  "life360_token": "Token okaziciela",
9
9
  "life360_username": "Adres e-mail (opcjonalnie, zastępczy do autoryzacji hasłem)",
10
10
  "life360_username_help": "Potrzebne tylko wtedy, gdy chcesz używać logowania opartego na haśle zamiast tokena",
11
- "location_object_type": "Typ obiektu geolokalizacji",
12
11
  "location_unknown_name": "Nazwa zastępcza dla nieznanej lokalizacji",
13
12
  "location_unknown_name_help": "Tekst wyświetlany w nazwie lokalizacji, gdy dana osoba przebywa w nieznanym miejscu (np. „w trasie”). Pozostaw puste, aby pozostawić puste.",
14
13
  "paypal_donate": "Przekaż darowiznę za pomocą PayPal",
@@ -21,21 +20,17 @@
21
20
  "process_life360_circles": "Proces Life360 kręgów",
22
21
  "process_life360_people": "Życie Procesowe 360 ​​osób",
23
22
  "process_life360_places": "Proces Życia360 miejsc",
24
- "screenshot_txt": "Zrzut ekranu przeglądarki DevTools (F12) z podświetloną wartością tokena • (zalecane jest użycie DevTools w nowym oknie):",
23
+ "screenshot_txt": "Zrzuty ekranu przeglądarki DevTools (F12) z podświetloną wartością tokena • (zalecane jest użycie DevTools w nowym oknie):",
25
24
  "section_life360_data": "Dane Life360",
26
25
  "section_location_tracking": "Śledzenie lokalizacji",
27
26
  "section_places_adapter": "Adapter miejsc",
28
- "sendto_places_adapter_instance": "Instancja adaptera miejsc (-1 = wyłączona)",
29
- "sendto_places_adapter_instance_help": "Wprowadź numer instancji adaptera Places (np. 0). Ustaw na -1, aby wyłączyć przekazywanie.",
30
- "sendto_places_adapter_regexp": "Filtr Regex dla osób (pusty = wyślij wszystko)",
31
- "sendto_places_adapter_regexp_help": "Wyrażenie regularne dopasowane do „[Imię] [Nazwisko]”. Pozostaw puste, aby wysłać wszystko.",
32
27
  "tab_advanced": "Zaawansowany",
33
28
  "tab_general": "Życie360",
34
29
  "tab_integration": "Integracja",
35
30
  "tab_myplaces": "Moje miejsca",
36
31
  "token1_txt": "Pierwszy wariant:",
37
32
  "token2_txt": "Drugi wariant:",
38
- "token_hint": "Użytkownicy z UE – jak zdobyć token okaziciela:\n1. Otwórz https://life360.com/login\n2. Wpisz swój adres e-mail → kliknij Kontynuuj\n3. Wpisz jednorazowy kod przesłany na Twój adres e-mail\n4. Otwórz przeglądarkę DevTools (F12) → zakładka Sieć\n5. Znajdź żądanie POST o nazwie „token” (nie OPCJE)\n6. Otwórz zakładkę Podgląd / Odpowiedź → skopiuj wartość „access_token” i wklej ją poniżej\n\nWprowadź token BEZ słowa „Nosiciel” i BEZ spacji!\n\nTokeny ważne przez kilka miesięcy.",
33
+ "token_hint": "Użytkownicy z UE – jak zdobyć token okaziciela:\n1. Otwórz https://life360.com/login\n2. Wpisz swój adres e-mail → kliknij Kontynuuj\n3. Wpisz jednorazowy kod przesłany na Twój adres e-mail\n4. Otwórz przeglądarkę DevTools (F12) → zakładka Sieć\n5. Znajdź żądanie POST o nazwie „token” i/lub „nośnik” (nie OPCJE)\n6. Otwórz zakładkę Podgląd / Odpowiedź → skopiuj wartość „access_token” i wklej ją poniżej\n\nWprowadź token BEZ słowa „Nosiciel” i BEZ spacji!\n\nToken ważny jest kilka miesięcy.",
39
34
  "track_location_people": "Włącz śledzenie lokalizacji dla ludzi",
40
35
  "txt_one": "...więcej informacji już wkrótce!"
41
36
  }
@@ -8,7 +8,6 @@
8
8
  "life360_token": "Token do portador",
9
9
  "life360_username": "Endereço de e-mail (opcional, substituto para autenticação de senha)",
10
10
  "life360_username_help": "Necessário apenas se você quiser usar login baseado em senha em vez de token",
11
- "location_object_type": "Tipo de objeto de geolocalização",
12
11
  "location_unknown_name": "Nome substituto para local desconhecido",
13
12
  "location_unknown_name_help": "Texto mostrado em locationName quando a pessoa não está em um local conhecido (por exemplo, 'em passeio'). Deixe em branco para manter em branco.",
14
13
  "paypal_donate": "Doe com PayPal",
@@ -21,21 +20,17 @@
21
20
  "process_life360_circles": "Processar círculos Life360",
22
21
  "process_life360_people": "Processo Life360 pessoas",
23
22
  "process_life360_places": "Processar Life360 lugares",
24
- "screenshot_txt": "Captura de tela do DevTools do navegador (F12) com o valor do token destacado • (recomenda-se usar o DevTools em uma nova janela):",
23
+ "screenshot_txt": "Capturas de tela do DevTools do navegador (F12) com o valor do token destacado • (recomenda-se usar o DevTools em uma nova janela):",
25
24
  "section_life360_data": "Dados Life360",
26
25
  "section_location_tracking": "Rastreamento de localização",
27
26
  "section_places_adapter": "Adaptador de lugares",
28
- "sendto_places_adapter_instance": "Instância do adaptador de locais (-1 = desabilitada)",
29
- "sendto_places_adapter_instance_help": "Insira o número da instância do adaptador Places (por exemplo, 0). Defina como -1 para desabilitar o encaminhamento.",
30
- "sendto_places_adapter_regexp": "Filtro Regex para pessoas (vazio = enviar todos)",
31
- "sendto_places_adapter_regexp_help": "Expressão regular correspondente a '[Nome] [Sobrenome]'. Deixe em branco para enviar todos.",
32
27
  "tab_advanced": "Avançado",
33
28
  "tab_general": "Vida360",
34
29
  "tab_integration": "Integração",
35
30
  "tab_myplaces": "Meus lugares",
36
31
  "token1_txt": "Primeira variante:",
37
32
  "token2_txt": "Segunda variante:",
38
- "token_hint": "Usuários da UE – como obter seu token ao portador:\n1. Abra https://life360.com/login\n2. Digite seu endereço de e-mail → clique em Continuar\n3. Digite o código único enviado para seu e-mail\n4. Abra o navegador DevTools (F12) → guia Rede\n5. Encontre a solicitação POST chamada 'token' (não OPTIONS)\n6. Abra a guia Visualização/Resposta → copie o valor de 'access_token' e cole-o abaixo\n\nInsira o token SEM a palavra 'Bearer' e SEM espaços!\n\nOs tokens são válidos por vários meses.",
33
+ "token_hint": "Usuários da UE – como obter seu token ao portador:\n1. Abra https://life360.com/login\n2. Digite seu endereço de e-mail → clique em Continuar\n3. Digite o código único enviado para seu e-mail\n4. Abra o navegador DevTools (F12) → guia Rede\n5. Encontre a solicitação POST chamada 'token' e/ou 'bearer' (não OPTIONS)\n6. Abra a guia Visualização/Resposta → copie o valor de 'access_token' e cole-o abaixo\n\nInsira o token SEM a palavra 'Bearer' e SEM espaços!\n\nO token é válido por vários meses.",
39
34
  "track_location_people": "Habilite o rastreamento de localização para pessoas",
40
- "txt_one": "... mais informações em breve!"
35
+ "txt_one": "...mais informações em breve!"
41
36
  }
@@ -8,7 +8,6 @@
8
8
  "life360_token": "Токен на предъявителя",
9
9
  "life360_username": "Адрес электронной почты (необязательно, резервный вариант для аутентификации по паролю)",
10
10
  "life360_username_help": "Требуется только в том случае, если вы хотите использовать вход на основе пароля вместо токена.",
11
- "location_object_type": "Тип объекта геолокации",
12
11
  "location_unknown_name": "Резервное имя для неизвестного местоположения",
13
12
  "location_unknown_name_help": "Текст, отображаемый в locationName, когда человек находится в неизвестном месте (например, «в туре»). Оставьте пустым, чтобы оставить пустым.",
14
13
  "paypal_donate": "Пожертвовать через PayPal",
@@ -21,21 +20,17 @@
21
20
  "process_life360_circles": "Процесс Life360 кругов",
22
21
  "process_life360_people": "Процесс Life360 человек",
23
22
  "process_life360_places": "Процесс Лайф360 мест",
24
- "screenshot_txt": "Снимок экрана DevTools браузера (F12) с выделенным значением токена • (рекомендуется использовать DevTools в новом окне):",
23
+ "screenshot_txt": "Снимки экрана DevTools браузера (F12) с выделенным значением токена • (рекомендуется использовать DevTools в новом окне):",
25
24
  "section_life360_data": "Данные Life360",
26
25
  "section_location_tracking": "Отслеживание местоположения",
27
26
  "section_places_adapter": "Места-адаптер",
28
- "sendto_places_adapter_instance": "Экземпляр адаптера мест (-1 = отключено)",
29
- "sendto_places_adapter_instance_help": "Введите номер экземпляра адаптера Places (например, 0). Установите значение -1, чтобы отключить пересылку.",
30
- "sendto_places_adapter_regexp": "Фильтр регулярных выражений для людей (пусто = отправить все)",
31
- "sendto_places_adapter_regexp_help": "Регулярное выражение соответствует «[Имя] [Фамилия]». Оставьте пустым, чтобы отправить все.",
32
27
  "tab_advanced": "Передовой",
33
28
  "tab_general": "Жизнь360",
34
29
  "tab_integration": "Интеграция",
35
30
  "tab_myplaces": "Мои места",
36
31
  "token1_txt": "Первый вариант:",
37
32
  "token2_txt": "Второй вариант:",
38
- "token_hint": "Пользователи из ЕС – как получить токен на предъявителя:\n1. Откройте https://life360.com/login.\n2. Введите свой адрес электронной почты → нажмите «Продолжить».\n3. Введите одноразовый код, отправленный на вашу электронную почту.\n4. Откройте DevTools браузера (F12) → вкладка «Сеть».\n5. Найдите запрос POST с именем «токен» (не ОПЦИИ).\n6. Откройте вкладку «Предварительный просмотр/Ответ» → скопируйте значение «access_token» и вставьте его ниже.\n\nВведите токен БЕЗ слова «На предъявителя» и БЕЗ пробелов!\n\nТокены действительны в течение нескольких месяцев.",
33
+ "token_hint": "Пользователи из ЕС – как получить токен на предъявителя:\n1. Откройте https://life360.com/login.\n2. Введите свой адрес электронной почты → нажмите «Продолжить».\n3. Введите одноразовый код, отправленный на вашу электронную почту.\n4. Откройте DevTools браузера (F12) → вкладка «Сеть».\n5. Найдите запрос POST с именем «токен» и/или «носитель» (не ОПЦИИ).\n6. Откройте вкладку «Предварительный просмотр/Ответ» → скопируйте значение «access_token» и вставьте его ниже.\n\nВведите токен БЕЗ слова «На предъявителя» и БЕЗ пробелов!\n\nТокен действителен в течение нескольких месяцев.",
39
34
  "track_location_people": "Включить отслеживание местоположения для людей",
40
35
  "txt_one": "... дополнительная информация скоро появится!"
41
36
  }
@@ -8,7 +8,6 @@
8
8
  "life360_token": "Токен на пред'явника",
9
9
  "life360_username": "Адреса електронної пошти (необов’язково, резервний варіант для авторизації пароля)",
10
10
  "life360_username_help": "Потрібен, лише якщо ви хочете використовувати вхід на основі пароля замість маркера",
11
- "location_object_type": "Тип об'єкта геолокації",
12
11
  "location_unknown_name": "Запасна назва для невідомого місця",
13
12
  "location_unknown_name_help": "Текст, який відображається в LocationName, коли особа перебуває у невідомому місці (наприклад, «у турі»). Залиште порожнім, щоб залишити порожнім.",
14
13
  "paypal_donate": "Пожертвуйте за допомогою PayPal",
@@ -21,21 +20,17 @@
21
20
  "process_life360_circles": "Круги Process Life360",
22
21
  "process_life360_people": "Процес Life360 людей",
23
22
  "process_life360_places": "Процес Life360 місць",
24
- "screenshot_txt": "Знімок екрана браузера DevTools (F12) із виділеним значенням маркера (рекомендується використовувати DevTools у новому вікні):",
23
+ "screenshot_txt": "Скріншоти веб-переглядача DevTools (F12) із виділеним значенням маркера (рекомендується використовувати DevTools у новому вікні):",
25
24
  "section_life360_data": "Дані Life360",
26
25
  "section_location_tracking": "Відстеження місцезнаходження",
27
26
  "section_places_adapter": "Місця-адаптер",
28
- "sendto_places_adapter_instance": "Примірник Places-adapter (-1 = вимкнено)",
29
- "sendto_places_adapter_instance_help": "Введіть номер екземпляра адаптера Places (наприклад, 0). Встановіть -1, щоб вимкнути пересилання.",
30
- "sendto_places_adapter_regexp": "Фільтр регулярних виразів для людей (порожній = надіслати всім)",
31
- "sendto_places_adapter_regexp_help": "Регулярний вираз відповідає \"[Ім'я] [Прізвище]\". Залиште пустим, щоб надіслати все.",
32
27
  "tab_advanced": "Просунутий",
33
28
  "tab_general": "Life360",
34
29
  "tab_integration": "Інтеграція",
35
30
  "tab_myplaces": "Мої місця",
36
31
  "token1_txt": "Перший варіант:",
37
32
  "token2_txt": "Другий варіант:",
38
- "token_hint": "Користувачі ЄС – як отримати токен Bearer:\n1. Відкрийте https://life360.com/login\n2. Введіть адресу електронної пошти → натисніть Продовжити\n3. Введіть одноразовий код, надісланий на вашу електронну пошту\n4. Відкрийте браузер DevTools (F12) → вкладка Мережа\n5. Знайдіть запит POST під назвою «токен» (не OPTIONS)\n6. Відкрийте вкладку Preview / Response → скопіюйте значення 'access_token' і вставте його нижче\n\nВведіть жетон БЕЗ слова «Пред'явник» і БЕЗ пробілів!\n\nТокени дійсні кілька місяців.",
33
+ "token_hint": "Користувачі ЄС – як отримати токен Bearer:\n1. Відкрийте https://life360.com/login\n2. Введіть адресу електронної пошти → натисніть Продовжити\n3. Введіть одноразовий код, надісланий на вашу електронну пошту\n4. Відкрийте браузер DevTools (F12) → вкладка Мережа\n5. Знайдіть запит POST під назвою «token» та/або «bearer» (не OPTIONS)\n6. Відкрийте вкладку Preview / Response → скопіюйте значення 'access_token' і вставте його нижче\n\nВведіть жетон БЕЗ слова «Пред'явник» і БЕЗ пробілів!\n\nТокен діє протягом кількох місяців.",
39
34
  "track_location_people": "Увімкніть відстеження місцезнаходження людей",
40
35
  "txt_one": "... більше інформації буде незабаром!"
41
36
  }
@@ -8,7 +8,6 @@
8
8
  "life360_token": "不记名令牌",
9
9
  "life360_username": "电子邮件地址(可选,密码验证的后备)",
10
10
  "life360_username_help": "仅当您想使用基于密码的登录而不是令牌时才需要",
11
- "location_object_type": "地理位置对象类型",
12
11
  "location_unknown_name": "未知位置的后备名称",
13
12
  "location_unknown_name_help": "当此人不在已知地点(例如“在旅行中”)时,位置名称中显示的文本。留空以保持空白。",
14
13
  "paypal_donate": "通过 PayPal 捐赠",
@@ -25,17 +24,13 @@
25
24
  "section_life360_data": "Life360数据",
26
25
  "section_location_tracking": "位置追踪",
27
26
  "section_places_adapter": "地方适配器",
28
- "sendto_places_adapter_instance": "Places-adapter 实例(-1 = 禁用)",
29
- "sendto_places_adapter_instance_help": "输入 Places-adapter 的实例编号(例如 0)。设置为 -1 以禁用转发。",
30
- "sendto_places_adapter_regexp": "人员的正则表达式过滤器(空=发送全部)",
31
- "sendto_places_adapter_regexp_help": "正则表达式与“[名字] [姓氏]”匹配。留空即可发送全部。",
32
27
  "tab_advanced": "先进的",
33
28
  "tab_general": "生活360",
34
29
  "tab_integration": "一体化",
35
30
  "tab_myplaces": "我的地点",
36
31
  "token1_txt": "第一个变体:",
37
32
  "token2_txt": "第二种变体:",
38
- "token_hint": "欧盟用户 – 如何获取您的不记名代币:\n1.打开https://life360.com/login\n2. 输入您的电子邮件地址 → 单击继续\n3. 输入发送到您的电子邮件的一次性代码\n4. 打开浏览器 DevTools (F12) → Network 选项卡\n5.找到名为“token”的POST请求(不是OPTIONS)\n6. 打开预览/响应选项卡 → 复制“access_token”的值并将其粘贴到下面\n\n输入令牌时不要包含“Bearer”一词,也不要包含空格!\n\n令牌的有效期为几个月。",
33
+ "token_hint": "欧盟用户 – 如何获取您的不记名代币:\n1.打开https://life360.com/login\n2. 输入您的电子邮件地址 → 单击继续\n3. 输入发送到您的电子邮件的一次性代码\n4. 打开浏览器 DevTools (F12) → Network 选项卡\n5. 找到名为“token”和/或“bearer”的 POST 请求(不是 OPTIONS)\n6. 打开预览/响应选项卡 → 复制“access_token”的值并将其粘贴到下面\n\n输入令牌时不要包含“Bearer”一词,也不要包含空格!\n\n该令牌的有效期为几个月。",
39
34
  "track_location_people": "启用人员位置跟踪",
40
- "txt_one": "更多信息即将发布"
35
+ "txt_one": "...更多信息即将推出!"
41
36
  }
@@ -176,34 +176,6 @@
176
176
  }
177
177
  }
178
178
  },
179
- "_placesAdapter": {
180
- "type": "panel",
181
- "label": "section_places_adapter",
182
- "xs": 12,
183
- "items": {
184
- "sendto_places_adapter_instance": {
185
- "type": "number",
186
- "label": "sendto_places_adapter_instance",
187
- "help": "sendto_places_adapter_instance_help",
188
- "min": -1,
189
- "xs": 12,
190
- "sm": 6,
191
- "md": 6,
192
- "lg": 6,
193
- "xl": 6
194
- },
195
- "sendto_places_adapter_regexp": {
196
- "type": "text",
197
- "label": "sendto_places_adapter_regexp",
198
- "help": "sendto_places_adapter_regexp_help",
199
- "xs": 12,
200
- "sm": 12,
201
- "md": 6,
202
- "lg": 6,
203
- "xl": 6
204
- }
205
- }
206
- },
207
179
  "_locationTracking": {
208
180
  "type": "panel",
209
181
  "label": "section_location_tracking",
@@ -216,42 +188,10 @@
216
188
  "sm": 6,
217
189
  "md": 6,
218
190
  "lg": 6,
219
- "xl": 6
220
- },
221
- "location_object_type": {
222
- "type": "select",
223
- "label": "location_object_type",
224
- "options": [
225
- {
226
- "label": "LonLat tuple",
227
- "value": "LonLatTuple"
228
- },
229
- {
230
- "label": "LatLon object",
231
- "value": "LatLon"
232
- },
233
- {
234
- "label": "LatLng object",
235
- "value": "LatLng"
236
- },
237
- {
238
- "label": "LatitudeLongitude object",
239
- "value": "LatitudeLongitude"
240
- },
241
- {
242
- "label": "Latitude,Longitude (comma)",
243
- "value": "CUSTOM_LatCommaLon"
244
- },
245
- {
246
- "label": "Latitude;Longitude (semicolon)",
247
- "value": "CUSTOM_LatSemicolonLon"
248
- }
249
- ],
250
- "xs": 12,
251
- "sm": 6,
252
- "md": 6,
253
- "lg": 6,
254
- "xl": 6
191
+ "xl": 6,
192
+ "style": {
193
+ "marginTop": "20px"
194
+ }
255
195
  },
256
196
  "location_unknown_name": {
257
197
  "type": "text",