iobroker.sunseeker 0.0.1 → 0.0.3

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.
Files changed (57) hide show
  1. package/LICENSE +22 -21
  2. package/README.md +158 -158
  3. package/admin/i18n/de.json +20 -3
  4. package/admin/i18n/en.json +20 -3
  5. package/admin/i18n/es.json +20 -3
  6. package/admin/i18n/fr.json +20 -3
  7. package/admin/i18n/it.json +20 -3
  8. package/admin/i18n/nl.json +20 -3
  9. package/admin/i18n/pl.json +20 -3
  10. package/admin/i18n/pt.json +20 -3
  11. package/admin/i18n/ru.json +20 -3
  12. package/admin/i18n/uk.json +20 -3
  13. package/admin/i18n/zh-cn.json +20 -3
  14. package/admin/img/anti-theft.png +0 -0
  15. package/admin/img/auth.png +0 -0
  16. package/admin/img/blank.png +0 -0
  17. package/admin/img/expert.png +0 -0
  18. package/admin/img/forbidden.png +0 -0
  19. package/admin/img/map.png +0 -0
  20. package/admin/img/mower.png +0 -0
  21. package/admin/img/mqtt.png +0 -0
  22. package/admin/img/notice.png +0 -0
  23. package/admin/img/obstacle.png +0 -0
  24. package/admin/img/passage.png +0 -0
  25. package/admin/img/pattern.png +0 -0
  26. package/admin/img/placed.png +0 -0
  27. package/admin/img/properties.png +0 -0
  28. package/admin/img/rate.png +0 -0
  29. package/admin/img/raw.png +0 -0
  30. package/admin/img/region.png +0 -0
  31. package/admin/img/save.png +0 -0
  32. package/admin/img/schedule.png +0 -0
  33. package/admin/img/work.png +0 -0
  34. package/admin/img/zone.png +0 -0
  35. package/admin/jsonConfig.json +227 -75
  36. package/io-package.json +406 -112
  37. package/lib/adapter-config.d.ts +19 -19
  38. package/lib/objectname.js +1199 -0
  39. package/lib/sunseeker/README.md +74 -0
  40. package/lib/sunseeker/auth.js +606 -0
  41. package/lib/sunseeker/charger.png +0 -0
  42. package/lib/sunseeker/devices.js +729 -0
  43. package/lib/sunseeker/helper.js +3818 -0
  44. package/lib/sunseeker/img/charger.png +0 -0
  45. package/lib/sunseeker/img/robot.png +0 -0
  46. package/lib/sunseeker/index.d.ts +174 -0
  47. package/lib/sunseeker/index.js +238 -0
  48. package/lib/sunseeker/map.js +662 -0
  49. package/lib/sunseeker/map_preview.js +357 -0
  50. package/lib/sunseeker/mqtt.js +821 -0
  51. package/lib/sunseeker/mqttV1.js +122 -0
  52. package/lib/sunseeker/package.json +18 -0
  53. package/lib/sunseeker/polling-and-settings.js +1556 -0
  54. package/lib/sunseeker/robot.png +0 -0
  55. package/main.js +6076 -1301
  56. package/package.json +68 -68
  57. /package/lib/{eventcodes.json → sunseeker/eventcodes.json} +0 -0
package/LICENSE CHANGED
@@ -1,21 +1,22 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 TA2k <tombox2020@gmail.com>
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 iobroker-community-adapters <iobroker-community-adapters@gmx.de>
4
+ Copyright (c) 2026 TA2k <tombox2020@gmail.com>
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
package/README.md CHANGED
@@ -1,158 +1,158 @@
1
- ![Logo](admin/sunseeker.png)
2
-
3
- # ioBroker.sunseeker
4
-
5
- [![NPM version](https://img.shields.io/npm/v/iobroker.sunseeker.svg)](https://www.npmjs.com/package/iobroker.sunseeker)
6
- [![Downloads](https://img.shields.io/npm/dm/iobroker.sunseeker.svg)](https://www.npmjs.com/package/iobroker.sunseeker)
7
- ![Number of Installations](https://iobroker.live/badges/sunseeker-installed.svg)
8
- ![Current version in stable repository](https://iobroker.live/badges/sunseeker-stable.svg)
9
-
10
- [![NPM](https://nodei.co/npm/iobroker.sunseeker.png?downloads=true)](https://nodei.co/npm/iobroker.sunseeker/)
11
-
12
- **Tests:** ![Test and Release](https://github.com/iobroker-community-adapters/ioBroker.sunseeker/workflows/Test%20and%20Release/badge.svg)
13
-
14
- ## Sunseeker mower adapter for ioBroker
15
-
16
- Connects Sunseeker robotic lawn mowers (also rebranded as Adano, Brücke, etc.) to ioBroker through the official Sunseeker cloud. Both the legacy (`Old`) and current (`New`) Sunseeker APIs are supported, covering the S, X, V and V1 model classes.
17
-
18
- ## Requirements
19
-
20
- - ioBroker js-controller `>= 6.0.11`
21
- - Admin `>= 7.0.23`
22
- - Node.js `>= 22`
23
- - Sunseeker cloud account (e-mail + password, same as in the mobile app)
24
-
25
- ## Configuration
26
-
27
- The adapter settings expose the following fields:
28
-
29
- | Field | Description |
30
- | --- | --- |
31
- | Username / e-mail | Sunseeker app login |
32
- | Password | Sunseeker app password (stored encrypted) |
33
- | Region | `EU` or `US` (only relevant for the `New` API) |
34
- | API | `New` for current models (S/X/V/V1), `Old` for older devices |
35
- | Polling interval | REST poll interval in seconds (minimum 30) |
36
- | Language | UI and event-code language, e.g. `de-DE`, `en-EN` |
37
-
38
- Which API to pick depends on the model:
39
-
40
- - `New`: all S, X, V and V1 series mowers (server `wirefree-specific.sk-robot.com` / `wirefree-specific-us.sk-robot.com`)
41
- - `Old`: older devices without Wirefree branding (server `server.sk-robot.com`)
42
-
43
- ## Features
44
-
45
- - REST login (OAuth2 password grant) with automatic token refresh on a single `setInterval`.
46
- - Per-account device list and status/settings polling at the configured interval.
47
- - MQTT push:
48
- - `New` API: TLS MQTT (port 1884 for SXV, 32884 for V1) with an RSA-encrypted password. After connect the adapter triggers `getDevAllProperties`, `getSelectRegionID`, `getAllPath`, `getConsumableItems` and `getFcState` via `get_property` POST so the full state is available immediately.
49
- - `Old` API: plain MQTT on `mqtts.sk-robot.com:1883` with the hard-coded app user.
50
- - Model classification into `S`, `X`, `V` (incl. V18/V3) and `V1`. Endpoints and parameters (`cmdurl`, border mode, set-property path) are picked automatically.
51
- - Translated event codes: 12 language variants from the Home Assistant lang files are bundled in `lib/eventcodes.json` and attached as `common.states` to `event_code` and `errortype` (model-aware) so the ioBroker UI shows readable labels.
52
-
53
- ## Object tree
54
-
55
- For each mower (serial `<sn>`) the adapter creates these channels:
56
-
57
- - `<sn>.general` — raw device metadata from the device list (account ids, model, serial)
58
- - `<sn>.status` — mower status (poll **and** MQTT push write into the same folder)
59
- - `<sn>.settings` — device settings
60
- - `<sn>.remote` — command buttons
61
- - `<sn>.schedule` — weekly plan (writable, see below)
62
-
63
- Raw payloads (REST and MQTT) are written through `json2iob` directly — no parallel adapter-side data model is maintained.
64
-
65
- ## Commands (`<sn>.remote.*`)
66
-
67
- | State | Effect |
68
- | --- | --- |
69
- | `start` | Start mowing |
70
- | `pause` | Pause |
71
- | `dock` | Return to charging station |
72
- | `stop_find_charger` | Cancel return-to-dock |
73
- | `border` | Border cut (V models: mode 5 with `value:true`) |
74
- | `stop` | Stop |
75
- | `stop_task` | Cancel current task |
76
- | `restart` | Restart task |
77
- | `refresh` | Reload status now |
78
-
79
- ## Writable settings
80
-
81
- These settings are made writable directly under `<sn>.settings.*`. Writing them sends a `set_property` / `setProperty` (model-dependent) request to the cloud:
82
-
83
- | State | Range | Unit |
84
- | --- | --- | --- |
85
- | `bladeSpeed` | 2800 – 3000 (step 100) | rpm |
86
- | `bladeHeight` | 20 – 100 (step 5) | mm |
87
-
88
- When writing, the adapter posts `{ id: "setDevBlade", key: "blade", method: "set_property", speed|height: <int> }`. After 1.5 s a status refresh is scheduled; MQTT push usually updates the values as well.
89
-
90
- ## Schedule (`<sn>.schedule.*`)
91
-
92
- A simple weekly plan with one window per day. The states are writable but the cloud is only updated when `set` is triggered.
93
-
94
- | State | Type | Format |
95
- | --- | --- | --- |
96
- | `monday` … `sunday` | string | `"HH:MM-HH:MM"` for the active window, empty string disables the day |
97
- | `pause` | boolean | Pause the schedule without clearing the windows |
98
- | `set` | button | Sends the current values to the cloud |
99
-
100
- The dispatched payload depends on the model:
101
-
102
- - `Old` API: `POST /app_mower/device-schedule/setScheduling` with `deviceScheduleBOS` for all 7 days; `autoFlag` is the inverse of `pause`.
103
- - `New` V1: `POST {cmdurl}setProperty` with `method: "setSchedule"` and `deviceScheduleBOS` containing only the active days.
104
- - `New` S/X/V: `POST {cmdurl}set_property` with `id: "setTimeTactics"`, `key: "time_tactics"` and a `time` array (one entry per active day, day index Mon=1…Sat=6, Sun=0; start/end as seconds since midnight).
105
-
106
- ## Known limitations
107
-
108
- The Sunseeker API exposes far more fields than the adapter currently writes. All settings are available read-only as raw data under `<sn>.settings`. The following are **not yet** exposed as writable states:
109
-
110
- - Rain delay (on/off, hours)
111
- - Zone settings (per-zone blade speed/height, ordering)
112
- - OTA update
113
- - Work records / mowing history
114
- - V1-specific settings: return path, screen lock, border distance, schedule on/off
115
- - Gen2 settings: auto_ride_edge, energy_save, night_work
116
- - AI sensitivity, PIN code, map operations
117
-
118
- ## References
119
-
120
- - Home Assistant integration used as the API reference: <https://github.com/Bouni/sunseeker-lawn-mower>
121
- - json2iob: <https://github.com/TA2k/json2iob>
122
-
123
- ## Changelog
124
-
125
- <!--
126
- Placeholder for the next version (at the beginning of the line):
127
- ### **WORK IN PROGRESS**
128
- -->
129
-
130
- ### **WORK IN PROGRESS**
131
-
132
- ### 0.0.1
133
-
134
- - (TA2k) initial release
135
-
136
- ## License
137
-
138
- MIT License
139
-
140
- Copyright (c) 2026 TA2k <tombox2020@gmail.com>
141
-
142
- Permission is hereby granted, free of charge, to any person obtaining a copy
143
- of this software and associated documentation files (the "Software"), to deal
144
- in the Software without restriction, including without limitation the rights
145
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
146
- copies of the Software, and to permit persons to whom the Software is
147
- furnished to do so, subject to the following conditions:
148
-
149
- The above copyright notice and this permission notice shall be included in all
150
- copies or substantial portions of the Software.
151
-
152
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
153
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
154
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
155
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
156
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
157
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
158
- SOFTWARE.
1
+ ![Logo](admin/sunseeker.png)
2
+
3
+ # ioBroker.sunseeker
4
+
5
+ [![NPM version](https://img.shields.io/npm/v/iobroker.sunseeker.svg)](https://www.npmjs.com/package/iobroker.sunseeker)
6
+ [![Downloads](https://img.shields.io/npm/dm/iobroker.sunseeker.svg)](https://www.npmjs.com/package/iobroker.sunseeker)
7
+ ![Number of Installations](https://iobroker.live/badges/sunseeker-installed.svg)
8
+ ![Current version in stable repository](https://iobroker.live/badges/sunseeker-stable.svg)
9
+
10
+ [![NPM](https://nodei.co/npm/iobroker.sunseeker.png?downloads=true)](https://www.npmjs.com/package/iobroker.sunseeker)
11
+
12
+ **Tests:** ![Test and Release](https://github.com/iobroker-community-adapters/ioBroker.sunseeker/workflows/Test%20and%20Release/badge.svg)
13
+
14
+ ## Sunseeker mower adapter for ioBroker
15
+
16
+ Connects Sunseeker robotic lawn mowers (also rebranded as Adano, Brücke, etc.) to ioBroker through the official Sunseeker cloud. Both the legacy (`Old`) and current (`New`) Sunseeker APIs are supported, covering the S, X, V and V1 model classes.
17
+
18
+ ## Requirements
19
+
20
+ - ioBroker js-controller `>= 6.0.11`
21
+ - Admin `>= 7.8.23`
22
+ - Node.js `>= 22`
23
+ - Sunseeker cloud account (e-mail + password, same as in the mobile app)
24
+
25
+ ## API overview
26
+
27
+ | Area | Endpoints | Used? |
28
+ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------- |
29
+ | Auth | `POST /auth/oauth/token` (login + refresh), `auth/mobile/token/social` | Yes |
30
+ | Device list | `GET /app_wireless_mower/device-user/getCustomDevice`, `…/list`, `…/{id}`, `…/remark` | Yes (`getCustomDevice`) |
31
+ | Status | `GET /app_wireless_mower/device/getBysn`, `…/info/{id}`, `…/check`, `…/readWeakSignal`, `…/getSignalType` | Yes (`getBysn`) |
32
+ | Settings (read) | `GET /app_wireless_mower/device-setting/{sn}`, `…/getTime/{sn}`, `device/getDeviceSettingBySn`, `device-configuration/getBySn/{sn}`, `device-model/getByClientName` | Yes (`device-setting/{sn}`) |
33
+ | Settings (write, New) | `POST /iot_mower/wireless/device/set_property` (S/X/V), `POST /app_wirelessv1_mower/wirelessv1/device/setProperty` (V1), `POST /app_wireless_mower/device/setRain/{sn}/{appId}`, `…/setWifi`, `…/appEditDevice` | Partial (`set_property` for blade) |
34
+ | Settings (write, Old) | `POST /app_mower/device-setting/save`, `…/updateLocation`, `…/updateTimeZone`, `device/setLed`, `…/saveLed`, `…/setRain`, `…/saveRain`, `…/setUltra`, `…/saveUltra`, `…/setZones`, `…/setNickName`, `…/setGps`, `…/setCurrentTime`, `…/setWorkStatus`, `…/resetPassword` | No |
35
+ | Schedule | `POST /app_mower/device-schedule/setScheduling` (Old), `app_mower/device-schedule/save`, `app_mower/device/getScheduling`, `POST /app_wireless_mower/.../setProperty` with `setSchedule` (V1) and `set_property` with `setTimeTactics` (S/X/V) | Yes (all three paths) |
36
+ | MQTT proxy via REST | `POST /iot_mower/wireless/device/get_property`, `…/set_property`, `…/action`, `…/extra`, `…/otaUpgrade`, `…/bindBaseStation` | Yes (`get_property` after connect) |
37
+ | Maps | `GET /wireless_map/wireless_device/get`, `…/getHeatMap`, `…/get3D`, `wireless_map/backup_map/get`, `map/work-map/mobile/{sn}`, `…/newest/{online}/{sn}`, `…/all-info`, `app_wireless_mower/device/getMapRealPath` | Yes (`get` + `getHeatMap`) |
38
+ | Work records | `GET /app_wireless_mower/work_record/page`, `…/work_event_info/page`, `device_log/device-operation-records/esPage`, `app_mower/device-record/getRecord/{sn}`, `app_mower/device-cmd-logs/page` | Yes (`get` + `work_record/page`) |
39
+ | Anti-theft / GPS | `gps/mobile/anti-theft/by-sn/{sn}`, `…/device-position/{sn}`, `…/getAntiTheftStatusInfo`, `…/is-it-bound`, `…/set-fence`, `…/wireless/bind`, `gps/anti-theft/send-track`, `gps/fence-radius-setting/list` | No |
40
+ | Base station | `station/base-station/bind`, `…/unBind`, `…/getByDeviceSn`, `…/getByStationSn/{sn}` | No |
41
+ | OTA | `ota/firmware-large/check/{sn}/{ver}`, `…/getDescription`, `…/otaUpdate`, `…/wireless/check`, `ota/firmware-small/list/{id}` | No |
42
+ | Sharing | `app_wireless_mower/device-user-share`, `…/invite/detail`, `…/invite/reply`, `…/unbind`, `device-user/openShare`, `…/closeShare` | No |
43
+ | Skins / cosmetics | `app_wireless_mower/device-skin`, `…/list`, `…/bind/switch{userId}/{id}` | No |
44
+ | Payment | `pay/v1/mobile/combo/*`, `pay/v1/mobile/order/*`, `pay/v1/paypal/*`, `pay/v1/user/card/holder*` | No |
45
+ | Misc | `app_wireless_mower/feedback-record`, `community_activities/*`, `message-send-logs/*`, `app-version/check`, `app-agreements/business-types/{type}/items`, `sale/manual/getManualBySn`, `link-address/list/{type}` | No |
46
+
47
+ V1-specific (`app_wirelessv1_mower/wirelessv1/`): `device-setting`, `device-setting/{sn}`, `device-schedule/{deviceId}`, `device/getProperty`, `device/setProperty`, `device/saveProperty`, `device/restoreFactory`.
48
+
49
+ ## Configuration
50
+
51
+ - `New`: all S, X, V and V1 series mowers (server `wirefree-specific.sk-robot.com` / `wirefree-specific-us.sk-robot.com`)
52
+ - `Old`: older devices without Wirefree branding (server `server.sk-robot.com`)
53
+
54
+ ## Features
55
+
56
+ - REST login (OAuth2 password grant) with automatic token refresh on a single `setInterval`.
57
+ - Per-account device list and status/settings polling at the configured interval.
58
+ - MQTT push:
59
+ - `New` API: TLS MQTT (port 1884 for SXV, 32884 for V1) with an RSA-encrypted password. After connect the adapter triggers `getDevAllProperties`, `getSelectRegionID`, `getAllPath`, `getConsumableItems` and `getFcState` via `get_property` POST so the full state is available immediately.
60
+ - `Old` API: plain MQTT on `mqtts.sk-robot.com:1883` with the hard-coded app user.
61
+ - Model classification into `S`, `X`, `V` (incl. V18/V3) and `V1`. Endpoints and parameters (`cmdurl`, border mode, set-property path) are picked automatically.
62
+ - Translated event codes: 12 language variants from the Home Assistant lang files are bundled in `lib/eventcodes.json` and attached as `common.states` to `event_code` and `errortype` (model-aware) so the ioBroker UI shows readable labels.
63
+
64
+ ## Writable settings
65
+
66
+ These settings are made writable directly under `<sn>.settings.*`. Writing them sends a `set_property` / `setProperty` (model-dependent)
67
+ When writing blade values, the adapter posts `{ id: "setDevBlade", key: "blade", method: "set_property", speed|height: <int> }`. After 1.5 s a status refresh is scheduled; MQTT push usually updates the values as well.
68
+
69
+ Writing `rainFlag` or `rainDelayDuration` always sends both values to the cloud (the missing one is read from the current state). The endpoint depends on the model:
70
+
71
+ - `Old`: `POST /app_mower/device/setRain/{sn}/{appId}` with `rainFlag` + `rainDelayDuration`.
72
+ - `New` V1: `POST {cmdurl}setProperty` with `method: "setRain"`, `rainFlag`, `rainDelayDuration`.
73
+ - `New` S/X/V: `POST {cmdurl}set_property` with `id: "setDevRain"`, `key: "rain"`, `rain_flag`, `delay`.
74
+
75
+ ## Schedule (`<sn>.schedule.*`)
76
+
77
+ A simple weekly plan with one window per day. The states are writable but the cloud is only updated when `set` is triggered.
78
+ The dispatched payload depends on the model:
79
+
80
+ - `Old` API: `POST /app_mower/device-schedule/setScheduling` with `deviceScheduleBOS` for all 7 days; `autoFlag` is the inverse of `pause`.
81
+ - `New` V1: `POST {cmdurl}setProperty` with `method: "setSchedule"` and `deviceScheduleBOS` containing only the active days.
82
+ - `New` S/X/V: `POST {cmdurl}set_property` with `id: "setTimeTactics"`, `key: "time_tactics"` and a `time` array (one entry per active day, day index Mon=1…Sat=6, Sun=0; start/end as seconds since midnight).
83
+
84
+ ## Known limitations
85
+
86
+ The Sunseeker API exposes far more fields than the adapter currently writes. All settings are available read-only as raw data under `<sn>.settings`.
87
+
88
+ ## References
89
+
90
+ - Home Assistant integration used as the API reference: <https://github.com/Sdahl1234/Sunseeker-lawn-mower>
91
+ - json2iob: <https://github.com/TA2k/json2iob>
92
+ - Sunseeker (wireless): <https://sunseekertech.com>
93
+ - Scheppach (wire): <https://shop.scheppach.com/Produkte/Garten-Hof/Rasenmaeher/Rasenmaehroboter/>
94
+ - Texas (wire): <https://texas-gartentechnik.eu/Sortiment/Maehroboter/>
95
+ - Adano (wire): <https://schou.com/en/pages/robotplaeneklippere>
96
+ - Brücke (wire): No HP
97
+ - Orbex (wire): No HP
98
+ - Grouw (wire): <https://schou.com/en/pages/robotplaeneklippere>
99
+
100
+ ## Description
101
+
102
+ 🇬🇧 [Description](/docs/en/README.md)</br>
103
+ 🇩🇪 [Beschreibung](/docs/de/README.md)
104
+
105
+ ## Questions
106
+
107
+ 🇩🇪 [Fragen](https://forum.iobroker.net/topic/85407/test-adapter-sunseeker-v0.0.2)
108
+
109
+ ## Changelog
110
+
111
+ <!--
112
+ Placeholder for the next version (at the beginning of the line):
113
+ ### **WORK IN PROGRESS**
114
+ -->
115
+ ### 0.0.3 (2026-10-11)
116
+
117
+ - (Lucky-ESA) Settings added
118
+ - (Lucky-ESA) Refresh properties button added
119
+ - (Lucky-ESA) Multi-angle added
120
+ - (Lucky-ESA) Custom Multi-angle added
121
+ - (Lucky-ESA) Mirroring of App version 1.7.0 regarding login, header, and MQTT password.
122
+ - (Lucky-ESA) Pattern, anti-theft added
123
+
124
+ ### 0.0.2 (2026-05-29)
125
+
126
+ - (ioBroker-Bot) Adapter requires admin >= 7.8.23 now.
127
+ - (Lucky-ESA) Added event log
128
+
129
+ ### 0.0.1 (2026-05-15)
130
+
131
+ - (TA2k) initial release
132
+
133
+ [Older changelogs can be found there](CHANGELOG_OLD.md)
134
+
135
+ ## License
136
+
137
+ MIT License
138
+
139
+ Copyright (c) 2026 iobroker-community-adapters <iobroker-community-adapters@gmx.de>
140
+ Copyright (c) 2026 TA2k <tombox2020@gmail.com>
141
+
142
+ Permission is hereby granted, free of charge, to any person obtaining a copy
143
+ of this software and associated documentation files (the "Software"), to deal
144
+ in the Software without restriction, including without limitation the rights
145
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
146
+ copies of the Software, and to permit persons to whom the Software is
147
+ furnished to do so, subject to the following conditions:
148
+
149
+ The above copyright notice and this permission notice shall be included in all
150
+ copies or substantial portions of the Software.
151
+
152
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
153
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
154
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
155
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
156
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
157
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
158
+ SOFTWARE.
@@ -1,3 +1,20 @@
1
- {
2
- "sunseeker adapter settings": "Adaptereinstellungen für sunseeker"
3
- }
1
+ {
2
+ "API": "Neu, wenn Ihr Mäher kabellos ist",
3
+ "Error limit": "Fehlergrenze für HTTP-Anfragen",
4
+ "Error limit tip": "Fehlerlimit für HTTP-Anfragen pro Tag (1–10)",
5
+ "Language": "Sprache (Bekannte Sprachen: da, de, fr, fi, pl, en)",
6
+ "Password": "Passwort",
7
+ "Polling Interval (Minutes)": "Abfrageintervall (Minuten)",
8
+ "Region": "Region",
9
+ "Request limit": "HTTPS-Anfragelimit (500–10000)",
10
+ "Request limit tip": "Als persönlicher Schutz und vor fehlerhaftem JavaScript oder Adapterproblemen",
11
+ "Restart limit": "Grenzwert für den Neustart des Adapters",
12
+ "Restart limit tip": "Adapter-Neustartlimit pro Tag (1–10)",
13
+ "Username / E-Mail": "Benutzername / E-Mail",
14
+ "deleteCloud": "Sitzungsdaten löschen",
15
+ "deleteCloudTip": "Sitzungsdaten löschen (bei Login-Probleme)",
16
+ "deleteMqtt": "MQTT-Daten löschen",
17
+ "deleteMqttTip": "MQTT-Daten löschen (bei MQTT-Probleme)",
18
+ "sessionDelete": "Achtung – Nur löschen, wenn keine Verbindung zustande kommt!!!!",
19
+ "sunseeker adapter settings": "Adaptereinstellungen für sunseeker"
20
+ }
@@ -1,3 +1,20 @@
1
- {
2
- "sunseeker adapter settings": "Adapter settings for sunseeker"
3
- }
1
+ {
2
+ "sunseeker adapter settings": "Adapter settings for sunseeker",
3
+ "Username / E-Mail": "Username / E-Mail",
4
+ "Password": "Password",
5
+ "Region": "Region",
6
+ "API": "New if your mower is wireless",
7
+ "Polling Interval (Minutes)": "Polling Interval (Minutes)",
8
+ "Language": "Language (Known Languages: da, de, fr, fi, pl, en)",
9
+ "deleteCloudTip": "Delete session data (in case of login problems)",
10
+ "deleteCloud": "Delete session data",
11
+ "deleteMqttTip": "Delete mqtt data (in case of mqtt problems)",
12
+ "deleteMqtt": "Delete mqtt data",
13
+ "sessionDelete": "Caution – Only delete if a connection cannot be established!!!!",
14
+ "Request limit": "HTTPS Request Limit (500-10000)",
15
+ "Request limit tip": "As a personal protection and against faulty JavaScript or adapter issues",
16
+ "Restart limit": "Adapter restart limit",
17
+ "Restart limit tip": "Adapter restart limit per day (1-10)",
18
+ "Error limit": "HTTP request error limit",
19
+ "Error limit tip": "HTTP request error limit per day (1-10)"
20
+ }
@@ -1,3 +1,20 @@
1
- {
2
- "sunseeker adapter settings": "Ajustes del adaptador para sunseeker"
3
- }
1
+ {
2
+ "API": "Nuevo si tu cortacésped es inalámbrico",
3
+ "Error limit": "Límite de errores de solicitud HTTP",
4
+ "Error limit tip": "Límite de errores de solicitud HTTP por día (1-10)",
5
+ "Language": "Idioma (Idiomas conocidos: da, de, fr, fi, pl, en)",
6
+ "Password": "Contraseña",
7
+ "Polling Interval (Minutes)": "Intervalo de sondeo (minutos)",
8
+ "Region": "Región",
9
+ "Request limit": "Límite de solicitudes HTTPS (500-10000)",
10
+ "Request limit tip": "Como protección personal y contra problemas de JavaScript o adaptadores defectuosos",
11
+ "Restart limit": "Límite de reinicio del adaptador",
12
+ "Restart limit tip": "Límite de reinicio del adaptador por día (1-10)",
13
+ "Username / E-Mail": "Nombre de usuario/correo electrónico",
14
+ "deleteCloud": "Eliminar datos de sesión",
15
+ "deleteCloudTip": "Eliminar datos de sesión (en caso de problemas de inicio de sesión)",
16
+ "deleteMqtt": "Eliminar datos mqtt",
17
+ "deleteMqttTip": "Eliminar datos de mqtt (en caso de problemas de mqtt)",
18
+ "sessionDelete": "Precaución: ¡elimine solo si no se puede establecer una conexión!",
19
+ "sunseeker adapter settings": "Ajustes del adaptador para sunseeker"
20
+ }
@@ -1,3 +1,20 @@
1
- {
2
- "sunseeker adapter settings": "Paramètres d'adaptateur pour sunseeker"
3
- }
1
+ {
2
+ "API": "Nouveau si votre tondeuse est sans fil",
3
+ "Error limit": "Limite d'erreur de requête HTTP",
4
+ "Error limit tip": "Limite d'erreurs de requête HTTP par jour (1-10)",
5
+ "Language": "Langue (Langues connues: da, de, fr, fi, pl, en)",
6
+ "Password": "Mot de passe",
7
+ "Polling Interval (Minutes)": "Intervalle d'interrogation (minutes)",
8
+ "Region": "Région",
9
+ "Request limit": "Limite de requêtes HTTPS (500-10000)",
10
+ "Request limit tip": "Comme protection personnelle et contre les problèmes de JavaScript ou d'adaptateur défectueux",
11
+ "Restart limit": "Limite de redémarrage de l'adaptateur",
12
+ "Restart limit tip": "Limite de redémarrage de l'adaptateur par jour (1-10)",
13
+ "Username / E-Mail": "Nom d'utilisateur / E-mail",
14
+ "deleteCloud": "Supprimer les données de session",
15
+ "deleteCloudTip": "Supprimer les données de session (en cas de problèmes de connexion)",
16
+ "deleteMqtt": "Supprimer les données mqtt",
17
+ "deleteMqttTip": "Supprimer les données mqtt (en cas de problèmes mqtt)",
18
+ "sessionDelete": "Attention – Supprimez uniquement si une connexion ne peut pas être établie !!!!",
19
+ "sunseeker adapter settings": "Paramètres d'adaptateur pour sunseeker"
20
+ }
@@ -1,3 +1,20 @@
1
- {
2
- "sunseeker adapter settings": "Impostazioni dell'adattatore per sunseeker"
3
- }
1
+ {
2
+ "API": "Novità se il tuo rasaerba è wireless",
3
+ "Error limit": "Limite di errori della richiesta HTTP",
4
+ "Error limit tip": "Limite di errori di richiesta HTTP al giorno (1-10)",
5
+ "Language": "Lingua (Lingue conosciute: da, de, fr, fi, pl, en)",
6
+ "Password": "Mot de passe",
7
+ "Polling Interval (Minutes)": "Intervallo di polling (minuti)",
8
+ "Region": "Regione",
9
+ "Request limit": "Limite richieste HTTPS (500-10000)",
10
+ "Request limit tip": "Come protezione personale e contro problemi di JavaScript o adattatori difettosi",
11
+ "Restart limit": "Limite di riavvio dell'adattatore",
12
+ "Restart limit tip": "Limite di riavvio dell'adattatore al giorno (1-10)",
13
+ "Username / E-Mail": "Nome utente/e-mail",
14
+ "deleteCloud": "Elimina i dati della sessione",
15
+ "deleteCloudTip": "Eliminare i dati della sessione (in caso di problemi di accesso)",
16
+ "deleteMqtt": "Elimina i dati mqtt",
17
+ "deleteMqttTip": "Elimina i dati mqtt (in caso di problemi mqtt)",
18
+ "sessionDelete": "Attenzione – Cancellate solo se non è possibile stabilire una connessione!!!!",
19
+ "sunseeker adapter settings": "Impostazioni dell'adattatore per sunseeker"
20
+ }
@@ -1,3 +1,20 @@
1
- {
2
- "sunseeker adapter settings": "Adapterinstellingen voor sunseeker"
3
- }
1
+ {
2
+ "API": "Nieuw als uw maaier draadloos is",
3
+ "Error limit": "Foutlimiet voor HTTP-verzoeken",
4
+ "Error limit tip": "Foutlimiet voor HTTP-verzoeken per dag (1-10)",
5
+ "Language": "Taal (Bekende talen: da, de, fr, fi, pl, en)",
6
+ "Password": "Wachtwoord",
7
+ "Polling Interval (Minutes)": "Polling-interval (minuten)",
8
+ "Region": "Regio",
9
+ "Request limit": "HTTPS-verzoeklimiet (500-10000)",
10
+ "Request limit tip": "Als persoonlijke bescherming en tegen defecte JavaScript- of adapterproblemen",
11
+ "Restart limit": "Herstartlimiet adapter",
12
+ "Restart limit tip": "Herstartlimiet adapter per dag (1-10)",
13
+ "Username / E-Mail": "Gebruikersnaam / E-mailadres",
14
+ "deleteCloud": "Sessiegegevens verwijderen",
15
+ "deleteCloudTip": "Sessiegegevens verwijderen (bij inlogproblemen)",
16
+ "deleteMqtt": "Verwijder mqtt-gegevens",
17
+ "deleteMqttTip": "Verwijder mqtt-gegevens (in geval van mqtt-problemen)",
18
+ "sessionDelete": "Let op – Verwijder alleen als er geen verbinding tot stand kan worden gebracht!!!!",
19
+ "sunseeker adapter settings": "Adapterinstellingen voor sunseeker"
20
+ }
@@ -1,3 +1,20 @@
1
- {
2
- "sunseeker adapter settings": "Ustawienia adaptera dla sunseeker"
3
- }
1
+ {
2
+ "API": "Nowość, jeśli kosiarka jest bezprzewodowa",
3
+ "Error limit": "Limit błędów żądania HTTP",
4
+ "Error limit tip": "Limit błędów żądań HTTP dziennie (1-10)",
5
+ "Language": "Język (znane języki: da, de, fr, fi, pl, en)",
6
+ "Password": "Hasło",
7
+ "Polling Interval (Minutes)": "Interwał odpytywania (minuty)",
8
+ "Region": "Region",
9
+ "Request limit": "Limit żądań HTTPS (500-10000)",
10
+ "Request limit tip": "Jako ochrona osobista i przed błędnymi problemami z JavaScriptem lub adapterem",
11
+ "Restart limit": "Limit ponownego uruchomienia adaptera",
12
+ "Restart limit tip": "Dzienny limit ponownego uruchomienia adaptera (1-10)",
13
+ "Username / E-Mail": "Nazwa użytkownika / e-mail",
14
+ "deleteCloud": "Usuń dane sesji",
15
+ "deleteCloudTip": "Usuń dane sesji (w przypadku problemów z logowaniem)",
16
+ "deleteMqtt": "Usuń dane mqtt",
17
+ "deleteMqttTip": "Usuń dane mqtt (w przypadku problemów z mqtt)",
18
+ "sessionDelete": "Uwaga – usuwać tylko wtedy, gdy nie można nawiązać połączenia!!!!",
19
+ "sunseeker adapter settings": "Ustawienia adaptera dla sunseeker"
20
+ }
@@ -1,3 +1,20 @@
1
- {
2
- "sunseeker adapter settings": "Configurações do adaptador para sunseeker"
3
- }
1
+ {
2
+ "API": "Novo se o seu cortador for sem fio",
3
+ "Error limit": "Limite de erros de solicitação HTTP",
4
+ "Error limit tip": "Limite de erros de solicitação HTTP por dia (1-10)",
5
+ "Language": "Idioma (Idiomas conhecidos: da, de, fr, fi, pl, en)",
6
+ "Password": "Senha",
7
+ "Polling Interval (Minutes)": "Intervalo de votação (minutos)",
8
+ "Region": "Região",
9
+ "Request limit": "Limite de solicitação HTTPS (500-10000)",
10
+ "Request limit tip": "Como proteção pessoal e contra JavaScript defeituoso ou problemas de adaptador",
11
+ "Restart limit": "Limite de reinicialização do adaptador",
12
+ "Restart limit tip": "Limite de reinicialização do adaptador por dia (1-10)",
13
+ "Username / E-Mail": "Nome de usuário/e-mail",
14
+ "deleteCloud": "Excluir dados da sessão",
15
+ "deleteCloudTip": "Excluir dados da sessão (em caso de problemas de login)",
16
+ "deleteMqtt": "Excluir dados mqtt",
17
+ "deleteMqttTip": "Exclua dados mqtt (em caso de problemas mqtt)",
18
+ "sessionDelete": "Cuidado – Exclua apenas se a conexão não puder ser estabelecida!!!!",
19
+ "sunseeker adapter settings": "Configurações do adaptador para sunseeker"
20
+ }
@@ -1,3 +1,20 @@
1
- {
2
- "sunseeker adapter settings": "Настройки адаптера для sunseeker"
3
- }
1
+ {
2
+ "API": "Новинка, если ваша газонокосилка беспроводная.",
3
+ "Error limit": "Предел ошибок HTTP-запроса",
4
+ "Error limit tip": "Лимит ошибок HTTP-запроса в день (1–10)",
5
+ "Language": "Язык (известные языки: da, de, fr, fi, pl, en)",
6
+ "Password": "Пароль",
7
+ "Polling Interval (Minutes)": "Интервал опроса (минуты)",
8
+ "Region": "Область",
9
+ "Request limit": "Ограничение HTTPS-запросов (500–10000)",
10
+ "Request limit tip": "В качестве личной защиты и от ошибок JavaScript или проблем с адаптером.",
11
+ "Restart limit": "Предел перезапуска адаптера",
12
+ "Restart limit tip": "Ограничение перезапуска адаптера в день (1–10)",
13
+ "Username / E-Mail": "Имя пользователя / электронная почта",
14
+ "deleteCloud": "Удалить данные сеанса",
15
+ "deleteCloudTip": "Удалить данные сеанса (в случае проблем со входом)",
16
+ "deleteMqtt": "Удалить данные mqtt",
17
+ "deleteMqttTip": "Удалить данные mqtt (в случае проблем с mqtt)",
18
+ "sessionDelete": "Внимание – удалять только в том случае, если соединение не может быть установлено!!!!",
19
+ "sunseeker adapter settings": "Настройки адаптера для sunseeker"
20
+ }