iobroker.acinfinity 0.9.5 → 0.9.6

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 (3) hide show
  1. package/README.md +167 -162
  2. package/io-package.json +14 -14
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -5,271 +5,276 @@
5
5
  [![NPM version](https://img.shields.io/npm/v/iobroker.acinfinity.svg)](https://www.npmjs.com/package/iobroker.acinfinity)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
7
 
8
- ioBroker-Adapter zur Überwachung und Steuerung von **AC Infinity UIS WiFi-Controllern**.
8
+ ioBroker adapter for monitoring and controlling **AC Infinity UIS WiFi controllers**.
9
+
10
+ > Deutsche Dokumentation: [docs/de/README.md](docs/de/README.md)
9
11
 
10
12
  ---
11
13
 
12
- ## ⚠️ Wichtige Hinweise zur Nutzung
14
+ ## ⚠️ Important Notices
13
15
 
14
- > **Nur getestet mit: Controller 69 Pro (CTR69P)**
16
+ > **Only tested with: Controller 69 Pro (CTR69P)**
15
17
  >
16
- > Alle anderen Modelle (69 WiFi, 69 Pro+, AI+, Outlet AI, Outlet AI+) sind im Code implementiert, konnten jedoch mangels Hardware **nicht getestet werden**. Die Funktion dieser Geräte ist nicht garantiert.
18
+ > All other models (69 WiFi, 69 Pro+, AI+, Outlet AI, Outlet AI+) are implemented in the code but could **not be tested** due to lack of hardware. Correct operation of these devices is not guaranteed.
17
19
  >
18
- > **Nutzung auf eigene Gefahr.** Es wird keinerlei Gewähr für Funktionsfähigkeit, Richtigkeit oder Eignung für einen bestimmten Zweck übernommen. Jegliche Haftung für direkte oder indirekte Schäden ist ausdrücklich ausgeschlosseneinschließlich Geräteausfälle, Datenverluste oder Fehlfunktionen des Systems.
20
+ > **Use at your own risk.** No warranty is provided for functionality, accuracy, or fitness for any particular purpose. Any liability for direct or indirect damages is expressly disclaimedincluding device failures, data loss, or system malfunctions.
19
21
 
20
22
  ---
21
23
 
22
- ## Herkunft & Credits
24
+ ## Origin & Credits
23
25
 
24
- Das **API-Reverse-Engineering** sowie das vollständige Verständnis der AC Infinity Cloud-Protokoll-Struktur stammen aus dem Home Assistant Adapter:
26
+ The **API reverse engineering** and full understanding of the AC Infinity cloud protocol structure originate from the Home Assistant integration:
25
27
 
26
28
  > **[dalinicus/homeassistant-acinfinity](https://github.com/dalinicus/homeassistant-acinfinity)**
27
29
  >
28
- > Alle Credits für die API-Analyse und das Protokoll-Verständnis gehen an dieses Projekt.
30
+ > All credits for the API analysis and protocol understanding go to this project.
29
31
 
30
- Der **gesamte ioBroker-Adapter-Code** wurde mit **[Claude Code](https://claude.ai/code)** (Anthropic AI) implementiert und auf Basis der oben genannten Home Assistant Integration für die ioBroker-Plattform umgeschrieben.
32
+ The **entire ioBroker adapter code** was implemented using **[Claude Code](https://claude.ai/code)** (Anthropic AI) and rewritten for the ioBroker platform based on the Home Assistant integration above.
31
33
 
32
34
  ---
33
35
 
34
- ## Unterstützte Geräte
36
+ ## Supported Devices
35
37
 
36
- | Modell | Typ-ID | Teststatus |
38
+ | Model | Type ID | Test Status |
37
39
  |---|---|---|
38
- | Controller 69 WiFi (CTR69W) | 1 | ⚠️ Nicht getestet |
39
- | Controller 69 Pro (CTR69P) | 11 | ✅ Getestet |
40
- | Controller 69 Pro+ (CTR69Q) | 18 | ⚠️ Nicht getestet |
41
- | Controller AI+ (CTR89Q) | 20 | ⚠️ Nicht getestet |
42
- | Controller Outlet AI (AC-ADA4) | 22 | ⚠️ Nicht getestet |
43
- | Controller Outlet AI+ (AC-ADA8) | 24 | ⚠️ Nicht getestet |
40
+ | Controller 69 WiFi (CTR69W) | 1 | ⚠️ Not tested |
41
+ | Controller 69 Pro (CTR69P) | 11 | ✅ Tested |
42
+ | Controller 69 Pro+ (CTR69Q) | 18 | ⚠️ Not tested |
43
+ | Controller AI+ (CTR89Q) | 20 | ⚠️ Not tested |
44
+ | Controller Outlet AI (AC-ADA4) | 22 | ⚠️ Not tested |
45
+ | Controller Outlet AI+ (AC-ADA8) | 24 | ⚠️ Not tested |
44
46
 
45
- > **Nicht unterstützt:** Nur-Bluetooth-Controller (z.B. Controller 67) — WiFi und Cloud-Sync erforderlich.
47
+ > **Not supported:** Bluetooth-only controllers (e.g. Controller 67) — WiFi and cloud sync are required.
46
48
 
47
49
  ---
48
50
 
49
- ## Funktionen
51
+ ## Features
50
52
 
51
- ### Sensoren (nur lesen)
53
+ ### Sensors (read-only)
52
54
 
53
- | State | Beschreibung | Einheit |
55
+ | State | Description | Unit |
54
56
  |---|---|---|
55
- | `sensors.temperature` | Lufttemperatur | °C |
56
- | `sensors.humidity` | Relative Luftfeuchtigkeit | % |
57
- | `sensors.vpd` | Sättigungsdefizit (VPD) | kPa |
58
- | `sensors.co2` | CO₂-Konzentration (wenn Sensor angeschlossen) | ppm |
59
- | `sensors.soilMoisture` | Bodenfeuchtigkeit (wenn Sensor angeschlossen) | % |
60
- | `sensors.waterLevel` | Wasserstand (wenn Sensor angeschlossen) | % |
61
- | `sensors.pluggedIn` | Controller Online-/Verbindungsstatus | boolean |
57
+ | `sensors.temperature` | Air temperature | °C |
58
+ | `sensors.humidity` | Relative humidity | % |
59
+ | `sensors.vpd` | Vapour pressure deficit (VPD) | kPa |
60
+ | `sensors.co2` | CO concentration (if sensor connected) | ppm |
61
+ | `sensors.soilMoisture` | Soil moisture (if sensor connected) | % |
62
+ | `sensors.waterLevel` | Water level (if sensor connected) | % |
63
+ | `sensors.pluggedIn` | Controller online/connection status | boolean |
62
64
 
63
- ### Port-Steuerung (lesen/schreiben pro Port)
65
+ ### Port Control (read/write per port)
64
66
 
65
- **Basis**
67
+ **Basic**
66
68
 
67
- | State | Beschreibung | Werte |
69
+ | State | Description | Values |
68
70
  |---|---|---|
69
- | `ports.X.mode.active` | Aktiver Modus | Off / On / Auto / Timer to On / Timer to Off / Cycle / Schedule / VPD |
70
- | `ports.X.mode.onSpeed` | Geschwindigkeit im aktiven Betrieb | 0–10 |
71
- | `ports.X.mode.offSpeed` | Mindestgeschwindigkeit im inaktiven Betrieb | 0–10 |
72
- | `ports.X.info.power` | Aktuelle Laufgeschwindigkeit | 0–10 |
73
- | `ports.X.info.state` | Laststatus (Gerät läuft) | boolean |
74
- | `ports.X.info.remainingTime` | Sekunden bis zur nächsten Statusänderung | s |
75
- | `ports.X.info.nextStateChange` | Zeitstempel der nächsten Statusänderung | ISO-String |
71
+ | `ports.X.mode.active` | Active operating mode | Off / On / Auto / Timer to On / Timer to Off / Cycle / Schedule / VPD |
72
+ | `ports.X.mode.onSpeed` | Speed during active operation | 0–10 |
73
+ | `ports.X.mode.offSpeed` | Minimum speed during inactive operation | 0–10 |
74
+ | `ports.X.info.power` | Current running speed | 0–10 |
75
+ | `ports.X.info.state` | Load status (device running) | boolean |
76
+ | `ports.X.info.remainingTime` | Seconds until next state change | s |
77
+ | `ports.X.info.nextStateChange` | Timestamp of next state change | ISO string |
76
78
 
77
- **Timer-Modus** (`ports.X.mode.timer.*`)
79
+ **Timer Mode** (`ports.X.mode.timer.*`)
78
80
 
79
- | State | Beschreibung |
81
+ | State | Description |
80
82
  |---|---|
81
- | `toOnMinutes` | Minuten bis das Gerät einschaltet |
82
- | `toOffMinutes` | Minuten bis das Gerät ausschaltet |
83
+ | `toOnMinutes` | Minutes until device turns on |
84
+ | `toOffMinutes` | Minutes until device turns off |
83
85
 
84
- **Zyklus-Modus** (`ports.X.mode.cycle.*`)
86
+ **Cycle Mode** (`ports.X.mode.cycle.*`)
85
87
 
86
- | State | Beschreibung |
88
+ | State | Description |
87
89
  |---|---|
88
- | `onMinutes` | Dauer der EIN-Phase (Minuten) |
89
- | `offMinutes` | Dauer der AUS-Phase (Minuten) |
90
+ | `onMinutes` | Duration of ON phase (minutes) |
91
+ | `offMinutes` | Duration of OFF phase (minutes) |
90
92
 
91
- **Zeitplan-Modus** (`ports.X.mode.schedule.*`)
93
+ **Schedule Mode** (`ports.X.mode.schedule.*`)
92
94
 
93
- | State | Beschreibung |
95
+ | State | Description |
94
96
  |---|---|
95
- | `startEnabled` | Tägliche Startzeit aktivieren |
96
- | `startTime` | Startzeit (HH:MM) |
97
- | `endEnabled` | Tägliche Endzeit aktivieren |
98
- | `endTime` | Endzeit (HH:MM) |
97
+ | `startEnabled` | Enable daily start time |
98
+ | `startTime` | Start time (HH:MM) |
99
+ | `endEnabled` | Enable daily end time |
100
+ | `endTime` | End time (HH:MM) |
99
101
 
100
- **Auto-Modus** (`ports.X.mode.auto.*`)
102
+ **Auto Mode** (`ports.X.mode.auto.*`)
101
103
 
102
- | State | Beschreibung |
104
+ | State | Description |
103
105
  |---|---|
104
- | `settingsMode` | Auto / Target (Zielwert) |
105
- | `tempHighEnabled` | Temperatur-Obergrenze aktivieren |
106
- | `tempHighTrigger` | Temperatur-Obergrenze (°C) |
107
- | `tempLowEnabled` | Temperatur-Untergrenze aktivieren |
108
- | `tempLowTrigger` | Temperatur-Untergrenze (°C) |
109
- | `humidityHighEnabled` | Feuchtigkeits-Obergrenze aktivieren |
110
- | `humidityHighTrigger` | Feuchtigkeits-Obergrenze (%) |
111
- | `humidityLowEnabled` | Feuchtigkeits-Untergrenze aktivieren |
112
- | `humidityLowTrigger` | Feuchtigkeits-Untergrenze (%) |
113
- | `targetTempEnabled` | Zieltemperatur-Modus aktivieren |
114
- | `targetTemp` | Zieltemperatur (°C) |
115
- | `targetHumidityEnabled` | Zielfeuchtigkeit-Modus aktivieren |
116
- | `targetHumidity` | Zielfeuchtigkeit (%) |
117
-
118
- **VPD-Modus** (`ports.X.mode.vpd.*`)
119
-
120
- | State | Beschreibung |
106
+ | `settingsMode` | Auto / Target |
107
+ | `tempHighEnabled` | Enable temperature upper limit |
108
+ | `tempHighTrigger` | Temperature upper limit (°C) |
109
+ | `tempLowEnabled` | Enable temperature lower limit |
110
+ | `tempLowTrigger` | Temperature lower limit (°C) |
111
+ | `humidityHighEnabled` | Enable humidity upper limit |
112
+ | `humidityHighTrigger` | Humidity upper limit (%) |
113
+ | `humidityLowEnabled` | Enable humidity lower limit |
114
+ | `humidityLowTrigger` | Humidity lower limit (%) |
115
+ | `targetTempEnabled` | Enable target temperature mode |
116
+ | `targetTemp` | Target temperature (°C) |
117
+ | `targetHumidityEnabled` | Enable target humidity mode |
118
+ | `targetHumidity` | Target humidity (%) |
119
+
120
+ **VPD Mode** (`ports.X.mode.vpd.*`)
121
+
122
+ | State | Description |
121
123
  |---|---|
122
- | `settingsMode` | Auto / Target (Zielwert) |
123
- | `highEnabled` | VPD-Obergrenze aktivieren |
124
- | `highTrigger` | VPD-Obergrenze (kPa) |
125
- | `lowEnabled` | VPD-Untergrenze aktivieren |
126
- | `lowTrigger` | VPD-Untergrenze (kPa) |
127
- | `targetEnabled` | Ziel-VPD-Modus aktivieren |
128
- | `target` | Ziel-VPD (kPa) |
124
+ | `settingsMode` | Auto / Target |
125
+ | `highEnabled` | Enable VPD upper limit |
126
+ | `highTrigger` | VPD upper limit (kPa) |
127
+ | `lowEnabled` | Enable VPD lower limit |
128
+ | `lowTrigger` | VPD lower limit (kPa) |
129
+ | `targetEnabled` | Enable target VPD mode |
130
+ | `target` | Target VPD (kPa) |
129
131
 
130
- **Erweiterte Port-Einstellungen** (`ports.X.settings.*`)
132
+ **Advanced Port Settings** (`ports.X.settings.*`)
131
133
 
132
- | State | Beschreibung |
134
+ | State | Description |
133
135
  |---|---|
134
- | `deviceType` | Angeschlossener Gerätetyp (Grow Light / Humidifier / Heater / AC / Fan) |
135
- | `dynamicResponse` | Transition (Übergang) / Buffer (Puffer) |
136
- | `dynamicTransitionTemp` | Übergangstemperatur-Schrittweite (°) |
137
- | `dynamicTransitionHumidity` | Übergangsfeuchtigkeit-Schrittweite (%) |
138
- | `dynamicTransitionVPD` | Übergangs-VPD-Schrittweite (kPa) |
139
- | `dynamicBufferTemp` | Puffertemperatur (°) |
140
- | `dynamicBufferHumidity` | Pufferfeuchtigkeit (%) |
141
- | `dynamicBufferVPD` | Puffer-VPD (kPa) |
142
- | `sunriseTimerEnabled` | Sonnenaufgang/Sonnenuntergang-Rampe aktiviert |
143
- | `sunriseTimerMinutes` | Rampendauer (Minuten) |
144
-
145
- ### Controller-Einstellungen (lesen/schreiben pro Controller)
146
-
147
- | State | Beschreibung |
136
+ | `deviceType` | Connected device type (Grow Light / Humidifier / Heater / AC / Fan) |
137
+ | `dynamicResponse` | Transition / Buffer |
138
+ | `dynamicTransitionTemp` | Transition temperature step size (°) |
139
+ | `dynamicTransitionHumidity` | Transition humidity step size (%) |
140
+ | `dynamicTransitionVPD` | Transition VPD step size (kPa) |
141
+ | `dynamicBufferTemp` | Buffer temperature (°) |
142
+ | `dynamicBufferHumidity` | Buffer humidity (%) |
143
+ | `dynamicBufferVPD` | Buffer VPD (kPa) |
144
+ | `sunriseTimerEnabled` | Sunrise/sunset ramp enabled |
145
+ | `sunriseTimerMinutes` | Ramp duration (minutes) |
146
+
147
+ ### Controller Settings (read/write per controller)
148
+
149
+ | State | Description |
148
150
  |---|---|
149
- | `settings.temperatureUnit` | C / F (nur lesen, Änderung in der AC Infinity App) |
150
- | `settings.temperatureCalibration` | Temperatur-Kalibrierungsoffset (°) |
151
- | `settings.humidityCalibration` | Feuchtigkeits-Kalibrierungsoffset (%) |
152
- | `settings.vpdLeafTemperatureOffset` | Blatttemperatur-Offset für VPD-Berechnung (°) |
153
- | `settings.outsideTemperature` | Außentemperatur-Referenz: Neutral / Lower / Higher |
154
- | `settings.outsideHumidity` | Außenfeuchtigkeit-Referenz: Neutral / Lower / Higher |
151
+ | `settings.temperatureUnit` | C / F (read-only; change in AC Infinity app) |
152
+ | `settings.temperatureCalibration` | Temperature calibration offset (°) |
153
+ | `settings.humidityCalibration` | Humidity calibration offset (%) |
154
+ | `settings.vpdLeafTemperatureOffset` | Leaf temperature offset for VPD calculation (°) |
155
+ | `settings.outsideTemperature` | Outside temperature reference: Neutral / Lower / Higher |
156
+ | `settings.outsideHumidity` | Outside humidity reference: Neutral / Lower / Higher |
155
157
 
156
158
  ---
157
159
 
158
- ## Einrichtung
160
+ ## Setup
159
161
 
160
- 1. Adapter in ioBroker installieren
161
- 2. **E-Mail-Adresse und Passwort** des AC Infinity-Kontos eingeben
162
- 3. **Abfrageintervall** festlegen (Minimum 10 Sekunden, Standard 30 Sekunden)
163
- 4. **Speichern & Schließen** klicken
162
+ 1. Install the adapter in ioBroker
163
+ 2. Enter the **email address and password** of your AC Infinity account
164
+ 3. Set the **polling interval** (minimum 10 seconds, default 30 seconds)
165
+ 4. Click **Save & Close**
164
166
 
165
- Der Adapter erkennt automatisch alle verbundenen Controller und legt den State-Baum unter `acinfinity.0.devices.<deviceId>` an.
167
+ The adapter automatically detects all connected controllers and creates the state tree under `acinfinity.0.devices.<deviceId>`.
166
168
 
167
169
  ---
168
170
 
169
- ## Wie die Port-Modi funktionieren
171
+ ## How Port Modes Work
170
172
 
171
- | Modus | Verhalten |
173
+ | Mode | Behaviour |
172
174
  |---|---|
173
- | **Off** | Gerät läuft dauerhaft mit `offSpeed` |
174
- | **On** | Gerät läuft dauerhaft mit `onSpeed` |
175
- | **Auto** | Gerät schaltet basierend auf Temperatur- und/oder Feuchtigkeitsschwellwerten |
176
- | **Timer to On** | Gerät schaltet nach `toOnMinutes` Minuten ein |
177
- | **Timer to Off** | Gerät schaltet nach `toOffMinutes` Minuten aus |
178
- | **Cycle** | Gerät wechselt zwischen EIN (`onMinutes`) und AUS (`offMinutes`) |
179
- | **Schedule** | Gerät läuft täglich zwischen `startTime` und `endTime` |
180
- | **VPD** | Gerät schaltet basierend auf VPD-Schwellwerten (Sättigungsdefizit) |
175
+ | **Off** | Device runs continuously at `offSpeed` |
176
+ | **On** | Device runs continuously at `onSpeed` |
177
+ | **Auto** | Device switches based on temperature and/or humidity thresholds |
178
+ | **Timer to On** | Device turns on after `toOnMinutes` minutes |
179
+ | **Timer to Off** | Device turns off after `toOffMinutes` minutes |
180
+ | **Cycle** | Device alternates between ON (`onMinutes`) and OFF (`offMinutes`) |
181
+ | **Schedule** | Device runs daily between `startTime` and `endTime` |
182
+ | **VPD** | Device switches based on VPD thresholds (vapour pressure deficit) |
181
183
 
182
- ### Dynamische Reaktion: Transition vs. Buffer
184
+ ### Dynamic Response: Transition vs. Buffer
183
185
 
184
- - **Transition (Übergang):** Das Gerät erhöht die Geschwindigkeit schrittweise, je weiter die Messwerte vom Ziel abweichen. Jede Schrittweite ändert die Lüftergeschwindigkeit um eine Stufe.
185
- - **Buffer (Puffer):** Erzeugt eine Hysteresezone um den Auslösepunkt, um schnelles Ein-/Ausschalten zu vermeiden.
186
+ - **Transition:** The device gradually increases speed the further measurements deviate from the target. Each step changes fan speed by one level.
187
+ - **Buffer:** Creates a hysteresis zone around the trigger point to avoid rapid switching.
186
188
 
187
189
  ---
188
190
 
189
- ## Fehlerbehebung
191
+ ## Troubleshooting
190
192
 
191
- **Adapter verbindet nicht**
192
- - E-Mail und Passwort in den Adapter-Einstellungen prüfen
193
- - Sicherstellen, dass der Controller in der AC Infinity App online ist
194
- - ioBroker-Log auf spezifische Fehlermeldungen prüfen
193
+ **Adapter does not connect**
194
+ - Check email and password in adapter settings
195
+ - Make sure the controller is online in the AC Infinity app
196
+ - Check the ioBroker log for specific error messages
195
197
 
196
- **Statusänderungen haben keine Wirkung**
197
- - Log auf API-Fehlerantworten prüfen
198
- - Adapter-Instanz neu speichern, um einen erneuten Login zu erzwingen
199
- - Erreichbarkeit des Controllers prüfen (State `info.connection`)
198
+ **State changes have no effect**
199
+ - Check the log for API error responses
200
+ - Re-save the adapter instance to force a new login
201
+ - Check controller reachability (`info.connection` state)
200
202
 
201
- **Sensorwerte fehlen**
202
- - CO₂-, Boden- und Wasserstand-States erhalten nur Daten, wenn die entsprechenden UIS-Sensoren physisch angeschlossen und mit der Cloud synchronisiert sind
203
+ **Sensor values missing**
204
+ - CO₂, soil moisture and water level states only receive data when the corresponding UIS sensors are physically connected and synced with the cloud
203
205
 
204
206
  ---
205
207
 
206
208
  ## Changelog
207
209
 
210
+ ### 0.9.6 (2026-03-02)
211
+ - Docs: README.md translated to English (required for ioBroker community)
212
+ - Docs: German README moved to docs/de/README.md
213
+ - CI: Node.js 24.x added to test matrix
214
+
208
215
  ### 0.9.5 (2026-03-02)
209
- - Fix: LICENSE Copyright-Format korrigiert (ioBroker Checker E7001)
210
- - CI: Node.js 18.x aus Test-Matrix entfernt (Adapter erfordert Node ≥ 20)
216
+ - Fix: LICENSE copyright format corrected (ioBroker checker E7001)
217
+ - CI: Node.js 18.x removed from test matrix (adapter requires Node ≥ 20)
211
218
 
212
219
  ### 0.9.0 (2026-03-02)
213
- - Sicherheit: Auth-Token wird nicht mehr in Logs geschrieben
214
- - Stabilität: Race Condition bei parallelen Re-Login-Versuchen behoben
215
- - Robustheit: Null-Prüfung für Sensorwerte (verhindert NaN bei nicht angeschlossenen Sensoren)
216
- - Dokumentation: HTTP-Nutzung der AC Infinity API im Code kommentiert
217
- - Hinweis: AC Infinity API unterstützt kein HTTPS (serverseitige Einschränkung)
220
+ - Security: auth token no longer written to logs
221
+ - Stability: race condition in parallel re-login attempts fixed
222
+ - Robustness: null checks for sensor values (prevents NaN for unconnected sensors)
223
+ - Docs: HTTP usage of AC Infinity API documented in code
224
+ - Note: AC Infinity API does not support HTTPS (server-side limitation)
218
225
 
219
226
  ### 0.8.5 (2026-03-01)
220
- - Admin-UI: Hinweistext jetzt rot und fett dargestellt
221
- - Admin-UI: Minimales Abfrageintervall von 5 auf 10 Sekunden erhöht
227
+ - Admin UI: disclaimer text now displayed in red and bold
228
+ - Admin UI: minimum polling interval increased from 5 to 10 seconds
222
229
 
223
230
  ### 0.8.1 (2026-03-01)
224
- - Fix: JSON-Syntaxfehler (überschüssiges Komma) in io-package.json behoben
231
+ - Fix: JSON syntax error (trailing comma) in io-package.json
225
232
 
226
233
  ### 0.8.0 (2026-03-01)
227
- - Sicherheit: axios und form-data aktualisiert zur Behebung kritischer Sicherheitslücken (GHSA-4hjh-wcwx-xvwj, GHSA-43fc-jf86-j433, GHSA-fjxv-7rqg-78g4)
234
+ - Security: updated axios and form-data to fix critical vulnerabilities (GHSA-4hjh-wcwx-xvwj, GHSA-43fc-jf86-j433, GHSA-fjxv-7rqg-78g4)
228
235
 
229
236
  ### 0.7.4 (2026-03-01)
230
- - Admin-UI: Hinweistext zur eingeschränkten Gerätekompatibilität und Haftungsausschluss hinzugefügt
237
+ - Admin UI: added disclaimer note about limited device compatibility
231
238
 
232
239
  ### 0.7.3 (2026-03-01)
233
- - Admin-UI: Warnhinweis-Box entfernt, Einstellungslayout überarbeitet, Hilfe-Link korrigiert
240
+ - Admin UI: removed warning box, improved settings layout, fixed help link
234
241
 
235
242
  ### 0.7.2 (2026-03-01)
236
- - Code: Migration auf ESLint 9 mit @iobroker/eslint-config
243
+ - Code: migrated to ESLint 9 with @iobroker/eslint-config
237
244
 
238
245
  ### 0.7.1 (2026-03-01)
239
- - Wertebereiche zu Datenpunkt-Namen hinzugefügt für bessere Lesbarkeit
246
+ - Added value ranges to state names for better readability
240
247
 
241
248
  ### 0.7.0 (2026-03-01)
242
- - Adapter-Code vollständig mit Claude Code (Anthropic AI) auf Basis von homeassistant-acinfinity neu implementiert
243
- - Alle 8 Port-Modi vollständig schreibbar aus ioBroker (Off / On / Auto / Timer to On / Timer to Off / Cycle / Schedule / VPD)
244
- - curl durch axios ersetzt keine Shell-Aufrufe mehr
245
- - Neue Sensoren: CO₂, Bodenfeuchtigkeit, Wasserstand, pluggedIn
246
- - Erweiterte Controller-Typen: CTR69W, CTR69P, CTR69Q, CTR89Q, AC-ADA4, AC-ADA8
247
- - deviceType-Bug behoben im Port-Einstellungs-Handler
248
- - Hardcodierten Referenz-Payload entfernt
249
- - Abhängigkeiten aktualisiert: js-controller ≥6.0.11, admin ≥7.6.20, Node.js ≥20
249
+ - Adapter code fully reimplemented with Claude Code (Anthropic AI) based on homeassistant-acinfinity
250
+ - All 8 port modes fully writable from ioBroker (Off / On / Auto / Timer to On / Timer to Off / Cycle / Schedule / VPD)
251
+ - Replaced curl with axios — no more shell calls
252
+ - New sensors: CO₂, soil moisture, water level, pluggedIn
253
+ - Extended controller types: CTR69W, CTR69P, CTR69Q, CTR89Q, AC-ADA4, AC-ADA8
254
+ - Fixed deviceType bug in port settings handler
255
+ - Removed hardcoded reference payload
256
+ - Updated dependencies: js-controller ≥6.0.11, admin ≥7.6.20, Node.js ≥20
250
257
 
251
258
  ### 0.5.6 (2025-04-27)
252
- - Fehlerbehebungen und Verbesserungen
259
+ - Bug fixes and improvements
253
260
 
254
261
  ### 0.5.5 (2025-04-12)
255
- - Weitere Fehler und Warnungen behoben
262
+ - Further bug fixes and warnings resolved
256
263
 
257
264
  ### 0.5.2 (2025-04-08)
258
- - Weitere Fehlerbehebungen und Verbesserungen
265
+ - Further bug fixes and improvements
259
266
 
260
267
  ### 0.4.3 (2025-03-28)
261
- - Fehlerbehebungen und Verbesserungen
268
+ - Bug fixes and improvements
262
269
 
263
270
  ### 0.3.1 (2025-03-27)
264
- - Erstveröffentlichung
271
+ - Initial release
265
272
 
266
273
  ---
267
274
 
268
- ## Haftungsausschluss
269
-
270
- Die Nutzung dieser Software erfolgt ausdrücklich auf eigene Gefahr. Es wird keinerlei Garantie für die Funktionsfähigkeit, Fehlerfreiheit oder Eignung für einen bestimmten Zweck übernommen. Jegliche Haftung für direkte oder indirekte Schäden — einschließlich, aber nicht beschränkt auf Geräteausfälle, Datenverluste oder Fehlverhalten des Systems — wird ausdrücklich ausgeschlossen.
275
+ ## Disclaimer
271
276
 
272
- The use of this software is entirely at your own risk. No guarantees are made regarding functionality, reliability, or suitability for any particular purpose. Any liability for direct or indirect damages is expressly disclaimed.
277
+ The use of this software is entirely at your own risk. No guarantees are made regarding functionality, reliability, or suitability for any particular purpose. Any liability for direct or indirect damages is expressly disclaimed — including, but not limited to, device failures, data loss, or system malfunctions.
273
278
 
274
279
  ---
275
280
 
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "acinfinity",
4
- "version": "0.9.5",
4
+ "version": "0.9.6",
5
5
  "news": {
6
+ "0.9.6": {
7
+ "en": "Docs: README translated to English; German README moved to docs/de/; CI: Node.js 24.x added to test matrix",
8
+ "de": "Doku: README auf Englisch übersetzt; Deutsche README nach docs/de/ verschoben; CI: Node.js 24.x zur Test-Matrix hinzugefügt",
9
+ "ru": "Документация: README переведён на английский; немецкий README перемещён в docs/de/; CI: добавлен Node.js 24.x",
10
+ "pt": "Docs: README traduzido para inglês; README alemão movido para docs/de/; CI: Node.js 24.x adicionado à matriz de testes",
11
+ "nl": "Docs: README vertaald naar Engels; Duitse README verplaatst naar docs/de/; CI: Node.js 24.x toegevoegd aan testmatrix",
12
+ "fr": "Docs: README traduit en anglais; README allemand déplacé vers docs/de/; CI: Node.js 24.x ajouté à la matrice de tests",
13
+ "it": "Docs: README tradotto in inglese; README tedesco spostato in docs/de/; CI: Node.js 24.x aggiunto alla matrice di test",
14
+ "es": "Docs: README traducido al inglés; README alemán movido a docs/de/; CI: Node.js 24.x añadido a la matriz de pruebas",
15
+ "pl": "Dokumentacja: README przetłumaczony na angielski; niemiecki README przeniesiony do docs/de/; CI: dodano Node.js 24.x",
16
+ "uk": "Документація: README перекладено англійською; німецький README переміщено до docs/de/; CI: додано Node.js 24.x",
17
+ "zh-cn": "文档:README翻译为英文;德文README移至docs/de/;CI:测试矩阵新增Node.js 24.x"
18
+ },
6
19
  "0.9.5": {
7
20
  "en": "Fix: LICENSE copyright format (ioBroker checker E7001); CI: drop Node.js 18.x (requires Node >=20)",
8
21
  "de": "Fix: LICENSE Copyright-Format korrigiert (E7001); CI: Node.js 18.x entfernt (erfordert Node ≥20)",
@@ -80,19 +93,6 @@
80
93
  "pl": "Admin UI: dodano informację o ograniczonej kompatybilności urządzeń",
81
94
  "uk": "Admin UI: додано застереження про обмежену сумісність пристроїв",
82
95
  "zh-cn": "管理界面:添加关于设备兼容性有限的免责声明"
83
- },
84
- "0.7.3": {
85
- "en": "Admin UI: remove warning box, clean up settings layout, fix help link",
86
- "de": "Admin-UI: Warnhinweis entfernt, Einstellungslayout bereinigt, Hilfe-Link korrigiert",
87
- "ru": "Admin UI: убран блок предупреждения, улучшен макет настроек, исправлена ссылка на справку",
88
- "pt": "Admin UI: caixa de aviso removida, layout de configurações limpo, link de ajuda corrigido",
89
- "nl": "Admin UI: waarschuwingsvak verwijderd, instellingen layout verbeterd, helplink gecorrigeerd",
90
- "fr": "Admin UI: bloc d'avertissement supprimé, mise en page des paramètres améliorée, lien d'aide corrigé",
91
- "it": "Admin UI: riquadro di avviso rimosso, layout impostazioni migliorato, link guida corretto",
92
- "es": "Admin UI: cuadro de advertencia eliminado, diseño de configuración mejorado, enlace de ayuda corregido",
93
- "pl": "Admin UI: usunięto pole ostrzeżenia, poprawiono układ ustawień, naprawiono link pomocy",
94
- "uk": "Admin UI: видалено блок попередження, покращено макет налаштувань, виправлено посилання на довідку",
95
- "zh-cn": "管理界面:移除警告框,优化设置布局,修复帮助链接"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.acinfinity",
3
- "version": "0.9.5",
3
+ "version": "0.9.6",
4
4
  "description": "Monitor and control AC Infinity devices",
5
5
  "author": {
6
6
  "name": "laurent Standard",