iobroker.al-ko 0.2.14 → 0.3.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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 Hubert <hubert.zechner@posteo.at>
3
+ Copyright (c) 2019
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  ![Logo](admin/al-ko.png)
2
+
2
3
  # ioBroker.al-ko
3
4
 
4
5
  [![NPM version](https://img.shields.io/npm/v/iobroker.al-ko.svg)](https://www.npmjs.com/package/iobroker.al-ko)
@@ -6,153 +7,73 @@
6
7
  ![Number of Installations](https://iobroker.live/badges/al-ko-installed.svg)
7
8
  ![Current version in stable repository](https://iobroker.live/badges/al-ko-stable.svg)
8
9
 
9
- [![NPM](https://nodei.co/npm/iobroker.al-ko.png?downloads=true)](https://nodei.co/npm/iobroker.al-ko/)
10
-
11
- **Tests:** ![Test and Release](https://github.com/zechnerhubert/ioBroker.al-ko/workflows/Test%20and%20Release/badge.svg)
12
-
13
- ---
10
+ ![NPM](https://nodei.co/npm/iobroker.al-ko.png?downloads=true)
14
11
 
15
- ## ioBroker.al-ko
12
+ ## Overview
16
13
 
17
- Adapter zur Kommunikation mit **AL-KO Robolinho** und weiteren AL-KO Gartengeräten.
14
+ The ioBroker.al-ko adapter integrates **AL-KO Robolinho robotic lawnmowers** and other AL-KO smart garden devices into ioBroker using the official **AL-KO Cloud API**, including real-time updates via WebSocket.
18
15
 
19
- Adapter for communication with **AL-KO Robolinho** and other AL-KO garden tools.
16
+ This adapter is a **community project** and is **not affiliated with or supported by AL-KO**.
20
17
 
21
18
  ---
22
19
 
23
- ## Funktionsumfang / Features
20
+ ## Features
24
21
 
25
- - Verbindung mit der offiziellen **AL-KO Cloud API**
26
- - Automatisches Anlegen aller relevanten States
27
- - Alle schreibbaren States werden berücksichtigt (Whitelist)
28
- - Änderungen an States werden per API zurück in die Cloud gepusht
29
- - Gerätestatus wird automatisch und in Echtzeit über **WebSocket** aktualisiert
30
- - Authentifizierung via Benutzername / Passwort und API-Client-Daten
22
+ - Connects to the official AL-KO Cloud API
23
+ - Automatically creates all readable states
24
+ - Writable states controlled through a whitelist
25
+ - Sends state changes back to AL-KO (`desired` state API)
26
+ - Real-time updates via WebSocket
27
+ - Supports multiple devices
28
+ - Works with the newest ioBroker admin/jsonConfig format
31
29
 
32
30
  ---
33
31
 
34
- ## Konfiguration
35
-
36
- Um den Adapter zu nutzen, benötigen Sie API-Zugangsdaten von AL-KO.
37
- Diese können Sie hier beantragen:
38
- 👉 [AL-KO IoT API Zugang](https://alko-garden.at/iot-api-zugang-anfordern/)
32
+ ## Requirements
39
33
 
40
- Im Admin müssen folgende Daten hinterlegt werden:
41
- - **Username** (AL-KO Konto)
42
- - **Password**
43
- - **Client ID**
44
- - **Client Secret**
34
+ You need AL-KO API credentials, which can be requested here:
45
35
 
46
- ---
36
+ ➡ https://alko-garden.at/iot-api-zugang-anfordern/
47
37
 
48
- ## DISCLAIMER
38
+ Adapter settings in Admin:
49
39
 
50
- Dieser Adapter steht **in keinem Zusammenhang mit der Firma AL-KO**.
51
- Es handelt sich um ein Community-Projekt, und AL-KO bietet **keinen Support** dafür an.
40
+ - Username (AL-KO account)
41
+ - Password
42
+ - Client ID
43
+ - Client Secret
52
44
 
53
45
  ---
54
46
 
55
- ## Changelog
56
-
57
- ### 0.2.14 (2025-11-01)
58
-
59
- **Deutsch:**
60
- - Entwicklungs-Tooling aktualisiert:
61
- - `@alcalzone/release-script` auf ^5.0.0 (Releases nur vom Default-Branch; Node.js ≥ 18 erforderlich)
62
- - `@alcalzone/release-script-plugin-iobroker` auf ^4.0.0 (ESM, Node.js ≥ 18)
63
- - `@alcalzone/release-script-plugin-license` auf ^4.0.0 (ESM, Node.js ≥ 18)
64
- - ESLint 9, TypeScript auf ^5.9.3, Prettier 3
65
- - Keine funktionalen Änderungen am Adaptercode
66
-
67
- **English:**
68
- - Development tooling updated:
69
- - `@alcalzone/release-script` to ^5.0.0 (releases only from default branch; requires Node.js ≥ 18)
70
- - `@alcalzone/release-script-plugin-iobroker` to ^4.0.0 (ESM, Node.js ≥ 18)
71
- - `@alcalzone/release-script-plugin-license` to ^4.0.0 (ESM, Node.js ≥ 18)
72
- - ESLint 9, TypeScript bumped to ^5.9.3, Prettier 3
73
- - No functional changes to adapter code
74
-
75
- ### 0.2.13 (2025-10-29)
76
-
77
- **Deutsch:**
78
- - JSON-Syntaxfehler in `io-package.json` behoben, der den Adapter-Check blockiert hat (Folgefehler „adminUI“).
79
- - VS-Code-Schemahinweis für `admin/jsonConfig.json` aktualisiert.
80
- - `size`-Attribute in `jsonConfig` erneut geprüft/validiert.
81
- - Keine funktionalen Änderungen.
82
-
83
- **English:**
84
- - Fixed a JSON syntax error in `io-package.json` that blocked adapter-check (follow-up “adminUI” errors).
85
- - Updated VS Code JSON schema hint for `admin/jsonConfig.json`.
86
- - Re-validated `size` attributes in `jsonConfig`.
87
- - No functional changes.
88
-
89
- ### 0.2.12 (2025-10-29)
90
-
91
- **Deutsch:**
92
- - Admin-UI: Offizielle jsonConfig-Schema-URL korrigiert (`.vscode/settings.json`)
93
- - Fehlende responsive `size`-Attribute in `admin/jsonConfig.json` ergänzt
94
- - Mindestanforderungen angehoben: `js-controller >= 6.0.11`, `admin >= 7.6.17`
95
- - Keine funktionalen Änderungen
96
-
97
- **English:**
98
- - Admin UI: Fixed official jsonConfig schema URL (`.vscode/settings.json`)
99
- - Added missing responsive `size` attributes in `admin/jsonConfig.json`
100
- - Raised minimum requirements: `js-controller >= 6.0.11`, `admin >= 7.6.17`
101
- - No functional changes
47
+ ## Disclaimer
102
48
 
103
- ### 0.2.11 (2025-10-28)
49
+ This adapter is **not** affiliated with or supported by AL-KO.
50
+ Do **not** contact AL-KO customer service regarding this project.
104
51
 
105
- **Deutsch:**
106
- * Kleinere Code-Korrekturen und Optimierungen vorgenommen
107
- * Keine funktionalen Änderungen – Stabilität und Wartbarkeit verbessert
52
+ ---
108
53
 
109
- **English:**
110
- * Minor code corrections and optimizations
111
- * No functional changes – improved stability and maintainability
54
+ ## Latest Changes
112
55
 
113
- ### 0.2.10 (2025-10-28)
56
+ ### **0.2.16 (unreleased / development)**
114
57
 
115
- **Deutsch:**
116
- - Adapter-Kategorie angepasst: Typ von 'hardware' auf 'garden' geändert.
117
- - Keine funktionalen Änderungen für Anwender
58
+ - Improved instance handling and object hierarchy
59
+ - Better separation of writable and non-writable states
60
+ - Added axios global timeout
61
+ - Introduced adapter-safe timers (`this.setTimeout`, `this.setInterval`)
62
+ - Many internal improvements and preparations for future patches
118
63
 
119
- **English:**
120
- - Changed adapter type from 'hardware' to 'garden' for proper categorization in ioBroker Admin and repositories.
121
- - No functional changes for end users
64
+ ### **0.2.15 (2025-11-02)**
122
65
 
123
- ### 0.2.9 (2025-10-28)
66
+ - Cleaned up admin/jsonConfig structure for adapter-check
67
+ - Added missing `size` attributes
68
+ - Added `.commitinfo` to `.gitignore`
69
+ - No functional changes
124
70
 
125
- **Deutsch:**
126
- - Wartungsupdate: npm-Abhängigkeitskonflikte (`sinon-chai` vs. `chai`) behoben
127
- - ESLint-Konfiguration auf Version 9 mit `@iobroker/eslint-config` v2.2.0 aktualisiert
128
- - CI-Stabilität auf GitHub Actions verbessert
129
- - Keine funktionalen Änderungen für Anwender
71
+ **Full changelog here:**
72
+ **[CHANGELOG.md](./CHANGELOG.md)**
130
73
 
131
- **English:**
132
- - Maintenance update: resolved npm dependency conflicts (`sinon-chai` vs `chai`)
133
- - Updated ESLint setup to v9 + `@iobroker/eslint-config` v2.2.0
134
- - Improved GitHub Actions CI stability
135
- - No functional changes for end users
74
+ ---
136
75
 
137
76
  ## License
138
- MIT License
139
-
140
- Copyright (c) 2025 Hubert <hubertiob@posteo.at>
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.
77
+
78
+ This project is released under the **MIT License**.
79
+ See the included **LICENSE** file for full details.
@@ -1,5 +1,5 @@
1
1
  {
2
- "al-ko adapter settings": "Adaptereinstellungen für al-ko",
3
- "option1": "Option1",
4
- "option2": "Option2"
5
- }
2
+ "al-ko adapter settings": "Adaptereinstellungen für al-ko",
3
+ "option1": "Option1",
4
+ "option2": "Option2"
5
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "al-ko adapter settings": "Adapter settings for al-ko",
3
- "option1": "option1",
4
- "option2": "option2"
5
- }
2
+ "al-ko adapter settings": "Adapter settings for al-ko",
3
+ "option1": "option1",
4
+ "option2": "option2"
5
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "al-ko adapter settings": "Ajustes del adaptador para al-ko",
3
- "option1": "Opción1",
4
- "option2": "opción 2"
5
- }
2
+ "al-ko adapter settings": "Ajustes del adaptador para al-ko",
3
+ "option1": "Opción1",
4
+ "option2": "opción 2"
5
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "al-ko adapter settings": "Paramètres d'adaptateur pour al-ko",
3
- "option1": "option1",
4
- "option2": "Option2"
5
- }
2
+ "al-ko adapter settings": "Paramètres d'adaptateur pour al-ko",
3
+ "option1": "option1",
4
+ "option2": "Option2"
5
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "al-ko adapter settings": "Impostazioni dell'adattatore per al-ko",
3
- "option1": "opzione1",
4
- "option2": "opzione2"
5
- }
2
+ "al-ko adapter settings": "Impostazioni dell'adattatore per al-ko",
3
+ "option1": "opzione1",
4
+ "option2": "opzione2"
5
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "al-ko adapter settings": "Adapterinstellingen voor al-ko",
3
- "option1": "Option1",
4
- "option2": "Optie2"
5
- }
2
+ "al-ko adapter settings": "Adapterinstellingen voor al-ko",
3
+ "option1": "Option1",
4
+ "option2": "Optie2"
5
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "al-ko adapter settings": "Ustawienia adaptera dla al-ko",
3
- "option1": "opcja 1",
4
- "option2": "opcja2"
5
- }
2
+ "al-ko adapter settings": "Ustawienia adaptera dla al-ko",
3
+ "option1": "opcja 1",
4
+ "option2": "opcja2"
5
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "al-ko adapter settings": "Configurações do adaptador para al-ko",
3
- "option1": "opção1",
4
- "option2": "opção2"
5
- }
2
+ "al-ko adapter settings": "Configurações do adaptador para al-ko",
3
+ "option1": "opção1",
4
+ "option2": "opção2"
5
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "al-ko adapter settings": "Настройки адаптера для al-ko",
3
- "option1": "вариант1",
4
- "option2": "вариант2"
5
- }
2
+ "al-ko adapter settings": "Настройки адаптера для al-ko",
3
+ "option1": "вариант1",
4
+ "option2": "вариант2"
5
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "al-ko adapter settings": "Налаштування адаптера для al-ko",
3
- "option1": "Варіант1",
4
- "option2": "Варіант2"
5
- }
2
+ "al-ko adapter settings": "Налаштування адаптера для al-ko",
3
+ "option1": "Варіант1",
4
+ "option2": "Варіант2"
5
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "al-ko adapter settings": "al-ko的适配器设置",
3
- "option1": "选项1",
4
- "option2": "选项2"
5
- }
2
+ "al-ko adapter settings": "al-ko的适配器设置",
3
+ "option1": "选项1",
4
+ "option2": "选项2"
5
+ }
@@ -1,51 +1,48 @@
1
1
  {
2
- "$schema": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/packages/jsonConfig/schemas/jsonConfig.json",
3
- "type": "tabs",
2
+ "type": "panel",
3
+ "label": {
4
+ "en": "General",
5
+ "de": "Allgemein",
6
+ "ru": "Общие",
7
+ "pt": "Geral",
8
+ "nl": "Algemeen",
9
+ "fr": "Général",
10
+ "it": "Generale",
11
+ "es": "General",
12
+ "pl": "Ogólne",
13
+ "uk": "Загальні",
14
+ "zh-cn": "常规"
15
+ },
4
16
  "items": {
5
- "general": {
6
- "type": "panel",
17
+ "username": {
18
+ "type": "text",
19
+ "label": { "en": "Username", "de": "Benutzername" },
20
+ "placeholder": "Enter your AL-KO account username",
21
+ "size": { "xs": 12, "sm": 6, "md": 6, "lg": 4, "xl": 4 }
22
+ },
23
+ "password": {
24
+ "type": "password",
25
+ "label": { "en": "Password", "de": "Passwort" },
26
+ "size": { "xs": 12, "sm": 6, "md": 6, "lg": 4, "xl": 4 }
27
+ },
28
+ "clientId": {
29
+ "type": "text",
30
+ "label": { "en": "Client ID", "de": "Client-ID" },
31
+ "size": { "xs": 12, "sm": 6, "md": 6, "lg": 4, "xl": 4 }
32
+ },
33
+ "clientSecret": {
34
+ "type": "password",
35
+ "label": { "en": "Client Secret", "de": "Client-Secret" },
36
+ "size": { "xs": 12, "sm": 6, "md": 6, "lg": 4, "xl": 4 }
37
+ },
38
+ "wsDebug": {
39
+ "type": "checkbox",
7
40
  "label": {
8
- "en": "General",
9
- "de": "Allgemein",
10
- "ru": "Общие",
11
- "pt": "Geral",
12
- "nl": "Algemeen",
13
- "fr": "Général",
14
- "it": "Generale",
15
- "es": "General",
16
- "pl": "Ogólne",
17
- "uk": "Загальні",
18
- "zh-cn": "常规"
41
+ "en": "Enable WebSocket message logging",
42
+ "de": "WebSocket-Nachrichten protokollieren"
19
43
  },
20
- "items": {
21
- "username": {
22
- "type": "text",
23
- "label": { "en": "Username", "de": "Benutzername" },
24
- "placeholder": "Enter your AL-KO account username",
25
- "size": { "xs": 12, "sm": 6, "md": 6, "lg": 4, "xl": 4 }
26
- },
27
- "password": {
28
- "type": "password",
29
- "label": { "en": "Password", "de": "Passwort" },
30
- "size": { "xs": 12, "sm": 6, "md": 6, "lg": 4, "xl": 4 }
31
- },
32
- "clientId": {
33
- "type": "text",
34
- "label": { "en": "Client ID", "de": "Client-ID" },
35
- "size": { "xs": 12, "sm": 6, "md": 6, "lg": 4, "xl": 4 }
36
- },
37
- "clientSecret": {
38
- "type": "password",
39
- "label": { "en": "Client Secret", "de": "Client-Secret" },
40
- "size": { "xs": 12, "sm": 6, "md": 6, "lg": 4, "xl": 4 }
41
- },
42
- "wsDebug": {
43
- "type": "checkbox",
44
- "label": { "en": "Enable WebSocket message logging", "de": "WebSocket-Nachrichten protokollieren" },
45
- "default": false,
46
- "size": { "xs": 12, "sm": 6, "md": 6, "lg": 4, "xl": 4 }
47
- }
48
- }
44
+ "default": false,
45
+ "size": { "xs": 12, "sm": 6, "md": 6, "lg": 4, "xl": 4 }
49
46
  }
50
47
  }
51
48
  }
@@ -0,0 +1,68 @@
1
+ # ioBroker.al-ko – Deutsche Dokumentation
2
+
3
+ ![Logo](../../admin/al-ko-128.png)
4
+
5
+ ## Überblick
6
+
7
+ Der ioBroker.al-ko Adapter integriert **AL-KO Robolinho Rasenroboter** und weitere AL-KO Smart-Garden-Geräte in ioBroker.
8
+ Die Kommunikation erfolgt über die **offizielle AL-KO Cloud API**, inklusive Echtzeit-Updates per WebSocket.
9
+
10
+ ---
11
+
12
+ ## Funktionen
13
+
14
+ - Verbindung zur offiziellen AL-KO Cloud API
15
+ - Automatische Erstellung aller lesbaren Zustände
16
+ - Schreibbare Zustände über Whitelist steuerbar
17
+ - Änderungen werden per PATCH an AL-KO (`desired` State) übermittelt
18
+ - Echtzeitupdates per WebSocket
19
+ - Unterstützung mehrerer Geräte
20
+ - Kompatibel mit modernem ioBroker Admin / jsonConfig
21
+
22
+ ---
23
+
24
+ ## Voraussetzungen
25
+
26
+ Für die Nutzung werden AL-KO API-Zugangsdaten benötigt:
27
+
28
+ Anfordern unter:
29
+ ➡ https://alko-garden.at/iot-api-zugang-anfordern/
30
+
31
+ Erforderlich:
32
+
33
+ - Benutzername
34
+ - Passwort
35
+ - Client ID
36
+ - Client Secret
37
+
38
+ Eintragen unter: **Instanzen → al-ko → Konfiguration**
39
+
40
+ ---
41
+
42
+ ## Haftungsausschluss
43
+
44
+ Dieser Adapter ist ein **Community-Projekt**.
45
+ AL-KO bietet **keinen offiziellen Support** hierfür.
46
+
47
+ ---
48
+
49
+ ## Änderungen (Auszug)
50
+
51
+ ### **0.3.0**
52
+
53
+ Alle Änderungen siehe vollständigen Changelog:
54
+ ➡ [CHANGELOG.md](../../CHANGELOG.md)
55
+
56
+ Wesentliche Neuerungen:
57
+
58
+ - Verbesserte Objektstruktur
59
+ - Überarbeitetes Logging
60
+ - Verbesserte ID-Sanitärisierung
61
+ - Globale Timeouts und adapter-sichere Timer
62
+ - Dokumentation überarbeitet
63
+
64
+ ---
65
+
66
+ ## Lizenz
67
+
68
+ Veröffentlicht unter der **MIT-Lizenz**.
@@ -0,0 +1,66 @@
1
+ # ioBroker.al-ko – English Documentation
2
+
3
+ ![Logo](../../admin/al-ko-128.png)
4
+
5
+ ## Overview
6
+
7
+ The ioBroker.al-ko adapter integrates **AL-KO Robolinho robotic mowers** and other AL-KO smart garden devices into ioBroker.
8
+ It communicates with the official **AL-KO Cloud API**, including real-time updates via WebSockets.
9
+
10
+ ---
11
+
12
+ ## Features
13
+
14
+ - Connection to the official AL-KO Cloud API
15
+ - Automatic creation of all readable states
16
+ - Writable states controlled through a whitelist
17
+ - Changes to writable states are propagated back to AL-KO via the `desired` API
18
+ - Real-time updates through WebSocket
19
+ - Supports multiple devices
20
+ - Fully compatible with modern ioBroker admin/jsonConfig
21
+
22
+ ---
23
+
24
+ ## Requirements
25
+
26
+ To use this adapter, AL-KO API credentials are required.
27
+
28
+ Request access at:
29
+ ➡ https://alko-garden.at/iot-api-zugang-anfordern/
30
+
31
+ Required fields:
32
+
33
+ - Username
34
+ - Password
35
+ - Client ID
36
+ - Client Secret
37
+
38
+ Enter these values in Admin → Instance Settings.
39
+
40
+ ---
41
+
42
+ ## Disclaimer
43
+
44
+ This adapter is **not** affiliated with or supported by AL-KO.
45
+ It is a **community-developed project**.
46
+
47
+ ---
48
+
49
+ ## Changes (Summary)
50
+
51
+ ### **0.3.0**
52
+
53
+ See full changelog here:
54
+ ➡ [CHANGELOG.md](../../CHANGELOG.md)
55
+
56
+ Key updates:
57
+
58
+ - Internal cleanup and consistency improvements
59
+ - Improved logging, ID sanitizing and timers
60
+ - Documentation restructured
61
+
62
+ ---
63
+
64
+ ## License
65
+
66
+ Released under the **MIT License**.