iobroker.hydrawise 0.3.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -39,6 +39,14 @@ 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.0 (2024-04-30)
43
+
44
+ - (SentiQ) fixed adapter crash after dns not reachable
45
+
46
+ ### 0.3.3 (2024-04-22)
47
+
48
+ - (SentiQ) updated dependencies
49
+
42
50
  ### 0.3.2 (2024-04-19)
43
51
 
44
52
  - (SentiQ) added default value to parameter `apiInterval`
package/build/main.js CHANGED
@@ -43,17 +43,21 @@ class Hydrawise extends utils.Adapter {
43
43
  this.log.error("No API-Key defined!");
44
44
  } else {
45
45
  this.setStateChangedAsync("info.connection", false, true);
46
- await this.GetStatusSchedule();
47
- nextpollSchedule = this.setInterval(async () => {
46
+ try {
48
47
  await this.GetStatusSchedule();
49
- }, this.config.apiInterval * 1e3);
50
- await this.GetCustomerDetails();
51
- nextpollCustomer = this.setInterval(
52
- async () => {
53
- await this.GetCustomerDetails();
54
- },
55
- 5 * 60 * 1e3
56
- );
48
+ nextpollSchedule = this.setInterval(async () => {
49
+ await this.GetStatusSchedule();
50
+ }, this.config.apiInterval * 1e3);
51
+ await this.GetCustomerDetails();
52
+ nextpollCustomer = this.setInterval(
53
+ async () => {
54
+ await this.GetCustomerDetails();
55
+ },
56
+ 5 * 60 * 1e3
57
+ );
58
+ } catch (error) {
59
+ this.log.error(error.toString());
60
+ }
57
61
  await this.subscribeStatesAsync("*");
58
62
  }
59
63
  }
@@ -319,7 +323,7 @@ class Hydrawise extends utils.Adapter {
319
323
  }).catch((error) => {
320
324
  var _a;
321
325
  this.clearInterval(nextpollSchedule);
322
- if (((_a = error.response) == null ? void 0 : _a.status) === 429) {
326
+ if (error.code === "EAI_AGAIN" || error.code === "ECONNABORTED" || error.code === "ENOTFOUND" || ((_a = error.response) == null ? void 0 : _a.status) === 429) {
323
327
  nextpollSchedule = this.setInterval(async () => {
324
328
  await this.GetStatusSchedule();
325
329
  }, this.config.apiInterval * 1e3);
@@ -386,8 +390,8 @@ class Hydrawise extends utils.Adapter {
386
390
  resolve(response.status);
387
391
  }).catch((error) => {
388
392
  var _a;
389
- if (((_a = error.response) == null ? void 0 : _a.status) === 429) {
390
- this.clearInterval(nextpollCustomer);
393
+ this.clearInterval(nextpollCustomer);
394
+ if (error.code === "EAI_AGAIN" || error.code === "ECONNABORTED" || error.code === "ENOTFOUND" || ((_a = error.response) == null ? void 0 : _a.status) === 429) {
391
395
  nextpollCustomer = this.setInterval(
392
396
  async () => {
393
397
  await this.GetCustomerDetails();
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 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\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.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 if (error.response?.status === 429) {\n this.clearInterval(nextpollCustomer);\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 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 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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",
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": "0.3.2",
4
+ "version": "1.0.0",
5
5
  "news": {
6
+ "1.0.0": {
7
+ "en": "fixed adapter crash after dns not reachable",
8
+ "de": "fester adapterabsturz nach dns nicht erreichbar",
9
+ "ru": "крушение фиксированного адаптера после того, как днс недоступен",
10
+ "pt": "trava do adaptador fixo após dns não alcançável",
11
+ "nl": "vaste adapter crash na dns niet bereikbaar",
12
+ "fr": "crash de l'adaptateur fixe après dns inaccessible",
13
+ "it": "crash adattatore fisso dopo dns non raggiungibile",
14
+ "es": "ajuste fijo estrella después de dns no alcanzable",
15
+ "pl": "stałe zderzenie adaptera po dns nie osiągalne",
16
+ "uk": "фіксована аварійна аварія після dns не досягається",
17
+ "zh-cn": "dns 无法到达后固定适配器崩溃"
18
+ },
19
+ "0.3.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
  "0.3.2": {
7
33
  "en": "added default value to parameter `apiInterval`\nadded translations",
8
34
  "de": "standardwert zum Parameter `apiInterval `\nübersetzungen",
@@ -67,32 +93,6 @@
67
93
  "pl": "stały typ obiektu runDomyślne",
68
94
  "uk": "фіксований тип об'єкта за замовчуванням",
69
95
  "zh-cn": "运行对象的固定类型"
70
- },
71
- "0.2.6": {
72
- "en": "fixed type of `runDefault`",
73
- "de": "fester Typ von `runDefault `",
74
- "ru": "фиксированный тип `runDefault \"",
75
- "pt": "tipo fixo de `runDefault \"",
76
- "nl": "vast type van de loopstandaard Wat",
77
- "fr": "type fixe de `runDefault \"",
78
- "it": "tipo fisso di `runDefault #",
79
- "es": "tipo fijo de `runDefault `",
80
- "pl": "stały typ 'runDomyślne'",
81
- "uk": "фіксований тип `runDefault й",
82
- "zh-cn": "固定类型“runDefault” `"
83
- },
84
- "0.2.5": {
85
- "en": "NodeJS >= 18.x and js-controller >= 5 is required",
86
- "de": "NodeJS >= 18.x und js-Controller >= 5 ist erforderlich",
87
- "ru": "NodeJS >= 18.x и js-контроллер >= 5 требуется",
88
- "pt": "NodeJS >= 18.x e js-controller >= 5 é necessário",
89
- "nl": "Voor de toepassing van de onderverdelingen 870190 tot en met 870290 wordt onder post 8702 verstaan: 5 is vereist",
90
- "fr": "NodeJS >= 18.x et js-controller >= 5 est nécessaire",
91
- "it": "NodeJS >= 18.x e js-controller 5 è richiesto",
92
- "es": "NodeJS >= 18.x y js-controller Se requiere 5",
93
- "pl": "NodeJS > = 18.x i kontroler js- > = 5 jest wymagane",
94
- "uk": "NodeJS >= 18.x та js-controller >= 5 обов'язково",
95
- "zh-cn": "节点JS18x和js控制器QQ 需要5个"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.hydrawise",
3
- "version": "0.3.2",
3
+ "version": "1.0.0",
4
4
  "description": "Adapter to control the Hydrawise irrigation control system",
5
5
  "author": {
6
6
  "name": "SentiQ",
@@ -23,7 +23,7 @@
23
23
  "node": ">=18"
24
24
  },
25
25
  "dependencies": {
26
- "@iobroker/adapter-core": "^3.0.6",
26
+ "@iobroker/adapter-core": "^3.1.4",
27
27
  "axios": "^1.6.8"
28
28
  },
29
29
  "devDependencies": {
@@ -32,7 +32,7 @@
32
32
  "@alcalzone/release-script-plugin-license": "^3.5.9",
33
33
  "@alcalzone/release-script-plugin-manual-review": "^3.7.0",
34
34
  "@iobroker/adapter-dev": "^1.3.0",
35
- "@iobroker/testing": "^4.1.0",
35
+ "@iobroker/testing": "^4.1.3",
36
36
  "@tsconfig/node16": "^16.1.0",
37
37
  "@types/chai": "^4.3.4",
38
38
  "@types/chai-as-promised": "^7.1.5",