iobroker.acinfinity 0.7.1 → 0.7.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.
@@ -3,15 +3,15 @@
3
3
  * Verarbeitet Änderungen an den Port-Modi und deren Einstellungen
4
4
  */
5
5
 
6
- "use strict";
6
+ 'use strict';
7
7
 
8
8
  const {
9
9
  MODE_OPTIONS,
10
10
  SETTINGS_MODE_OPTIONS,
11
11
  SCHEDULE_DISABLED_VALUE,
12
12
  SCHEDULE_MIDNIGHT_VALUE,
13
- SCHEDULE_EOD_VALUE
14
- } = require("../constants");
13
+ SCHEDULE_EOD_VALUE,
14
+ } = require('../constants');
15
15
 
16
16
  class PortModeHandler {
17
17
  constructor(stateManager) {
@@ -26,7 +26,7 @@ class PortModeHandler {
26
26
 
27
27
  setClient(client) {
28
28
  this.client = client;
29
- this.adapter.log.debug("API-Client erfolgreich an PortModeHandler übergeben");
29
+ this.adapter.log.debug('API-Client erfolgreich an PortModeHandler übergeben');
30
30
  }
31
31
 
32
32
  /**
@@ -34,7 +34,7 @@ class PortModeHandler {
34
34
  */
35
35
  async handlePortModeChange(deviceId, portId, path, value) {
36
36
  if (path.length < 1) {
37
- this.adapter.log.warn(`Ungültiger Pfad für Port-Modus: ${path.join(".")}`);
37
+ this.adapter.log.warn(`Ungültiger Pfad für Port-Modus: ${path.join('.')}`);
38
38
  return;
39
39
  }
40
40
 
@@ -42,7 +42,7 @@ class PortModeHandler {
42
42
 
43
43
  try {
44
44
  if (!this.client) {
45
- throw new Error("API-Client nicht gesetzt.");
45
+ throw new Error('API-Client nicht gesetzt.');
46
46
  }
47
47
 
48
48
  const normalizedDeviceId = String(deviceId);
@@ -81,12 +81,11 @@ class PortModeHandler {
81
81
  */
82
82
  async getCurrentSpeeds(deviceId, portId) {
83
83
  const onSpeedState = await this.adapter.getStateAsync(`devices.${deviceId}.ports.${portId}.mode.onSpeed`);
84
- const onSpeed = (onSpeedState && typeof onSpeedState.val === "number" && onSpeedState.val > 0)
85
- ? onSpeedState.val : 3;
84
+ const onSpeed =
85
+ onSpeedState && typeof onSpeedState.val === 'number' && onSpeedState.val > 0 ? onSpeedState.val : 3;
86
86
 
87
87
  const offSpeedState = await this.adapter.getStateAsync(`devices.${deviceId}.ports.${portId}.mode.offSpeed`);
88
- const offSpeed = (offSpeedState && typeof offSpeedState.val === "number")
89
- ? offSpeedState.val : 0;
88
+ const offSpeed = offSpeedState && typeof offSpeedState.val === 'number' ? offSpeedState.val : 0;
90
89
 
91
90
  return { onSpeed, offSpeed };
92
91
  }
@@ -96,7 +95,7 @@ class PortModeHandler {
96
95
  */
97
96
  async getCurrentAtType(deviceId, portId) {
98
97
  const modeState = await this.adapter.getStateAsync(`devices.${deviceId}.ports.${portId}.mode.active`);
99
- const modeName = modeState ? modeState.val : "On";
98
+ const modeName = modeState ? modeState.val : 'On';
100
99
  const modeIndex = MODE_OPTIONS.indexOf(modeName);
101
100
  return modeIndex >= 0 ? modeIndex + 1 : 2; // fallback: On (2)
102
101
  }
@@ -114,20 +113,20 @@ class PortModeHandler {
114
113
  }
115
114
 
116
115
  switch (settingType) {
117
- case "active":
116
+ case 'active':
118
117
  await this.handleActiveModeChange(deviceId, portId, value);
119
118
  break;
120
119
 
121
- case "onSpeed":
120
+ case 'onSpeed':
122
121
  await this.handleOnSpeedChange(deviceId, portId, value);
123
122
  break;
124
123
 
125
- case "offSpeed":
124
+ case 'offSpeed':
126
125
  await this.handleOffSpeedChange(deviceId, portId, value);
127
126
  break;
128
127
 
129
128
  default:
130
- if (["timer", "cycle", "schedule", "auto", "vpd"].includes(settingType) && path.length > 1) {
129
+ if (['timer', 'cycle', 'schedule', 'auto', 'vpd'].includes(settingType) && path.length > 1) {
131
130
  await this.handleNestedPortSettingsChange(deviceId, portId, settingType, path.slice(1), value);
132
131
  } else {
133
132
  this.adapter.log.warn(`Unbekannter Port-Modus-Einstellungstyp: ${settingType}`);
@@ -148,7 +147,7 @@ class PortModeHandler {
148
147
  const modeIndex = MODE_OPTIONS.indexOf(modeName);
149
148
 
150
149
  if (modeIndex < 0) {
151
- this.adapter.log.warn(`Ungültiger Modus-Wert: "${modeName}". Gültige Werte: ${MODE_OPTIONS.join(", ")}`);
150
+ this.adapter.log.warn(`Ungültiger Modus-Wert: "${modeName}". Gültige Werte: ${MODE_OPTIONS.join(', ')}`);
152
151
  return;
153
152
  }
154
153
 
@@ -158,15 +157,17 @@ class PortModeHandler {
158
157
  // Optimistic UI update
159
158
  await this.stateManager.updateUIState(`devices.${deviceId}.ports.${portId}.mode.active`, modeName);
160
159
 
161
- this.adapter.log.info(`Modus-Wechsel: Gerät=${deviceId}, Port=${portId}, Modus="${modeName}" (atType=${atType})`);
160
+ this.adapter.log.info(
161
+ `Modus-Wechsel: Gerät=${deviceId}, Port=${portId}, Modus="${modeName}" (atType=${atType})`,
162
+ );
162
163
 
163
164
  try {
164
165
  const success = await this.client.setDeviceMode(deviceId, portId, atType, onSpeed, offSpeed);
165
166
  if (success) {
166
- await this.adapter.setStateAsync(
167
- `devices.${deviceId}.ports.${portId}.mode.active`,
168
- { val: modeName, ack: true }
169
- );
167
+ await this.adapter.setStateAsync(`devices.${deviceId}.ports.${portId}.mode.active`, {
168
+ val: modeName,
169
+ ack: true,
170
+ });
170
171
  }
171
172
  } catch (error) {
172
173
  this.adapter.log.error(`Fehler beim Modus-Wechsel: ${error.message}`);
@@ -194,10 +195,10 @@ class PortModeHandler {
194
195
  try {
195
196
  const success = await this.client.setDeviceMode(deviceId, portId, atType, speedValue, offSpeed);
196
197
  if (success) {
197
- await this.adapter.setStateAsync(
198
- `devices.${deviceId}.ports.${portId}.mode.onSpeed`,
199
- { val: speedValue, ack: true }
200
- );
198
+ await this.adapter.setStateAsync(`devices.${deviceId}.ports.${portId}.mode.onSpeed`, {
199
+ val: speedValue,
200
+ ack: true,
201
+ });
201
202
  }
202
203
  } catch (error) {
203
204
  this.adapter.log.error(`Fehler beim onSpeed-Wechsel: ${error.message}`);
@@ -225,10 +226,10 @@ class PortModeHandler {
225
226
  try {
226
227
  const success = await this.client.setDeviceMode(deviceId, portId, atType, onSpeed, speedValue);
227
228
  if (success) {
228
- await this.adapter.setStateAsync(
229
- `devices.${deviceId}.ports.${portId}.mode.offSpeed`,
230
- { val: speedValue, ack: true }
231
- );
229
+ await this.adapter.setStateAsync(`devices.${deviceId}.ports.${portId}.mode.offSpeed`, {
230
+ val: speedValue,
231
+ ack: true,
232
+ });
232
233
  }
233
234
  } catch (error) {
234
235
  this.adapter.log.error(`Fehler beim offSpeed-Wechsel: ${error.message}`);
@@ -260,19 +261,19 @@ class PortModeHandler {
260
261
  this.adapter.log.debug(`Verarbeite ${category}.${setting} = ${value}`);
261
262
 
262
263
  switch (category) {
263
- case "timer":
264
+ case 'timer':
264
265
  this.applyTimerSetting(currentSettings, setting, value);
265
266
  break;
266
- case "cycle":
267
+ case 'cycle':
267
268
  this.applyCycleSetting(currentSettings, setting, value);
268
269
  break;
269
- case "schedule":
270
+ case 'schedule':
270
271
  this.applyScheduleSetting(currentSettings, setting, value);
271
272
  break;
272
- case "auto":
273
+ case 'auto':
273
274
  this.applyAutoSetting(currentSettings, setting, value);
274
275
  break;
275
- case "vpd":
276
+ case 'vpd':
276
277
  this.applyVpdSetting(currentSettings, setting, value);
277
278
  break;
278
279
  default:
@@ -281,11 +282,7 @@ class PortModeHandler {
281
282
  }
282
283
 
283
284
  try {
284
- await this.client.updateDeviceModeSettings(
285
- deviceId,
286
- portId,
287
- Object.entries(currentSettings)
288
- );
285
+ await this.client.updateDeviceModeSettings(deviceId, portId, Object.entries(currentSettings));
289
286
  this.adapter.log.debug(`${category}.${setting} erfolgreich gesetzt`);
290
287
  } catch (apiError) {
291
288
  this.adapter.log.error(`API-Fehler bei ${category}.${setting}: ${apiError.message}`);
@@ -296,10 +293,10 @@ class PortModeHandler {
296
293
 
297
294
  applyTimerSetting(settings, setting, value) {
298
295
  switch (setting) {
299
- case "toOnMinutes":
296
+ case 'toOnMinutes':
300
297
  settings.acitveTimerOn = parseInt(value) * 60;
301
298
  break;
302
- case "toOffMinutes":
299
+ case 'toOffMinutes':
303
300
  settings.acitveTimerOff = parseInt(value) * 60;
304
301
  break;
305
302
  default:
@@ -311,10 +308,10 @@ class PortModeHandler {
311
308
 
312
309
  applyCycleSetting(settings, setting, value) {
313
310
  switch (setting) {
314
- case "onMinutes":
311
+ case 'onMinutes':
315
312
  settings.activeCycleOn = parseInt(value) * 60;
316
313
  break;
317
- case "offMinutes":
314
+ case 'offMinutes':
318
315
  settings.activeCycleOff = parseInt(value) * 60;
319
316
  break;
320
317
  default:
@@ -326,14 +323,14 @@ class PortModeHandler {
326
323
 
327
324
  applyScheduleSetting(settings, setting, value) {
328
325
  switch (setting) {
329
- case "startEnabled":
326
+ case 'startEnabled':
330
327
  settings.schedStartTime = value ? SCHEDULE_MIDNIGHT_VALUE : SCHEDULE_DISABLED_VALUE;
331
328
  break;
332
- case "endEnabled":
329
+ case 'endEnabled':
333
330
  settings.schedEndtTime = value ? SCHEDULE_EOD_VALUE : SCHEDULE_DISABLED_VALUE;
334
331
  break;
335
- case "startTime": {
336
- const parts = String(value).split(":");
332
+ case 'startTime': {
333
+ const parts = String(value).split(':');
337
334
  if (parts.length === 2) {
338
335
  settings.schedStartTime = parseInt(parts[0]) * 60 + parseInt(parts[1]);
339
336
  } else {
@@ -341,8 +338,8 @@ class PortModeHandler {
341
338
  }
342
339
  break;
343
340
  }
344
- case "endTime": {
345
- const parts = String(value).split(":");
341
+ case 'endTime': {
342
+ const parts = String(value).split(':');
346
343
  if (parts.length === 2) {
347
344
  settings.schedEndtTime = parseInt(parts[0]) * 60 + parseInt(parts[1]);
348
345
  } else {
@@ -359,54 +356,56 @@ class PortModeHandler {
359
356
 
360
357
  applyAutoSetting(settings, setting, value) {
361
358
  switch (setting) {
362
- case "settingsMode": {
359
+ case 'settingsMode': {
363
360
  const idx = SETTINGS_MODE_OPTIONS.indexOf(value);
364
- if (idx >= 0) settings.settingMode = idx;
361
+ if (idx >= 0) {
362
+ settings.settingMode = idx;
363
+ }
365
364
  break;
366
365
  }
367
- case "tempHighEnabled":
366
+ case 'tempHighEnabled':
368
367
  settings.activeHt = value ? 1 : 0;
369
368
  break;
370
- case "tempHighTrigger": {
369
+ case 'tempHighTrigger': {
371
370
  const c = parseInt(value);
372
371
  settings.devHt = c;
373
372
  settings.devHtf = Math.round(c * 1.8 + 32);
374
373
  break;
375
374
  }
376
- case "tempLowEnabled":
375
+ case 'tempLowEnabled':
377
376
  settings.activeLt = value ? 1 : 0;
378
377
  break;
379
- case "tempLowTrigger": {
378
+ case 'tempLowTrigger': {
380
379
  const c = parseInt(value);
381
380
  settings.devLt = c;
382
381
  settings.devLtf = Math.round(c * 1.8 + 32);
383
382
  break;
384
383
  }
385
- case "humidityHighEnabled":
384
+ case 'humidityHighEnabled':
386
385
  settings.activeHh = value ? 1 : 0;
387
386
  break;
388
- case "humidityHighTrigger":
387
+ case 'humidityHighTrigger':
389
388
  settings.devHh = parseInt(value);
390
389
  break;
391
- case "humidityLowEnabled":
390
+ case 'humidityLowEnabled':
392
391
  settings.activeLh = value ? 1 : 0;
393
392
  break;
394
- case "humidityLowTrigger":
393
+ case 'humidityLowTrigger':
395
394
  settings.devLh = parseInt(value);
396
395
  break;
397
- case "targetTempEnabled":
396
+ case 'targetTempEnabled':
398
397
  settings.targetTSwitch = value ? 1 : 0;
399
398
  break;
400
- case "targetTemp": {
399
+ case 'targetTemp': {
401
400
  const c = parseInt(value);
402
401
  settings.targetTemp = c;
403
402
  settings.targetTempF = Math.round(c * 1.8 + 32);
404
403
  break;
405
404
  }
406
- case "targetHumidityEnabled":
405
+ case 'targetHumidityEnabled':
407
406
  settings.targetHumiSwitch = value ? 1 : 0;
408
407
  break;
409
- case "targetHumidity":
408
+ case 'targetHumidity':
410
409
  settings.targetHumi = parseInt(value);
411
410
  break;
412
411
  default:
@@ -418,27 +417,29 @@ class PortModeHandler {
418
417
 
419
418
  applyVpdSetting(settings, setting, value) {
420
419
  switch (setting) {
421
- case "settingsMode": {
420
+ case 'settingsMode': {
422
421
  const idx = SETTINGS_MODE_OPTIONS.indexOf(value);
423
- if (idx >= 0) settings.vpdSettingMode = idx;
422
+ if (idx >= 0) {
423
+ settings.vpdSettingMode = idx;
424
+ }
424
425
  break;
425
426
  }
426
- case "highEnabled":
427
+ case 'highEnabled':
427
428
  settings.activeHtVpd = value ? 1 : 0;
428
429
  break;
429
- case "highTrigger":
430
+ case 'highTrigger':
430
431
  settings.activeHtVpdNums = Math.round(parseFloat(value) * 10);
431
432
  break;
432
- case "lowEnabled":
433
+ case 'lowEnabled':
433
434
  settings.activeLtVpd = value ? 1 : 0;
434
435
  break;
435
- case "lowTrigger":
436
+ case 'lowTrigger':
436
437
  settings.activeLtVpdNums = Math.round(parseFloat(value) * 10);
437
438
  break;
438
- case "targetEnabled":
439
+ case 'targetEnabled':
439
440
  settings.targetVpdSwitch = value ? 1 : 0;
440
441
  break;
441
- case "target":
442
+ case 'target':
442
443
  settings.targetVpd = Math.round(parseFloat(value) * 10);
443
444
  break;
444
445
  default:
@@ -3,17 +3,14 @@
3
3
  * Verarbeitet Änderungen an den erweiterten Port-Einstellungen
4
4
  */
5
5
 
6
- "use strict";
6
+ 'use strict';
7
7
 
8
- const {
9
- ADVANCED_SETTINGS_KEY,
10
- DEVICE_LOAD_TYPE_OPTIONS,
11
- DYNAMIC_RESPONSE_OPTIONS
12
- } = require("../constants");
8
+ const { ADVANCED_SETTINGS_KEY, DEVICE_LOAD_TYPE_OPTIONS, DYNAMIC_RESPONSE_OPTIONS } = require('../constants');
13
9
 
14
10
  class PortSettingsHandler {
15
11
  /**
16
12
  * Erstellt einen neuen PortSettingsHandler
13
+ *
17
14
  * @param {object} stateManager - Referenz zum StateManager
18
15
  */
19
16
  constructor(stateManager) {
@@ -24,15 +21,17 @@ class PortSettingsHandler {
24
21
 
25
22
  /**
26
23
  * Setzt den API-Client für diesen Handler
24
+ *
27
25
  * @param {object} client - AC Infinity API-Client
28
26
  */
29
27
  setClient(client) {
30
28
  this.client = client;
31
- this.adapter.log.debug("API-Client erfolgreich an PortSettingsHandler übergeben");
29
+ this.adapter.log.debug('API-Client erfolgreich an PortSettingsHandler übergeben');
32
30
  }
33
31
 
34
32
  /**
35
33
  * Verarbeitet Änderungen an erweiterten Port-Einstellungen
34
+ *
36
35
  * @param {string} deviceId - Geräte-ID
37
36
  * @param {number} portId - Port-ID
38
37
  * @param {Array} path - Pfadkomponenten
@@ -40,41 +39,45 @@ class PortSettingsHandler {
40
39
  */
41
40
  async handlePortAdvancedSettingsChange(deviceId, portId, path, value) {
42
41
  if (path.length < 1) {
43
- this.adapter.log.warn(`Ungültiger Pfad für erweiterte Port-Einstellungen: ${path.join(".")}`);
42
+ this.adapter.log.warn(`Ungültiger Pfad für erweiterte Port-Einstellungen: ${path.join('.')}`);
44
43
  return;
45
44
  }
46
-
45
+
47
46
  const setting = path[0];
48
47
  const statePath = `devices.${deviceId}.ports.${portId}.settings.${setting}`;
49
-
48
+
50
49
  // UI sofort aktualisieren, um Flackern zu vermeiden
51
50
  await this.stateManager.updateUIState(statePath, value);
52
-
51
+
53
52
  try {
54
53
  // Prüfen, ob der Client gesetzt ist
55
54
  if (!this.client) {
56
- throw new Error("API-Client nicht gesetzt. Kann Port-Einstellungen nicht aktualisieren.");
55
+ throw new Error('API-Client nicht gesetzt. Kann Port-Einstellungen nicht aktualisieren.');
57
56
  }
58
57
 
59
58
  // Hole den Port-Namen für den Aktualisierungsaufruf
60
59
  let portName = await this.adapter.getStateAsync(`devices.${deviceId}.ports.${portId}.info.name`);
61
60
  portName = portName && portName.val ? portName.val : `Port ${portId}`;
62
-
61
+
63
62
  // Aktuelle Temperatureinheit abrufen
64
63
  const tempUnitState = await this.adapter.getStateAsync(`devices.${deviceId}.settings.temperatureUnit`);
65
- const isUnitC = tempUnitState && tempUnitState.val === "C";
66
-
67
- this.adapter.log.debug(`Verarbeite Port-Einstellungsänderung: deviceId=${deviceId}, portId=${portId}, setting=${setting}, value=${value}`);
68
-
64
+ const isUnitC = tempUnitState && tempUnitState.val === 'C';
65
+
66
+ this.adapter.log.debug(
67
+ `Verarbeite Port-Einstellungsänderung: deviceId=${deviceId}, portId=${portId}, setting=${setting}, value=${value}`,
68
+ );
69
+
69
70
  try {
70
71
  switch (setting) {
71
- case "deviceType": {
72
+ case 'deviceType': {
72
73
  // value is the numeric load type ID (ioBroker sends the key of the states map)
73
74
  const loadTypeId = parseInt(value);
74
75
  if (!isNaN(loadTypeId) && DEVICE_LOAD_TYPE_OPTIONS[loadTypeId] !== undefined) {
75
- this.adapter.log.debug(`Sende Gerätetyp an API: deviceId=${deviceId}, portId=${portId}, loadTypeId=${loadTypeId} (${DEVICE_LOAD_TYPE_OPTIONS[loadTypeId]})`);
76
+ this.adapter.log.debug(
77
+ `Sende Gerätetyp an API: deviceId=${deviceId}, portId=${portId}, loadTypeId=${loadTypeId} (${DEVICE_LOAD_TYPE_OPTIONS[loadTypeId]})`,
78
+ );
76
79
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
77
- [ADVANCED_SETTINGS_KEY.DEVICE_LOAD_TYPE, loadTypeId]
80
+ [ADVANCED_SETTINGS_KEY.DEVICE_LOAD_TYPE, loadTypeId],
78
81
  ]);
79
82
  this.adapter.log.debug(`API-Antwort für Gerätetyp erfolgreich`);
80
83
  } else {
@@ -82,13 +85,15 @@ class PortSettingsHandler {
82
85
  }
83
86
  break;
84
87
  }
85
-
86
- case "dynamicResponse": {
88
+
89
+ case 'dynamicResponse': {
87
90
  const responseTypeIndex = DYNAMIC_RESPONSE_OPTIONS.indexOf(value);
88
91
  if (responseTypeIndex >= 0) {
89
- this.adapter.log.debug(`Sende dynamischen Antworttyp an API: deviceId=${deviceId}, portId=${portId}, type=${value}, index=${responseTypeIndex}`);
92
+ this.adapter.log.debug(
93
+ `Sende dynamischen Antworttyp an API: deviceId=${deviceId}, portId=${portId}, type=${value}, index=${responseTypeIndex}`,
94
+ );
90
95
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
91
- [ADVANCED_SETTINGS_KEY.DYNAMIC_RESPONSE_TYPE, responseTypeIndex]
96
+ [ADVANCED_SETTINGS_KEY.DYNAMIC_RESPONSE_TYPE, responseTypeIndex],
92
97
  ]);
93
98
  this.adapter.log.debug(`API-Antwort für dynamischen Antworttyp erfolgreich`);
94
99
  } else {
@@ -96,114 +101,136 @@ class PortSettingsHandler {
96
101
  }
97
102
  break;
98
103
  }
99
-
100
- case "dynamicTransitionTemp": {
104
+
105
+ case 'dynamicTransitionTemp': {
101
106
  const transitionTempValue = parseInt(value);
102
- this.adapter.log.debug(`Sende dynamische Übergangstemperatur an API: deviceId=${deviceId}, portId=${portId}, temp=${transitionTempValue}, isUnitC=${isUnitC}`);
103
-
107
+ this.adapter.log.debug(
108
+ `Sende dynamische Übergangstemperatur an API: deviceId=${deviceId}, portId=${portId}, temp=${transitionTempValue}, isUnitC=${isUnitC}`,
109
+ );
110
+
104
111
  if (isUnitC) {
105
112
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
106
113
  [ADVANCED_SETTINGS_KEY.DYNAMIC_TRANSITION_TEMP, transitionTempValue],
107
- [ADVANCED_SETTINGS_KEY.DYNAMIC_TRANSITION_TEMP_F, transitionTempValue * 2]
114
+ [ADVANCED_SETTINGS_KEY.DYNAMIC_TRANSITION_TEMP_F, transitionTempValue * 2],
108
115
  ]);
109
116
  } else {
110
117
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
111
118
  [ADVANCED_SETTINGS_KEY.DYNAMIC_TRANSITION_TEMP, Math.floor(transitionTempValue / 2)],
112
- [ADVANCED_SETTINGS_KEY.DYNAMIC_TRANSITION_TEMP_F, transitionTempValue]
119
+ [ADVANCED_SETTINGS_KEY.DYNAMIC_TRANSITION_TEMP_F, transitionTempValue],
113
120
  ]);
114
121
  }
115
-
122
+
116
123
  this.adapter.log.debug(`API-Antwort für dynamische Übergangstemperatur erfolgreich`);
117
124
  break;
118
125
  }
119
-
120
- case "dynamicBufferTemp": {
126
+
127
+ case 'dynamicBufferTemp': {
121
128
  const bufferTempValue = parseInt(value);
122
- this.adapter.log.debug(`Sende dynamische Puffertemperatur an API: deviceId=${deviceId}, portId=${portId}, temp=${bufferTempValue}, isUnitC=${isUnitC}`);
123
-
129
+ this.adapter.log.debug(
130
+ `Sende dynamische Puffertemperatur an API: deviceId=${deviceId}, portId=${portId}, temp=${bufferTempValue}, isUnitC=${isUnitC}`,
131
+ );
132
+
124
133
  if (isUnitC) {
125
134
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
126
135
  [ADVANCED_SETTINGS_KEY.DYNAMIC_BUFFER_TEMP, bufferTempValue],
127
- [ADVANCED_SETTINGS_KEY.DYNAMIC_BUFFER_TEMP_F, bufferTempValue * 2]
136
+ [ADVANCED_SETTINGS_KEY.DYNAMIC_BUFFER_TEMP_F, bufferTempValue * 2],
128
137
  ]);
129
138
  } else {
130
139
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
131
140
  [ADVANCED_SETTINGS_KEY.DYNAMIC_BUFFER_TEMP, Math.floor(bufferTempValue / 2)],
132
- [ADVANCED_SETTINGS_KEY.DYNAMIC_BUFFER_TEMP_F, bufferTempValue]
141
+ [ADVANCED_SETTINGS_KEY.DYNAMIC_BUFFER_TEMP_F, bufferTempValue],
133
142
  ]);
134
143
  }
135
-
144
+
136
145
  this.adapter.log.debug(`API-Antwort für dynamische Puffertemperatur erfolgreich`);
137
146
  break;
138
147
  }
139
-
148
+
140
149
  // Weitere Fälle für andere Einstellungen...
141
- case "dynamicTransitionHumidity": {
142
- this.adapter.log.debug(`Sende dynamische Übergangsfeuchtigkeit an API: deviceId=${deviceId}, portId=${portId}, humidity=${parseInt(value)}`);
150
+ case 'dynamicTransitionHumidity': {
151
+ this.adapter.log.debug(
152
+ `Sende dynamische Übergangsfeuchtigkeit an API: deviceId=${deviceId}, portId=${portId}, humidity=${parseInt(value)}`,
153
+ );
143
154
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
144
- [ADVANCED_SETTINGS_KEY.DYNAMIC_TRANSITION_HUMIDITY, parseInt(value)]
155
+ [ADVANCED_SETTINGS_KEY.DYNAMIC_TRANSITION_HUMIDITY, parseInt(value)],
145
156
  ]);
146
157
  this.adapter.log.debug(`API-Antwort für dynamische Übergangsfeuchtigkeit erfolgreich`);
147
158
  break;
148
159
  }
149
-
150
- case "dynamicBufferHumidity": {
151
- this.adapter.log.debug(`Sende dynamische Pufferfeuchtigkeit an API: deviceId=${deviceId}, portId=${portId}, humidity=${parseInt(value)}`);
160
+
161
+ case 'dynamicBufferHumidity': {
162
+ this.adapter.log.debug(
163
+ `Sende dynamische Pufferfeuchtigkeit an API: deviceId=${deviceId}, portId=${portId}, humidity=${parseInt(value)}`,
164
+ );
152
165
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
153
- [ADVANCED_SETTINGS_KEY.DYNAMIC_BUFFER_HUMIDITY, parseInt(value)]
166
+ [ADVANCED_SETTINGS_KEY.DYNAMIC_BUFFER_HUMIDITY, parseInt(value)],
154
167
  ]);
155
168
  this.adapter.log.debug(`API-Antwort für dynamische Pufferfeuchtigkeit erfolgreich`);
156
169
  break;
157
170
  }
158
-
159
- case "dynamicTransitionVPD": {
171
+
172
+ case 'dynamicTransitionVPD': {
160
173
  const transitionVpdValue = Math.round(parseFloat(value) * 10);
161
- this.adapter.log.debug(`Sende dynamisches Übergangs-VPD an API: deviceId=${deviceId}, portId=${portId}, vpd=${value}, scaledValue=${transitionVpdValue}`);
174
+ this.adapter.log.debug(
175
+ `Sende dynamisches Übergangs-VPD an API: deviceId=${deviceId}, portId=${portId}, vpd=${value}, scaledValue=${transitionVpdValue}`,
176
+ );
162
177
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
163
- [ADVANCED_SETTINGS_KEY.DYNAMIC_TRANSITION_VPD, transitionVpdValue]
178
+ [ADVANCED_SETTINGS_KEY.DYNAMIC_TRANSITION_VPD, transitionVpdValue],
164
179
  ]);
165
180
  this.adapter.log.debug(`API-Antwort für dynamisches Übergangs-VPD erfolgreich`);
166
181
  break;
167
182
  }
168
-
169
- case "dynamicBufferVPD": {
183
+
184
+ case 'dynamicBufferVPD': {
170
185
  const bufferVpdValue = Math.round(parseFloat(value) * 10);
171
- this.adapter.log.debug(`Sende dynamisches Puffer-VPD an API: deviceId=${deviceId}, portId=${portId}, vpd=${value}, scaledValue=${bufferVpdValue}`);
186
+ this.adapter.log.debug(
187
+ `Sende dynamisches Puffer-VPD an API: deviceId=${deviceId}, portId=${portId}, vpd=${value}, scaledValue=${bufferVpdValue}`,
188
+ );
172
189
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
173
- [ADVANCED_SETTINGS_KEY.DYNAMIC_BUFFER_VPD, bufferVpdValue]
190
+ [ADVANCED_SETTINGS_KEY.DYNAMIC_BUFFER_VPD, bufferVpdValue],
174
191
  ]);
175
192
  this.adapter.log.debug(`API-Antwort für dynamisches Puffer-VPD erfolgreich`);
176
193
  break;
177
194
  }
178
-
179
- case "sunriseTimerEnabled": {
180
- this.adapter.log.debug(`Sende Sonnenaufgang/Sonnenuntergang-Timer-Aktivierung an API: deviceId=${deviceId}, portId=${portId}, enabled=${value}`);
195
+
196
+ case 'sunriseTimerEnabled': {
197
+ this.adapter.log.debug(
198
+ `Sende Sonnenaufgang/Sonnenuntergang-Timer-Aktivierung an API: deviceId=${deviceId}, portId=${portId}, enabled=${value}`,
199
+ );
181
200
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
182
- [ADVANCED_SETTINGS_KEY.SUNRISE_TIMER_ENABLED, value ? 1 : 0]
201
+ [ADVANCED_SETTINGS_KEY.SUNRISE_TIMER_ENABLED, value ? 1 : 0],
183
202
  ]);
184
- this.adapter.log.debug(`API-Antwort für Sonnenaufgang/Sonnenuntergang-Timer-Aktivierung erfolgreich`);
203
+ this.adapter.log.debug(
204
+ `API-Antwort für Sonnenaufgang/Sonnenuntergang-Timer-Aktivierung erfolgreich`,
205
+ );
185
206
  break;
186
207
  }
187
-
188
- case "sunriseTimerMinutes": {
189
- this.adapter.log.debug(`Sende Sonnenaufgang/Sonnenuntergang-Timer-Minuten an API: deviceId=${deviceId}, portId=${portId}, minutes=${parseInt(value)}`);
208
+
209
+ case 'sunriseTimerMinutes': {
210
+ this.adapter.log.debug(
211
+ `Sende Sonnenaufgang/Sonnenuntergang-Timer-Minuten an API: deviceId=${deviceId}, portId=${portId}, minutes=${parseInt(value)}`,
212
+ );
190
213
  await this.client.updateAdvancedSettings(deviceId, portId, portName, [
191
- [ADVANCED_SETTINGS_KEY.SUNRISE_TIMER_DURATION, parseInt(value)]
214
+ [ADVANCED_SETTINGS_KEY.SUNRISE_TIMER_DURATION, parseInt(value)],
192
215
  ]);
193
- this.adapter.log.debug(`API-Antwort für Sonnenaufgang/Sonnenuntergang-Timer-Minuten erfolgreich`);
216
+ this.adapter.log.debug(
217
+ `API-Antwort für Sonnenaufgang/Sonnenuntergang-Timer-Minuten erfolgreich`,
218
+ );
194
219
  break;
195
220
  }
196
-
221
+
197
222
  default:
198
223
  this.adapter.log.warn(`Unbekannte erweiterte Port-Einstellung: ${setting}`);
199
224
  }
200
225
  } catch (error) {
201
- this.adapter.log.error(`API-Fehler beim Aktualisieren der Port-Einstellung ${setting}: ${error.message}`);
226
+ this.adapter.log.error(
227
+ `API-Fehler beim Aktualisieren der Port-Einstellung ${setting}: ${error.message}`,
228
+ );
202
229
  if (error.response) {
203
230
  this.adapter.log.error(`API-Antwort: ${JSON.stringify(error.response.data || {})}`);
204
231
  }
205
232
  }
206
-
233
+
207
234
  // Aktualisierung der Daten auslösen, um die Zustände zu aktualisieren
208
235
  await this.stateManager.refreshWithThrottle();
209
236
  } catch (error) {
@@ -212,4 +239,4 @@ class PortSettingsHandler {
212
239
  }
213
240
  }
214
241
 
215
- module.exports = PortSettingsHandler;
242
+ module.exports = PortSettingsHandler;