iobroker.hydrawise 1.0.2 → 1.0.4

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) 2024 SentiQ <fischer.yves@web.de>
3
+ Copyright (c) 2025 SentiQ <yves.nuesser@proton.me>
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
@@ -25,10 +25,10 @@ You can see all controller information, schedules and sensors. It is also possib
25
25
 
26
26
  ## Documentation
27
27
 
28
- - log into https://app.hydrawise.com/config/account-details
29
- - generate API Key by clicking "Generate API Key" under "Account Settings"
30
- - paste key into adapter settings
31
- - API documentation: https://support.hydrawise.com/hc/en-us/articles/360008965753-Hydrawise-API-Information
28
+ - log into https://app.hydrawise.com/config/account-details
29
+ - generate API Key by clicking "Generate API Key" under "Account Settings"
30
+ - paste key into adapter settings
31
+ - API documentation: https://support.hydrawise.com/hc/en-us/articles/360008965753-Hydrawise-API-Information
32
32
 
33
33
  > **Note**
34
34
  > After updating from 0.0.15 you have to re-enter your API key
@@ -39,6 +39,15 @@ You can see all controller information, schedules and sensors. It is also possib
39
39
  Placeholder for the next version (at the beginning of the line):
40
40
  ### **WORK IN PROGRESS**
41
41
  -->
42
+ ### 1.0.4 (2025-12-05)
43
+
44
+ - (SentiQ) fixed dependencies
45
+ - (SentiQ) fixed schema URLs
46
+
47
+ ### 1.0.3 (2025-12-05)
48
+
49
+ - (SentiQ) updated dependencies
50
+
42
51
  ### 1.0.2 (2024-09-24)
43
52
 
44
53
  - (SentiQ) fixed issues detected by repository checker
@@ -49,154 +58,154 @@ You can see all controller information, schedules and sensors. It is also possib
49
58
 
50
59
  ### 1.0.0 (2024-04-30)
51
60
 
52
- - (SentiQ) fixed adapter crash after dns not reachable
61
+ - (SentiQ) fixed adapter crash after dns not reachable
53
62
 
54
63
  ### 0.3.3 (2024-04-22)
55
64
 
56
- - (SentiQ) updated dependencies
65
+ - (SentiQ) updated dependencies
57
66
 
58
67
  ### 0.3.2 (2024-04-19)
59
68
 
60
- - (SentiQ) added default value to parameter `apiInterval`
61
- - (SentiQ) added translations
69
+ - (SentiQ) added default value to parameter `apiInterval`
70
+ - (SentiQ) added translations
62
71
 
63
72
  ### 0.3.1 (2024-04-18)
64
73
 
65
- - (SentiQ) removed parameter `apiKey` in method call
74
+ - (SentiQ) removed parameter `apiKey` in method call
66
75
 
67
76
  ### 0.3.0 (2024-04-18)
68
77
 
69
- - (SentiQ) added api interval to settings
70
- - (SentiQ) changed interval of schedule endpoint from 5 minutes to 1 minute
78
+ - (SentiQ) added api interval to settings
79
+ - (SentiQ) changed interval of schedule endpoint from 5 minutes to 1 minute
71
80
 
72
81
  ### 0.2.8 (2024-04-08)
73
82
 
74
- - (SentiQ) fixed tier and license
83
+ - (SentiQ) fixed tier and license
75
84
 
76
85
  ### 0.2.7 (2024-04-08)
77
86
 
78
- - (SentiQ) fixed type of runDefault object
87
+ - (SentiQ) fixed type of runDefault object
79
88
 
80
89
  ### 0.2.6 (2024-04-08)
81
90
 
82
- - (SentiQ) fixed type of `runDefault`
91
+ - (SentiQ) fixed type of `runDefault`
83
92
 
84
93
  ### 0.2.5 (2024-04-07)
85
94
 
86
- - (SentiQ) NodeJS >= 18.x and js-controller >= 5 is required
95
+ - (SentiQ) NodeJS >= 18.x and js-controller >= 5 is required
87
96
 
88
97
  ### 0.2.4 (2024-02-01)
89
98
 
90
- - (SentiQ) updated dependencies
99
+ - (SentiQ) updated dependencies
91
100
 
92
101
  ### 0.2.3 (2023-10-28)
93
102
 
94
- - (SentiQ) NodeJS 16.x is required
95
- - (SentiQ) updated dependencies
103
+ - (SentiQ) NodeJS 16.x is required
104
+ - (SentiQ) updated dependencies
96
105
 
97
106
  ### 0.2.2 (2023-09-22)
98
107
 
99
- - (SentiQ) fixed versions
108
+ - (SentiQ) fixed versions
100
109
 
101
110
  ### 0.2.0 (2023-09-22)
102
111
 
103
- - (SentiQ) added button to run zone for default runtime
112
+ - (SentiQ) added button to run zone for default runtime
104
113
 
105
114
  ### 0.1.2 (2023-08-22)
106
115
 
107
- - (SentiQ) added link to api docu
116
+ - (SentiQ) added link to api docu
108
117
 
109
118
  ### 0.1.1 (2023-08-22)
110
119
 
111
- - (SentiQ) fixed random crash, when api domain can't be resolved by dns
112
- - (SentiQ) added time string of last api call
120
+ - (SentiQ) fixed random crash, when api domain can't be resolved by dns
121
+ - (SentiQ) added time string of last api call
113
122
 
114
123
  ### 0.0.19 (2023-08-05)
115
124
 
116
- - (SentiQ) fixed button roles
125
+ - (SentiQ) fixed button roles
117
126
 
118
127
  ### 0.0.18 (2023-08-05)
119
128
 
120
- - (SentiQ) fixed timeout
129
+ - (SentiQ) fixed timeout
121
130
 
122
131
  ### 0.0.17 (2023-08-03)
123
132
 
124
- - (SentiQ) fixed adapter crash
133
+ - (SentiQ) fixed adapter crash
125
134
 
126
135
  ### 0.0.16 (2023-08-02)
127
136
 
128
- - (SentiQ) added more information to README
129
- - (SentiQ) encrypted apiKey
130
- - (SentiQ) removed logging of apiKey
131
- - (SentiQ) added filtering of invalid characters in ids
132
- - (SentiQ) added check of ack flag
133
- - (SentiQ) fixed roles
134
- - (SentiQ) fixed error message
135
- - (SentiQ) removed usage of clearTimeout
137
+ - (SentiQ) added more information to README
138
+ - (SentiQ) encrypted apiKey
139
+ - (SentiQ) removed logging of apiKey
140
+ - (SentiQ) added filtering of invalid characters in ids
141
+ - (SentiQ) added check of ack flag
142
+ - (SentiQ) fixed roles
143
+ - (SentiQ) fixed error message
144
+ - (SentiQ) removed usage of clearTimeout
136
145
 
137
146
  ### 0.0.15 (2023-06-29)
138
147
 
139
- - (SentiQ) updated dependencies
148
+ - (SentiQ) updated dependencies
140
149
 
141
150
  ### 0.0.14 (2023-06-29)
142
151
 
143
- - (SentiQ) fixing version
152
+ - (SentiQ) fixing version
144
153
 
145
154
  ### 0.0.12 (2023-06-29)
146
155
 
147
- - (SentiQ) changed value of `last_contact` to date string format
156
+ - (SentiQ) changed value of `last_contact` to date string format
148
157
 
149
158
  ### 0.0.11 (2023-06-28)
150
159
 
151
- - (SentiQ) raised timeouts
152
- - (SentiQ) fixed types
160
+ - (SentiQ) raised timeouts
161
+ - (SentiQ) fixed types
153
162
 
154
163
  ### 0.0.10 (2023-06-27)
155
164
 
156
- - (SentiQ) fixed adapter crash
157
- - (SentiQ) changed value of `timestr` to date string format
165
+ - (SentiQ) fixed adapter crash
166
+ - (SentiQ) changed value of `timestr` to date string format
158
167
 
159
168
  ### 0.0.9 (2023-05-25)
160
169
 
161
- - (SentiQ) added more translations
170
+ - (SentiQ) added more translations
162
171
 
163
172
  ### 0.0.8 (2023-05-25)
164
173
 
165
- - (SentiQ) improved log messages
174
+ - (SentiQ) improved log messages
166
175
 
167
176
  ### 0.0.7 (2023-05-25)
168
177
 
169
- - (SentiQ) fixed author
178
+ - (SentiQ) fixed author
170
179
 
171
180
  ### 0.0.6 (2023-05-24)
172
181
 
173
- - (SentiQ) lowered min node version to 14.5.0
182
+ - (SentiQ) lowered min node version to 14.5.0
174
183
 
175
184
  ### 0.0.5 (2023-05-24)
176
185
 
177
- - (SentiQ) updated packages
186
+ - (SentiQ) updated packages
178
187
 
179
188
  ### 0.0.4 (2023-05-24)
180
189
 
181
- - (SentiQ) testing
190
+ - (SentiQ) testing
182
191
 
183
192
  ### 0.0.3 (2023-05-24)
184
193
 
185
- - (SentiQ) added zone controls and Ukrainian language
194
+ - (SentiQ) added zone controls and Ukrainian language
186
195
 
187
196
  ### 0.0.2 (2023-05-23)
188
197
 
189
- - (SentiQ) refactoring code
198
+ - (SentiQ) refactoring code
190
199
 
191
200
  ### 0.0.1 (2023-01-26)
192
201
 
193
- - (aDabbelju) Initial commit by adapter creator
202
+ - (aDabbelju) Initial commit by adapter creator
194
203
 
195
204
  ## License
196
205
 
197
206
  MIT License
198
207
 
199
- Copyright (c) 2024 SentiQ <yves.nuesser@proton.me>
208
+ Copyright (c) 2025 SentiQ <yves.nuesser@proton.me>
200
209
 
201
210
  Permission is hereby granted, free of charge, to any person obtaining a copy
202
211
  of this software and associated documentation files (the "Software"), to deal
@@ -7,14 +7,13 @@
7
7
  "label": "api key",
8
8
  "newLine": true,
9
9
  "help": "how to get token",
10
- "helpLink": "https://github.com/SentiQ/ioBroker.hydrawise/blob/main/README.md#documentation"
10
+ "helpLink": "https://github.com/SentiQ/ioBroker.hydrawise/blob/main/README.md#documentation",
11
+ "xs": 12,
12
+ "sm": 12,
13
+ "md": 6,
14
+ "lg": 4,
15
+ "xl": 4
11
16
  },
12
- "apiInterval": {
13
- "type": "number",
14
- "label": "api interval",
15
- "newLine": true,
16
- "default": 60,
17
- "min": 15
18
- }
17
+ "apiInterval": { "type": "number", "label": "api interval", "newLine": true, "default": 60, "min": 15, "xs": 12, "sm": 12, "md": 6, "lg": 4, "xl": 4 }
19
18
  }
20
19
  }
package/build/main.js CHANGED
@@ -42,7 +42,7 @@ class Hydrawise extends utils.Adapter {
42
42
  if (!this.config.apiKey) {
43
43
  this.log.error("No API-Key defined!");
44
44
  } else {
45
- this.setStateChangedAsync("info.connection", false, true);
45
+ void this.setStateChangedAsync("info.connection", false, true);
46
46
  try {
47
47
  await this.GetStatusSchedule();
48
48
  nextpollSchedule = this.setInterval(async () => {
@@ -66,7 +66,7 @@ class Hydrawise extends utils.Adapter {
66
66
  this.buildRequest("statusschedule.php", { api_key: this.config.apiKey }).then(async (response) => {
67
67
  if ((response == null ? void 0 : response.status) === 200) {
68
68
  const content = response.data;
69
- this.setStateChangedAsync("info.connection", true, true);
69
+ void this.setStateChangedAsync("info.connection", true, true);
70
70
  await this.setObjectNotExistsAsync("schedule.stopall", {
71
71
  type: "state",
72
72
  common: {
@@ -151,7 +151,7 @@ class Hydrawise extends utils.Adapter {
151
151
  },
152
152
  native: {}
153
153
  });
154
- this.setStateChangedAsync(`schedule.${key}`, content[key], true);
154
+ void this.setStateChangedAsync(`schedule.${key}`, content[key], true);
155
155
  if (key === "time") {
156
156
  await this.setObjectNotExistsAsync("schedule.timestr", {
157
157
  type: "state",
@@ -165,7 +165,7 @@ class Hydrawise extends utils.Adapter {
165
165
  native: {}
166
166
  });
167
167
  const t = new Date(content[key] * 1e3);
168
- this.setStateChangedAsync("schedule.timestr", t.toString(), true);
168
+ void this.setStateChangedAsync("schedule.timestr", t.toString(), true);
169
169
  }
170
170
  }
171
171
  }
@@ -197,7 +197,7 @@ class Hydrawise extends utils.Adapter {
197
197
  t.setSeconds(t.getSeconds() + relay.time);
198
198
  relay[key] = t.toString();
199
199
  }
200
- this.setStateChangedAsync(`schedule.${relay.relay}.${key}`, relay[key], true);
200
+ void this.setStateChangedAsync(`schedule.${relay.relay}.${key}`, relay[key], true);
201
201
  }
202
202
  await this.setObjectNotExistsAsync(`schedule.${relay.relay}.stopZone`, {
203
203
  type: "state",
@@ -314,7 +314,11 @@ class Hydrawise extends utils.Adapter {
314
314
  },
315
315
  native: {}
316
316
  });
317
- this.setStateChangedAsync(`schedule.sensors.${sensor.input}.${key}`, sensor[key], true);
317
+ void this.setStateChangedAsync(
318
+ `schedule.sensors.${sensor.input}.${key}`,
319
+ sensor[key],
320
+ true
321
+ );
318
322
  }
319
323
  }
320
324
  }
@@ -329,8 +333,8 @@ class Hydrawise extends utils.Adapter {
329
333
  }, this.config.apiInterval * 1e3);
330
334
  } else {
331
335
  this.log.debug(`(stats) received error - API is now offline: ${JSON.stringify(error)}`);
332
- this.setStateChangedAsync("info.connection", false, true);
333
- reject(error);
336
+ void this.setStateChangedAsync("info.connection", false, true);
337
+ reject(new Error(error));
334
338
  }
335
339
  });
336
340
  });
@@ -340,7 +344,7 @@ class Hydrawise extends utils.Adapter {
340
344
  this.buildRequest("customerdetails.php", { api_key: this.config.apiKey }).then(async (response) => {
341
345
  if ((response == null ? void 0 : response.status) === 200) {
342
346
  const content = response.data;
343
- this.setStateChangedAsync("info.connection", true, true);
347
+ void this.setStateChangedAsync("info.connection", true, true);
344
348
  for (let key in content) {
345
349
  if (key !== "controllers" && !Number.isNaN(key)) {
346
350
  key = this.name2id(key);
@@ -355,7 +359,7 @@ class Hydrawise extends utils.Adapter {
355
359
  },
356
360
  native: {}
357
361
  });
358
- this.setStateChangedAsync(`customer.${key}`, content[key], true);
362
+ void this.setStateChangedAsync(`customer.${key}`, content[key], true);
359
363
  }
360
364
  }
361
365
  for (const controller of content.controllers) {
@@ -383,7 +387,11 @@ class Hydrawise extends utils.Adapter {
383
387
  const t = new Date(controller[key] * 1e3);
384
388
  controller[key] = t.toString();
385
389
  }
386
- this.setStateChangedAsync(`customer.controllers.${controller.name}.${key}`, controller[key], true);
390
+ void this.setStateChangedAsync(
391
+ `customer.controllers.${controller.name}.${key}`,
392
+ controller[key],
393
+ true
394
+ );
387
395
  }
388
396
  }
389
397
  }
@@ -400,8 +408,8 @@ class Hydrawise extends utils.Adapter {
400
408
  );
401
409
  } else {
402
410
  this.log.debug(`(stats) received error - API is now offline: ${JSON.stringify(error)}`);
403
- this.setStateChangedAsync("info.connection", false, true);
404
- reject(error);
411
+ void this.setStateChangedAsync("info.connection", false, true);
412
+ reject(new Error(error));
405
413
  }
406
414
  });
407
415
  });
@@ -424,7 +432,9 @@ class Hydrawise extends utils.Adapter {
424
432
  resolve(response);
425
433
  }).catch((error) => {
426
434
  if (error.response) {
427
- this.log.warn(`received ${error.response.status} response from ${url} with content: ${JSON.stringify(error.response.data)}`);
435
+ this.log.warn(
436
+ `received ${error.response.status} response from ${url} with content: ${JSON.stringify(error.response.data)}`
437
+ );
428
438
  } else if (error.request) {
429
439
  if (error.code === lastErrorCode) {
430
440
  this.log.debug(error.message);
@@ -435,39 +445,44 @@ class Hydrawise extends utils.Adapter {
435
445
  } else {
436
446
  this.log.error(error.message);
437
447
  }
438
- reject(error);
448
+ reject(new Error(error));
439
449
  });
440
450
  } catch (error) {
441
- reject(error);
451
+ reject(new Error(error));
442
452
  }
443
453
  } else {
444
- reject("API key is not configured");
454
+ reject(new Error("API key is not configured"));
445
455
  }
446
456
  });
447
457
  }
448
458
  /**
449
459
  * Is called when adapter shuts down - callback has to be called under any circumstances!
460
+ *
461
+ * @param callback callback function
450
462
  */
451
463
  onUnload(callback) {
452
464
  try {
453
465
  this.clearInterval(nextpollSchedule);
454
466
  this.clearInterval(nextpollCustomer);
455
467
  callback();
456
- } catch (e) {
468
+ } catch {
457
469
  callback();
458
470
  }
459
471
  }
460
472
  /**
461
473
  * Is called if a subscribed state changes
474
+ *
475
+ * @param id id of the state
476
+ * @param state state object
462
477
  */
463
478
  onStateChange(id, state) {
464
479
  if (state && !state.ack) {
465
480
  if (id.indexOf("stopall") !== -1) {
466
- this.buildRequest("setzone.php", { api_key: this.config.apiKey, action: "stopall" });
481
+ void this.buildRequest("setzone.php", { api_key: this.config.apiKey, action: "stopall" });
467
482
  } else if (id.indexOf("stop") !== -1) {
468
483
  const relay = id.match(/.*schedule\.(.*)\.stopZone/);
469
484
  if (relay && (relay == null ? void 0 : relay.length) > 1) {
470
- this.buildRequest("setzone.php", {
485
+ void this.buildRequest("setzone.php", {
471
486
  api_key: this.config.apiKey,
472
487
  action: "stop",
473
488
  relay_id: RELAYS[relay[1]]
@@ -475,7 +490,7 @@ class Hydrawise extends utils.Adapter {
475
490
  }
476
491
  }
477
492
  if (id.indexOf("runall") !== -1 && (state.val || state.val === 0)) {
478
- this.buildRequest("setzone.php", {
493
+ void this.buildRequest("setzone.php", {
479
494
  api_key: this.config.apiKey,
480
495
  action: "runall",
481
496
  period_id: 999,
@@ -484,7 +499,7 @@ class Hydrawise extends utils.Adapter {
484
499
  } else if (id.indexOf("runZone") !== -1 && (state.val || state.val === 0)) {
485
500
  const relay = id.match(/.*schedule\.(.*)\.runZone/);
486
501
  if (relay && (relay == null ? void 0 : relay.length) > 1) {
487
- this.buildRequest("setzone.php", {
502
+ void this.buildRequest("setzone.php", {
488
503
  api_key: this.config.apiKey,
489
504
  action: "run",
490
505
  period_id: 999,
@@ -494,11 +509,11 @@ class Hydrawise extends utils.Adapter {
494
509
  }
495
510
  }
496
511
  if (id.indexOf("runDefault") !== -1 && state.val !== null) {
497
- this.initRunDefault(id, state.val);
512
+ void this.initRunDefault(id, state.val);
498
513
  }
499
514
  if (id.indexOf("suspendall") !== -1 && (state.val || state.val === 0)) {
500
515
  const num = state.val;
501
- this.buildRequest("setzone.php", {
516
+ void this.buildRequest("setzone.php", {
502
517
  api_key: this.config.apiKey,
503
518
  action: "suspendall",
504
519
  period_id: 999,
@@ -508,7 +523,7 @@ class Hydrawise extends utils.Adapter {
508
523
  const num = state.val;
509
524
  const relay = id.match(/.*schedule\.(.*)\.suspendZone/);
510
525
  if (relay && (relay == null ? void 0 : relay.length) > 1) {
511
- this.buildRequest("setzone.php", {
526
+ void this.buildRequest("setzone.php", {
512
527
  api_key: this.config.apiKey,
513
528
  action: "suspend",
514
529
  period_id: 999,
@@ -524,18 +539,18 @@ class Hydrawise extends utils.Adapter {
524
539
  this.clearTimeout(resetSwitch);
525
540
  if (relay) {
526
541
  if (run) {
527
- const defaultRunTime = await this.getStateAsync(relay[1] + "run");
542
+ const defaultRunTime = await this.getStateAsync(`${relay[1]}run`);
528
543
  if (defaultRunTime && defaultRunTime.val) {
529
- this.setStateAsync(relay[1] + "runZone", defaultRunTime.val, false);
544
+ void this.setState(`${relay[1]}runZone`, defaultRunTime.val, false);
530
545
  resetSwitch = this.setTimeout(
531
546
  () => {
532
- this.setStateAsync(id, false, false);
547
+ void this.setState(id, false, false);
533
548
  },
534
549
  defaultRunTime.val * 1e3
535
550
  );
536
551
  }
537
552
  } else {
538
- this.setStateAsync(relay[1] + "stopZone", true, false);
553
+ void this.setState(`${relay[1]}stopZone`, true, false);
539
554
  }
540
555
  }
541
556
  }
package/build/main.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/main.ts"],
4
- "sourcesContent": ["/*\n * Created with @iobroker/create-adapter v2.3.0\n */\n\n// The adapter-core module gives you access to the core ioBroker functions\n// you need to create an adapter\nimport * as utils from '@iobroker/adapter-core';\nimport axios from 'axios';\n\nconst hydrawise_url = 'https://api.hydrawise.com';\nlet nextpollSchedule: any = null;\nlet nextpollCustomer: any = null;\nlet resetSwitch: any = null;\nconst RELAYS: any = Object;\n\nclass Hydrawise extends utils.Adapter {\n public constructor(options: Partial<utils.AdapterOptions> = {}) {\n super({\n ...options,\n name: 'hydrawise',\n });\n\n this.on('ready', this.onReady.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('unload', this.onUnload.bind(this));\n }\n\n private async onReady(): Promise<void> {\n if (!this.config.apiKey) {\n this.log.error('No API-Key defined!');\n } else {\n this.setStateChangedAsync('info.connection', false, true);\n\n try {\n await this.GetStatusSchedule();\n\n nextpollSchedule = this.setInterval(async () => {\n await this.GetStatusSchedule();\n }, this.config.apiInterval * 1000);\n\n await this.GetCustomerDetails();\n\n nextpollCustomer = this.setInterval(\n async () => {\n await this.GetCustomerDetails();\n },\n 5 * 60 * 1000,\n );\n } catch (error: any) {\n this.log.error(error.toString());\n }\n\n await this.subscribeStatesAsync('*');\n }\n }\n\n private async GetStatusSchedule(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.buildRequest('statusschedule.php', { api_key: this.config.apiKey })\n .then(async (response) => {\n if (response?.status === 200) {\n const content = response.data;\n\n this.setStateChangedAsync('info.connection', true, true);\n\n await this.setObjectNotExistsAsync('schedule.stopall', {\n type: 'state',\n common: {\n name: {\n en: 'stop all zones',\n de: 'alle Zonen stoppen',\n ru: '\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u043E\u043D\u044B',\n pt: 'parar todas as zonas',\n nl: 'stop alle zones',\n fr: 'arr\u00EAter toutes les zones',\n it: 'fermare tutte le zone',\n es: 'detener todas las zonas',\n pl: 'zatrzymuj\u0105 wszystkie strefy',\n uk: '\u0437\u0443\u043F\u0438\u043D\u0438\u0442\u0438 \u0432\u0441\u0456 \u0437\u043E\u043D\u0438',\n 'zh-cn': '\u505C\u6B62\u6240\u6709\u5730\u533A',\n },\n type: 'boolean',\n role: 'button.stop',\n read: false,\n write: true,\n },\n native: {},\n });\n\n await this.setObjectNotExistsAsync('schedule.runall', {\n type: 'state',\n common: {\n name: {\n en: 'run all zones for x seconds',\n de: 'alle Zonen f\u00FCr x Sekunden ausf\u00FChren',\n ru: '\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u043E\u043D\u044B \u0437\u0430 x \u0441\u0435\u043A\u0443\u043D\u0434\u044B',\n pt: 'executar todas as zonas por x segundos',\n nl: 'ren alle zones voor x seconden',\n fr: 'ex\u00E9cuter toutes les zones pendant x secondes',\n it: 'eseguire tutte le zone per x secondi',\n es: 'ejecutar todas las zonas durante x segundos',\n pl: 'wszystkie strefy startuj\u0105 dla x sekundy',\n uk: '\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0438 \u0432\u0441\u0456 \u0437\u043E\u043D\u0438 \u0434\u043B\u044F x \u0441\u0435\u043A\u0443\u043D\u0434',\n 'zh-cn': '\u8DD1\u9053\u533A',\n },\n type: 'number',\n role: 'level',\n unit: 'seconds',\n read: true,\n write: true,\n },\n native: {},\n });\n\n await this.setObjectNotExistsAsync('schedule.suspendall', {\n type: 'state',\n common: {\n name: {\n en: 'suspend all zones for x seconds',\n de: 'alle Zonen f\u00FCr x Sekunden aussetzen',\n ru: '\u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u043E\u043D\u044B \u0437\u0430 x \u0441\u0435\u043A\u0443\u043D\u0434\u044B',\n pt: 'suspender todas as zonas por x segundos',\n nl: 'vertaling:',\n fr: 'suspendre toutes les zones pendant x secondes',\n it: 'sospendere tutte le zone per x secondi',\n es: 'suspender todas las zonas durante x segundos',\n pl: 'wszystkie strefy zawieszenia dla x sekundy',\n uk: '\u043F\u0440\u0438\u0437\u0443\u043F\u0438\u043D\u0438\u0442\u0438 \u0432\u0441\u0456 \u0437\u043E\u043D\u0438 \u043D\u0430 x \u0441\u0435\u043A\u0443\u043D\u0434',\n 'zh-cn': '\u505C\u6B62\u6240\u6709\u00D7\u4E8C\u533A',\n },\n type: 'number',\n role: 'level',\n read: true,\n write: true,\n },\n native: {},\n });\n\n for (let key in content) {\n key = this.name2id(key);\n\n if (key !== 'relays' && key !== 'sensors' && key !== 'expanders' && !Number.isNaN(key)) {\n await this.setObjectNotExistsAsync(`schedule.${key}`, {\n type: 'state',\n common: {\n name: key,\n type: key === 'message' ? 'string' : 'number',\n role: key === 'message' ? 'text' : 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n this.setStateChangedAsync(`schedule.${key}`, content[key], true);\n\n if (key === 'time') {\n await this.setObjectNotExistsAsync('schedule.timestr', {\n type: 'state',\n common: {\n name: 'last api call',\n type: 'string',\n role: 'text',\n read: true,\n write: false,\n },\n native: {},\n });\n\n const t = new Date(content[key] * 1000);\n\n this.setStateChangedAsync('schedule.timestr', t.toString(), true);\n }\n }\n }\n\n for (const relay of content.relays) {\n const name = relay.relay;\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}`, {\n type: 'channel',\n common: {\n name: name.toString(),\n },\n native: {},\n });\n\n RELAYS[relay.relay] = relay.relay_id;\n\n for (let key in relay) {\n key = this.name2id(key);\n\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}.${key}`, {\n type: 'state',\n common: {\n name: key,\n type: key === 'name' || key === 'timestr' ? 'string' : 'number',\n role: key === 'name' || key === 'timestr' ? 'text' : 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (key === 'timestr') {\n const t = new Date();\n t.setSeconds(t.getSeconds() + relay.time);\n relay[key] = t.toString();\n }\n\n this.setStateChangedAsync(`schedule.${relay.relay}.${key}`, relay[key], true);\n }\n\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}.stopZone`, {\n type: 'state',\n common: {\n name: {\n en: 'stop zone',\n de: 'Zone stoppen',\n ru: '\u0437\u043E\u043D\u0430 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438',\n pt: 'zona de paragem',\n nl: 'stop zone',\n fr: \"zone d ' arr\u00EAt\",\n it: 'zona di sosta',\n es: 'zona de parada',\n pl: 'strefa stopu',\n uk: '\u0437\u043E\u043D\u0430 \u0437\u0443\u043F\u0438\u043D\u043A\u0438',\n 'zh-cn': '\u505C\u6B62\u5730\u533A',\n },\n type: 'boolean',\n role: 'button.stop',\n read: false,\n write: true,\n },\n native: {},\n });\n\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}.runZone`, {\n type: 'state',\n common: {\n name: {\n en: 'run zone for x seconds',\n de: 'Zone f\u00FCr x Sekunden starten',\n ru: '\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0437\u043E\u043D\u0443 \u0437\u0430 x \u0441\u0435\u043A\u0443\u043D\u0434\u044B',\n pt: 'zona de execu\u00E7\u00E3o por x segundos',\n nl: 'ren zone voor x seconden',\n fr: 'zone de course pour x secondes',\n it: 'zona di corsa per x secondi',\n es: 'zona de ejecuci\u00F3n por x segundos',\n pl: 'strefa x sekundy',\n uk: '\u0437\u043E\u043D\u0430 \u0437\u0430\u043F\u0443\u0441\u043A\u0443 \u0434\u043B\u044F x \u0441\u0435\u043A\u0443\u043D\u0434',\n 'zh-cn': '\u00D7\u4E8C\u533A',\n },\n type: 'number',\n role: 'level',\n read: true,\n write: true,\n },\n native: {},\n });\n\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}.suspendZone`, {\n type: 'state',\n common: {\n name: {\n en: 'suspend zone for x seconds',\n de: 'Zone f\u00FCr x Sekunden aussetzen',\n ru: '\u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0437\u043E\u043D\u0443 \u043D\u0430 x \u0441\u0435\u043A\u0443\u043D\u0434\u044B',\n pt: 'zona de suspens\u00E3o por x segundos',\n nl: 'quality over quantity (qoq) releases vertaling:',\n fr: 'zone de suspension pour x secondes',\n it: 'zona di sospensione per x secondi',\n es: 'zona de suspensi\u00F3n por x segundos',\n pl: 'strefa zawies\u0142a na x sekundy',\n uk: '\u0437\u043E\u043D\u0430 \u043F\u0456\u0434\u0432\u0456\u0441\u043A\u0438 \u0434\u043B\u044F x \u0441\u0435\u043A\u0443\u043D\u0434',\n 'zh-cn': '\u505C\u6B62x\u4E8C\u533A',\n },\n type: 'number',\n role: 'level',\n read: true,\n write: true,\n },\n native: {},\n });\n\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}.runDefault`, {\n type: 'state',\n common: {\n name: {\n en: 'run zone for default time',\n de: 'Zone mit Standardlaufzeit starten',\n ru: '\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0437\u043E\u043D\u0443 \u0434\u043B\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E',\n pt: 'fuso de execu\u00E7\u00E3o para o tempo padr\u00E3o',\n nl: 'run zone for default time',\n fr: 'run zone for default time',\n it: 'run zone per il tempo predefinito',\n es: 'zona de ejecuci\u00F3n por tiempo predeterminado',\n pl: 'strefa czasu domy\u015Blnego',\n uk: '\u0437\u043E\u043D\u0430 \u0437\u0430\u043F\u0443\u0441\u043A\u0443 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C',\n 'zh-cn': 'a. \u6682\u505C\u65F6\u95F4\u533A',\n },\n type: 'boolean',\n role: 'button.start',\n read: true,\n write: true,\n },\n native: {},\n });\n }\n\n for (const sensor of content.sensors) {\n await this.setObjectNotExistsAsync(`schedule.sensors.${sensor.input}`, {\n type: 'channel',\n common: {\n name: 'sensors',\n },\n native: {},\n });\n\n for (let key in sensor) {\n if (key !== 'relays') {\n key = this.name2id(key);\n\n await this.setObjectNotExistsAsync(`schedule.sensors.${sensor.input}.${key}`, {\n type: 'state',\n common: {\n name: key,\n type: 'number',\n role: 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n this.setStateChangedAsync(`schedule.sensors.${sensor.input}.${key}`, sensor[key], true);\n }\n }\n }\n }\n\n resolve(response.status);\n })\n .catch((error) => {\n this.clearInterval(nextpollSchedule);\n\n if (error.code === 'EAI_AGAIN' || error.code === 'ECONNABORTED' || error.code === 'ENOTFOUND' || error.response?.status === 429) {\n nextpollSchedule = this.setInterval(async () => {\n await this.GetStatusSchedule();\n }, this.config.apiInterval * 1000);\n } else {\n this.log.debug(`(stats) received error - API is now offline: ${JSON.stringify(error)}`);\n\n this.setStateChangedAsync('info.connection', false, true);\n\n reject(error);\n }\n });\n });\n }\n\n private async GetCustomerDetails(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.buildRequest('customerdetails.php', { api_key: this.config.apiKey })\n .then(async (response) => {\n if (response?.status === 200) {\n const content = response.data;\n\n this.setStateChangedAsync('info.connection', true, true);\n\n for (let key in content) {\n if (key !== 'controllers' && !Number.isNaN(key)) {\n key = this.name2id(key);\n\n await this.setObjectNotExistsAsync(`customer.${key}`, {\n type: 'state',\n common: {\n name: key,\n type: key === 'message' || key === 'current_controller' ? 'string' : 'number',\n role: key === 'message' || key === 'current_controller' ? 'text' : 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n this.setStateChangedAsync(`customer.${key}`, content[key], true);\n }\n }\n\n for (const controller of content.controllers) {\n await this.setObjectNotExistsAsync(`customer.controllers.${controller.name}`, {\n type: 'channel',\n common: {\n name: controller.name,\n },\n native: {},\n });\n\n for (let key in controller) {\n key = this.name2id(key);\n\n await this.setObjectNotExistsAsync(`customer.controllers.${controller.name}.${key}`, {\n type: 'state',\n common: {\n name: key,\n type: key !== 'controller_id' ? 'string' : 'number',\n role: key !== 'controller_id' ? 'text' : 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (key === 'last_contact') {\n const t = new Date(controller[key] * 1000);\n controller[key] = t.toString();\n }\n\n this.setStateChangedAsync(`customer.controllers.${controller.name}.${key}`, controller[key], true);\n }\n }\n }\n\n resolve(response.status);\n })\n .catch((error) => {\n this.clearInterval(nextpollCustomer);\n\n if (error.code === 'EAI_AGAIN' || error.code === 'ECONNABORTED' || error.code === 'ENOTFOUND' || error.response?.status === 429) {\n nextpollCustomer = this.setInterval(\n async () => {\n await this.GetCustomerDetails();\n },\n 5 * 60 * 1000,\n );\n } else {\n this.log.debug(`(stats) received error - API is now offline: ${JSON.stringify(error)}`);\n\n this.setStateChangedAsync('info.connection', false, true);\n\n reject(error);\n }\n });\n });\n }\n\n buildRequest(service: string, params: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const url = `/api/v1/${service}`;\n let lastErrorCode = 0;\n\n if (params.api_key) {\n try {\n axios({\n method: 'GET',\n baseURL: hydrawise_url,\n url: url,\n timeout: 30000,\n responseType: 'json',\n params: params,\n })\n .then((response) => {\n // no error - clear up reminder\n lastErrorCode = 0;\n\n resolve(response);\n })\n .catch((error) => {\n if (error.response) {\n // The request was made and the server responded with a status code\n\n this.log.warn(`received ${error.response.status} response from ${url} with content: ${JSON.stringify(error.response.data)}`);\n } else if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n\n // avoid spamming of the same error when stuck in a reconnection loop\n if (error.code === lastErrorCode) {\n this.log.debug(error.message);\n } else {\n this.log.info(`error ${error.code} from ${url}: ${error.message}`);\n lastErrorCode = error.code;\n }\n } else {\n // Something happened in setting up the request that triggered an Error\n this.log.error(error.message);\n }\n\n reject(error);\n });\n } catch (error) {\n reject(error);\n }\n } else {\n reject('API key is not configured');\n }\n });\n }\n\n /**\n * Is called when adapter shuts down - callback has to be called under any circumstances!\n */\n private onUnload(callback: () => void): void {\n try {\n this.clearInterval(nextpollSchedule);\n this.clearInterval(nextpollCustomer);\n\n callback();\n } catch (e) {\n callback();\n }\n }\n\n /**\n * Is called if a subscribed state changes\n */\n private onStateChange(id: string, state: ioBroker.State | null | undefined): void {\n if (state && !state.ack) {\n if (id.indexOf('stopall') !== -1) {\n this.buildRequest('setzone.php', { api_key: this.config.apiKey, action: 'stopall' });\n } else if (id.indexOf('stop') !== -1) {\n const relay = id.match(/.*schedule\\.(.*)\\.stopZone/);\n\n if (relay && relay?.length > 1) {\n this.buildRequest('setzone.php', {\n api_key: this.config.apiKey,\n action: 'stop',\n relay_id: RELAYS[relay[1]],\n });\n }\n }\n if (id.indexOf('runall') !== -1 && (state.val || state.val === 0)) {\n this.buildRequest('setzone.php', {\n api_key: this.config.apiKey,\n action: 'runall',\n period_id: 999,\n custom: state.val,\n });\n } else if (id.indexOf('runZone') !== -1 && (state.val || state.val === 0)) {\n const relay = id.match(/.*schedule\\.(.*)\\.runZone/);\n\n if (relay && relay?.length > 1) {\n this.buildRequest('setzone.php', {\n api_key: this.config.apiKey,\n action: 'run',\n period_id: 999,\n custom: state.val,\n relay_id: RELAYS[relay[1]],\n });\n }\n }\n\n if (id.indexOf('runDefault') !== -1 && state.val !== null) {\n this.initRunDefault(id, state.val as boolean);\n }\n\n if (id.indexOf('suspendall') !== -1 && (state.val || state.val === 0)) {\n const num = state.val as number;\n\n this.buildRequest('setzone.php', {\n api_key: this.config.apiKey,\n action: 'suspendall',\n period_id: 999,\n custom: Math.trunc((state.ts + num) / 1000),\n });\n } else if (id.indexOf('suspend') !== -1 && (state.val || state.val === 0)) {\n const num = state.val as number;\n const relay = id.match(/.*schedule\\.(.*)\\.suspendZone/);\n\n if (relay && relay?.length > 1) {\n this.buildRequest('setzone.php', {\n api_key: this.config.apiKey,\n action: 'suspend',\n period_id: 999,\n custom: Math.trunc((state.ts + num) / 1000),\n relay_id: RELAYS[relay[1]],\n });\n }\n }\n }\n }\n\n async initRunDefault(id: string, run: boolean): Promise<void> {\n const relay = id.match(/(.*schedule.*\\.)runDefault/);\n\n this.clearTimeout(resetSwitch);\n\n if (relay) {\n if (run) {\n const defaultRunTime = await this.getStateAsync(relay[1] + 'run');\n if (defaultRunTime && defaultRunTime.val) {\n this.setStateAsync(relay[1] + 'runZone', defaultRunTime.val, false);\n resetSwitch = this.setTimeout(\n () => {\n this.setStateAsync(id, false, false);\n },\n (defaultRunTime.val as number) * 1000,\n );\n }\n } else {\n this.setStateAsync(relay[1] + 'stopZone', true, false);\n }\n }\n }\n\n name2id(pName: string): string {\n return (pName || '').replace(this.FORBIDDEN_CHARS, '_');\n }\n}\n\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial<utils.AdapterOptions> | undefined) => new Hydrawise(options);\n} else {\n // otherwise start the instance directly\n (() => new Hydrawise())();\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/*\n * Created with @iobroker/create-adapter v2.3.0\n */\n\n// The adapter-core module gives you access to the core ioBroker functions\n// you need to create an adapter\nimport * as utils from '@iobroker/adapter-core';\nimport axios from 'axios';\n\nconst hydrawise_url = 'https://api.hydrawise.com';\nlet nextpollSchedule: any = null;\nlet nextpollCustomer: any = null;\nlet resetSwitch: any = null;\nconst RELAYS: any = Object;\n\nclass Hydrawise extends utils.Adapter {\n public constructor(options: Partial<utils.AdapterOptions> = {}) {\n super({\n ...options,\n name: 'hydrawise',\n });\n\n this.on('ready', this.onReady.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('unload', this.onUnload.bind(this));\n }\n\n private async onReady(): Promise<void> {\n if (!this.config.apiKey) {\n this.log.error('No API-Key defined!');\n } else {\n void this.setStateChangedAsync('info.connection', false, true);\n\n try {\n await this.GetStatusSchedule();\n\n nextpollSchedule = this.setInterval(async () => {\n await this.GetStatusSchedule();\n }, this.config.apiInterval * 1000);\n\n await this.GetCustomerDetails();\n\n nextpollCustomer = this.setInterval(\n async () => {\n await this.GetCustomerDetails();\n },\n 5 * 60 * 1000,\n );\n } catch (error: any) {\n this.log.error(error.toString());\n }\n\n await this.subscribeStatesAsync('*');\n }\n }\n\n private async GetStatusSchedule(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.buildRequest('statusschedule.php', { api_key: this.config.apiKey })\n .then(async response => {\n if (response?.status === 200) {\n const content = response.data;\n\n void this.setStateChangedAsync('info.connection', true, true);\n\n await this.setObjectNotExistsAsync('schedule.stopall', {\n type: 'state',\n common: {\n name: {\n en: 'stop all zones',\n de: 'alle Zonen stoppen',\n ru: '\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u043E\u043D\u044B',\n pt: 'parar todas as zonas',\n nl: 'stop alle zones',\n fr: 'arr\u00EAter toutes les zones',\n it: 'fermare tutte le zone',\n es: 'detener todas las zonas',\n pl: 'zatrzymuj\u0105 wszystkie strefy',\n uk: '\u0437\u0443\u043F\u0438\u043D\u0438\u0442\u0438 \u0432\u0441\u0456 \u0437\u043E\u043D\u0438',\n 'zh-cn': '\u505C\u6B62\u6240\u6709\u5730\u533A',\n },\n type: 'boolean',\n role: 'button.stop',\n read: false,\n write: true,\n },\n native: {},\n });\n\n await this.setObjectNotExistsAsync('schedule.runall', {\n type: 'state',\n common: {\n name: {\n en: 'run all zones for x seconds',\n de: 'alle Zonen f\u00FCr x Sekunden ausf\u00FChren',\n ru: '\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u043E\u043D\u044B \u0437\u0430 x \u0441\u0435\u043A\u0443\u043D\u0434\u044B',\n pt: 'executar todas as zonas por x segundos',\n nl: 'ren alle zones voor x seconden',\n fr: 'ex\u00E9cuter toutes les zones pendant x secondes',\n it: 'eseguire tutte le zone per x secondi',\n es: 'ejecutar todas las zonas durante x segundos',\n pl: 'wszystkie strefy startuj\u0105 dla x sekundy',\n uk: '\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0438 \u0432\u0441\u0456 \u0437\u043E\u043D\u0438 \u0434\u043B\u044F x \u0441\u0435\u043A\u0443\u043D\u0434',\n 'zh-cn': '\u8DD1\u9053\u533A',\n },\n type: 'number',\n role: 'level',\n unit: 'seconds',\n read: true,\n write: true,\n },\n native: {},\n });\n\n await this.setObjectNotExistsAsync('schedule.suspendall', {\n type: 'state',\n common: {\n name: {\n en: 'suspend all zones for x seconds',\n de: 'alle Zonen f\u00FCr x Sekunden aussetzen',\n ru: '\u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u043E\u043D\u044B \u0437\u0430 x \u0441\u0435\u043A\u0443\u043D\u0434\u044B',\n pt: 'suspender todas as zonas por x segundos',\n nl: 'vertaling:',\n fr: 'suspendre toutes les zones pendant x secondes',\n it: 'sospendere tutte le zone per x secondi',\n es: 'suspender todas las zonas durante x segundos',\n pl: 'wszystkie strefy zawieszenia dla x sekundy',\n uk: '\u043F\u0440\u0438\u0437\u0443\u043F\u0438\u043D\u0438\u0442\u0438 \u0432\u0441\u0456 \u0437\u043E\u043D\u0438 \u043D\u0430 x \u0441\u0435\u043A\u0443\u043D\u0434',\n 'zh-cn': '\u505C\u6B62\u6240\u6709\u00D7\u4E8C\u533A',\n },\n type: 'number',\n role: 'level',\n read: true,\n write: true,\n },\n native: {},\n });\n\n for (let key in content) {\n key = this.name2id(key);\n\n if (key !== 'relays' && key !== 'sensors' && key !== 'expanders' && !Number.isNaN(key)) {\n await this.setObjectNotExistsAsync(`schedule.${key}`, {\n type: 'state',\n common: {\n name: key,\n type: key === 'message' ? 'string' : 'number',\n role: key === 'message' ? 'text' : 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n void this.setStateChangedAsync(`schedule.${key}`, content[key], true);\n\n if (key === 'time') {\n await this.setObjectNotExistsAsync('schedule.timestr', {\n type: 'state',\n common: {\n name: 'last api call',\n type: 'string',\n role: 'text',\n read: true,\n write: false,\n },\n native: {},\n });\n\n const t = new Date(content[key] * 1000);\n\n void this.setStateChangedAsync('schedule.timestr', t.toString(), true);\n }\n }\n }\n\n for (const relay of content.relays) {\n const name = relay.relay;\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}`, {\n type: 'channel',\n common: {\n name: name.toString(),\n },\n native: {},\n });\n\n RELAYS[relay.relay] = relay.relay_id;\n\n for (let key in relay) {\n key = this.name2id(key);\n\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}.${key}`, {\n type: 'state',\n common: {\n name: key,\n type: key === 'name' || key === 'timestr' ? 'string' : 'number',\n role: key === 'name' || key === 'timestr' ? 'text' : 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (key === 'timestr') {\n const t = new Date();\n t.setSeconds(t.getSeconds() + relay.time);\n relay[key] = t.toString();\n }\n\n void this.setStateChangedAsync(`schedule.${relay.relay}.${key}`, relay[key], true);\n }\n\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}.stopZone`, {\n type: 'state',\n common: {\n name: {\n en: 'stop zone',\n de: 'Zone stoppen',\n ru: '\u0437\u043E\u043D\u0430 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438',\n pt: 'zona de paragem',\n nl: 'stop zone',\n fr: \"zone d ' arr\u00EAt\",\n it: 'zona di sosta',\n es: 'zona de parada',\n pl: 'strefa stopu',\n uk: '\u0437\u043E\u043D\u0430 \u0437\u0443\u043F\u0438\u043D\u043A\u0438',\n 'zh-cn': '\u505C\u6B62\u5730\u533A',\n },\n type: 'boolean',\n role: 'button.stop',\n read: false,\n write: true,\n },\n native: {},\n });\n\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}.runZone`, {\n type: 'state',\n common: {\n name: {\n en: 'run zone for x seconds',\n de: 'Zone f\u00FCr x Sekunden starten',\n ru: '\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0437\u043E\u043D\u0443 \u0437\u0430 x \u0441\u0435\u043A\u0443\u043D\u0434\u044B',\n pt: 'zona de execu\u00E7\u00E3o por x segundos',\n nl: 'ren zone voor x seconden',\n fr: 'zone de course pour x secondes',\n it: 'zona di corsa per x secondi',\n es: 'zona de ejecuci\u00F3n por x segundos',\n pl: 'strefa x sekundy',\n uk: '\u0437\u043E\u043D\u0430 \u0437\u0430\u043F\u0443\u0441\u043A\u0443 \u0434\u043B\u044F x \u0441\u0435\u043A\u0443\u043D\u0434',\n 'zh-cn': '\u00D7\u4E8C\u533A',\n },\n type: 'number',\n role: 'level',\n read: true,\n write: true,\n },\n native: {},\n });\n\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}.suspendZone`, {\n type: 'state',\n common: {\n name: {\n en: 'suspend zone for x seconds',\n de: 'Zone f\u00FCr x Sekunden aussetzen',\n ru: '\u043F\u0440\u0438\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0437\u043E\u043D\u0443 \u043D\u0430 x \u0441\u0435\u043A\u0443\u043D\u0434\u044B',\n pt: 'zona de suspens\u00E3o por x segundos',\n nl: 'quality over quantity (qoq) releases vertaling:',\n fr: 'zone de suspension pour x secondes',\n it: 'zona di sospensione per x secondi',\n es: 'zona de suspensi\u00F3n por x segundos',\n pl: 'strefa zawies\u0142a na x sekundy',\n uk: '\u0437\u043E\u043D\u0430 \u043F\u0456\u0434\u0432\u0456\u0441\u043A\u0438 \u0434\u043B\u044F x \u0441\u0435\u043A\u0443\u043D\u0434',\n 'zh-cn': '\u505C\u6B62x\u4E8C\u533A',\n },\n type: 'number',\n role: 'level',\n read: true,\n write: true,\n },\n native: {},\n });\n\n await this.setObjectNotExistsAsync(`schedule.${relay.relay}.runDefault`, {\n type: 'state',\n common: {\n name: {\n en: 'run zone for default time',\n de: 'Zone mit Standardlaufzeit starten',\n ru: '\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0437\u043E\u043D\u0443 \u0434\u043B\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E',\n pt: 'fuso de execu\u00E7\u00E3o para o tempo padr\u00E3o',\n nl: 'run zone for default time',\n fr: 'run zone for default time',\n it: 'run zone per il tempo predefinito',\n es: 'zona de ejecuci\u00F3n por tiempo predeterminado',\n pl: 'strefa czasu domy\u015Blnego',\n uk: '\u0437\u043E\u043D\u0430 \u0437\u0430\u043F\u0443\u0441\u043A\u0443 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C',\n 'zh-cn': 'a. \u6682\u505C\u65F6\u95F4\u533A',\n },\n type: 'boolean',\n role: 'button.start',\n read: true,\n write: true,\n },\n native: {},\n });\n }\n\n for (const sensor of content.sensors) {\n await this.setObjectNotExistsAsync(`schedule.sensors.${sensor.input}`, {\n type: 'channel',\n common: {\n name: 'sensors',\n },\n native: {},\n });\n\n for (let key in sensor) {\n if (key !== 'relays') {\n key = this.name2id(key);\n\n await this.setObjectNotExistsAsync(`schedule.sensors.${sensor.input}.${key}`, {\n type: 'state',\n common: {\n name: key,\n type: 'number',\n role: 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n void this.setStateChangedAsync(\n `schedule.sensors.${sensor.input}.${key}`,\n sensor[key],\n true,\n );\n }\n }\n }\n }\n\n resolve(response.status);\n })\n .catch(error => {\n this.clearInterval(nextpollSchedule);\n\n if (\n error.code === 'EAI_AGAIN' ||\n error.code === 'ECONNABORTED' ||\n error.code === 'ENOTFOUND' ||\n error.response?.status === 429\n ) {\n nextpollSchedule = this.setInterval(async () => {\n await this.GetStatusSchedule();\n }, this.config.apiInterval * 1000);\n } else {\n this.log.debug(`(stats) received error - API is now offline: ${JSON.stringify(error)}`);\n\n void this.setStateChangedAsync('info.connection', false, true);\n\n reject(new Error(error));\n }\n });\n });\n }\n\n private async GetCustomerDetails(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.buildRequest('customerdetails.php', { api_key: this.config.apiKey })\n .then(async response => {\n if (response?.status === 200) {\n const content = response.data;\n\n void this.setStateChangedAsync('info.connection', true, true);\n\n for (let key in content) {\n if (key !== 'controllers' && !Number.isNaN(key)) {\n key = this.name2id(key);\n\n await this.setObjectNotExistsAsync(`customer.${key}`, {\n type: 'state',\n common: {\n name: key,\n type: key === 'message' || key === 'current_controller' ? 'string' : 'number',\n role: key === 'message' || key === 'current_controller' ? 'text' : 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n void this.setStateChangedAsync(`customer.${key}`, content[key], true);\n }\n }\n\n for (const controller of content.controllers) {\n await this.setObjectNotExistsAsync(`customer.controllers.${controller.name}`, {\n type: 'channel',\n common: {\n name: controller.name,\n },\n native: {},\n });\n\n for (let key in controller) {\n key = this.name2id(key);\n\n await this.setObjectNotExistsAsync(`customer.controllers.${controller.name}.${key}`, {\n type: 'state',\n common: {\n name: key,\n type: key !== 'controller_id' ? 'string' : 'number',\n role: key !== 'controller_id' ? 'text' : 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (key === 'last_contact') {\n const t = new Date(controller[key] * 1000);\n controller[key] = t.toString();\n }\n\n void this.setStateChangedAsync(\n `customer.controllers.${controller.name}.${key}`,\n controller[key],\n true,\n );\n }\n }\n }\n\n resolve(response.status);\n })\n .catch(error => {\n this.clearInterval(nextpollCustomer);\n\n if (\n error.code === 'EAI_AGAIN' ||\n error.code === 'ECONNABORTED' ||\n error.code === 'ENOTFOUND' ||\n error.response?.status === 429\n ) {\n nextpollCustomer = this.setInterval(\n async () => {\n await this.GetCustomerDetails();\n },\n 5 * 60 * 1000,\n );\n } else {\n this.log.debug(`(stats) received error - API is now offline: ${JSON.stringify(error)}`);\n\n void this.setStateChangedAsync('info.connection', false, true);\n\n reject(new Error(error));\n }\n });\n });\n }\n\n buildRequest(service: string, params: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const url = `/api/v1/${service}`;\n let lastErrorCode = 0;\n\n if (params.api_key) {\n try {\n axios({\n method: 'GET',\n baseURL: hydrawise_url,\n url: url,\n timeout: 30000,\n responseType: 'json',\n params: params,\n })\n .then(response => {\n // no error - clear up reminder\n lastErrorCode = 0;\n\n resolve(response);\n })\n .catch(error => {\n if (error.response) {\n // The request was made and the server responded with a status code\n\n this.log.warn(\n `received ${error.response.status} response from ${url} with content: ${JSON.stringify(error.response.data)}`,\n );\n } else if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n\n // avoid spamming of the same error when stuck in a reconnection loop\n if (error.code === lastErrorCode) {\n this.log.debug(error.message);\n } else {\n this.log.info(`error ${error.code} from ${url}: ${error.message}`);\n lastErrorCode = error.code;\n }\n } else {\n // Something happened in setting up the request that triggered an Error\n this.log.error(error.message);\n }\n\n reject(new Error(error));\n });\n } catch (error: any) {\n reject(new Error(error));\n }\n } else {\n reject(new Error('API key is not configured'));\n }\n });\n }\n\n /**\n * Is called when adapter shuts down - callback has to be called under any circumstances!\n *\n * @param callback callback function\n */\n private onUnload(callback: () => void): void {\n try {\n this.clearInterval(nextpollSchedule);\n this.clearInterval(nextpollCustomer);\n\n callback();\n } catch {\n callback();\n }\n }\n\n /**\n * Is called if a subscribed state changes\n *\n * @param id id of the state\n * @param state state object\n */\n private onStateChange(id: string, state: ioBroker.State | null | undefined): void {\n if (state && !state.ack) {\n if (id.indexOf('stopall') !== -1) {\n void this.buildRequest('setzone.php', { api_key: this.config.apiKey, action: 'stopall' });\n } else if (id.indexOf('stop') !== -1) {\n const relay = id.match(/.*schedule\\.(.*)\\.stopZone/);\n\n if (relay && relay?.length > 1) {\n void this.buildRequest('setzone.php', {\n api_key: this.config.apiKey,\n action: 'stop',\n relay_id: RELAYS[relay[1]],\n });\n }\n }\n if (id.indexOf('runall') !== -1 && (state.val || state.val === 0)) {\n void this.buildRequest('setzone.php', {\n api_key: this.config.apiKey,\n action: 'runall',\n period_id: 999,\n custom: state.val,\n });\n } else if (id.indexOf('runZone') !== -1 && (state.val || state.val === 0)) {\n const relay = id.match(/.*schedule\\.(.*)\\.runZone/);\n\n if (relay && relay?.length > 1) {\n void this.buildRequest('setzone.php', {\n api_key: this.config.apiKey,\n action: 'run',\n period_id: 999,\n custom: state.val,\n relay_id: RELAYS[relay[1]],\n });\n }\n }\n\n if (id.indexOf('runDefault') !== -1 && state.val !== null) {\n void this.initRunDefault(id, state.val as boolean);\n }\n\n if (id.indexOf('suspendall') !== -1 && (state.val || state.val === 0)) {\n const num = state.val as number;\n\n void this.buildRequest('setzone.php', {\n api_key: this.config.apiKey,\n action: 'suspendall',\n period_id: 999,\n custom: Math.trunc((state.ts + num) / 1000),\n });\n } else if (id.indexOf('suspend') !== -1 && (state.val || state.val === 0)) {\n const num = state.val as number;\n const relay = id.match(/.*schedule\\.(.*)\\.suspendZone/);\n\n if (relay && relay?.length > 1) {\n void this.buildRequest('setzone.php', {\n api_key: this.config.apiKey,\n action: 'suspend',\n period_id: 999,\n custom: Math.trunc((state.ts + num) / 1000),\n relay_id: RELAYS[relay[1]],\n });\n }\n }\n }\n }\n\n async initRunDefault(id: string, run: boolean): Promise<void> {\n const relay = id.match(/(.*schedule.*\\.)runDefault/);\n\n this.clearTimeout(resetSwitch);\n\n if (relay) {\n if (run) {\n const defaultRunTime = await this.getStateAsync(`${relay[1]}run`);\n if (defaultRunTime && defaultRunTime.val) {\n void this.setState(`${relay[1]}runZone`, defaultRunTime.val, false);\n resetSwitch = this.setTimeout(\n () => {\n void this.setState(id, false, false);\n },\n (defaultRunTime.val as number) * 1000,\n );\n }\n } else {\n void this.setState(`${relay[1]}stopZone`, true, false);\n }\n }\n }\n\n name2id(pName: string): string {\n return (pName || '').replace(this.FORBIDDEN_CHARS, '_');\n }\n}\n\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial<utils.AdapterOptions> | undefined) => new Hydrawise(options);\n} else {\n // otherwise start the instance directly\n (() => new Hydrawise())();\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAMA,YAAuB;AACvB,mBAAkB;AAElB,MAAM,gBAAgB;AACtB,IAAI,mBAAwB;AAC5B,IAAI,mBAAwB;AAC5B,IAAI,cAAmB;AACvB,MAAM,SAAc;AAEpB,MAAM,kBAAkB,MAAM,QAAQ;AAAA,EAC3B,YAAY,UAAyC,CAAC,GAAG;AAC5D,UAAM;AAAA,MACF,GAAG;AAAA,MACH,MAAM;AAAA,IACV,CAAC;AAED,SAAK,GAAG,SAAS,KAAK,QAAQ,KAAK,IAAI,CAAC;AACxC,SAAK,GAAG,eAAe,KAAK,cAAc,KAAK,IAAI,CAAC;AACpD,SAAK,GAAG,UAAU,KAAK,SAAS,KAAK,IAAI,CAAC;AAAA,EAC9C;AAAA,EAEA,MAAc,UAAyB;AACnC,QAAI,CAAC,KAAK,OAAO,QAAQ;AACrB,WAAK,IAAI,MAAM,qBAAqB;AAAA,IACxC,OAAO;AACH,WAAK,KAAK,qBAAqB,mBAAmB,OAAO,IAAI;AAE7D,UAAI;AACA,cAAM,KAAK,kBAAkB;AAE7B,2BAAmB,KAAK,YAAY,YAAY;AAC5C,gBAAM,KAAK,kBAAkB;AAAA,QACjC,GAAG,KAAK,OAAO,cAAc,GAAI;AAEjC,cAAM,KAAK,mBAAmB;AAE9B,2BAAmB,KAAK;AAAA,UACpB,YAAY;AACR,kBAAM,KAAK,mBAAmB;AAAA,UAClC;AAAA,UACA,IAAI,KAAK;AAAA,QACb;AAAA,MACJ,SAAS,OAAY;AACjB,aAAK,IAAI,MAAM,MAAM,SAAS,CAAC;AAAA,MACnC;AAEA,YAAM,KAAK,qBAAqB,GAAG;AAAA,IACvC;AAAA,EACJ;AAAA,EAEA,MAAc,oBAAmC;AAC7C,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,WAAK,aAAa,sBAAsB,EAAE,SAAS,KAAK,OAAO,OAAO,CAAC,EAClE,KAAK,OAAM,aAAY;AACpB,aAAI,qCAAU,YAAW,KAAK;AAC1B,gBAAM,UAAU,SAAS;AAEzB,eAAK,KAAK,qBAAqB,mBAAmB,MAAM,IAAI;AAE5D,gBAAM,KAAK,wBAAwB,oBAAoB;AAAA,YACnD,MAAM;AAAA,YACN,QAAQ;AAAA,cACJ,MAAM;AAAA,gBACF,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,SAAS;AAAA,cACb;AAAA,cACA,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,cACN,OAAO;AAAA,YACX;AAAA,YACA,QAAQ,CAAC;AAAA,UACb,CAAC;AAED,gBAAM,KAAK,wBAAwB,mBAAmB;AAAA,YAClD,MAAM;AAAA,YACN,QAAQ;AAAA,cACJ,MAAM;AAAA,gBACF,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,SAAS;AAAA,cACb;AAAA,cACA,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,cACN,OAAO;AAAA,YACX;AAAA,YACA,QAAQ,CAAC;AAAA,UACb,CAAC;AAED,gBAAM,KAAK,wBAAwB,uBAAuB;AAAA,YACtD,MAAM;AAAA,YACN,QAAQ;AAAA,cACJ,MAAM;AAAA,gBACF,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,SAAS;AAAA,cACb;AAAA,cACA,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,cACN,OAAO;AAAA,YACX;AAAA,YACA,QAAQ,CAAC;AAAA,UACb,CAAC;AAED,mBAAS,OAAO,SAAS;AACrB,kBAAM,KAAK,QAAQ,GAAG;AAEtB,gBAAI,QAAQ,YAAY,QAAQ,aAAa,QAAQ,eAAe,CAAC,OAAO,MAAM,GAAG,GAAG;AACpF,oBAAM,KAAK,wBAAwB,YAAY,GAAG,IAAI;AAAA,gBAClD,MAAM;AAAA,gBACN,QAAQ;AAAA,kBACJ,MAAM;AAAA,kBACN,MAAM,QAAQ,YAAY,WAAW;AAAA,kBACrC,MAAM,QAAQ,YAAY,SAAS;AAAA,kBACnC,MAAM;AAAA,kBACN,OAAO;AAAA,gBACX;AAAA,gBACA,QAAQ,CAAC;AAAA,cACb,CAAC;AAED,mBAAK,KAAK,qBAAqB,YAAY,GAAG,IAAI,QAAQ,GAAG,GAAG,IAAI;AAEpE,kBAAI,QAAQ,QAAQ;AAChB,sBAAM,KAAK,wBAAwB,oBAAoB;AAAA,kBACnD,MAAM;AAAA,kBACN,QAAQ;AAAA,oBACJ,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,OAAO;AAAA,kBACX;AAAA,kBACA,QAAQ,CAAC;AAAA,gBACb,CAAC;AAED,sBAAM,IAAI,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAI;AAEtC,qBAAK,KAAK,qBAAqB,oBAAoB,EAAE,SAAS,GAAG,IAAI;AAAA,cACzE;AAAA,YACJ;AAAA,UACJ;AAEA,qBAAW,SAAS,QAAQ,QAAQ;AAChC,kBAAM,OAAO,MAAM;AACnB,kBAAM,KAAK,wBAAwB,YAAY,MAAM,KAAK,IAAI;AAAA,cAC1D,MAAM;AAAA,cACN,QAAQ;AAAA,gBACJ,MAAM,KAAK,SAAS;AAAA,cACxB;AAAA,cACA,QAAQ,CAAC;AAAA,YACb,CAAC;AAED,mBAAO,MAAM,KAAK,IAAI,MAAM;AAE5B,qBAAS,OAAO,OAAO;AACnB,oBAAM,KAAK,QAAQ,GAAG;AAEtB,oBAAM,KAAK,wBAAwB,YAAY,MAAM,KAAK,IAAI,GAAG,IAAI;AAAA,gBACjE,MAAM;AAAA,gBACN,QAAQ;AAAA,kBACJ,MAAM;AAAA,kBACN,MAAM,QAAQ,UAAU,QAAQ,YAAY,WAAW;AAAA,kBACvD,MAAM,QAAQ,UAAU,QAAQ,YAAY,SAAS;AAAA,kBACrD,MAAM;AAAA,kBACN,OAAO;AAAA,gBACX;AAAA,gBACA,QAAQ,CAAC;AAAA,cACb,CAAC;AAED,kBAAI,QAAQ,WAAW;AACnB,sBAAM,IAAI,oBAAI,KAAK;AACnB,kBAAE,WAAW,EAAE,WAAW,IAAI,MAAM,IAAI;AACxC,sBAAM,GAAG,IAAI,EAAE,SAAS;AAAA,cAC5B;AAEA,mBAAK,KAAK,qBAAqB,YAAY,MAAM,KAAK,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI;AAAA,YACrF;AAEA,kBAAM,KAAK,wBAAwB,YAAY,MAAM,KAAK,aAAa;AAAA,cACnE,MAAM;AAAA,cACN,QAAQ;AAAA,gBACJ,MAAM;AAAA,kBACF,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,SAAS;AAAA,gBACb;AAAA,gBACA,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,cACX;AAAA,cACA,QAAQ,CAAC;AAAA,YACb,CAAC;AAED,kBAAM,KAAK,wBAAwB,YAAY,MAAM,KAAK,YAAY;AAAA,cAClE,MAAM;AAAA,cACN,QAAQ;AAAA,gBACJ,MAAM;AAAA,kBACF,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,SAAS;AAAA,gBACb;AAAA,gBACA,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,cACX;AAAA,cACA,QAAQ,CAAC;AAAA,YACb,CAAC;AAED,kBAAM,KAAK,wBAAwB,YAAY,MAAM,KAAK,gBAAgB;AAAA,cACtE,MAAM;AAAA,cACN,QAAQ;AAAA,gBACJ,MAAM;AAAA,kBACF,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,SAAS;AAAA,gBACb;AAAA,gBACA,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,cACX;AAAA,cACA,QAAQ,CAAC;AAAA,YACb,CAAC;AAED,kBAAM,KAAK,wBAAwB,YAAY,MAAM,KAAK,eAAe;AAAA,cACrE,MAAM;AAAA,cACN,QAAQ;AAAA,gBACJ,MAAM;AAAA,kBACF,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,IAAI;AAAA,kBACJ,SAAS;AAAA,gBACb;AAAA,gBACA,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,OAAO;AAAA,cACX;AAAA,cACA,QAAQ,CAAC;AAAA,YACb,CAAC;AAAA,UACL;AAEA,qBAAW,UAAU,QAAQ,SAAS;AAClC,kBAAM,KAAK,wBAAwB,oBAAoB,OAAO,KAAK,IAAI;AAAA,cACnE,MAAM;AAAA,cACN,QAAQ;AAAA,gBACJ,MAAM;AAAA,cACV;AAAA,cACA,QAAQ,CAAC;AAAA,YACb,CAAC;AAED,qBAAS,OAAO,QAAQ;AACpB,kBAAI,QAAQ,UAAU;AAClB,sBAAM,KAAK,QAAQ,GAAG;AAEtB,sBAAM,KAAK,wBAAwB,oBAAoB,OAAO,KAAK,IAAI,GAAG,IAAI;AAAA,kBAC1E,MAAM;AAAA,kBACN,QAAQ;AAAA,oBACJ,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,OAAO;AAAA,kBACX;AAAA,kBACA,QAAQ,CAAC;AAAA,gBACb,CAAC;AAED,qBAAK,KAAK;AAAA,kBACN,oBAAoB,OAAO,KAAK,IAAI,GAAG;AAAA,kBACvC,OAAO,GAAG;AAAA,kBACV;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,gBAAQ,SAAS,MAAM;AAAA,MAC3B,CAAC,EACA,MAAM,WAAS;AA1VhC;AA2VoB,aAAK,cAAc,gBAAgB;AAEnC,YACI,MAAM,SAAS,eACf,MAAM,SAAS,kBACf,MAAM,SAAS,iBACf,WAAM,aAAN,mBAAgB,YAAW,KAC7B;AACE,6BAAmB,KAAK,YAAY,YAAY;AAC5C,kBAAM,KAAK,kBAAkB;AAAA,UACjC,GAAG,KAAK,OAAO,cAAc,GAAI;AAAA,QACrC,OAAO;AACH,eAAK,IAAI,MAAM,gDAAgD,KAAK,UAAU,KAAK,CAAC,EAAE;AAEtF,eAAK,KAAK,qBAAqB,mBAAmB,OAAO,IAAI;AAE7D,iBAAO,IAAI,MAAM,KAAK,CAAC;AAAA,QAC3B;AAAA,MACJ,CAAC;AAAA,IACT,CAAC;AAAA,EACL;AAAA,EAEA,MAAc,qBAAoC;AAC9C,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,WAAK,aAAa,uBAAuB,EAAE,SAAS,KAAK,OAAO,OAAO,CAAC,EACnE,KAAK,OAAM,aAAY;AACpB,aAAI,qCAAU,YAAW,KAAK;AAC1B,gBAAM,UAAU,SAAS;AAEzB,eAAK,KAAK,qBAAqB,mBAAmB,MAAM,IAAI;AAE5D,mBAAS,OAAO,SAAS;AACrB,gBAAI,QAAQ,iBAAiB,CAAC,OAAO,MAAM,GAAG,GAAG;AAC7C,oBAAM,KAAK,QAAQ,GAAG;AAEtB,oBAAM,KAAK,wBAAwB,YAAY,GAAG,IAAI;AAAA,gBAClD,MAAM;AAAA,gBACN,QAAQ;AAAA,kBACJ,MAAM;AAAA,kBACN,MAAM,QAAQ,aAAa,QAAQ,uBAAuB,WAAW;AAAA,kBACrE,MAAM,QAAQ,aAAa,QAAQ,uBAAuB,SAAS;AAAA,kBACnE,MAAM;AAAA,kBACN,OAAO;AAAA,gBACX;AAAA,gBACA,QAAQ,CAAC;AAAA,cACb,CAAC;AAED,mBAAK,KAAK,qBAAqB,YAAY,GAAG,IAAI,QAAQ,GAAG,GAAG,IAAI;AAAA,YACxE;AAAA,UACJ;AAEA,qBAAW,cAAc,QAAQ,aAAa;AAC1C,kBAAM,KAAK,wBAAwB,wBAAwB,WAAW,IAAI,IAAI;AAAA,cAC1E,MAAM;AAAA,cACN,QAAQ;AAAA,gBACJ,MAAM,WAAW;AAAA,cACrB;AAAA,cACA,QAAQ,CAAC;AAAA,YACb,CAAC;AAED,qBAAS,OAAO,YAAY;AACxB,oBAAM,KAAK,QAAQ,GAAG;AAEtB,oBAAM,KAAK,wBAAwB,wBAAwB,WAAW,IAAI,IAAI,GAAG,IAAI;AAAA,gBACjF,MAAM;AAAA,gBACN,QAAQ;AAAA,kBACJ,MAAM;AAAA,kBACN,MAAM,QAAQ,kBAAkB,WAAW;AAAA,kBAC3C,MAAM,QAAQ,kBAAkB,SAAS;AAAA,kBACzC,MAAM;AAAA,kBACN,OAAO;AAAA,gBACX;AAAA,gBACA,QAAQ,CAAC;AAAA,cACb,CAAC;AAED,kBAAI,QAAQ,gBAAgB;AACxB,sBAAM,IAAI,IAAI,KAAK,WAAW,GAAG,IAAI,GAAI;AACzC,2BAAW,GAAG,IAAI,EAAE,SAAS;AAAA,cACjC;AAEA,mBAAK,KAAK;AAAA,gBACN,wBAAwB,WAAW,IAAI,IAAI,GAAG;AAAA,gBAC9C,WAAW,GAAG;AAAA,gBACd;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,gBAAQ,SAAS,MAAM;AAAA,MAC3B,CAAC,EACA,MAAM,WAAS;AAtbhC;AAuboB,aAAK,cAAc,gBAAgB;AAEnC,YACI,MAAM,SAAS,eACf,MAAM,SAAS,kBACf,MAAM,SAAS,iBACf,WAAM,aAAN,mBAAgB,YAAW,KAC7B;AACE,6BAAmB,KAAK;AAAA,YACpB,YAAY;AACR,oBAAM,KAAK,mBAAmB;AAAA,YAClC;AAAA,YACA,IAAI,KAAK;AAAA,UACb;AAAA,QACJ,OAAO;AACH,eAAK,IAAI,MAAM,gDAAgD,KAAK,UAAU,KAAK,CAAC,EAAE;AAEtF,eAAK,KAAK,qBAAqB,mBAAmB,OAAO,IAAI;AAE7D,iBAAO,IAAI,MAAM,KAAK,CAAC;AAAA,QAC3B;AAAA,MACJ,CAAC;AAAA,IACT,CAAC;AAAA,EACL;AAAA,EAEA,aAAa,SAAiB,QAA2B;AACrD,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,YAAM,MAAM,WAAW,OAAO;AAC9B,UAAI,gBAAgB;AAEpB,UAAI,OAAO,SAAS;AAChB,YAAI;AACA,2BAAAA,SAAM;AAAA,YACF,QAAQ;AAAA,YACR,SAAS;AAAA,YACT;AAAA,YACA,SAAS;AAAA,YACT,cAAc;AAAA,YACd;AAAA,UACJ,CAAC,EACI,KAAK,cAAY;AAEd,4BAAgB;AAEhB,oBAAQ,QAAQ;AAAA,UACpB,CAAC,EACA,MAAM,WAAS;AACZ,gBAAI,MAAM,UAAU;AAGhB,mBAAK,IAAI;AAAA,gBACL,YAAY,MAAM,SAAS,MAAM,kBAAkB,GAAG,kBAAkB,KAAK,UAAU,MAAM,SAAS,IAAI,CAAC;AAAA,cAC/G;AAAA,YACJ,WAAW,MAAM,SAAS;AAMtB,kBAAI,MAAM,SAAS,eAAe;AAC9B,qBAAK,IAAI,MAAM,MAAM,OAAO;AAAA,cAChC,OAAO;AACH,qBAAK,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,GAAG,KAAK,MAAM,OAAO,EAAE;AACjE,gCAAgB,MAAM;AAAA,cAC1B;AAAA,YACJ,OAAO;AAEH,mBAAK,IAAI,MAAM,MAAM,OAAO;AAAA,YAChC;AAEA,mBAAO,IAAI,MAAM,KAAK,CAAC;AAAA,UAC3B,CAAC;AAAA,QACT,SAAS,OAAY;AACjB,iBAAO,IAAI,MAAM,KAAK,CAAC;AAAA,QAC3B;AAAA,MACJ,OAAO;AACH,eAAO,IAAI,MAAM,2BAA2B,CAAC;AAAA,MACjD;AAAA,IACJ,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,SAAS,UAA4B;AACzC,QAAI;AACA,WAAK,cAAc,gBAAgB;AACnC,WAAK,cAAc,gBAAgB;AAEnC,eAAS;AAAA,IACb,QAAQ;AACJ,eAAS;AAAA,IACb;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,cAAc,IAAY,OAAgD;AAC9E,QAAI,SAAS,CAAC,MAAM,KAAK;AACrB,UAAI,GAAG,QAAQ,SAAS,MAAM,IAAI;AAC9B,aAAK,KAAK,aAAa,eAAe,EAAE,SAAS,KAAK,OAAO,QAAQ,QAAQ,UAAU,CAAC;AAAA,MAC5F,WAAW,GAAG,QAAQ,MAAM,MAAM,IAAI;AAClC,cAAM,QAAQ,GAAG,MAAM,4BAA4B;AAEnD,YAAI,UAAS,+BAAO,UAAS,GAAG;AAC5B,eAAK,KAAK,aAAa,eAAe;AAAA,YAClC,SAAS,KAAK,OAAO;AAAA,YACrB,QAAQ;AAAA,YACR,UAAU,OAAO,MAAM,CAAC,CAAC;AAAA,UAC7B,CAAC;AAAA,QACL;AAAA,MACJ;AACA,UAAI,GAAG,QAAQ,QAAQ,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,IAAI;AAC/D,aAAK,KAAK,aAAa,eAAe;AAAA,UAClC,SAAS,KAAK,OAAO;AAAA,UACrB,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,QAAQ,MAAM;AAAA,QAClB,CAAC;AAAA,MACL,WAAW,GAAG,QAAQ,SAAS,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,IAAI;AACvE,cAAM,QAAQ,GAAG,MAAM,2BAA2B;AAElD,YAAI,UAAS,+BAAO,UAAS,GAAG;AAC5B,eAAK,KAAK,aAAa,eAAe;AAAA,YAClC,SAAS,KAAK,OAAO;AAAA,YACrB,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,QAAQ,MAAM;AAAA,YACd,UAAU,OAAO,MAAM,CAAC,CAAC;AAAA,UAC7B,CAAC;AAAA,QACL;AAAA,MACJ;AAEA,UAAI,GAAG,QAAQ,YAAY,MAAM,MAAM,MAAM,QAAQ,MAAM;AACvD,aAAK,KAAK,eAAe,IAAI,MAAM,GAAc;AAAA,MACrD;AAEA,UAAI,GAAG,QAAQ,YAAY,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,IAAI;AACnE,cAAM,MAAM,MAAM;AAElB,aAAK,KAAK,aAAa,eAAe;AAAA,UAClC,SAAS,KAAK,OAAO;AAAA,UACrB,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,GAAI;AAAA,QAC9C,CAAC;AAAA,MACL,WAAW,GAAG,QAAQ,SAAS,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,IAAI;AACvE,cAAM,MAAM,MAAM;AAClB,cAAM,QAAQ,GAAG,MAAM,+BAA+B;AAEtD,YAAI,UAAS,+BAAO,UAAS,GAAG;AAC5B,eAAK,KAAK,aAAa,eAAe;AAAA,YAClC,SAAS,KAAK,OAAO;AAAA,YACrB,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,GAAI;AAAA,YAC1C,UAAU,OAAO,MAAM,CAAC,CAAC;AAAA,UAC7B,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,eAAe,IAAY,KAA6B;AAC1D,UAAM,QAAQ,GAAG,MAAM,4BAA4B;AAEnD,SAAK,aAAa,WAAW;AAE7B,QAAI,OAAO;AACP,UAAI,KAAK;AACL,cAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG,MAAM,CAAC,CAAC,KAAK;AAChE,YAAI,kBAAkB,eAAe,KAAK;AACtC,eAAK,KAAK,SAAS,GAAG,MAAM,CAAC,CAAC,WAAW,eAAe,KAAK,KAAK;AAClE,wBAAc,KAAK;AAAA,YACf,MAAM;AACF,mBAAK,KAAK,SAAS,IAAI,OAAO,KAAK;AAAA,YACvC;AAAA,YACC,eAAe,MAAiB;AAAA,UACrC;AAAA,QACJ;AAAA,MACJ,OAAO;AACH,aAAK,KAAK,SAAS,GAAG,MAAM,CAAC,CAAC,YAAY,MAAM,KAAK;AAAA,MACzD;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,QAAQ,OAAuB;AAC3B,YAAQ,SAAS,IAAI,QAAQ,KAAK,iBAAiB,GAAG;AAAA,EAC1D;AACJ;AAEA,IAAI,QAAQ,SAAS,QAAQ;AAEzB,SAAO,UAAU,CAAC,YAAuD,IAAI,UAAU,OAAO;AAClG,OAAO;AAEH,GAAC,MAAM,IAAI,UAAU,GAAG;AAC5B;",
6
6
  "names": ["axios"]
7
7
  }
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "hydrawise",
4
- "version": "1.0.2",
4
+ "version": "1.0.4",
5
5
  "news": {
6
+ "1.0.4": {
7
+ "en": "fixed dependencies\nfixed schema URLs",
8
+ "de": "feste abhängigkeiten\nfestes Schema URLs",
9
+ "ru": "фиксированные зависимости\nфиксированная схема URL",
10
+ "pt": "dependências fixas\nesquema fixo URLs",
11
+ "nl": "vaste afhankelijkheden\nvast schema URL's",
12
+ "fr": "dépendances fixes\nschéma fixe URLs",
13
+ "it": "dipendenze fisse\nschema fisso URLs",
14
+ "es": "dependencias fijas\nesquema fijo URLs",
15
+ "pl": "stałe zależności\nstałe schematy URL",
16
+ "uk": "фіксовані залежності\nфіксована схема Контакти",
17
+ "zh-cn": "固定依赖关系\n固定计划 URL( URL)"
18
+ },
19
+ "1.0.3": {
20
+ "en": "updated dependencies",
21
+ "de": "aktualisierte abhängigkeiten",
22
+ "ru": "обновленные зависимости",
23
+ "pt": "dependências atualizadas",
24
+ "nl": "bijgewerkte afhankelijkheden",
25
+ "fr": "dépendances actualisées",
26
+ "it": "dipendenze aggiornate",
27
+ "es": "dependencias actualizadas",
28
+ "pl": "zaktualizowane zależności",
29
+ "uk": "оновлені залежності",
30
+ "zh-cn": "更新的依赖关系"
31
+ },
6
32
  "1.0.2": {
7
33
  "en": "fixed issues detected by repository checker",
8
34
  "de": "von repository checker erkannte probleme",
@@ -67,19 +93,6 @@
67
93
  "pl": "domyślna wartość dodana do parametru 'apiInterval'\ndodane tłumaczenia",
68
94
  "uk": "додано значення за замовчуванням до параметра `apiInterval й\nдодано переклади",
69
95
  "zh-cn": "添加参数“ apiInterval” 的默认值 `\n增加翻译"
70
- },
71
- "0.2.8": {
72
- "en": "fixed tier and license",
73
- "de": "festwert und lizenz",
74
- "ru": "фиксированный уровень и лицензия",
75
- "pt": "tier fixo e licença",
76
- "nl": "vast niveau en licentie",
77
- "fr": "niveau fixe et licence",
78
- "it": "tier fisso e licenza",
79
- "es": "nivel fijo y licencia",
80
- "pl": "stały poziom dokładności i licencja",
81
- "uk": "фіксований ярус і ліцензія",
82
- "zh-cn": "固定等级和许可证"
83
96
  }
84
97
  },
85
98
  "titleLang": {
@@ -144,7 +157,7 @@
144
157
  ],
145
158
  "globalDependencies": [
146
159
  {
147
- "admin": ">=6.6.0"
160
+ "admin": ">=7.6.17"
148
161
  }
149
162
  ]
150
163
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.hydrawise",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Adapter to control the Hydrawise irrigation control system",
5
5
  "author": {
6
6
  "name": "SentiQ",
@@ -21,44 +21,29 @@
21
21
  "url": "git@github.com:SentiQ/ioBroker.hydrawise.git"
22
22
  },
23
23
  "engines": {
24
- "node": ">=18"
24
+ "node": ">=20"
25
25
  },
26
26
  "dependencies": {
27
- "@iobroker/adapter-core": "^3.1.6",
28
- "axios": "^1.7.7"
27
+ "@iobroker/adapter-core": "^3.3.2",
28
+ "axios": "^1.13.2"
29
29
  },
30
30
  "devDependencies": {
31
- "@alcalzone/release-script": "^3.8.0",
32
- "@alcalzone/release-script-plugin-iobroker": "^3.7.0",
33
- "@alcalzone/release-script-plugin-license": "^3.5.9",
34
- "@alcalzone/release-script-plugin-manual-review": "^3.7.0",
35
- "@iobroker/adapter-dev": "^1.3.0",
36
- "@iobroker/testing": "^4.1.3",
37
- "@tsconfig/node16": "^16.1.0",
38
- "@types/chai": "^4.3.4",
39
- "@types/chai-as-promised": "^7.1.5",
40
- "@types/mocha": "^10.0.2",
41
- "@types/node": "^20.13.0",
31
+ "@alcalzone/release-script": "^5.0.0",
32
+ "@alcalzone/release-script-plugin-iobroker": "^4.0.0",
33
+ "@alcalzone/release-script-plugin-license": "^4.0.0",
34
+ "@alcalzone/release-script-plugin-manual-review": "^4.0.0",
35
+ "@iobroker/adapter-dev": "^1.4.0",
36
+ "@iobroker/eslint-config": "^2.2.0",
37
+ "@iobroker/testing": "^5.2.2",
38
+ "@tsconfig/node16": "^16.1.8",
39
+ "@types/node": "^24.10.1",
42
40
  "@types/proxyquire": "^1.3.31",
43
- "@types/sinon": "^17.0.3",
44
- "@types/sinon-chai": "^3.2.10",
45
- "@typescript-eslint/eslint-plugin": "^5.60.1",
46
- "@typescript-eslint/parser": "^5.60.1",
47
- "chai": "^4.3.8",
48
- "chai-as-promised": "^8.0.0",
49
- "eslint": "^8.56.0",
50
- "eslint-config-prettier": "^9.0.0",
51
- "eslint-plugin-prettier": "^5.2.1",
52
- "mocha": "^10.3.0",
53
- "nyc": "^15.1.0",
54
- "prettier": "^3.3.2",
41
+ "nyc": "^17.1.0",
55
42
  "proxyquire": "^2.1.3",
56
- "rimraf": "^5.0.7",
57
- "sinon": "^18.0.0",
58
- "sinon-chai": "^3.7.0",
43
+ "rimraf": "^6.0.1",
59
44
  "source-map-support": "^0.5.21",
60
45
  "ts-node": "^10.9.1",
61
- "typescript": "~5.5.4"
46
+ "typescript": "~5.9.3"
62
47
  },
63
48
  "main": "build/main.js",
64
49
  "files": [
@@ -82,7 +67,7 @@
82
67
  "test": "npm run test:ts && npm run test:package",
83
68
  "check": "tsc --noEmit",
84
69
  "coverage": "nyc npm run test:ts",
85
- "lint": "eslint --ext .ts src/ --fix",
70
+ "lint": "eslint -c eslint.config.mjs .",
86
71
  "translate": "translate-adapter",
87
72
  "release": "release-script patch --yes",
88
73
  "release-minor": "release-script minor --yes",