iobroker.zendure-solarflow 0.1.0-alpha.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.
@@ -0,0 +1,387 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var adapterService_exports = {};
20
+ __export(adapterService_exports, {
21
+ addOrUpdatePackData: () => addOrUpdatePackData,
22
+ createSolarFlowStates: () => createSolarFlowStates,
23
+ startCheckStatesTimer: () => startCheckStatesTimer,
24
+ updateSolarFlowState: () => updateSolarFlowState
25
+ });
26
+ module.exports = __toCommonJS(adapterService_exports);
27
+ var import_webService = require("./webService");
28
+ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
29
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
30
+ productKey + "." + deviceKey + ".lastUpdate",
31
+ {
32
+ type: "state",
33
+ common: {
34
+ name: { de: "Letztes Update", en: "Last Update" },
35
+ type: "number",
36
+ desc: "lastUpdate",
37
+ role: "value.time",
38
+ read: true,
39
+ write: true
40
+ },
41
+ native: {}
42
+ }
43
+ ));
44
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
45
+ productKey + "." + deviceKey + ".electricLevel",
46
+ {
47
+ type: "state",
48
+ common: {
49
+ name: { de: "SOC Gesamtsystem", en: "SOC of the system" },
50
+ type: "number",
51
+ desc: "electricLevel",
52
+ role: "value.battery",
53
+ read: true,
54
+ write: true,
55
+ unit: "%"
56
+ },
57
+ native: {}
58
+ }
59
+ ));
60
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
61
+ productKey + "." + deviceKey + ".outputHomePower",
62
+ {
63
+ type: "state",
64
+ common: {
65
+ name: { de: "Ausgangsleistung", en: "output power" },
66
+ type: "number",
67
+ desc: "outputHomePower",
68
+ role: "value.power",
69
+ read: true,
70
+ write: true,
71
+ unit: "W"
72
+ },
73
+ native: {}
74
+ }
75
+ ));
76
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
77
+ productKey + "." + deviceKey + ".outputLimit",
78
+ {
79
+ type: "state",
80
+ common: {
81
+ name: { de: "Limit der Ausgangsleistung", en: "limit of output power" },
82
+ type: "number",
83
+ desc: "outputLimit",
84
+ role: "value.power",
85
+ read: true,
86
+ write: true,
87
+ unit: "W"
88
+ },
89
+ native: {}
90
+ }
91
+ ));
92
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
93
+ productKey + "." + deviceKey + ".outputPackPower",
94
+ {
95
+ type: "state",
96
+ common: {
97
+ name: { de: "Ladeleistung zum Akku", en: "charge power" },
98
+ type: "number",
99
+ desc: "outputPackPower",
100
+ role: "value.power",
101
+ read: true,
102
+ write: true,
103
+ unit: "W"
104
+ },
105
+ native: {}
106
+ }
107
+ ));
108
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
109
+ productKey + "." + deviceKey + ".packInputPower",
110
+ {
111
+ type: "state",
112
+ common: {
113
+ name: { de: "Entladeleistung zum Akku", en: "discharge power" },
114
+ type: "number",
115
+ desc: "packInputPower",
116
+ role: "value.power",
117
+ read: true,
118
+ write: true,
119
+ unit: "W"
120
+ },
121
+ native: {}
122
+ }
123
+ ));
124
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
125
+ productKey + "." + deviceKey + ".solarInputPower",
126
+ {
127
+ type: "state",
128
+ common: {
129
+ name: { de: "Leistung der Solarmodule", en: "solar power" },
130
+ type: "number",
131
+ desc: "solarInputPower",
132
+ role: "value.power.produced",
133
+ read: true,
134
+ write: true,
135
+ unit: "W"
136
+ },
137
+ native: {}
138
+ }
139
+ ));
140
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
141
+ productKey + "." + deviceKey + ".remainInputTime",
142
+ {
143
+ type: "state",
144
+ common: {
145
+ name: { de: "Erwartete Ladedauer", en: "remaining charge time" },
146
+ type: "number",
147
+ desc: "remainInputTime",
148
+ role: "value.interval",
149
+ read: true,
150
+ write: true
151
+ },
152
+ native: {}
153
+ }
154
+ ));
155
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
156
+ productKey + "." + deviceKey + ".remainOutTime",
157
+ {
158
+ type: "state",
159
+ common: {
160
+ name: { de: "Erwartete Entladedauer", en: "remaining discharge time" },
161
+ type: "number",
162
+ desc: "remainOutTime",
163
+ role: "value.interval",
164
+ read: true,
165
+ write: true
166
+ },
167
+ native: {}
168
+ }
169
+ ));
170
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
171
+ productKey + "." + deviceKey + ".socSet",
172
+ {
173
+ type: "state",
174
+ common: {
175
+ name: { de: "Max. SOC", en: "max. SOC" },
176
+ type: "number",
177
+ desc: "socSet",
178
+ role: "value.battery",
179
+ read: true,
180
+ write: true,
181
+ unit: "%"
182
+ },
183
+ native: {}
184
+ }
185
+ ));
186
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
187
+ productKey + "." + deviceKey + ".minSoc",
188
+ {
189
+ type: "state",
190
+ common: {
191
+ name: { de: "Min. SOC", en: "min. SOC" },
192
+ type: "number",
193
+ desc: "minSoc",
194
+ role: "value.battery",
195
+ read: true,
196
+ write: true,
197
+ unit: "%"
198
+ },
199
+ native: {}
200
+ }
201
+ ));
202
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(
203
+ productKey + "." + deviceKey + ".control.setOutputLimit",
204
+ {
205
+ type: "state",
206
+ common: {
207
+ name: {
208
+ de: "Einzustellende Ausgangsleistung",
209
+ en: "Control of the output limit"
210
+ },
211
+ type: "number",
212
+ desc: "setOutputLimit",
213
+ role: "value.power",
214
+ read: true,
215
+ write: true,
216
+ min: 0,
217
+ unit: "W"
218
+ },
219
+ native: {}
220
+ }
221
+ ));
222
+ adapter == null ? void 0 : adapter.subscribeStates(
223
+ productKey + "." + deviceKey + ".control.setOutputLimit"
224
+ );
225
+ };
226
+ const addOrUpdatePackData = async (adapter, productKey, deviceKey, packData) => {
227
+ await packData.forEach(async (x) => {
228
+ if (x.sn) {
229
+ const key = productKey + "." + deviceKey + ".packData." + x.sn;
230
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".sn", {
231
+ type: "state",
232
+ common: {
233
+ name: {
234
+ de: "Seriennummer",
235
+ en: "Serial id"
236
+ },
237
+ type: "string",
238
+ desc: "Serial ID",
239
+ role: "value",
240
+ read: true,
241
+ write: true
242
+ },
243
+ native: {}
244
+ }));
245
+ await (adapter == null ? void 0 : adapter.setStateAsync(key + ".sn", x.sn, false));
246
+ if (x.socLevel) {
247
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".socLevel", {
248
+ type: "state",
249
+ common: {
250
+ name: {
251
+ de: "SOC der Batterie",
252
+ en: "soc of battery"
253
+ },
254
+ type: "number",
255
+ desc: "SOC Level",
256
+ role: "value",
257
+ read: true,
258
+ write: true
259
+ },
260
+ native: {}
261
+ }));
262
+ await (adapter == null ? void 0 : adapter.setStateAsync(key + ".socLevel", x.socLevel, false));
263
+ }
264
+ if (x.maxTemp) {
265
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".maxTemp", {
266
+ type: "state",
267
+ common: {
268
+ name: {
269
+ de: "Max. Temperatur der Batterie",
270
+ en: "max temp. of battery"
271
+ },
272
+ type: "number",
273
+ desc: "Max. Temp",
274
+ role: "value",
275
+ read: true,
276
+ write: true
277
+ },
278
+ native: {}
279
+ }));
280
+ await (adapter == null ? void 0 : adapter.setStateAsync(key + ".maxTemp", x.maxTemp / 100, false));
281
+ }
282
+ if (x.minVol) {
283
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".minVol", {
284
+ type: "state",
285
+ common: {
286
+ name: "minVol",
287
+ type: "number",
288
+ desc: "minVol",
289
+ role: "value",
290
+ read: true,
291
+ write: true
292
+ },
293
+ native: {}
294
+ }));
295
+ await (adapter == null ? void 0 : adapter.setStateAsync(key + ".minVol", x.minVol / 100, false));
296
+ }
297
+ if (x.maxVol) {
298
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".maxVol", {
299
+ type: "state",
300
+ common: {
301
+ name: "maxVol",
302
+ type: "number",
303
+ desc: "maxVol",
304
+ role: "value",
305
+ read: true,
306
+ write: true
307
+ },
308
+ native: {}
309
+ }));
310
+ await (adapter == null ? void 0 : adapter.setStateAsync(key + ".maxVol", x.maxVol / 100, false));
311
+ }
312
+ if (x.totalVol) {
313
+ await (adapter == null ? void 0 : adapter.setObjectNotExistsAsync(key + ".totalVol", {
314
+ type: "state",
315
+ common: {
316
+ name: "totalVol",
317
+ type: "number",
318
+ desc: "totalVol",
319
+ role: "value",
320
+ read: true,
321
+ write: true
322
+ },
323
+ native: {}
324
+ }));
325
+ await (adapter == null ? void 0 : adapter.setStateAsync(key + ".totalVol", x.totalVol / 100, false));
326
+ }
327
+ }
328
+ });
329
+ };
330
+ const startCheckStatesTimer = async (adapter) => {
331
+ const statesToReset = [
332
+ "outputHomePower",
333
+ "outputPackPower",
334
+ "packInputPower",
335
+ "solarInputPower"
336
+ ];
337
+ if (adapter && adapter.timer) {
338
+ adapter.timer = null;
339
+ }
340
+ adapter.timer = setTimeout(async () => {
341
+ (0, import_webService.getDeviceList)(adapter).then((deviceList) => {
342
+ deviceList.forEach(async (device) => {
343
+ const lastUpdate = await (adapter == null ? void 0 : adapter.getStateAsync(
344
+ device.productKey + "." + device.deviceKey + ".lastUpdate"
345
+ ));
346
+ const tenMinutesAgo = Date.now() / 1e3 - 10 * 60;
347
+ if (lastUpdate && lastUpdate.val && Number(lastUpdate.val) < tenMinutesAgo) {
348
+ adapter.log.info(
349
+ `Last update for deviceKey ${device.deviceKey} was at ${new Date(
350
+ Number(lastUpdate)
351
+ )}, checking for pseudo power values!`
352
+ );
353
+ await statesToReset.forEach(async (stateName) => {
354
+ await (adapter == null ? void 0 : adapter.setStateAsync(
355
+ device.productKey + "." + device.deviceKey + "." + stateName,
356
+ 0,
357
+ false
358
+ ));
359
+ });
360
+ await (adapter == null ? void 0 : adapter.setStateAsync(
361
+ device.productKey + "." + device.deviceKey + ".electricLevel",
362
+ device.electricity,
363
+ false
364
+ ));
365
+ }
366
+ });
367
+ }).catch(() => {
368
+ var _a;
369
+ (_a = adapter.log) == null ? void 0 : _a.error("Retrieving device failed!");
370
+ });
371
+ }, 5e4);
372
+ };
373
+ const updateSolarFlowState = async (adapter, productKey, deviceKey, state, val) => {
374
+ adapter == null ? void 0 : adapter.setStateAsync(
375
+ productKey + "." + deviceKey + "." + state,
376
+ val,
377
+ false
378
+ );
379
+ };
380
+ // Annotate the CommonJS export names for ESM import in node:
381
+ 0 && (module.exports = {
382
+ addOrUpdatePackData,
383
+ createSolarFlowStates,
384
+ startCheckStatesTimer,
385
+ updateSolarFlowState
386
+ });
387
+ //# sourceMappingURL=adapterService.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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) => {\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) => {\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) => {\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) => {\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
+ "names": []
7
+ }
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var mqttService_exports = {};
26
+ __export(mqttService_exports, {
27
+ connectMqttClient: () => connectMqttClient,
28
+ setOutputLimit: () => setOutputLimit
29
+ });
30
+ module.exports = __toCommonJS(mqttService_exports);
31
+ var mqtt = __toESM(require("mqtt"));
32
+ var import_adapterService = require("./adapterService");
33
+ let client = void 0;
34
+ let adapter = void 0;
35
+ const onConnected = () => {
36
+ adapter == null ? void 0 : adapter.log.info("Connected with MQTT!");
37
+ };
38
+ const onError = (error) => {
39
+ adapter == null ? void 0 : adapter.log.error("Connection to MQTT failed! Error: " + error);
40
+ };
41
+ const onSubscribe = (err) => {
42
+ if (err) {
43
+ adapter == null ? void 0 : adapter.log.error("Subscription to MQTT failed! Error: " + err);
44
+ } else {
45
+ adapter == null ? void 0 : adapter.log.info("Subscription successful!");
46
+ }
47
+ };
48
+ const onMessage = async (topic, message) => {
49
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
50
+ if (adapter) {
51
+ const splitted = topic.split("/");
52
+ const productKey = splitted[1];
53
+ const deviceKey = splitted[2];
54
+ const obj = JSON.parse(message.toString());
55
+ (0, import_adapterService.updateSolarFlowState)(
56
+ adapter,
57
+ productKey,
58
+ deviceKey,
59
+ "lastUpdate",
60
+ new Date().getTime()
61
+ );
62
+ if (((_a = obj.properties) == null ? void 0 : _a.electricLevel) != null && ((_b = obj.properties) == null ? void 0 : _b.electricLevel) != void 0) {
63
+ (0, import_adapterService.updateSolarFlowState)(
64
+ adapter,
65
+ productKey,
66
+ deviceKey,
67
+ "electricLevel",
68
+ obj.properties.electricLevel
69
+ );
70
+ }
71
+ if (((_c = obj.properties) == null ? void 0 : _c.outputHomePower) != null && ((_d = obj.properties) == null ? void 0 : _d.outputHomePower) != void 0) {
72
+ (0, import_adapterService.updateSolarFlowState)(
73
+ adapter,
74
+ productKey,
75
+ deviceKey,
76
+ "outputHomePower",
77
+ obj.properties.outputHomePower
78
+ );
79
+ }
80
+ if (((_e = obj.properties) == null ? void 0 : _e.outputLimit) != null && ((_f = obj.properties) == null ? void 0 : _f.outputLimit) != void 0) {
81
+ (0, import_adapterService.updateSolarFlowState)(
82
+ adapter,
83
+ productKey,
84
+ deviceKey,
85
+ "outputLimit",
86
+ obj.properties.outputLimit
87
+ );
88
+ }
89
+ if (((_g = obj.properties) == null ? void 0 : _g.outputPackPower) != null && ((_h = obj.properties) == null ? void 0 : _h.outputPackPower) != void 0) {
90
+ (0, import_adapterService.updateSolarFlowState)(
91
+ adapter,
92
+ productKey,
93
+ deviceKey,
94
+ "outputPackPower",
95
+ obj.properties.outputPackPower
96
+ );
97
+ (0, import_adapterService.updateSolarFlowState)(adapter, productKey, deviceKey, "packInputPower", 0);
98
+ }
99
+ if (((_i = obj.properties) == null ? void 0 : _i.packInputPower) != null && ((_j = obj.properties) == null ? void 0 : _j.packInputPower) != void 0) {
100
+ (0, import_adapterService.updateSolarFlowState)(
101
+ adapter,
102
+ productKey,
103
+ deviceKey,
104
+ "packInputPower",
105
+ obj.properties.packInputPower
106
+ );
107
+ (0, import_adapterService.updateSolarFlowState)(
108
+ adapter,
109
+ productKey,
110
+ deviceKey,
111
+ "outputPackPower",
112
+ 0
113
+ );
114
+ }
115
+ if (((_k = obj.properties) == null ? void 0 : _k.solarInputPower) != null && ((_l = obj.properties) == null ? void 0 : _l.solarInputPower) != void 0) {
116
+ (0, import_adapterService.updateSolarFlowState)(
117
+ adapter,
118
+ productKey,
119
+ deviceKey,
120
+ "solarInputPower",
121
+ obj.properties.solarInputPower
122
+ );
123
+ }
124
+ if (((_m = obj.properties) == null ? void 0 : _m.remainInputTime) != null && ((_n = obj.properties) == null ? void 0 : _n.remainInputTime) != void 0) {
125
+ (0, import_adapterService.updateSolarFlowState)(
126
+ adapter,
127
+ productKey,
128
+ deviceKey,
129
+ "remainInputTime",
130
+ obj.properties.remainInputTime
131
+ );
132
+ }
133
+ if (((_o = obj.properties) == null ? void 0 : _o.remainOutTime) != null && ((_p = obj.properties) == null ? void 0 : _p.remainOutTime) != void 0) {
134
+ (0, import_adapterService.updateSolarFlowState)(
135
+ adapter,
136
+ productKey,
137
+ deviceKey,
138
+ "remainOutTime",
139
+ obj.properties.remainOutTime
140
+ );
141
+ }
142
+ if (((_q = obj.properties) == null ? void 0 : _q.socSet) != null && ((_r = obj.properties) == null ? void 0 : _r.socSet) != void 0) {
143
+ (0, import_adapterService.updateSolarFlowState)(
144
+ adapter,
145
+ productKey,
146
+ deviceKey,
147
+ "socSet",
148
+ Number(obj.properties.socSet) / 10
149
+ );
150
+ }
151
+ if (((_s = obj.properties) == null ? void 0 : _s.minSoc) != null && ((_t = obj.properties) == null ? void 0 : _t.minSoc) != void 0) {
152
+ (0, import_adapterService.updateSolarFlowState)(
153
+ adapter,
154
+ productKey,
155
+ deviceKey,
156
+ "minSoc",
157
+ Number(obj.properties.minSoc) / 10
158
+ );
159
+ }
160
+ if (obj.packData) {
161
+ (0, import_adapterService.addOrUpdatePackData)(adapter, productKey, deviceKey, obj.packData);
162
+ }
163
+ }
164
+ if (client) {
165
+ }
166
+ };
167
+ const setOutputLimit = async (adapter2, productKey, deviceKey, limit) => {
168
+ var _a;
169
+ if (client && productKey && deviceKey) {
170
+ const currentLimit = (_a = await adapter2.getStateAsync(productKey + "." + deviceKey + ".outputLimit")) == null ? void 0 : _a.val;
171
+ if (currentLimit != null && currentLimit != void 0) {
172
+ if (currentLimit != limit) {
173
+ if (limit < 100 && limit != 90 && limit != 60 && limit != 30 && limit != 0) {
174
+ if (limit < 100 && limit > 90) {
175
+ limit = 90;
176
+ } else if (limit < 90 && limit > 60) {
177
+ limit = 60;
178
+ } else if (limit < 60 && limit > 30) {
179
+ limit = 30;
180
+ } else if (limit < 30) {
181
+ limit = 30;
182
+ }
183
+ }
184
+ const topic = `iot/${productKey}/${deviceKey}/properties/write`;
185
+ const outputlimit = { properties: { outputLimit: limit } };
186
+ adapter2.log.info(
187
+ `Setting Output Limit for device key ${deviceKey} to ${limit}!`
188
+ );
189
+ client == null ? void 0 : client.publish(topic, JSON.stringify(outputlimit));
190
+ } else {
191
+ adapter2.log.info(
192
+ `Output Limit for device key ${deviceKey} is already at ${limit}!`
193
+ );
194
+ }
195
+ }
196
+ }
197
+ };
198
+ const connectMqttClient = (_adapter) => {
199
+ adapter = _adapter;
200
+ const options = {
201
+ clientId: adapter.accessToken,
202
+ username: "zenApp",
203
+ password: "oK#PCgy6OZxd",
204
+ clean: true,
205
+ protocolVersion: 5
206
+ };
207
+ if (mqtt && adapter && adapter.paths) {
208
+ client = mqtt.connect(
209
+ "mqtt://" + adapter.paths.mqttUrl + ":" + adapter.paths.mqttPort,
210
+ options
211
+ );
212
+ if (client && adapter) {
213
+ client.on("connect", onConnected);
214
+ client.on("error", onError);
215
+ adapter.deviceList.forEach((device) => {
216
+ if (adapter) {
217
+ (0, import_adapterService.createSolarFlowStates)(adapter, device.productKey, device.deviceKey);
218
+ (0, import_adapterService.updateSolarFlowState)(
219
+ adapter,
220
+ device.productKey,
221
+ device.deviceKey,
222
+ "electricLevel",
223
+ device.electricity
224
+ );
225
+ const reportTopic = `/${device.productKey}/${device.deviceKey}/properties/report`;
226
+ const iotTopic = `iot/${device.productKey}/${device.deviceKey}/#`;
227
+ adapter.log.info(`Subscribing to MQTT Topic: ${reportTopic}`);
228
+ client == null ? void 0 : client.subscribe(reportTopic, onSubscribe);
229
+ adapter.log.info(`Subscribing to MQTT Topic: ${iotTopic}`);
230
+ client == null ? void 0 : client.subscribe(iotTopic, onSubscribe);
231
+ }
232
+ });
233
+ client.on("message", onMessage);
234
+ }
235
+ }
236
+ };
237
+ // Annotate the CommonJS export names for ESM import in node:
238
+ 0 && (module.exports = {
239
+ connectMqttClient,
240
+ setOutputLimit
241
+ });
242
+ //# sourceMappingURL=mqttService.js.map