iobroker.zendure-solarflow 0.1.0-alpha.2 → 1.0.1

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/build/main.js CHANGED
@@ -63,7 +63,9 @@ class ZendureSolarflow extends utils.Adapter {
63
63
  (_a2 = this.log) == null ? void 0 : _a2.error("Retrieving device failed!");
64
64
  });
65
65
  }).catch((error) => {
66
- this.log.error("Logon error at Zendure cloud service! Error: " + error.toString());
66
+ this.log.error(
67
+ "Logon error at Zendure cloud service! Error: " + error.toString()
68
+ );
67
69
  });
68
70
  } else {
69
71
  this.log.error("No Login Information provided!");
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\nimport { connectMqttClient, setOutputLimit } from \"./services/mqttService\";\r\nimport { getDeviceList, login } from \"./services/webService\";\r\nimport { ISolarFlowDeviceDetails } from \"./models/ISolarFlowDeviceDetails\";\r\nimport { ISolarFlowPaths } from \"./models/ISolarFlowPaths\";\r\nimport { pathsGlobal } from \"./constants/paths\";\r\nimport { startCheckStatesTimer } from \"./services/adapterService\";\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 accessToken: string | undefined = undefined; // Access Token for Zendure Rest API\r\n public deviceList: ISolarFlowDeviceDetails[] = [];\r\n public paths: ISolarFlowPaths | undefined = undefined;\r\n public timer: NodeJS.Timeout | null = null;\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 // Currently only global Zendure Server are supported!\r\n this.paths = pathsGlobal;\r\n\r\n // If Username and Password is provided, try to login and get the access token.\r\n if (this.config.userName && this.config.password) {\r\n login(this)?.then((_accessToken: string) => {\r\n this.accessToken = _accessToken;\r\n\r\n // Try to get the device list\r\n getDeviceList(this)\r\n .then((result: ISolarFlowDeviceDetails[]) => {\r\n if (result) {\r\n // Device List found. Save in the adapter properties and connect to MQTT\r\n this.deviceList = result;\r\n connectMqttClient(this);\r\n startCheckStatesTimer(this);\r\n }\r\n })\r\n .catch(() => {\r\n this.log?.error(\"Retrieving device failed!\");\r\n });\r\n }).catch((error) => {\r\n this.log.error(\"Logon error at Zendure cloud service! Error: \" + error.toString())\r\n });\r\n } else {\r\n this.log.error(\"No Login Information provided!\");\r\n //this.stop?.();\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 onUnload(callback: () => void): void {\r\n try {\r\n if (this.timer) {\r\n this.timer = null;\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 this.log.info(`state ${id} changed: ${state.val} (ack = ${state.ack})`);\r\n if (\r\n id.includes(\"setOutputLimit\") &&\r\n state.val != undefined &&\r\n state.val != null\r\n ) {\r\n const splitted = id.split(\".\");\r\n const productKey = splitted[2];\r\n const deviceKey = splitted[3];\r\n setOutputLimit(this, productKey, deviceKey, Number(state.val));\r\n }\r\n } else {\r\n // The state was deleted\r\n this.log.info(`state ${id} deleted`);\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": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,YAAuB;AACvB,yBAAkD;AAClD,wBAAqC;AAGrC,mBAA4B;AAC5B,4BAAsC;AAE/B,MAAM,yBAAyB,MAAM,QAAQ;AAAA,EAC3C,YAAY,UAAyC,CAAC,GAAG;AAC9D,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,MAAM;AAAA,IACR,CAAC;AAMH,SAAO,cAAkC;AACzC,SAAO,aAAwC,CAAC;AAChD,SAAO,QAAqC;AAC5C,SAAO,QAA+B;AARpC,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,EAC5C;AAAA,EAUA,MAAc,UAAyB;AAlCzC;AAoCI,SAAK,QAAQ;AAGb,QAAI,KAAK,OAAO,YAAY,KAAK,OAAO,UAAU;AAChD,yCAAM,IAAI,MAAV,mBAAa,KAAK,CAAC,iBAAyB;AAC1C,aAAK,cAAc;AAGnB,6CAAc,IAAI,EACf,KAAK,CAAC,WAAsC;AAC3C,cAAI,QAAQ;AAEV,iBAAK,aAAa;AAClB,sDAAkB,IAAI;AACtB,6DAAsB,IAAI;AAAA,UAC5B;AAAA,QACF,CAAC,EACA,MAAM,MAAM;AArDvB,cAAAA;AAsDY,WAAAA,MAAA,KAAK,QAAL,gBAAAA,IAAU,MAAM;AAAA,QAClB,CAAC;AAAA,MACL,GAAG,MAAM,CAAC,UAAU;AAClB,aAAK,IAAI,MAAM,kDAAkD,MAAM,SAAS,CAAC;AAAA,MACnF;AAAA,IACF,OAAO;AACL,WAAK,IAAI,MAAM,gCAAgC;AAAA,IAEjD;AAAA,EACF;AAAA,EAKQ,SAAS,UAA4B;AAC3C,QAAI;AACF,UAAI,KAAK,OAAO;AACd,aAAK,QAAQ;AAAA,MACf;AACA,eAAS;AAAA,IACX,SAAS,GAAP;AACA,eAAS;AAAA,IACX;AAAA,EACF;AAAA,EAKQ,cACN,IACA,OACM;AACN,QAAI,OAAO;AAET,WAAK,IAAI,KAAK,SAAS,eAAe,MAAM,cAAc,MAAM,MAAM;AACtE,UACE,GAAG,SAAS,gBAAgB,KAC5B,MAAM,OAAO,UACb,MAAM,OAAO,MACb;AACA,cAAM,WAAW,GAAG,MAAM,GAAG;AAC7B,cAAM,aAAa,SAAS;AAC5B,cAAM,YAAY,SAAS;AAC3B,+CAAe,MAAM,YAAY,WAAW,OAAO,MAAM,GAAG,CAAC;AAAA,MAC/D;AAAA,IACF,OAAO;AAEL,WAAK,IAAI,KAAK,SAAS,YAAY;AAAA,IACrC;AAAA,EACF;AACF;AAEA,IAAI,QAAQ,SAAS,QAAQ;AAE3B,SAAO,UAAU,CAAC,YAChB,IAAI,iBAAiB,OAAO;AAChC,OAAO;AAEL,GAAC,MAAM,IAAI,iBAAiB,GAAG;AACjC;",
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\nimport { connectMqttClient, setOutputLimit } from \"./services/mqttService\";\r\nimport { getDeviceList, login } from \"./services/webService\";\r\nimport { ISolarFlowDeviceDetails } from \"./models/ISolarFlowDeviceDetails\";\r\nimport { ISolarFlowPaths } from \"./models/ISolarFlowPaths\";\r\nimport { pathsGlobal } from \"./constants/paths\";\r\nimport { startCheckStatesTimer } from \"./services/adapterService\";\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 accessToken: string | undefined = undefined; // Access Token for Zendure Rest API\r\n public deviceList: ISolarFlowDeviceDetails[] = [];\r\n public paths: ISolarFlowPaths | undefined = undefined;\r\n public timer: NodeJS.Timeout | null = null;\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 // Currently only global Zendure Server are supported!\r\n this.paths = pathsGlobal;\r\n\r\n // If Username and Password is provided, try to login and get the access token.\r\n if (this.config.userName && this.config.password) {\r\n login(this)\r\n ?.then((_accessToken: string) => {\r\n this.accessToken = _accessToken;\r\n\r\n // Try to get the device list\r\n getDeviceList(this)\r\n .then((result: ISolarFlowDeviceDetails[]) => {\r\n if (result) {\r\n // Device List found. Save in the adapter properties and connect to MQTT\r\n this.deviceList = result;\r\n connectMqttClient(this);\r\n startCheckStatesTimer(this);\r\n }\r\n })\r\n .catch(() => {\r\n this.log?.error(\"Retrieving device failed!\");\r\n });\r\n })\r\n .catch((error) => {\r\n this.log.error(\r\n \"Logon error at Zendure cloud service! Error: \" + error.toString(),\r\n );\r\n });\r\n } else {\r\n this.log.error(\"No Login Information provided!\");\r\n //this.stop?.();\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 onUnload(callback: () => void): void {\r\n try {\r\n if (this.timer) {\r\n this.timer = null;\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 this.log.info(`state ${id} changed: ${state.val} (ack = ${state.ack})`);\r\n if (\r\n id.includes(\"setOutputLimit\") &&\r\n state.val != undefined &&\r\n state.val != null\r\n ) {\r\n const splitted = id.split(\".\");\r\n const productKey = splitted[2];\r\n const deviceKey = splitted[3];\r\n setOutputLimit(this, productKey, deviceKey, Number(state.val));\r\n }\r\n } else {\r\n // The state was deleted\r\n this.log.info(`state ${id} deleted`);\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": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,YAAuB;AACvB,yBAAkD;AAClD,wBAAqC;AAGrC,mBAA4B;AAC5B,4BAAsC;AAE/B,MAAM,yBAAyB,MAAM,QAAQ;AAAA,EAC3C,YAAY,UAAyC,CAAC,GAAG;AAC9D,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,MAAM;AAAA,IACR,CAAC;AAMH,SAAO,cAAkC;AACzC,SAAO,aAAwC,CAAC;AAChD,SAAO,QAAqC;AAC5C,SAAO,QAA+B;AARpC,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,EAC5C;AAAA,EAUA,MAAc,UAAyB;AAlCzC;AAoCI,SAAK,QAAQ;AAGb,QAAI,KAAK,OAAO,YAAY,KAAK,OAAO,UAAU;AAChD,yCAAM,IAAI,MAAV,mBACI,KAAK,CAAC,iBAAyB;AAC/B,aAAK,cAAc;AAGnB,6CAAc,IAAI,EACf,KAAK,CAAC,WAAsC;AAC3C,cAAI,QAAQ;AAEV,iBAAK,aAAa;AAClB,sDAAkB,IAAI;AACtB,6DAAsB,IAAI;AAAA,UAC5B;AAAA,QACF,CAAC,EACA,MAAM,MAAM;AAtDzB,cAAAA;AAuDc,WAAAA,MAAA,KAAK,QAAL,gBAAAA,IAAU,MAAM;AAAA,QAClB,CAAC;AAAA,MACL,GACC,MAAM,CAAC,UAAU;AAChB,aAAK,IAAI;AAAA,UACP,kDAAkD,MAAM,SAAS;AAAA,QACnE;AAAA,MACF;AAAA,IACJ,OAAO;AACL,WAAK,IAAI,MAAM,gCAAgC;AAAA,IAEjD;AAAA,EACF;AAAA,EAKQ,SAAS,UAA4B;AAC3C,QAAI;AACF,UAAI,KAAK,OAAO;AACd,aAAK,QAAQ;AAAA,MACf;AACA,eAAS;AAAA,IACX,SAAS,GAAP;AACA,eAAS;AAAA,IACX;AAAA,EACF;AAAA,EAKQ,cACN,IACA,OACM;AACN,QAAI,OAAO;AAET,WAAK,IAAI,KAAK,SAAS,eAAe,MAAM,cAAc,MAAM,MAAM;AACtE,UACE,GAAG,SAAS,gBAAgB,KAC5B,MAAM,OAAO,UACb,MAAM,OAAO,MACb;AACA,cAAM,WAAW,GAAG,MAAM,GAAG;AAC7B,cAAM,aAAa,SAAS;AAC5B,cAAM,YAAY,SAAS;AAC3B,+CAAe,MAAM,YAAY,WAAW,OAAO,MAAM,GAAG,CAAC;AAAA,MAC/D;AAAA,IACF,OAAO;AAEL,WAAK,IAAI,KAAK,SAAS,YAAY;AAAA,IACrC;AAAA,EACF;AACF;AAEA,IAAI,QAAQ,SAAS,QAAQ;AAE3B,SAAO,UAAU,CAAC,YAChB,IAAI,iBAAiB,OAAO;AAChC,OAAO;AAEL,GAAC,MAAM,IAAI,iBAAiB,GAAG;AACjC;",
6
6
  "names": ["_a"]
7
7
  }
@@ -26,7 +26,7 @@ __export(adapterService_exports, {
26
26
  module.exports = __toCommonJS(adapterService_exports);
27
27
  var import_webService = require("./webService");
28
28
  const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
29
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
29
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
30
30
  productKey + "." + deviceKey + ".lastUpdate",
31
31
  {
32
32
  type: "state",
@@ -41,7 +41,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
41
41
  native: {}
42
42
  }
43
43
  ));
44
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
44
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
45
45
  productKey + "." + deviceKey + ".electricLevel",
46
46
  {
47
47
  type: "state",
@@ -57,7 +57,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
57
57
  native: {}
58
58
  }
59
59
  ));
60
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
60
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
61
61
  productKey + "." + deviceKey + ".outputHomePower",
62
62
  {
63
63
  type: "state",
@@ -73,7 +73,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
73
73
  native: {}
74
74
  }
75
75
  ));
76
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
76
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
77
77
  productKey + "." + deviceKey + ".outputLimit",
78
78
  {
79
79
  type: "state",
@@ -89,7 +89,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
89
89
  native: {}
90
90
  }
91
91
  ));
92
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
92
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
93
93
  productKey + "." + deviceKey + ".outputPackPower",
94
94
  {
95
95
  type: "state",
@@ -105,7 +105,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
105
105
  native: {}
106
106
  }
107
107
  ));
108
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
108
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
109
109
  productKey + "." + deviceKey + ".packInputPower",
110
110
  {
111
111
  type: "state",
@@ -121,7 +121,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
121
121
  native: {}
122
122
  }
123
123
  ));
124
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
124
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
125
125
  productKey + "." + deviceKey + ".solarInputPower",
126
126
  {
127
127
  type: "state",
@@ -137,7 +137,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
137
137
  native: {}
138
138
  }
139
139
  ));
140
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
140
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
141
141
  productKey + "." + deviceKey + ".remainInputTime",
142
142
  {
143
143
  type: "state",
@@ -152,7 +152,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
152
152
  native: {}
153
153
  }
154
154
  ));
155
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
155
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
156
156
  productKey + "." + deviceKey + ".remainOutTime",
157
157
  {
158
158
  type: "state",
@@ -167,7 +167,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
167
167
  native: {}
168
168
  }
169
169
  ));
170
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
170
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
171
171
  productKey + "." + deviceKey + ".socSet",
172
172
  {
173
173
  type: "state",
@@ -183,7 +183,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
183
183
  native: {}
184
184
  }
185
185
  ));
186
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
186
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
187
187
  productKey + "." + deviceKey + ".minSoc",
188
188
  {
189
189
  type: "state",
@@ -199,7 +199,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
199
199
  native: {}
200
200
  }
201
201
  ));
202
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
202
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(
203
203
  productKey + "." + deviceKey + ".control.setOutputLimit",
204
204
  {
205
205
  type: "state",
@@ -227,7 +227,7 @@ const addOrUpdatePackData = async (adapter, productKey, deviceKey, packData) =>
227
227
  await packData.forEach(async (x) => {
228
228
  if (x.sn) {
229
229
  const key = productKey + "." + deviceKey + ".packData." + x.sn;
230
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".sn", {
230
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".sn", {
231
231
  type: "state",
232
232
  common: {
233
233
  name: {
@@ -244,7 +244,7 @@ const addOrUpdatePackData = async (adapter, productKey, deviceKey, packData) =>
244
244
  }));
245
245
  await (adapter == null ? void 0 : adapter.setStateAsync(key + ".sn", x.sn, false));
246
246
  if (x.socLevel) {
247
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".socLevel", {
247
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".socLevel", {
248
248
  type: "state",
249
249
  common: {
250
250
  name: {
@@ -262,7 +262,7 @@ const addOrUpdatePackData = async (adapter, productKey, deviceKey, packData) =>
262
262
  await (adapter == null ? void 0 : adapter.setStateAsync(key + ".socLevel", x.socLevel, false));
263
263
  }
264
264
  if (x.maxTemp) {
265
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".maxTemp", {
265
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".maxTemp", {
266
266
  type: "state",
267
267
  common: {
268
268
  name: {
@@ -280,7 +280,7 @@ const addOrUpdatePackData = async (adapter, productKey, deviceKey, packData) =>
280
280
  await (adapter == null ? void 0 : adapter.setStateAsync(key + ".maxTemp", x.maxTemp / 100, false));
281
281
  }
282
282
  if (x.minVol) {
283
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".minVol", {
283
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".minVol", {
284
284
  type: "state",
285
285
  common: {
286
286
  name: "minVol",
@@ -295,7 +295,7 @@ const addOrUpdatePackData = async (adapter, productKey, deviceKey, packData) =>
295
295
  await (adapter == null ? void 0 : adapter.setStateAsync(key + ".minVol", x.minVol / 100, false));
296
296
  }
297
297
  if (x.maxVol) {
298
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".maxVol", {
298
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".maxVol", {
299
299
  type: "state",
300
300
  common: {
301
301
  name: "maxVol",
@@ -310,7 +310,7 @@ const addOrUpdatePackData = async (adapter, productKey, deviceKey, packData) =>
310
310
  await (adapter == null ? void 0 : adapter.setStateAsync(key + ".maxVol", x.maxVol / 100, false));
311
311
  }
312
312
  if (x.totalVol) {
313
- await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".totalVol", {
313
+ await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".totalVol", {
314
314
  type: "state",
315
315
  common: {
316
316
  name: "totalVol",
@@ -322,7 +322,11 @@ const addOrUpdatePackData = async (adapter, productKey, deviceKey, packData) =>
322
322
  },
323
323
  native: {}
324
324
  }));
325
- await (adapter == null ? void 0 : adapter.setStateAsync(key + ".totalVol", x.totalVol / 100, false));
325
+ await (adapter == null ? void 0 : adapter.setStateAsync(
326
+ key + ".totalVol",
327
+ x.totalVol / 100,
328
+ false
329
+ ));
326
330
  }
327
331
  }
328
332
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/services/adapterService.ts"],
4
- "sourcesContent": ["import { ZendureSolarflow } from \"../main\";\r\nimport { IPackData } from \"../models/IPackData\";\r\nimport { ISolarFlowDeviceDetails } from \"../models/ISolarFlowDeviceDetails\";\r\nimport { getDeviceList } from \"./webService\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\nexport const createSolarFlowStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n): Promise<void> => {\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"lastUpdate\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Letztes Update\", en: \"Last Update\" },\r\n type: \"number\",\r\n desc: \"lastUpdate\",\r\n role: \"value.time\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"electricLevel\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"SOC Gesamtsystem\", en: \"SOC of the system\" },\r\n type: \"number\",\r\n desc: \"electricLevel\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"outputHomePower\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Ausgangsleistung\", en: \"output power\" },\r\n type: \"number\",\r\n desc: \"outputHomePower\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"outputLimit\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Limit der Ausgangsleistung\", en: \"limit of output power\" },\r\n type: \"number\",\r\n desc: \"outputLimit\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"outputPackPower\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Ladeleistung zum Akku\", en: \"charge power\" },\r\n type: \"number\",\r\n desc: \"outputPackPower\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"packInputPower\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Entladeleistung zum Akku\", en: \"discharge power\" },\r\n type: \"number\",\r\n desc: \"packInputPower\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"solarInputPower\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Leistung der Solarmodule\", en: \"solar power\" },\r\n type: \"number\",\r\n desc: \"solarInputPower\",\r\n role: \"value.power.produced\",\r\n read: true,\r\n write: true,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"remainInputTime\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Erwartete Ladedauer\", en: \"remaining charge time\" },\r\n type: \"number\",\r\n desc: \"remainInputTime\",\r\n role: \"value.interval\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"remainOutTime\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Erwartete Entladedauer\", en: \"remaining discharge time\" },\r\n type: \"number\",\r\n desc: \"remainOutTime\",\r\n role: \"value.interval\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"socSet\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Max. SOC\", en: \"max. SOC\" },\r\n type: \"number\",\r\n desc: \"socSet\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"minSoc\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Min. SOC\", en: \"min. SOC\" },\r\n type: \"number\",\r\n desc: \"minSoc\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n // State zum Setzen des Output Limit\r\n await adapter?.setObjectNotExistsAsync(\r\n productKey + \".\" + deviceKey + \".control.\" + \"setOutputLimit\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Einzustellende Ausgangsleistung\",\r\n en: \"Control of the output limit\",\r\n },\r\n type: \"number\",\r\n desc: \"setOutputLimit\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n // Subscibe to State updates to listen to changes\r\n adapter?.subscribeStates(\r\n productKey + \".\" + deviceKey + \".control.\" + \"setOutputLimit\",\r\n );\r\n};\r\n\r\nexport const addOrUpdatePackData = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n packData: IPackData[],\r\n): Promise<void> => {\r\n await packData.forEach(async (x) => {\r\n // Daten nur verarbeiten wenn eine SN mitgesendet wird!\r\n if (x.sn) {\r\n // State f\u00FCr SN\r\n const key = productKey + \".\" + deviceKey + \".packData.\" + x.sn;\r\n await adapter?.setObjectNotExistsAsync(key + \".sn\", {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Seriennummer\",\r\n en: \"Serial id\",\r\n },\r\n type: \"string\",\r\n desc: \"Serial ID\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".sn\", x.sn, false);\r\n\r\n if (x.socLevel) {\r\n // State f\u00FCr socLevel\r\n await adapter?.setObjectNotExistsAsync(key + \".socLevel\", {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"SOC der Batterie\",\r\n en: \"soc of battery\",\r\n },\r\n type: \"number\",\r\n desc: \"SOC Level\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".socLevel\", x.socLevel, false);\r\n }\r\n\r\n if (x.maxTemp) {\r\n // State f\u00FCr maxTemp\r\n await adapter?.setObjectNotExistsAsync(key + \".maxTemp\", {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Max. Temperatur der Batterie\",\r\n en: \"max temp. of battery\",\r\n },\r\n type: \"number\",\r\n desc: \"Max. Temp\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".maxTemp\", x.maxTemp / 100, false);\r\n }\r\n\r\n if (x.minVol) {\r\n await adapter?.setObjectNotExistsAsync(key + \".minVol\", {\r\n type: \"state\",\r\n common: {\r\n name: \"minVol\",\r\n type: \"number\",\r\n desc: \"minVol\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".minVol\", x.minVol / 100, false);\r\n }\r\n\r\n if (x.maxVol) {\r\n await adapter?.setObjectNotExistsAsync(key + \".maxVol\", {\r\n type: \"state\",\r\n common: {\r\n name: \"maxVol\",\r\n type: \"number\",\r\n desc: \"maxVol\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".maxVol\", x.maxVol / 100, false);\r\n }\r\n\r\n if (x.totalVol) {\r\n await adapter?.setObjectNotExistsAsync(key + \".totalVol\", {\r\n type: \"state\",\r\n common: {\r\n name: \"totalVol\",\r\n type: \"number\",\r\n desc: \"totalVol\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".totalVol\", x.totalVol / 100, false);\r\n }\r\n }\r\n });\r\n};\r\n\r\nexport const startCheckStatesTimer = async (adapter: ZendureSolarflow): Promise<void> => {\r\n // Check for states that has no updates in the last 5 minutes and set them to 0\r\n const statesToReset: string[] = [\r\n \"outputHomePower\",\r\n \"outputPackPower\",\r\n \"packInputPower\",\r\n \"solarInputPower\",\r\n ];\r\n\r\n // Timer starten\r\n if (adapter && adapter.timer) {\r\n adapter.timer = null;\r\n }\r\n\r\n adapter.timer = setTimeout(async () => {\r\n getDeviceList(adapter)\r\n .then((deviceList: ISolarFlowDeviceDetails[]) => {\r\n deviceList.forEach(async (device: ISolarFlowDeviceDetails) => {\r\n const lastUpdate = await adapter?.getStateAsync(\r\n device.productKey + \".\" + device.deviceKey + \".lastUpdate\",\r\n );\r\n\r\n const tenMinutesAgo = Date.now() / 1000 - 10 * 60; // Ten minutes ago\r\n if (\r\n lastUpdate &&\r\n lastUpdate.val &&\r\n Number(lastUpdate.val) < tenMinutesAgo\r\n ) {\r\n adapter.log.info(\r\n `Last update for deviceKey ${device.deviceKey} was at ${new Date(\r\n Number(lastUpdate),\r\n )}, checking for pseudo power values!`,\r\n );\r\n // State was not updated in the last 10 minutes... set states to 0\r\n await statesToReset.forEach(async (stateName: string) => {\r\n await adapter?.setStateAsync(\r\n device.productKey + \".\" + device.deviceKey + \".\" + stateName,\r\n 0,\r\n false,\r\n );\r\n });\r\n\r\n // set electricLevel from deviceList\r\n await adapter?.setStateAsync(\r\n device.productKey + \".\" + device.deviceKey + \".electricLevel\",\r\n device.electricity,\r\n false,\r\n );\r\n }\r\n });\r\n })\r\n .catch(() => {\r\n adapter.log?.error(\"Retrieving device failed!\");\r\n });\r\n }, 50000);\r\n};\r\n\r\nexport const updateSolarFlowState = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n state: string,\r\n val: number | string,\r\n): Promise<void> => {\r\n adapter?.setStateAsync(\r\n productKey + \".\" + deviceKey + \".\" + state,\r\n val,\r\n false,\r\n );\r\n};\r\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ZendureSolarflow } from \"../main\";\r\nimport { IPackData } from \"../models/IPackData\";\r\nimport { ISolarFlowDeviceDetails } from \"../models/ISolarFlowDeviceDetails\";\r\nimport { getDeviceList } from \"./webService\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\nexport const createSolarFlowStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n): Promise<void> => {\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"lastUpdate\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Letztes Update\", en: \"Last Update\" },\r\n type: \"number\",\r\n desc: \"lastUpdate\",\r\n role: \"value.time\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"electricLevel\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"SOC Gesamtsystem\", en: \"SOC of the system\" },\r\n type: \"number\",\r\n desc: \"electricLevel\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"outputHomePower\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Ausgangsleistung\", en: \"output power\" },\r\n type: \"number\",\r\n desc: \"outputHomePower\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"outputLimit\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Limit der Ausgangsleistung\", en: \"limit of output power\" },\r\n type: \"number\",\r\n desc: \"outputLimit\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"outputPackPower\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Ladeleistung zum Akku\", en: \"charge power\" },\r\n type: \"number\",\r\n desc: \"outputPackPower\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"packInputPower\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Entladeleistung zum Akku\", en: \"discharge power\" },\r\n type: \"number\",\r\n desc: \"packInputPower\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"solarInputPower\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Leistung der Solarmodule\", en: \"solar power\" },\r\n type: \"number\",\r\n desc: \"solarInputPower\",\r\n role: \"value.power.produced\",\r\n read: true,\r\n write: true,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"remainInputTime\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Erwartete Ladedauer\", en: \"remaining charge time\" },\r\n type: \"number\",\r\n desc: \"remainInputTime\",\r\n role: \"value.interval\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"remainOutTime\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Erwartete Entladedauer\", en: \"remaining discharge time\" },\r\n type: \"number\",\r\n desc: \"remainOutTime\",\r\n role: \"value.interval\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"socSet\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Max. SOC\", en: \"max. SOC\" },\r\n type: \"number\",\r\n desc: \"socSet\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".\" + \"minSoc\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Min. SOC\", en: \"min. SOC\" },\r\n type: \"number\",\r\n desc: \"minSoc\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n // State zum Setzen des Output Limit\r\n await adapter?.extendObjectAsync(\r\n productKey + \".\" + deviceKey + \".control.\" + \"setOutputLimit\",\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Einzustellende Ausgangsleistung\",\r\n en: \"Control of the output limit\",\r\n },\r\n type: \"number\",\r\n desc: \"setOutputLimit\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n // Subscibe to State updates to listen to changes\r\n adapter?.subscribeStates(\r\n productKey + \".\" + deviceKey + \".control.\" + \"setOutputLimit\",\r\n );\r\n};\r\n\r\nexport const addOrUpdatePackData = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n packData: IPackData[],\r\n): Promise<void> => {\r\n await packData.forEach(async (x) => {\r\n // Daten nur verarbeiten wenn eine SN mitgesendet wird!\r\n if (x.sn) {\r\n // State f\u00FCr SN\r\n const key = productKey + \".\" + deviceKey + \".packData.\" + x.sn;\r\n await adapter?.extendObjectAsync(key + \".sn\", {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Seriennummer\",\r\n en: \"Serial id\",\r\n },\r\n type: \"string\",\r\n desc: \"Serial ID\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".sn\", x.sn, false);\r\n\r\n if (x.socLevel) {\r\n // State f\u00FCr socLevel\r\n await adapter?.extendObjectAsync(key + \".socLevel\", {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"SOC der Batterie\",\r\n en: \"soc of battery\",\r\n },\r\n type: \"number\",\r\n desc: \"SOC Level\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".socLevel\", x.socLevel, false);\r\n }\r\n\r\n if (x.maxTemp) {\r\n // State f\u00FCr maxTemp\r\n await adapter?.extendObjectAsync(key + \".maxTemp\", {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Max. Temperatur der Batterie\",\r\n en: \"max temp. of battery\",\r\n },\r\n type: \"number\",\r\n desc: \"Max. Temp\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".maxTemp\", x.maxTemp / 100, false);\r\n }\r\n\r\n if (x.minVol) {\r\n await adapter?.extendObjectAsync(key + \".minVol\", {\r\n type: \"state\",\r\n common: {\r\n name: \"minVol\",\r\n type: \"number\",\r\n desc: \"minVol\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".minVol\", x.minVol / 100, false);\r\n }\r\n\r\n if (x.maxVol) {\r\n await adapter?.extendObjectAsync(key + \".maxVol\", {\r\n type: \"state\",\r\n common: {\r\n name: \"maxVol\",\r\n type: \"number\",\r\n desc: \"maxVol\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".maxVol\", x.maxVol / 100, false);\r\n }\r\n\r\n if (x.totalVol) {\r\n await adapter?.extendObjectAsync(key + \".totalVol\", {\r\n type: \"state\",\r\n common: {\r\n name: \"totalVol\",\r\n type: \"number\",\r\n desc: \"totalVol\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(\r\n key + \".totalVol\",\r\n x.totalVol / 100,\r\n false,\r\n );\r\n }\r\n }\r\n });\r\n};\r\n\r\nexport const startCheckStatesTimer = async (\r\n adapter: ZendureSolarflow,\r\n): Promise<void> => {\r\n // Check for states that has no updates in the last 5 minutes and set them to 0\r\n const statesToReset: string[] = [\r\n \"outputHomePower\",\r\n \"outputPackPower\",\r\n \"packInputPower\",\r\n \"solarInputPower\",\r\n ];\r\n\r\n // Timer starten\r\n if (adapter && adapter.timer) {\r\n adapter.timer = null;\r\n }\r\n\r\n adapter.timer = setTimeout(async () => {\r\n getDeviceList(adapter)\r\n .then((deviceList: ISolarFlowDeviceDetails[]) => {\r\n deviceList.forEach(async (device: ISolarFlowDeviceDetails) => {\r\n const lastUpdate = await adapter?.getStateAsync(\r\n device.productKey + \".\" + device.deviceKey + \".lastUpdate\",\r\n );\r\n\r\n const tenMinutesAgo = Date.now() / 1000 - 10 * 60; // Ten minutes ago\r\n if (\r\n lastUpdate &&\r\n lastUpdate.val &&\r\n Number(lastUpdate.val) < tenMinutesAgo\r\n ) {\r\n adapter.log.info(\r\n `Last update for deviceKey ${device.deviceKey} was at ${new Date(\r\n Number(lastUpdate),\r\n )}, checking for pseudo power values!`,\r\n );\r\n // State was not updated in the last 10 minutes... set states to 0\r\n await statesToReset.forEach(async (stateName: string) => {\r\n await adapter?.setStateAsync(\r\n device.productKey + \".\" + device.deviceKey + \".\" + stateName,\r\n 0,\r\n false,\r\n );\r\n });\r\n\r\n // set electricLevel from deviceList\r\n await adapter?.setStateAsync(\r\n device.productKey + \".\" + device.deviceKey + \".electricLevel\",\r\n device.electricity,\r\n false,\r\n );\r\n }\r\n });\r\n })\r\n .catch(() => {\r\n adapter.log?.error(\"Retrieving device failed!\");\r\n });\r\n }, 50000);\r\n};\r\n\r\nexport const updateSolarFlowState = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n state: string,\r\n val: number | string,\r\n): Promise<void> => {\r\n adapter?.setStateAsync(\r\n productKey + \".\" + deviceKey + \".\" + state,\r\n val,\r\n false,\r\n );\r\n};\r\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zendure-solarflow",
4
- "version": "0.1.0-alpha.2",
4
+ "version": "1.0.1",
5
5
  "news": {
6
+ "1.0.1": {
7
+ "en": "Fix translations\nUse 'extendObjectAsync' instead of 'setObjectNotExistsAsync'\nFirst official release version",
8
+ "de": "Übersetzungen löschen\nErweiterung ObjectAsync statt Set Gegenstand NichtExistsAsync\nErste offizielle Version",
9
+ "ru": "Fix переводы\nИспользуйте удлинить ObjectAsync вместо набора Объект NotExistsAsync\nПервая официальная версия релиза",
10
+ "pt": "Corrigir traduções\nUso de extensão ObjectAsync em vez de set Objeto NotExistsAsync\nPrimeira versão oficial do lançamento",
11
+ "nl": "Vertaling:\nGebruik verlenging ObjectAsync in plaats van Object NCIS Los Angeles\nEerste officiële vrijlating",
12
+ "fr": "Traductions fixes\nExtension d ' utilisation ObjectAsync au lieu de set Objet NotExistsAsync\nPremière version officielle",
13
+ "it": "Fissare le traduzioni\nEsterni di utilizzo ObjectAsync invece di set Oggetto Non esiste\nPrima versione ufficiale di rilascio",
14
+ "es": "Traducción fija\nAmpliación de uso ObjectAsync en lugar de set Objeto NoExistsAsync\nPrimera versión oficial",
15
+ "pl": "Tłumaczenia Fix\nRozszerzenie ObjectAsync zamiast zbioru obiekt NotExsAsync\nOficjalna wersja",
16
+ "uk": "Виправлення перекладів\nВикористання розширення Об'єктАсинхрон замість набору Об'єкт НеExistsAsync\nПерша офіційна версія випуску",
17
+ "zh-cn": "固定翻译\n使用 反对 目 录 专家\n第一次正式释放"
18
+ },
19
+ "1.0.0": {
20
+ "en": "Fix translations\nUse 'extendObjectAsync' instead of 'setObjectNotExistsAsync'\nFirst official release version",
21
+ "de": "Übersetzungen löschen\nErweiterung ObjectAsync statt Set Gegenstand NichtExistsAsync\nErste offizielle Version",
22
+ "ru": "Fix переводы\nИспользуйте удлинить ObjectAsync вместо набора Объект NotExistsAsync\nПервая официальная версия релиза",
23
+ "pt": "Corrigir traduções\nUso de extensão ObjectAsync em vez de set Objeto NotExistsAsync\nPrimeira versão oficial do lançamento",
24
+ "nl": "Vertaling:\nGebruik verlenging ObjectAsync in plaats van Object NCIS Los Angeles\nEerste officiële vrijlating",
25
+ "fr": "Traductions fixes\nExtension d ' utilisation ObjectAsync au lieu de set Objet NotExistsAsync\nPremière version officielle",
26
+ "it": "Fissare le traduzioni\nEsterni di utilizzo ObjectAsync invece di set Oggetto Non esiste\nPrima versione ufficiale di rilascio",
27
+ "es": "Traducción fija\nAmpliación de uso ObjectAsync en lugar de set Objeto NoExistsAsync\nPrimera versión oficial",
28
+ "pl": "Tłumaczenia Fix\nRozszerzenie ObjectAsync zamiast zbioru obiekt NotExsAsync\nOficjalna wersja",
29
+ "uk": "Виправлення перекладів\nВикористання розширення Об'єктАсинхрон замість набору Об'єкт НеExistsAsync\nПерша офіційна версія випуску",
30
+ "zh-cn": "固定翻译\n使用 反对 目 录 专家\n第一次正式释放"
31
+ },
6
32
  "0.1.0-alpha.2": {
7
33
  "en": "Don't stop the adapter when no login information is provided!",
8
34
  "de": "Stoppen Sie den Adapter nicht, wenn keine Anmeldeinformationen zur Verfügung gestellt werden!",
@@ -56,7 +82,17 @@
56
82
  "zh-cn": "首次出版"
57
83
  },
58
84
  "0.0.2": {
59
- "en": "Bug fixes and improvements"
85
+ "en": "Bug fixes and improvements",
86
+ "de": "Fehlerbehebungen und Verbesserungen",
87
+ "ru": "Исправления ошибок и улучшения",
88
+ "pt": "Correções de bugs e melhorias",
89
+ "nl": "Bugfixes en verbeteringen",
90
+ "fr": "Corrections de bugs et améliorations",
91
+ "it": "Correzioni di bug e miglioramenti",
92
+ "es": "Corrección de errores y mejoras.",
93
+ "pl": "Poprawki błędów i ulepszenia",
94
+ "uk": "Виправлення помилок і покращення",
95
+ "zh-cn": "错误修复和改进"
60
96
  }
61
97
  },
62
98
  "title": "Zendure Solarflow",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.zendure-solarflow",
3
- "version": "0.1.0-alpha.2",
3
+ "version": "1.0.1",
4
4
  "description": "zendure-solarflow",
5
5
  "author": {
6
6
  "name": "Peter",
@@ -30,7 +30,7 @@
30
30
  "@alcalzone/release-script-plugin-license": "^3.5.9",
31
31
  "@alcalzone/release-script-plugin-manual-review": "^3.5.9",
32
32
  "@iobroker/adapter-dev": "^1.2.0",
33
- "@iobroker/adapter-react": "2.0.22",
33
+ "@iobroker/adapter-react": "2.2.4",
34
34
  "@iobroker/testing": "^4.1.0",
35
35
  "@material-ui/core": "^4.12.4",
36
36
  "@tsconfig/node16": "^16.1.1",
@@ -38,7 +38,7 @@
38
38
  "@types/chai-as-promised": "^7.1.6",
39
39
  "@types/mocha": "^10.0.2",
40
40
  "@types/node": "^16.18.57",
41
- "@types/proxyquire": "^1.3.29",
41
+ "@types/proxyquire": "^1.3.30",
42
42
  "@types/react": "^17.0.67",
43
43
  "@types/react-dom": "^17.0.21",
44
44
  "@types/sinon": "^10.0.18",