iobroker.zendure-solarflow 3.0.4 → 3.0.5

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
@@ -59,6 +59,10 @@ On a HUB 1200 / HUB 2000 / ACE 1500 combination you have to use '**setDeviceAuto
59
59
  This adapter will now use the Cloud Authorization Code for authentication on the official mqtt servers, which you can generate in the Zendure app!
60
60
 
61
61
  ## Changelog
62
+ ### 3.0.5 (2025-10-20)
63
+
64
+ - Add some more log information on device creation
65
+
62
66
  ### 3.0.4 (2025-10-09)
63
67
 
64
68
  - Fix inputLimit issue
@@ -31,6 +31,9 @@ var import_SfHub2000 = require("../models/deviceModels/SfHub2000");
31
31
  const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetails) => {
32
32
  switch (_productKey.toLowerCase()) {
33
33
  case "73bktv":
34
+ _adapter.log.debug(
35
+ `[onReady] Creating deviceModel HUB 1200 ${_productKey}`
36
+ );
34
37
  return new import_SfHub1200.SfHub1200(
35
38
  _adapter,
36
39
  _productKey,
@@ -40,6 +43,9 @@ const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetail
40
43
  _zenHaDeviceDetails
41
44
  );
42
45
  case "a8yh63":
46
+ _adapter.log.debug(
47
+ `[onReady] Creating deviceModel HUB 2000 ${_productKey}`
48
+ );
43
49
  return new import_SfHub2000.SfHub2000(
44
50
  _adapter,
45
51
  _productKey,
@@ -49,6 +55,9 @@ const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetail
49
55
  _zenHaDeviceDetails
50
56
  );
51
57
  case "ywf7hv":
58
+ _adapter.log.debug(
59
+ `[onReady] Creating deviceModel AIO 2400 ${_productKey}`
60
+ );
52
61
  return new import_Aio2400.Aio2400(
53
62
  _adapter,
54
63
  _productKey,
@@ -58,6 +67,9 @@ const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetail
58
67
  _zenHaDeviceDetails
59
68
  );
60
69
  case "ja72u0ha":
70
+ _adapter.log.debug(
71
+ `[onReady] Creating deviceModel Hyper 2000 ${_productKey}`
72
+ );
61
73
  return new import_Hyper2000.Hyper2000(
62
74
  _adapter,
63
75
  _productKey,
@@ -67,6 +79,9 @@ const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetail
67
79
  _zenHaDeviceDetails
68
80
  );
69
81
  case "gda3tb":
82
+ _adapter.log.debug(
83
+ `[onReady] Creating deviceModel Hyper 2000 ${_productKey}`
84
+ );
70
85
  return new import_Hyper2000.Hyper2000(
71
86
  _adapter,
72
87
  _productKey,
@@ -76,6 +91,9 @@ const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetail
76
91
  _zenHaDeviceDetails
77
92
  );
78
93
  case "b3dxda":
94
+ _adapter.log.debug(
95
+ `[onReady] Creating deviceModel Hyper 2000 ${_productKey}`
96
+ );
79
97
  return new import_Hyper2000.Hyper2000(
80
98
  _adapter,
81
99
  _productKey,
@@ -85,6 +103,9 @@ const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetail
85
103
  _zenHaDeviceDetails
86
104
  );
87
105
  case "8bm93h":
106
+ _adapter.log.debug(
107
+ `[onReady] Creating deviceModel ACE 1500 ${_productKey}`
108
+ );
88
109
  return new import_Ace1500.Ace1500(
89
110
  _adapter,
90
111
  _productKey,
@@ -94,6 +115,9 @@ const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetail
94
115
  _zenHaDeviceDetails
95
116
  );
96
117
  case "bc8b7f":
118
+ _adapter.log.debug(
119
+ `[onReady] Creating deviceModel SF 2400 AC ${_productKey}`
120
+ );
97
121
  return new import_Sf2400Ac.Sf2400Ac(
98
122
  _adapter,
99
123
  _productKey,
@@ -103,6 +127,9 @@ const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetail
103
127
  _zenHaDeviceDetails
104
128
  );
105
129
  case "a4ss5P":
130
+ _adapter.log.debug(
131
+ `[onReady] Creating deviceModel SF 800 ${_productKey}`
132
+ );
106
133
  return new import_Sf800.Sf800(
107
134
  _adapter,
108
135
  _productKey,
@@ -112,6 +139,9 @@ const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetail
112
139
  _zenHaDeviceDetails
113
140
  );
114
141
  case "b1nhmc":
142
+ _adapter.log.debug(
143
+ `[onReady] Creating deviceModel SF 800 ${_productKey}`
144
+ );
115
145
  return new import_Sf800.Sf800(
116
146
  _adapter,
117
147
  _productKey,
@@ -121,6 +151,9 @@ const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetail
121
151
  _zenHaDeviceDetails
122
152
  );
123
153
  case "R3mn8U":
154
+ _adapter.log.debug(
155
+ `[onReady] Creating deviceModel SF 800 ${_productKey}`
156
+ );
124
157
  return new import_Sf800.Sf800(
125
158
  _adapter,
126
159
  _productKey,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/helpers/helpers.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\n\nimport { ZendureSolarflow } from \"../main\";\nimport { Ace1500 } from \"../models/deviceModels/Ace1500\";\nimport { Aio2400 } from \"../models/deviceModels/Aio2400\";\nimport { Hyper2000 } from \"../models/deviceModels/Hyper2000\";\nimport { Sf2400Ac } from \"../models/deviceModels/Sf2400Ac\";\nimport { Sf800 } from \"../models/deviceModels/Sf800\";\nimport { SfHub1200 } from \"../models/deviceModels/SfHub1200\";\nimport { SfHub2000 } from \"../models/deviceModels/SfHub2000\";\n\nimport { IZenHaDeviceDetails } from \"../models/IZenHaDeviceDetails\";\n\nexport const createDeviceModel = (\n _adapter: ZendureSolarflow,\n _productKey: string,\n _deviceKey: string,\n _zenHaDeviceDetails?: IZenHaDeviceDetails\n):\n | SfHub1200\n | SfHub2000\n | Ace1500\n | Hyper2000\n | Sf2400Ac\n | Sf800\n | undefined => {\n switch (_productKey.toLowerCase()) {\n case \"73bktv\":\n return new SfHub1200(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"HUB 1200\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"HUB 1200\",\n _zenHaDeviceDetails\n );\n case \"a8yh63\":\n return new SfHub2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"HUB 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"HUB 2000\",\n _zenHaDeviceDetails\n );\n case \"ywf7hv\":\n return new Aio2400(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"AIO 2400\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"AIO 2400\",\n _zenHaDeviceDetails\n );\n case \"ja72u0ha\":\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"gda3tb\":\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"b3dxda\":\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"8bm93h\":\n return new Ace1500(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Ace 1500\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Ace 1500\",\n _zenHaDeviceDetails\n );\n case \"bc8b7f\":\n return new Sf2400Ac(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 2400 AC\",\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.deviceName\n : \"Solarflow 2400 AC\",\n _zenHaDeviceDetails\n );\n case \"a4ss5P\":\n return new Sf800(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 800\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Solarflow 800\",\n _zenHaDeviceDetails\n );\n case \"b1nhmc\":\n return new Sf800(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 800\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Solarflow 800\",\n _zenHaDeviceDetails\n );\n case \"R3mn8U\":\n return new Sf800(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 800\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Solarflow 800\",\n _zenHaDeviceDetails\n );\n default:\n return undefined;\n }\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAwB;AACxB,qBAAwB;AACxB,uBAA0B;AAC1B,sBAAyB;AACzB,mBAAsB;AACtB,uBAA0B;AAC1B,uBAA0B;AAInB,MAAM,oBAAoB,CAC/B,UACA,aACA,YACA,wBAQe;AACf,UAAQ,YAAY,YAAY,GAAG;AAAA,IACjC,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBACI,oBAAoB,eACpB;AAAA,QACJ,sBACI,oBAAoB,aACpB;AAAA,QACJ;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBACI,oBAAoB,eACpB;AAAA,QACJ,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBACI,oBAAoB,eACpB;AAAA,QACJ,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBACI,oBAAoB,eACpB;AAAA,QACJ,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF;AACE,aAAO;AAAA,EACX;AACF;",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\n\nimport { ZendureSolarflow } from \"../main\";\nimport { Ace1500 } from \"../models/deviceModels/Ace1500\";\nimport { Aio2400 } from \"../models/deviceModels/Aio2400\";\nimport { Hyper2000 } from \"../models/deviceModels/Hyper2000\";\nimport { Sf2400Ac } from \"../models/deviceModels/Sf2400Ac\";\nimport { Sf800 } from \"../models/deviceModels/Sf800\";\nimport { SfHub1200 } from \"../models/deviceModels/SfHub1200\";\nimport { SfHub2000 } from \"../models/deviceModels/SfHub2000\";\n\nimport { IZenHaDeviceDetails } from \"../models/IZenHaDeviceDetails\";\n\nexport const createDeviceModel = (\n _adapter: ZendureSolarflow,\n _productKey: string,\n _deviceKey: string,\n _zenHaDeviceDetails?: IZenHaDeviceDetails\n):\n | SfHub1200\n | SfHub2000\n | Ace1500\n | Hyper2000\n | Sf2400Ac\n | Sf800\n | undefined => {\n switch (_productKey.toLowerCase()) {\n case \"73bktv\":\n _adapter.log.debug(\n `[onReady] Creating deviceModel HUB 1200 ${_productKey}`\n );\n return new SfHub1200(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"HUB 1200\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"HUB 1200\",\n _zenHaDeviceDetails\n );\n case \"a8yh63\":\n _adapter.log.debug(\n `[onReady] Creating deviceModel HUB 2000 ${_productKey}`\n );\n return new SfHub2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"HUB 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"HUB 2000\",\n _zenHaDeviceDetails\n );\n case \"ywf7hv\":\n _adapter.log.debug(\n `[onReady] Creating deviceModel AIO 2400 ${_productKey}`\n );\n return new Aio2400(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"AIO 2400\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"AIO 2400\",\n _zenHaDeviceDetails\n );\n case \"ja72u0ha\":\n _adapter.log.debug(\n `[onReady] Creating deviceModel Hyper 2000 ${_productKey}`\n );\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"gda3tb\":\n _adapter.log.debug(\n `[onReady] Creating deviceModel Hyper 2000 ${_productKey}`\n );\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"b3dxda\":\n _adapter.log.debug(\n `[onReady] Creating deviceModel Hyper 2000 ${_productKey}`\n );\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"8bm93h\":\n _adapter.log.debug(\n `[onReady] Creating deviceModel ACE 1500 ${_productKey}`\n );\n return new Ace1500(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Ace 1500\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Ace 1500\",\n _zenHaDeviceDetails\n );\n case \"bc8b7f\":\n _adapter.log.debug(\n `[onReady] Creating deviceModel SF 2400 AC ${_productKey}`\n );\n return new Sf2400Ac(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 2400 AC\",\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.deviceName\n : \"Solarflow 2400 AC\",\n _zenHaDeviceDetails\n );\n case \"a4ss5P\":\n _adapter.log.debug(\n `[onReady] Creating deviceModel SF 800 ${_productKey}`\n );\n return new Sf800(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 800\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Solarflow 800\",\n _zenHaDeviceDetails\n );\n case \"b1nhmc\":\n _adapter.log.debug(\n `[onReady] Creating deviceModel SF 800 ${_productKey}`\n );\n return new Sf800(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 800\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Solarflow 800\",\n _zenHaDeviceDetails\n );\n case \"R3mn8U\":\n _adapter.log.debug(\n `[onReady] Creating deviceModel SF 800 ${_productKey}`\n );\n return new Sf800(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 800\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Solarflow 800\",\n _zenHaDeviceDetails\n );\n default:\n return undefined;\n }\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/build/main.js CHANGED
@@ -130,6 +130,10 @@ class ZendureSolarflow extends utils.Adapter {
130
130
  );
131
131
  if (deviceModel) {
132
132
  this.zenHaDeviceList.push(deviceModel);
133
+ } else {
134
+ this.log.error(
135
+ `[onReady] Error creating device with productKey '${device.productKey}' / deviceKey '${device.deviceKey} / productModel ${device.productModel}'`
136
+ );
133
137
  }
134
138
  });
135
139
  }
package/build/main.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/main.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n/*\r\n * Created with @iobroker/create-adapter v2.5.0\r\n */\r\n\r\n// The adapter-core module gives you access to the core ioBroker functions\r\n// you need to create an adapter\r\nimport * as utils from \"@iobroker/adapter-core\";\r\n\r\nimport { zenLogin } from \"./services/zenWebService\";\r\nimport { Job } from \"node-schedule\";\r\nimport { MqttClient } from \"mqtt\";\r\nimport { startRefreshAccessTokenTimerJob } from \"./services/jobSchedule\";\r\nimport { connectLocalMqttClient } from \"./services/mqttLocalService\";\r\nimport { IZenHaDeviceDetails } from \"./models/IZenHaDeviceDetails\";\r\nimport { connectCloudZenMqttClient } from \"./services/mqttCloudZenService\";\r\nimport { IZenHaMqttData } from \"./models/IZenHaMqttData\";\r\nimport { ZenHaDevice } from \"./models/deviceModels/ZenHaDevice\";\r\nimport { createDeviceModel } from \"./helpers/helpers\";\r\n\r\nexport class ZendureSolarflow extends utils.Adapter {\r\n public constructor(options: Partial<utils.AdapterOptions> = {}) {\r\n super({\r\n ...options,\r\n name: \"zendure-solarflow\",\r\n });\r\n this.on(\"ready\", this.onReady.bind(this));\r\n this.on(\"stateChange\", this.onStateChange.bind(this));\r\n this.on(\"unload\", this.onUnload.bind(this));\r\n }\r\n\r\n public zenHaDeviceList: ZenHaDevice[] = []; // All found devices for this instance will be in this array\r\n public mqttSettings: IZenHaMqttData | undefined = undefined;\r\n\r\n public msgCounter: number = 700000;\r\n public lastLogin: Date | undefined = undefined;\r\n\r\n public mqttClient: MqttClient | undefined = undefined;\r\n\r\n public resetValuesJob: Job | undefined = undefined;\r\n public checkStatesJob: Job | undefined = undefined;\r\n public calculationJob: Job | undefined = undefined;\r\n public refreshAccessTokenInterval: ioBroker.Interval | undefined = undefined;\r\n public retryTimeout: ioBroker.Timeout | undefined = undefined;\r\n\r\n /**\r\n * Is called when databases are connected and adapter received configuration.\r\n */\r\n private async onReady(): Promise<void> {\r\n await this.extendObject(\"info\", {\r\n type: \"channel\",\r\n common: {\r\n name: \"Information\",\r\n },\r\n native: {},\r\n });\r\n\r\n await this.extendObject(`info.connection`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Mit Zendure Cloud verbunden\",\r\n en: \"Connected to Zendure cloud\",\r\n },\r\n type: \"boolean\",\r\n desc: \"connection\",\r\n role: \"indicator.connected\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await this.extendObject(`info.errorMessage`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Fehlermeldung der Verbindung zur Zendure Cloud\",\r\n en: \"Error message from Zendure Cloud\",\r\n },\r\n type: \"string\",\r\n desc: \"errorMessage\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n this.setState(\"info.errorMessage\", \"\", true);\r\n this.setState(\"info.connection\", false, true);\r\n\r\n switch (this.config.connectionMode) {\r\n case \"authKey\":\r\n this.log.debug(\"[onReady] Using Authorization Cloud Key\");\r\n\r\n if (!this.config.authorizationCloudKey) {\r\n this.log.error(\r\n \"[zenWebService.login] authorization cloud key is missing!\"\r\n );\r\n break;\r\n }\r\n\r\n const data = await zenLogin(this);\r\n\r\n if (typeof data === \"string\" || data == undefined) {\r\n // Fehler\r\n this.setState(\"info.connection\", false, true);\r\n } else {\r\n this.mqttSettings = data.mqtt;\r\n\r\n if (!connectCloudZenMqttClient(this)) {\r\n return;\r\n }\r\n\r\n this.log.debug(\r\n `[onReady] Creating ${data.deviceList.length} devices...`\r\n );\r\n\r\n await data.deviceList.forEach(async (device: IZenHaDeviceDetails) => {\r\n // States erstellen\r\n const deviceModel = createDeviceModel(\r\n this,\r\n device.productKey,\r\n device.deviceKey,\r\n device\r\n );\r\n\r\n if (deviceModel) {\r\n this.zenHaDeviceList.push(deviceModel);\r\n }\r\n });\r\n }\r\n break;\r\n case \"local\": {\r\n this.log.debug(\"[onReady] Using local MQTT server\");\r\n\r\n connectLocalMqttClient(this);\r\n\r\n // Subscribe to 1. device from local settings\r\n if (\r\n this.config.localDevice1ProductKey &&\r\n this.config.localDevice1DeviceKey\r\n ) {\r\n // States erstellen\r\n const deviceModel = createDeviceModel(\r\n this,\r\n this.config.localDevice1ProductKey,\r\n this.config.localDevice1DeviceKey\r\n );\r\n\r\n if (deviceModel) {\r\n this.zenHaDeviceList.push(deviceModel);\r\n }\r\n }\r\n\r\n // Subscribe to 2. device from local settings\r\n if (\r\n this.config.localDevice2ProductKey &&\r\n this.config.localDevice2DeviceKey\r\n ) {\r\n // States erstellen\r\n const deviceModel = createDeviceModel(\r\n this,\r\n this.config.localDevice2ProductKey,\r\n this.config.localDevice2DeviceKey\r\n );\r\n\r\n if (deviceModel) {\r\n this.zenHaDeviceList.push(deviceModel);\r\n }\r\n }\r\n\r\n // Subscribe to 3. device from local settings\r\n if (\r\n this.config.localDevice3ProductKey &&\r\n this.config.localDevice3DeviceKey\r\n ) {\r\n // States erstellen\r\n const deviceModel = createDeviceModel(\r\n this,\r\n this.config.localDevice3ProductKey,\r\n this.config.localDevice3DeviceKey\r\n );\r\n\r\n if (deviceModel) {\r\n this.zenHaDeviceList.push(deviceModel);\r\n }\r\n }\r\n\r\n // Subscribe to 4. device from local settings\r\n if (\r\n this.config.localDevice4ProductKey &&\r\n this.config.localDevice4DeviceKey\r\n ) {\r\n // States erstellen\r\n const deviceModel = createDeviceModel(\r\n this,\r\n this.config.localDevice4ProductKey,\r\n this.config.localDevice4DeviceKey\r\n );\r\n\r\n if (deviceModel) {\r\n this.zenHaDeviceList.push(deviceModel);\r\n }\r\n }\r\n\r\n if (this.config.useRestart) {\r\n // Add interval to restart adapter every 3 hours\r\n startRefreshAccessTokenTimerJob(this);\r\n }\r\n break;\r\n }\r\n default:\r\n this.setState(\"info.connection\", false, true);\r\n this.log.error(\"[onReady] No connection mode found or mode invalid!\");\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Is called when adapter shuts down - callback has to be called under any circumstances!\r\n */\r\n private async onUnload(callback: () => void): Promise<void> {\r\n try {\r\n if (this.refreshAccessTokenInterval) {\r\n this.clearInterval(this.refreshAccessTokenInterval);\r\n }\r\n\r\n try {\r\n await this.mqttClient?.endAsync();\r\n this.log.info(\"[onUnload] MQTT client stopped!\");\r\n this.mqttClient = undefined;\r\n } catch (ex: any) {\r\n this.log.error(\"[onUnload] Error stopping MQTT client: !\" + ex.message);\r\n }\r\n\r\n this.setState(\"info.connection\", false, true);\r\n\r\n // Scheduler beenden\r\n if (this.resetValuesJob) {\r\n this.resetValuesJob.cancel();\r\n this.resetValuesJob = undefined;\r\n }\r\n\r\n if (this.checkStatesJob) {\r\n this.checkStatesJob?.cancel();\r\n this.checkStatesJob = undefined;\r\n }\r\n\r\n if (this.calculationJob) {\r\n this.calculationJob.cancel();\r\n this.calculationJob = undefined;\r\n }\r\n\r\n if (this.retryTimeout) {\r\n this.clearTimeout(this.retryTimeout);\r\n }\r\n\r\n callback();\r\n } catch (e) {\r\n callback();\r\n }\r\n }\r\n\r\n /**\r\n * Is called if a subscribed state changes\r\n */\r\n private onStateChange(\r\n id: string,\r\n state: ioBroker.State | null | undefined\r\n ): void {\r\n if (state) {\r\n // The state was changed\r\n\r\n // Read product and device key from string\r\n const splitted = id.split(\".\");\r\n const productKey = splitted[2]; // Product Key\r\n const deviceKey = splitted[3]; // Device Key\r\n const stateName1 = splitted[4]; // Folder/State Name 1 (e.g. 'control')\r\n const stateName2 = splitted[5]; // State Name, like 'setOutputLimit'\r\n\r\n const _device = this.zenHaDeviceList.find(\r\n (x) => x.productKey == productKey && x.deviceKey == deviceKey\r\n );\r\n\r\n if (!_device) {\r\n this.log.error(\r\n `[onStateChange] Device '${deviceKey}' not found in zenHaDeviceList!`\r\n );\r\n return;\r\n }\r\n\r\n // !!! Only stateChanges with ack==false are allowed to be processed.\r\n if (state.val != undefined && state.val != null && !state.ack) {\r\n switch (stateName1) {\r\n case \"control\":\r\n this.log.debug(\r\n `[onStateChange] Control state '${stateName2}' changed, new value is ${state.val}, ack = ${state.ack}!`\r\n );\r\n switch (stateName2) {\r\n case \"setOutputLimit\":\r\n _device.setOutputLimit(Number(state.val));\r\n break;\r\n case \"setInputLimit\":\r\n _device.setInputLimit(Number(state.val));\r\n break;\r\n case \"chargeLimit\":\r\n _device.setChargeLimit(Number(state.val));\r\n break;\r\n case \"dischargeLimit\":\r\n _device.setDischargeLimit(Number(state.val));\r\n break;\r\n case \"passMode\":\r\n _device.setPassMode(Number(state.val));\r\n break;\r\n case \"dcSwitch\":\r\n _device.setDcSwitch(state.val ? true : false);\r\n break;\r\n case \"acSwitch\":\r\n _device.setAcSwitch(state.val ? true : false);\r\n break;\r\n case \"acMode\":\r\n _device.setAcMode(Number(state.val));\r\n break;\r\n case \"hubState\":\r\n _device.setHubState(Number(state.val));\r\n break;\r\n case \"autoModel\":\r\n _device.setAutoModel(Number(state.val));\r\n break;\r\n case \"autoRecover\":\r\n _device.setAutoRecover(state.val ? true : false);\r\n break;\r\n case \"buzzerSwitch\":\r\n _device.setBuzzerSwitch(state.val ? true : false);\r\n break;\r\n case \"smartMode\":\r\n _device.setSmartMode(state.val ? true : false);\r\n break;\r\n case \"setDeviceAutomationInOutLimit\":\r\n _device.setDeviceAutomationInOutLimit(Number(state.val));\r\n break;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n // The state was deleted\r\n //this.log.debug(`state ${id} deleted`);\r\n }\r\n }\r\n }\r\n}\r\n\r\nif (require.main !== module) {\r\n // Export the constructor in compact mode\r\n module.exports = (options: Partial<utils.AdapterOptions> | undefined) =>\r\n new ZendureSolarflow(options);\r\n} else {\r\n // otherwise start the instance directly\r\n (() => new ZendureSolarflow())();\r\n}\r\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n/*\r\n * Created with @iobroker/create-adapter v2.5.0\r\n */\r\n\r\n// The adapter-core module gives you access to the core ioBroker functions\r\n// you need to create an adapter\r\nimport * as utils from \"@iobroker/adapter-core\";\r\n\r\nimport { zenLogin } from \"./services/zenWebService\";\r\nimport { Job } from \"node-schedule\";\r\nimport { MqttClient } from \"mqtt\";\r\nimport { startRefreshAccessTokenTimerJob } from \"./services/jobSchedule\";\r\nimport { connectLocalMqttClient } from \"./services/mqttLocalService\";\r\nimport { IZenHaDeviceDetails } from \"./models/IZenHaDeviceDetails\";\r\nimport { connectCloudZenMqttClient } from \"./services/mqttCloudZenService\";\r\nimport { IZenHaMqttData } from \"./models/IZenHaMqttData\";\r\nimport { ZenHaDevice } from \"./models/deviceModels/ZenHaDevice\";\r\nimport { createDeviceModel } from \"./helpers/helpers\";\r\n\r\nexport class ZendureSolarflow extends utils.Adapter {\r\n public constructor(options: Partial<utils.AdapterOptions> = {}) {\r\n super({\r\n ...options,\r\n name: \"zendure-solarflow\",\r\n });\r\n this.on(\"ready\", this.onReady.bind(this));\r\n this.on(\"stateChange\", this.onStateChange.bind(this));\r\n this.on(\"unload\", this.onUnload.bind(this));\r\n }\r\n\r\n public zenHaDeviceList: ZenHaDevice[] = []; // All found devices for this instance will be in this array\r\n public mqttSettings: IZenHaMqttData | undefined = undefined;\r\n\r\n public msgCounter: number = 700000;\r\n public lastLogin: Date | undefined = undefined;\r\n\r\n public mqttClient: MqttClient | undefined = undefined;\r\n\r\n public resetValuesJob: Job | undefined = undefined;\r\n public checkStatesJob: Job | undefined = undefined;\r\n public calculationJob: Job | undefined = undefined;\r\n public refreshAccessTokenInterval: ioBroker.Interval | undefined = undefined;\r\n public retryTimeout: ioBroker.Timeout | undefined = undefined;\r\n\r\n /**\r\n * Is called when databases are connected and adapter received configuration.\r\n */\r\n private async onReady(): Promise<void> {\r\n await this.extendObject(\"info\", {\r\n type: \"channel\",\r\n common: {\r\n name: \"Information\",\r\n },\r\n native: {},\r\n });\r\n\r\n await this.extendObject(`info.connection`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Mit Zendure Cloud verbunden\",\r\n en: \"Connected to Zendure cloud\",\r\n },\r\n type: \"boolean\",\r\n desc: \"connection\",\r\n role: \"indicator.connected\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await this.extendObject(`info.errorMessage`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Fehlermeldung der Verbindung zur Zendure Cloud\",\r\n en: \"Error message from Zendure Cloud\",\r\n },\r\n type: \"string\",\r\n desc: \"errorMessage\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n this.setState(\"info.errorMessage\", \"\", true);\r\n this.setState(\"info.connection\", false, true);\r\n\r\n switch (this.config.connectionMode) {\r\n case \"authKey\":\r\n this.log.debug(\"[onReady] Using Authorization Cloud Key\");\r\n\r\n if (!this.config.authorizationCloudKey) {\r\n this.log.error(\r\n \"[zenWebService.login] authorization cloud key is missing!\"\r\n );\r\n break;\r\n }\r\n\r\n const data = await zenLogin(this);\r\n\r\n if (typeof data === \"string\" || data == undefined) {\r\n // Fehler\r\n this.setState(\"info.connection\", false, true);\r\n } else {\r\n this.mqttSettings = data.mqtt;\r\n\r\n if (!connectCloudZenMqttClient(this)) {\r\n return;\r\n }\r\n\r\n this.log.debug(\r\n `[onReady] Creating ${data.deviceList.length} devices...`\r\n );\r\n\r\n await data.deviceList.forEach(async (device: IZenHaDeviceDetails) => {\r\n // States erstellen\r\n const deviceModel = createDeviceModel(\r\n this,\r\n device.productKey,\r\n device.deviceKey,\r\n device\r\n );\r\n\r\n if (deviceModel) {\r\n this.zenHaDeviceList.push(deviceModel);\r\n } else {\r\n this.log.error(\r\n `[onReady] Error creating device with productKey '${device.productKey}' / deviceKey '${device.deviceKey} / productModel ${device.productModel}'`\r\n );\r\n }\r\n });\r\n }\r\n break;\r\n case \"local\": {\r\n this.log.debug(\"[onReady] Using local MQTT server\");\r\n\r\n connectLocalMqttClient(this);\r\n\r\n // Subscribe to 1. device from local settings\r\n if (\r\n this.config.localDevice1ProductKey &&\r\n this.config.localDevice1DeviceKey\r\n ) {\r\n // States erstellen\r\n const deviceModel = createDeviceModel(\r\n this,\r\n this.config.localDevice1ProductKey,\r\n this.config.localDevice1DeviceKey\r\n );\r\n\r\n if (deviceModel) {\r\n this.zenHaDeviceList.push(deviceModel);\r\n }\r\n }\r\n\r\n // Subscribe to 2. device from local settings\r\n if (\r\n this.config.localDevice2ProductKey &&\r\n this.config.localDevice2DeviceKey\r\n ) {\r\n // States erstellen\r\n const deviceModel = createDeviceModel(\r\n this,\r\n this.config.localDevice2ProductKey,\r\n this.config.localDevice2DeviceKey\r\n );\r\n\r\n if (deviceModel) {\r\n this.zenHaDeviceList.push(deviceModel);\r\n }\r\n }\r\n\r\n // Subscribe to 3. device from local settings\r\n if (\r\n this.config.localDevice3ProductKey &&\r\n this.config.localDevice3DeviceKey\r\n ) {\r\n // States erstellen\r\n const deviceModel = createDeviceModel(\r\n this,\r\n this.config.localDevice3ProductKey,\r\n this.config.localDevice3DeviceKey\r\n );\r\n\r\n if (deviceModel) {\r\n this.zenHaDeviceList.push(deviceModel);\r\n }\r\n }\r\n\r\n // Subscribe to 4. device from local settings\r\n if (\r\n this.config.localDevice4ProductKey &&\r\n this.config.localDevice4DeviceKey\r\n ) {\r\n // States erstellen\r\n const deviceModel = createDeviceModel(\r\n this,\r\n this.config.localDevice4ProductKey,\r\n this.config.localDevice4DeviceKey\r\n );\r\n\r\n if (deviceModel) {\r\n this.zenHaDeviceList.push(deviceModel);\r\n }\r\n }\r\n\r\n if (this.config.useRestart) {\r\n // Add interval to restart adapter every 3 hours\r\n startRefreshAccessTokenTimerJob(this);\r\n }\r\n break;\r\n }\r\n default:\r\n this.setState(\"info.connection\", false, true);\r\n this.log.error(\"[onReady] No connection mode found or mode invalid!\");\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Is called when adapter shuts down - callback has to be called under any circumstances!\r\n */\r\n private async onUnload(callback: () => void): Promise<void> {\r\n try {\r\n if (this.refreshAccessTokenInterval) {\r\n this.clearInterval(this.refreshAccessTokenInterval);\r\n }\r\n\r\n try {\r\n await this.mqttClient?.endAsync();\r\n this.log.info(\"[onUnload] MQTT client stopped!\");\r\n this.mqttClient = undefined;\r\n } catch (ex: any) {\r\n this.log.error(\"[onUnload] Error stopping MQTT client: !\" + ex.message);\r\n }\r\n\r\n this.setState(\"info.connection\", false, true);\r\n\r\n // Scheduler beenden\r\n if (this.resetValuesJob) {\r\n this.resetValuesJob.cancel();\r\n this.resetValuesJob = undefined;\r\n }\r\n\r\n if (this.checkStatesJob) {\r\n this.checkStatesJob?.cancel();\r\n this.checkStatesJob = undefined;\r\n }\r\n\r\n if (this.calculationJob) {\r\n this.calculationJob.cancel();\r\n this.calculationJob = undefined;\r\n }\r\n\r\n if (this.retryTimeout) {\r\n this.clearTimeout(this.retryTimeout);\r\n }\r\n\r\n callback();\r\n } catch (e) {\r\n callback();\r\n }\r\n }\r\n\r\n /**\r\n * Is called if a subscribed state changes\r\n */\r\n private onStateChange(\r\n id: string,\r\n state: ioBroker.State | null | undefined\r\n ): void {\r\n if (state) {\r\n // The state was changed\r\n\r\n // Read product and device key from string\r\n const splitted = id.split(\".\");\r\n const productKey = splitted[2]; // Product Key\r\n const deviceKey = splitted[3]; // Device Key\r\n const stateName1 = splitted[4]; // Folder/State Name 1 (e.g. 'control')\r\n const stateName2 = splitted[5]; // State Name, like 'setOutputLimit'\r\n\r\n const _device = this.zenHaDeviceList.find(\r\n (x) => x.productKey == productKey && x.deviceKey == deviceKey\r\n );\r\n\r\n if (!_device) {\r\n this.log.error(\r\n `[onStateChange] Device '${deviceKey}' not found in zenHaDeviceList!`\r\n );\r\n return;\r\n }\r\n\r\n // !!! Only stateChanges with ack==false are allowed to be processed.\r\n if (state.val != undefined && state.val != null && !state.ack) {\r\n switch (stateName1) {\r\n case \"control\":\r\n this.log.debug(\r\n `[onStateChange] Control state '${stateName2}' changed, new value is ${state.val}, ack = ${state.ack}!`\r\n );\r\n switch (stateName2) {\r\n case \"setOutputLimit\":\r\n _device.setOutputLimit(Number(state.val));\r\n break;\r\n case \"setInputLimit\":\r\n _device.setInputLimit(Number(state.val));\r\n break;\r\n case \"chargeLimit\":\r\n _device.setChargeLimit(Number(state.val));\r\n break;\r\n case \"dischargeLimit\":\r\n _device.setDischargeLimit(Number(state.val));\r\n break;\r\n case \"passMode\":\r\n _device.setPassMode(Number(state.val));\r\n break;\r\n case \"dcSwitch\":\r\n _device.setDcSwitch(state.val ? true : false);\r\n break;\r\n case \"acSwitch\":\r\n _device.setAcSwitch(state.val ? true : false);\r\n break;\r\n case \"acMode\":\r\n _device.setAcMode(Number(state.val));\r\n break;\r\n case \"hubState\":\r\n _device.setHubState(Number(state.val));\r\n break;\r\n case \"autoModel\":\r\n _device.setAutoModel(Number(state.val));\r\n break;\r\n case \"autoRecover\":\r\n _device.setAutoRecover(state.val ? true : false);\r\n break;\r\n case \"buzzerSwitch\":\r\n _device.setBuzzerSwitch(state.val ? true : false);\r\n break;\r\n case \"smartMode\":\r\n _device.setSmartMode(state.val ? true : false);\r\n break;\r\n case \"setDeviceAutomationInOutLimit\":\r\n _device.setDeviceAutomationInOutLimit(Number(state.val));\r\n break;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n // The state was deleted\r\n //this.log.debug(`state ${id} deleted`);\r\n }\r\n }\r\n }\r\n}\r\n\r\nif (require.main !== module) {\r\n // Export the constructor in compact mode\r\n module.exports = (options: Partial<utils.AdapterOptions> | undefined) =>\r\n new ZendureSolarflow(options);\r\n} else {\r\n // otherwise start the instance directly\r\n (() => new ZendureSolarflow())();\r\n}\r\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zendure-solarflow",
4
- "version": "3.0.4",
4
+ "version": "3.0.5",
5
5
  "news": {
6
+ "3.0.5": {
7
+ "en": "Add some more log information on device creation",
8
+ "de": "Fügen Sie weitere Log-Informationen zur Geräteerstellung hinzu",
9
+ "ru": "Добавьте больше информации о журналах для создания устройств",
10
+ "pt": "Adicionar mais informações de log na criação do dispositivo",
11
+ "nl": "Voeg wat meer loginformatie toe over het aanmaken van een apparaat",
12
+ "fr": "Ajoutez d'autres informations de journal sur la création de l'appareil",
13
+ "it": "Aggiungi altre informazioni di log sulla creazione del dispositivo",
14
+ "es": "Añadir más información de registro en la creación del dispositivo",
15
+ "pl": "Dodaj więcej informacji o tworzeniu urządzenia",
16
+ "uk": "Додайте ще інформацію про пристрій",
17
+ "zh-cn": "添加更多关于设备创建的日志信息"
18
+ },
6
19
  "3.0.4": {
7
20
  "en": "Fix inputLimit issue\nFix Wifi status not updating when packData changes",
8
21
  "de": "InputLimit Problem beheben\nWifi-Status nicht aktualisieren, wenn packData Änderungen",
@@ -80,19 +93,6 @@
80
93
  "pl": "Napraw utworzenie stanów kontrolnych w nowym Hyper 2000 v3\nAktualizacja zależności",
81
94
  "uk": "Виправлення створення станів управління на новому Hyper 2000 v3.\nОновлення залежностей",
82
95
  "zh-cn": "修复在新的Hyper 2000 v3上创建控制状态\n更新依赖项"
83
- },
84
- "2.0.3": {
85
- "en": "Added 'B3Dxda' as new Hyper 2000 productKey. Removed parameter 'upTime' and 'pullTime' from 'setDeviceAutomationInOutLimit'. TEST: Use 'setDeviceAutomationInOutLimit' to let HUB1200/HUB2000 charge with connected ACE 1500",
86
- "de": "B3Dxda' als neuer Hyper 2000 productKey hinzugefügt. Parameter 'upTime' und 'pullTime' aus 'setDeviceAutomationInOutLimit' entfernt. TEST: Verwenden Sie 'setDeviceAutomationInOutLimit', um HUB1200/HUB2000 mit angeschlossenem ACE 1500 laden zu lassen.",
87
- "ru": "Добавлен 'B3Dxda' в качестве нового ключа устройства Hyper 2000. Удалены параметры 'upTime' и 'pullTime' из 'setDeviceAutomationInOutLimit'. ТЕСТ: Используйте 'setDeviceAutomationInOutLimit', чтобы позволить HUB1200/HUB2000 заряжаться с подключенным ACE 1500.",
88
- "pt": "Adicionado 'B3Dxda' como nova productKey Hyper 2000. Removido o parâmetro 'upTime' e 'pullTime' de 'setDeviceAutomationInOutLimit'. TESTE: Utilizar 'setDeviceAutomationInOutLimit' para permitir que o HUB1200/HUB2000 carregue com o ACE 1500 ligado",
89
- "nl": "B3Dxda' toegevoegd als nieuwe Hyper 2000 productKey. Parameter 'upTime' en 'pullTime' verwijderd uit 'setDeviceAutomationInOutLimit'. TEST: Gebruik 'setDeviceAutomationInOutLimit' om HUB1200/HUB2000 te laten laden met aangesloten ACE 1500.",
90
- "fr": "Ajout de 'B3Dxda' comme nouvelle clé de périphérique Hyper 2000. Suppression des paramètres 'upTime' et 'pullTime' de 'setDeviceAutomationInOutLimit'. TEST : Utilisez 'setDeviceAutomationInOutLimit' pour permettre au HUB1200/HUB2000 de se recharger avec un ACE 1500 connecté.",
91
- "it": "Aggiunto 'B3Dxda' come nuovo productKey Hyper 2000. Rimosso il parametro 'upTime' e 'pullTime' da 'setDeviceAutomationInOutLimit'. TEST: utilizzare 'setDeviceAutomationInOutLimit' per consentire a HUB1200/HUB2000 di caricarsi con l'ACE 1500 collegato.",
92
- "es": "Añadido 'B3Dxda' como nuevo productKey de Hyper 2000. Eliminados los parámetros 'upTime' y 'pullTime' de 'setDeviceAutomationInOutLimit'. PRUEBA: Utiliza 'setDeviceAutomationInOutLimit' para que HUB1200/HUB2000 se cargue con ACE 1500 conectado.",
93
- "pl": "Dodano \"B3Dxda\" jako nowy klucz urządzenia Hyper 2000. Usunięto parametr 'upTime' i 'pullTime' z 'setDeviceAutomationInOutLimit'. TEST: Użyj 'setDeviceAutomationInOutLimit', aby umożliwić ładowanie HUB1200/HUB2000 z podłączonym ACE 1500.",
94
- "uk": "Додано 'B3Dxda' як новий Hyper 2000 productKey. Видалено параметри 'upTime' та 'pullTime' з 'setDeviceAutomationInOutLimit'. ТЕСТ: Використовуйте 'setDeviceAutomationInOutLimit', щоб дозволити HUB1200/HUB2000 заряджатися з підключеним ACE 1500",
95
- "zh-cn": "Added 'B3Dxda' as new Hyper 2000 productKey. Removed parameter 'upTime' and 'pullTime' from 'setDeviceAutomationInOutLimit'. TEST: Use 'setDeviceAutomationInOutLimit' to let HUB1200/HUB2000 charge with connected ACE 1500"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.zendure-solarflow",
3
- "version": "3.0.4",
3
+ "version": "3.0.5",
4
4
  "description": "zendure-solarflow",
5
5
  "author": {
6
6
  "name": "Peter",