iobroker.sunseeker 0.0.1 → 0.0.2
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/LICENSE +22 -21
- package/README.md +203 -158
- package/admin/i18n/de.json +9 -3
- package/admin/i18n/en.json +9 -3
- package/admin/i18n/es.json +9 -3
- package/admin/i18n/fr.json +9 -3
- package/admin/i18n/it.json +9 -3
- package/admin/i18n/nl.json +9 -3
- package/admin/i18n/pl.json +9 -3
- package/admin/i18n/pt.json +9 -3
- package/admin/i18n/ru.json +9 -3
- package/admin/i18n/uk.json +9 -3
- package/admin/i18n/zh-cn.json +9 -3
- package/admin/jsonConfig.json +144 -75
- package/io-package.json +136 -112
- package/lib/adapter-config.d.ts +19 -19
- package/lib/sunseeker/README.md +74 -0
- package/lib/sunseeker/auth.js +237 -0
- package/lib/sunseeker/devices.js +164 -0
- package/lib/sunseeker/index.d.ts +106 -0
- package/lib/sunseeker/index.js +141 -0
- package/lib/sunseeker/map.js +476 -0
- package/lib/sunseeker/mqtt.js +344 -0
- package/lib/sunseeker/package.json +18 -0
- package/lib/sunseeker/polling-and-settings.js +431 -0
- package/main.js +1197 -1301
- package/package.json +68 -68
- /package/lib/{eventcodes.json → sunseeker/eventcodes.json} +0 -0
package/LICENSE
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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,203 @@
|
|
|
1
|
-

|
|
2
|
-
|
|
3
|
-
# ioBroker.sunseeker
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/iobroker.sunseeker)
|
|
6
|
-
[](https://www.npmjs.com/package/iobroker.sunseeker)
|
|
7
|
-

|
|
8
|
-

|
|
9
|
-
|
|
10
|
-
[](https://
|
|
11
|
-
|
|
12
|
-
**Tests:** 
|
|
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.
|
|
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
|
|
30
|
-
|
|
|
31
|
-
| Username / e-mail | Sunseeker app login
|
|
32
|
-
| Password
|
|
33
|
-
| Region
|
|
34
|
-
| API
|
|
35
|
-
| Polling interval
|
|
36
|
-
| Language
|
|
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
|
-
|
|
49
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
| `
|
|
86
|
-
| `
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
##
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
| State |
|
|
95
|
-
|
|
|
96
|
-
| `
|
|
97
|
-
| `
|
|
98
|
-
| `
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
-
|
|
135
|
-
|
|
136
|
-
##
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# ioBroker.sunseeker
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/iobroker.sunseeker)
|
|
6
|
+
[](https://www.npmjs.com/package/iobroker.sunseeker)
|
|
7
|
+

|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
[](https://www.npmjs.com/package/iobroker.sunseeker)
|
|
11
|
+
|
|
12
|
+
**Tests:** 
|
|
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
|
+
## 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
|
+
- `<sn>.events` — Mowing event log as json and manuel update button
|
|
63
|
+
- `<sn>.map` — map data (only for S/X models, when available):
|
|
64
|
+
- `info` — raw response of `/wireless_map/wireless_device/get` (sizes, magnification, `mapModifyTime`, …)
|
|
65
|
+
- `image` — heatmap (PNG data URL; often empty if the cloud has not rendered one)
|
|
66
|
+
- `wifi` — WiFi signal heatmap (PNG data URL)
|
|
67
|
+
- `net` — 4G signal heatmap (PNG data URL)
|
|
68
|
+
- `texture` — raw texture map of the work area (WebP data URL)
|
|
69
|
+
- `mapData` — map geometry as raw JSON string (zones, polygons — same source HA uses to render its livemap)
|
|
70
|
+
- `pathData` — recorded mowing path as raw JSON string
|
|
71
|
+
- `backup` — backup map JSON (from `/wireless_map/backup_map/get`)
|
|
72
|
+
- `livemap` — adapter-rendered PNG data URL (zones, obstacles, recorded path, charger position; rendered with `pureimage`)
|
|
73
|
+
|
|
74
|
+
Raw payloads (REST and MQTT) are written through `json2iob` directly — no parallel adapter-side data model is maintained.
|
|
75
|
+
|
|
76
|
+
## Commands (`<sn>.remote.*`)
|
|
77
|
+
|
|
78
|
+
| State | Effect |
|
|
79
|
+
| ------------------- | ----------------------------------------------- |
|
|
80
|
+
| `start` | Start mowing |
|
|
81
|
+
| `pause` | Pause |
|
|
82
|
+
| `dock` | Return to charging station |
|
|
83
|
+
| `stop_find_charger` | Cancel return-to-dock |
|
|
84
|
+
| `border` | Border cut (V models: mode 5 with `value:true`) |
|
|
85
|
+
| `stop` | Stop |
|
|
86
|
+
| `stop_task` | Cancel current task |
|
|
87
|
+
| `restart` | Restart task |
|
|
88
|
+
| `refresh` | Reload status now |
|
|
89
|
+
|
|
90
|
+
## Writable settings
|
|
91
|
+
|
|
92
|
+
These settings are made writable directly under `<sn>.settings.*`. Writing them sends a `set_property` / `setProperty` (model-dependent) request to the cloud:
|
|
93
|
+
|
|
94
|
+
| State | Range | Unit | Notes |
|
|
95
|
+
| ------------------- | ---------------------- | ---- | ------------- |
|
|
96
|
+
| `bladeSpeed` | 2800 – 3000 (step 100) | rpm | New API only |
|
|
97
|
+
| `bladeHeight` | 20 – 100 (step 5) | mm | New API only |
|
|
98
|
+
| `rainFlag` | boolean | — | Old + New API |
|
|
99
|
+
| `rainDelayDuration` | 0 – 720 (step 1) | min | Old + New API |
|
|
100
|
+
|
|
101
|
+
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.
|
|
102
|
+
|
|
103
|
+
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:
|
|
104
|
+
|
|
105
|
+
- `Old`: `POST /app_mower/device/setRain/{sn}/{appId}` with `rainFlag` + `rainDelayDuration`.
|
|
106
|
+
- `New` V1: `POST {cmdurl}setProperty` with `method: "setRain"`, `rainFlag`, `rainDelayDuration`.
|
|
107
|
+
- `New` S/X/V: `POST {cmdurl}set_property` with `id: "setDevRain"`, `key: "rain"`, `rain_flag`, `delay`.
|
|
108
|
+
|
|
109
|
+
## Schedule (`<sn>.schedule.*`)
|
|
110
|
+
|
|
111
|
+
A simple weekly plan with one window per day. The states are writable but the cloud is only updated when `set` is triggered.
|
|
112
|
+
|
|
113
|
+
| State | Type | Format |
|
|
114
|
+
| ------------------- | ------- | -------------------------------------------------------------------- |
|
|
115
|
+
| `monday` … `sunday` | string | `"HH:MM-HH:MM"` for the active window, empty string disables the day |
|
|
116
|
+
| `pause` | boolean | Pause the schedule without clearing the windows |
|
|
117
|
+
| `set` | button | Sends the current values to the cloud |
|
|
118
|
+
|
|
119
|
+
The dispatched payload depends on the model:
|
|
120
|
+
|
|
121
|
+
- `Old` API: `POST /app_mower/device-schedule/setScheduling` with `deviceScheduleBOS` for all 7 days; `autoFlag` is the inverse of `pause`.
|
|
122
|
+
- `New` V1: `POST {cmdurl}setProperty` with `method: "setSchedule"` and `deviceScheduleBOS` containing only the active days.
|
|
123
|
+
- `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).
|
|
124
|
+
|
|
125
|
+
## Known limitations
|
|
126
|
+
|
|
127
|
+
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:
|
|
128
|
+
|
|
129
|
+
- Zone settings (per-zone blade speed/height, ordering)
|
|
130
|
+
- OTA update
|
|
131
|
+
- Work records / mowing history
|
|
132
|
+
- V1-specific settings: return path, screen lock, border distance, schedule on/off
|
|
133
|
+
- Gen2 settings: auto_ride_edge, energy_save, night_work
|
|
134
|
+
- AI sensitivity, PIN code, map operations
|
|
135
|
+
|
|
136
|
+
## API overview
|
|
137
|
+
|
|
138
|
+
| Area | Endpoints | Used? |
|
|
139
|
+
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------- |
|
|
140
|
+
| Auth | `POST /auth/oauth/token` (login + refresh), `auth/mobile/token/social` | Yes |
|
|
141
|
+
| Device list | `GET /app_wireless_mower/device-user/getCustomDevice`, `…/list`, `…/{id}`, `…/remark` | Yes (`getCustomDevice`) |
|
|
142
|
+
| Status | `GET /app_wireless_mower/device/getBysn`, `…/info/{id}`, `…/check`, `…/readWeakSignal`, `…/getSignalType` | Yes (`getBysn`) |
|
|
143
|
+
| Settings (read) | `GET /app_wireless_mower/device-setting/{sn}`, `…/getTime/{sn}`, `device/getDeviceSettingBySn`, `device-configuration/getBySn/{sn}`, `device-model/getByClientName` | Yes (`device-setting/{sn}`) |
|
|
144
|
+
| 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) |
|
|
145
|
+
| 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 |
|
|
146
|
+
| 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) |
|
|
147
|
+
| MQTT proxy via REST | `POST /iot_mower/wireless/device/get_property`, `…/set_property`, `…/action`, `…/extra`, `…/otaUpgrade`, `…/bindBaseStation` | Yes (`get_property` after connect) |
|
|
148
|
+
| 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`) |
|
|
149
|
+
| 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` | No |
|
|
150
|
+
| 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 |
|
|
151
|
+
| Base station | `station/base-station/bind`, `…/unBind`, `…/getByDeviceSn`, `…/getByStationSn/{sn}` | No |
|
|
152
|
+
| OTA | `ota/firmware-large/check/{sn}/{ver}`, `…/getDescription`, `…/otaUpdate`, `…/wireless/check`, `ota/firmware-small/list/{id}` | No |
|
|
153
|
+
| Sharing | `app_wireless_mower/device-user-share`, `…/invite/detail`, `…/invite/reply`, `…/unbind`, `device-user/openShare`, `…/closeShare` | No |
|
|
154
|
+
| Skins / cosmetics | `app_wireless_mower/device-skin`, `…/list`, `…/bind/switch{userId}/{id}` | No |
|
|
155
|
+
| Payment | `pay/v1/mobile/combo/*`, `pay/v1/mobile/order/*`, `pay/v1/paypal/*`, `pay/v1/user/card/holder*` | No |
|
|
156
|
+
| 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 |
|
|
157
|
+
|
|
158
|
+
V1-specific (`app_wirelessv1_mower/wirelessv1/`): `device-setting`, `device-setting/{sn}`, `device-schedule/{deviceId}`, `device/getProperty`, `device/setProperty`, `device/saveProperty`, `device/restoreFactory`.
|
|
159
|
+
|
|
160
|
+
## References
|
|
161
|
+
|
|
162
|
+
- Home Assistant integration used as the API reference: <https://github.com/Bouni/sunseeker-lawn-mower>
|
|
163
|
+
- json2iob: <https://github.com/TA2k/json2iob>
|
|
164
|
+
|
|
165
|
+
## Changelog
|
|
166
|
+
|
|
167
|
+
<!--
|
|
168
|
+
Placeholder for the next version (at the beginning of the line):
|
|
169
|
+
### **WORK IN PROGRESS**
|
|
170
|
+
-->
|
|
171
|
+
### 0.0.2 (2026-05-29)
|
|
172
|
+
|
|
173
|
+
- (ioBroker-Bot) Adapter requires admin >= 7.8.23 now.
|
|
174
|
+
- (Lucky-ESA) Added event log
|
|
175
|
+
|
|
176
|
+
### 0.0.1
|
|
177
|
+
|
|
178
|
+
- (TA2k) initial release
|
|
179
|
+
|
|
180
|
+
[Older changelogs can be found there](CHANGELOG_OLD.md)## License
|
|
181
|
+
|
|
182
|
+
MIT License
|
|
183
|
+
|
|
184
|
+
Copyright (c) 2026 iobroker-community-adapters <iobroker-community-adapters@gmx.de>
|
|
185
|
+
Copyright (c) 2026 TA2k <tombox2020@gmail.com>
|
|
186
|
+
|
|
187
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
188
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
189
|
+
in the Software without restriction, including without limitation the rights
|
|
190
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
191
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
192
|
+
furnished to do so, subject to the following conditions:
|
|
193
|
+
|
|
194
|
+
The above copyright notice and this permission notice shall be included in all
|
|
195
|
+
copies or substantial portions of the Software.
|
|
196
|
+
|
|
197
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
198
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
199
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
200
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
201
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
202
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
203
|
+
SOFTWARE.
|
package/admin/i18n/de.json
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"
|
|
3
|
-
|
|
1
|
+
{
|
|
2
|
+
"API": "API",
|
|
3
|
+
"Language": "Sprache (Bekannte Sprachen: da, de, fr, fi, pl, en)",
|
|
4
|
+
"Password": "Passwort",
|
|
5
|
+
"Polling Interval (Seconds)": "Abfrageintervall (Sekunden)",
|
|
6
|
+
"Region": "Region",
|
|
7
|
+
"Username / E-Mail": "Benutzername / E-Mail",
|
|
8
|
+
"sunseeker adapter settings": "Adaptereinstellungen für sunseeker"
|
|
9
|
+
}
|
package/admin/i18n/en.json
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
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": "API",
|
|
7
|
+
"Polling Interval (Seconds)": "Polling Interval (Seconds)",
|
|
8
|
+
"Language": "Language (Known Languages: da, de, fr, fi, pl, en)"
|
|
9
|
+
}
|
package/admin/i18n/es.json
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"
|
|
3
|
-
|
|
1
|
+
{
|
|
2
|
+
"API": "API",
|
|
3
|
+
"Language": "Idioma (Idiomas conocidos: da, de, fr, fi, pl, en)",
|
|
4
|
+
"Password": "Contraseña",
|
|
5
|
+
"Polling Interval (Seconds)": "Intervalo de sondeo (segundos)",
|
|
6
|
+
"Region": "Región",
|
|
7
|
+
"Username / E-Mail": "Nombre de usuario/correo electrónico",
|
|
8
|
+
"sunseeker adapter settings": "Ajustes del adaptador para sunseeker"
|
|
9
|
+
}
|
package/admin/i18n/fr.json
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"
|
|
3
|
-
|
|
1
|
+
{
|
|
2
|
+
"API": "API",
|
|
3
|
+
"Language": "Langue (Langues connues : da, de, fr, fi, pl, en)",
|
|
4
|
+
"Password": "Mot de passe",
|
|
5
|
+
"Polling Interval (Seconds)": "Intervalle d'interrogation (secondes)",
|
|
6
|
+
"Region": "Région",
|
|
7
|
+
"Username / E-Mail": "Nom d'utilisateur / E-mail",
|
|
8
|
+
"sunseeker adapter settings": "Paramètres d'adaptateur pour sunseeker"
|
|
9
|
+
}
|
package/admin/i18n/it.json
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"
|
|
3
|
-
|
|
1
|
+
{
|
|
2
|
+
"API": "API",
|
|
3
|
+
"Language": "Lingua (Lingue conosciute: da, de, fr, fi, pl, en)",
|
|
4
|
+
"Password": "Password",
|
|
5
|
+
"Polling Interval (Seconds)": "Intervallo di polling (secondi)",
|
|
6
|
+
"Region": "Regione",
|
|
7
|
+
"Username / E-Mail": "Nome utente/e-mail",
|
|
8
|
+
"sunseeker adapter settings": "Impostazioni dell'adattatore per sunseeker"
|
|
9
|
+
}
|
package/admin/i18n/nl.json
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"
|
|
3
|
-
|
|
1
|
+
{
|
|
2
|
+
"API": "API",
|
|
3
|
+
"Language": "Taal (Bekende talen: da, de, fr, fi, pl, en)",
|
|
4
|
+
"Password": "Wachtwoord",
|
|
5
|
+
"Polling Interval (Seconds)": "Polling-interval (seconden)",
|
|
6
|
+
"Region": "Regio",
|
|
7
|
+
"Username / E-Mail": "Gebruikersnaam / E-mailadres",
|
|
8
|
+
"sunseeker adapter settings": "Adapterinstellingen voor sunseeker"
|
|
9
|
+
}
|
package/admin/i18n/pl.json
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"
|
|
3
|
-
|
|
1
|
+
{
|
|
2
|
+
"API": "API",
|
|
3
|
+
"Language": "Język (znane języki: da, de, fr, fi, pl, en)",
|
|
4
|
+
"Password": "Hasło",
|
|
5
|
+
"Polling Interval (Seconds)": "Interwał odpytywania (sekundy)",
|
|
6
|
+
"Region": "Region",
|
|
7
|
+
"Username / E-Mail": "Nazwa użytkownika / e-mail",
|
|
8
|
+
"sunseeker adapter settings": "Ustawienia adaptera dla sunseeker"
|
|
9
|
+
}
|
package/admin/i18n/pt.json
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"
|
|
3
|
-
|
|
1
|
+
{
|
|
2
|
+
"API": "API",
|
|
3
|
+
"Language": "Idioma (Idiomas conhecidos: da, de, fr, fi, pl, en)",
|
|
4
|
+
"Password": "Senha",
|
|
5
|
+
"Polling Interval (Seconds)": "Intervalo de pesquisa (segundos)",
|
|
6
|
+
"Region": "Região",
|
|
7
|
+
"Username / E-Mail": "Nome de usuário/e-mail",
|
|
8
|
+
"sunseeker adapter settings": "Configurações do adaptador para sunseeker"
|
|
9
|
+
}
|
package/admin/i18n/ru.json
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"
|
|
3
|
-
|
|
1
|
+
{
|
|
2
|
+
"API": "API",
|
|
3
|
+
"Language": "Язык (известные языки: da, de, fr, fi, pl, en)",
|
|
4
|
+
"Password": "Пароль",
|
|
5
|
+
"Polling Interval (Seconds)": "Интервал опроса (секунды)",
|
|
6
|
+
"Region": "Область",
|
|
7
|
+
"Username / E-Mail": "Имя пользователя / электронная почта",
|
|
8
|
+
"sunseeker adapter settings": "Настройки адаптера для sunseeker"
|
|
9
|
+
}
|
package/admin/i18n/uk.json
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"
|
|
3
|
-
|
|
1
|
+
{
|
|
2
|
+
"API": "API",
|
|
3
|
+
"Language": "Мова (відомі мови: da, de, fr, fi, pl, en)",
|
|
4
|
+
"Password": "Пароль",
|
|
5
|
+
"Polling Interval (Seconds)": "Інтервал опитування (секунди)",
|
|
6
|
+
"Region": "Регіон",
|
|
7
|
+
"Username / E-Mail": "Ім'я користувача / E-Mail",
|
|
8
|
+
"sunseeker adapter settings": "Налаштування адаптера для sunseeker"
|
|
9
|
+
}
|
package/admin/i18n/zh-cn.json
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"
|
|
3
|
-
|
|
1
|
+
{
|
|
2
|
+
"API": "应用程序编程接口",
|
|
3
|
+
"Language": "语言(已知语言:da、de、fr、fi、pl、en)",
|
|
4
|
+
"Password": "密码",
|
|
5
|
+
"Polling Interval (Seconds)": "轮询间隔(秒)",
|
|
6
|
+
"Region": "地区",
|
|
7
|
+
"Username / E-Mail": "用户名/电子邮件",
|
|
8
|
+
"sunseeker adapter settings": "sunseeker的适配器设置"
|
|
9
|
+
}
|