iobroker.zendure-solarflow 1.4.0 → 1.5.2
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 +8 -0
- package/admin/build/index.js +30 -30
- package/admin/build/index.js.map +2 -2
- package/build/helpers/createSolarFlowStates.js +3 -1
- package/build/helpers/createSolarFlowStates.js.map +2 -2
- package/build/helpers/uuidHelper.js +34 -0
- package/build/helpers/uuidHelper.js.map +7 -0
- package/build/main.js +21 -31
- package/build/main.js.map +2 -2
- package/build/models/ISolarFlowDeviceDetails.js.map +1 -1
- package/build/models/ISolarFlowMqttProperties.js.map +1 -1
- package/build/models/ISolarflowDevRegisterResponse.js +17 -0
- package/build/models/ISolarflowDevRegisterResponse.js.map +7 -0
- package/build/services/adapterService.js +14 -1
- package/build/services/adapterService.js.map +2 -2
- package/build/services/fallbackMqttService.js +460 -0
- package/build/services/fallbackMqttService.js.map +7 -0
- package/build/services/fallbackWebService.js +80 -0
- package/build/services/fallbackWebService.js.map +7 -0
- package/build/services/jobSchedule.js +46 -48
- package/build/services/jobSchedule.js.map +2 -2
- package/build/services/mqttService.js +75 -31
- package/build/services/mqttService.js.map +2 -2
- package/build/services/webService.js +5 -1
- package/build/services/webService.js.map +2 -2
- package/io-package.json +41 -2
- package/package.json +3 -3
|
@@ -0,0 +1,460 @@
|
|
|
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
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var fallbackMqttService_exports = {};
|
|
30
|
+
__export(fallbackMqttService_exports, {
|
|
31
|
+
addOrUpdatePackData: () => addOrUpdatePackData,
|
|
32
|
+
connectFallbackMqttClient: () => connectFallbackMqttClient
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(fallbackMqttService_exports);
|
|
35
|
+
var import_mqtt = __toESM(require("mqtt"));
|
|
36
|
+
var import_uuidHelper = require("../helpers/uuidHelper");
|
|
37
|
+
var import_adapterService = require("./adapterService");
|
|
38
|
+
var import_calculationService = require("./calculationService");
|
|
39
|
+
var import_createSolarFlowStates = require("../helpers/createSolarFlowStates");
|
|
40
|
+
var import_jobSchedule = require("./jobSchedule");
|
|
41
|
+
let adapter = void 0;
|
|
42
|
+
const addOrUpdatePackData = async (productKey, deviceKey, packData) => {
|
|
43
|
+
if (adapter && productKey && deviceKey) {
|
|
44
|
+
await packData.forEach(async (x) => {
|
|
45
|
+
if (x.sn && adapter) {
|
|
46
|
+
const key = (productKey + "." + deviceKey + ".packData." + x.sn).replace(adapter.FORBIDDEN_CHARS, "");
|
|
47
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".sn", {
|
|
48
|
+
type: "state",
|
|
49
|
+
common: {
|
|
50
|
+
name: {
|
|
51
|
+
de: "Seriennummer",
|
|
52
|
+
en: "Serial id"
|
|
53
|
+
},
|
|
54
|
+
type: "string",
|
|
55
|
+
desc: "Serial ID",
|
|
56
|
+
role: "value",
|
|
57
|
+
read: true,
|
|
58
|
+
write: false
|
|
59
|
+
},
|
|
60
|
+
native: {}
|
|
61
|
+
}));
|
|
62
|
+
await (adapter == null ? void 0 : adapter.setStateAsync(key + ".sn", x.sn, true));
|
|
63
|
+
if (x.socLevel) {
|
|
64
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".socLevel", {
|
|
65
|
+
type: "state",
|
|
66
|
+
common: {
|
|
67
|
+
name: {
|
|
68
|
+
de: "SOC der Batterie",
|
|
69
|
+
en: "soc of battery"
|
|
70
|
+
},
|
|
71
|
+
type: "number",
|
|
72
|
+
desc: "SOC Level",
|
|
73
|
+
role: "value",
|
|
74
|
+
read: true,
|
|
75
|
+
write: false
|
|
76
|
+
},
|
|
77
|
+
native: {}
|
|
78
|
+
}));
|
|
79
|
+
await (adapter == null ? void 0 : adapter.setStateAsync(key + ".socLevel", x.socLevel, true));
|
|
80
|
+
}
|
|
81
|
+
if (x.maxTemp) {
|
|
82
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".maxTemp", {
|
|
83
|
+
type: "state",
|
|
84
|
+
common: {
|
|
85
|
+
name: {
|
|
86
|
+
de: "Max. Temperatur der Batterie",
|
|
87
|
+
en: "max temp. of battery"
|
|
88
|
+
},
|
|
89
|
+
type: "number",
|
|
90
|
+
desc: "Max. Temp",
|
|
91
|
+
role: "value",
|
|
92
|
+
read: true,
|
|
93
|
+
write: false
|
|
94
|
+
},
|
|
95
|
+
native: {}
|
|
96
|
+
}));
|
|
97
|
+
await (adapter == null ? void 0 : adapter.setStateAsync(
|
|
98
|
+
key + ".maxTemp",
|
|
99
|
+
x.maxTemp / 10 - 273.15,
|
|
100
|
+
true
|
|
101
|
+
));
|
|
102
|
+
}
|
|
103
|
+
if (x.minVol) {
|
|
104
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".minVol", {
|
|
105
|
+
type: "state",
|
|
106
|
+
common: {
|
|
107
|
+
name: "minVol",
|
|
108
|
+
type: "number",
|
|
109
|
+
desc: "minVol",
|
|
110
|
+
role: "value",
|
|
111
|
+
read: true,
|
|
112
|
+
write: false
|
|
113
|
+
},
|
|
114
|
+
native: {}
|
|
115
|
+
}));
|
|
116
|
+
await (adapter == null ? void 0 : adapter.setStateAsync(key + ".minVol", x.minVol / 100, true));
|
|
117
|
+
}
|
|
118
|
+
if (x.maxVol) {
|
|
119
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".maxVol", {
|
|
120
|
+
type: "state",
|
|
121
|
+
common: {
|
|
122
|
+
name: "maxVol",
|
|
123
|
+
type: "number",
|
|
124
|
+
desc: "maxVol",
|
|
125
|
+
role: "value",
|
|
126
|
+
read: true,
|
|
127
|
+
write: false
|
|
128
|
+
},
|
|
129
|
+
native: {}
|
|
130
|
+
}));
|
|
131
|
+
await (adapter == null ? void 0 : adapter.setStateAsync(key + ".maxVol", x.maxVol / 100, true));
|
|
132
|
+
}
|
|
133
|
+
if (x.totalVol) {
|
|
134
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(key + ".totalVol", {
|
|
135
|
+
type: "state",
|
|
136
|
+
common: {
|
|
137
|
+
name: "totalVol",
|
|
138
|
+
type: "number",
|
|
139
|
+
desc: "totalVol",
|
|
140
|
+
role: "value",
|
|
141
|
+
read: true,
|
|
142
|
+
write: false
|
|
143
|
+
},
|
|
144
|
+
native: {}
|
|
145
|
+
}));
|
|
146
|
+
const totalVol = x.totalVol / 100;
|
|
147
|
+
await (adapter == null ? void 0 : adapter.setStateAsync(key + ".totalVol", totalVol, true));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
const onMessage = async (topic, message) => {
|
|
154
|
+
if (adapter) {
|
|
155
|
+
let obj = {};
|
|
156
|
+
try {
|
|
157
|
+
obj = JSON.parse(message.toString());
|
|
158
|
+
} catch (e) {
|
|
159
|
+
const txt = message.toString();
|
|
160
|
+
adapter.log.error(`[JSON PARSE ERROR] ${txt}`);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const topicSplitted = topic.split("/");
|
|
164
|
+
let productKey = topicSplitted[0];
|
|
165
|
+
const deviceKey = topicSplitted[1];
|
|
166
|
+
if (deviceKey == "sensor" || deviceKey == "switch") {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
if (productKey == "E8OdVAA4") {
|
|
170
|
+
productKey = "73bkTV";
|
|
171
|
+
}
|
|
172
|
+
if (!adapter.deviceList.some(
|
|
173
|
+
(x) => x.deviceKey == deviceKey && x.productKey == productKey
|
|
174
|
+
)) {
|
|
175
|
+
adapter.deviceList.push({
|
|
176
|
+
productName: "Solarflow",
|
|
177
|
+
deviceKey,
|
|
178
|
+
productKey
|
|
179
|
+
});
|
|
180
|
+
await (0, import_createSolarFlowStates.createSolarFlowStates)(adapter, productKey, deviceKey);
|
|
181
|
+
await (0, import_adapterService.updateSolarFlowState)(
|
|
182
|
+
adapter,
|
|
183
|
+
productKey,
|
|
184
|
+
deviceKey,
|
|
185
|
+
"registeredServer",
|
|
186
|
+
adapter.config.server
|
|
187
|
+
);
|
|
188
|
+
(0, import_jobSchedule.startResetValuesJob)(adapter);
|
|
189
|
+
(0, import_jobSchedule.startCheckStatesJob)(adapter);
|
|
190
|
+
if (adapter.config.useCalculation) {
|
|
191
|
+
(0, import_jobSchedule.startCalculationJob)(adapter);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
195
|
+
adapter,
|
|
196
|
+
productKey,
|
|
197
|
+
deviceKey,
|
|
198
|
+
"lastUpdate",
|
|
199
|
+
(/* @__PURE__ */ new Date()).getTime()
|
|
200
|
+
);
|
|
201
|
+
if ((obj == null ? void 0 : obj.electricLevel) != null && (obj == null ? void 0 : obj.electricLevel) != void 0) {
|
|
202
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
203
|
+
adapter,
|
|
204
|
+
productKey,
|
|
205
|
+
deviceKey,
|
|
206
|
+
"electricLevel",
|
|
207
|
+
obj.electricLevel
|
|
208
|
+
);
|
|
209
|
+
if ((adapter == null ? void 0 : adapter.config.useCalculation) && obj.electricLevel == 100) {
|
|
210
|
+
(0, import_calculationService.setEnergyWhMax)(adapter, productKey, deviceKey);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if ((obj == null ? void 0 : obj.packState) != null && (obj == null ? void 0 : obj.packState) != void 0) {
|
|
214
|
+
const value = (obj == null ? void 0 : obj.packState) == 0 ? "Idle" : (obj == null ? void 0 : obj.packState) == 1 ? "Charging" : (obj == null ? void 0 : obj.packState) == 2 ? "Discharging" : "Unknown";
|
|
215
|
+
(0, import_adapterService.updateSolarFlowState)(adapter, productKey, deviceKey, "packState", value);
|
|
216
|
+
}
|
|
217
|
+
if ((obj == null ? void 0 : obj.passMode) != null && (obj == null ? void 0 : obj.passMode) != void 0) {
|
|
218
|
+
const value = (obj == null ? void 0 : obj.passMode) == 0 ? "Automatic" : (obj == null ? void 0 : obj.passMode) == 1 ? "Always off" : (obj == null ? void 0 : obj.passMode) == 2 ? "Always on" : "Unknown";
|
|
219
|
+
(0, import_adapterService.updateSolarFlowState)(adapter, productKey, deviceKey, "passMode", value);
|
|
220
|
+
}
|
|
221
|
+
if ((obj == null ? void 0 : obj.pass) != null && (obj == null ? void 0 : obj.pass) != void 0) {
|
|
222
|
+
const value = (obj == null ? void 0 : obj.pass) == 0 ? false : true;
|
|
223
|
+
(0, import_adapterService.updateSolarFlowState)(adapter, productKey, deviceKey, "pass", value);
|
|
224
|
+
}
|
|
225
|
+
if ((obj == null ? void 0 : obj.autoRecover) != null && (obj == null ? void 0 : obj.autoRecover) != void 0) {
|
|
226
|
+
const value = (obj == null ? void 0 : obj.autoRecover) == 0 ? false : true;
|
|
227
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
228
|
+
adapter,
|
|
229
|
+
productKey,
|
|
230
|
+
deviceKey,
|
|
231
|
+
"autoRecover",
|
|
232
|
+
value
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
if ((obj == null ? void 0 : obj.outputHomePower) != null && (obj == null ? void 0 : obj.outputHomePower) != void 0) {
|
|
236
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
237
|
+
adapter,
|
|
238
|
+
productKey,
|
|
239
|
+
deviceKey,
|
|
240
|
+
"outputHomePower",
|
|
241
|
+
obj.outputHomePower
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
if ((obj == null ? void 0 : obj.outputLimit) != null && (obj == null ? void 0 : obj.outputLimit) != void 0) {
|
|
245
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
246
|
+
adapter,
|
|
247
|
+
productKey,
|
|
248
|
+
deviceKey,
|
|
249
|
+
"outputLimit",
|
|
250
|
+
obj.outputLimit
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
if ((obj == null ? void 0 : obj.buzzerSwitch) != null && (obj == null ? void 0 : obj.buzzerSwitch) != void 0) {
|
|
254
|
+
const value = (obj == null ? void 0 : obj.buzzerSwitch) == 0 ? false : true;
|
|
255
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
256
|
+
adapter,
|
|
257
|
+
productKey,
|
|
258
|
+
deviceKey,
|
|
259
|
+
"buzzerSwitch",
|
|
260
|
+
value
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
if ((obj == null ? void 0 : obj.outputPackPower) != null && (obj == null ? void 0 : obj.outputPackPower) != void 0) {
|
|
264
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
265
|
+
adapter,
|
|
266
|
+
productKey,
|
|
267
|
+
deviceKey,
|
|
268
|
+
"outputPackPower",
|
|
269
|
+
obj.outputPackPower
|
|
270
|
+
);
|
|
271
|
+
(0, import_adapterService.updateSolarFlowState)(adapter, productKey, deviceKey, "packInputPower", 0);
|
|
272
|
+
}
|
|
273
|
+
if ((obj == null ? void 0 : obj.packInputPower) != null && (obj == null ? void 0 : obj.packInputPower) != void 0) {
|
|
274
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
275
|
+
adapter,
|
|
276
|
+
productKey,
|
|
277
|
+
deviceKey,
|
|
278
|
+
"packInputPower",
|
|
279
|
+
obj.packInputPower
|
|
280
|
+
);
|
|
281
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
282
|
+
adapter,
|
|
283
|
+
productKey,
|
|
284
|
+
deviceKey,
|
|
285
|
+
"outputPackPower",
|
|
286
|
+
0
|
|
287
|
+
);
|
|
288
|
+
}
|
|
289
|
+
if ((obj == null ? void 0 : obj.solarInputPower) != null && (obj == null ? void 0 : obj.solarInputPower) != void 0) {
|
|
290
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
291
|
+
adapter,
|
|
292
|
+
productKey,
|
|
293
|
+
deviceKey,
|
|
294
|
+
"solarInputPower",
|
|
295
|
+
obj.solarInputPower
|
|
296
|
+
);
|
|
297
|
+
}
|
|
298
|
+
if ((obj == null ? void 0 : obj.pvPower1) != null && (obj == null ? void 0 : obj.pvPower1) != void 0) {
|
|
299
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
300
|
+
adapter,
|
|
301
|
+
productKey,
|
|
302
|
+
deviceKey,
|
|
303
|
+
"pvPower2",
|
|
304
|
+
// Reversed to adjust like offical app
|
|
305
|
+
obj.pvPower1
|
|
306
|
+
);
|
|
307
|
+
}
|
|
308
|
+
if ((obj == null ? void 0 : obj.pvPower2) != null && (obj == null ? void 0 : obj.pvPower2) != void 0) {
|
|
309
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
310
|
+
adapter,
|
|
311
|
+
productKey,
|
|
312
|
+
deviceKey,
|
|
313
|
+
"pvPower1",
|
|
314
|
+
// Reversed to adjust like offical app
|
|
315
|
+
obj.pvPower2
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
if ((obj == null ? void 0 : obj.solarPower1) != null && (obj == null ? void 0 : obj.solarPower1) != void 0) {
|
|
319
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
320
|
+
adapter,
|
|
321
|
+
productKey,
|
|
322
|
+
deviceKey,
|
|
323
|
+
"pvPower1",
|
|
324
|
+
obj.solarPower1
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
if ((obj == null ? void 0 : obj.solarPower2) != null && (obj == null ? void 0 : obj.solarPower2) != void 0) {
|
|
328
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
329
|
+
adapter,
|
|
330
|
+
productKey,
|
|
331
|
+
deviceKey,
|
|
332
|
+
"pvPower2",
|
|
333
|
+
obj.solarPower2
|
|
334
|
+
);
|
|
335
|
+
}
|
|
336
|
+
if ((obj == null ? void 0 : obj.remainOutTime) != null && (obj == null ? void 0 : obj.remainOutTime) != void 0) {
|
|
337
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
338
|
+
adapter,
|
|
339
|
+
productKey,
|
|
340
|
+
deviceKey,
|
|
341
|
+
"remainOutTime",
|
|
342
|
+
obj.remainOutTime
|
|
343
|
+
);
|
|
344
|
+
}
|
|
345
|
+
if ((obj == null ? void 0 : obj.remainInputTime) != null && (obj == null ? void 0 : obj.remainInputTime) != void 0) {
|
|
346
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
347
|
+
adapter,
|
|
348
|
+
productKey,
|
|
349
|
+
deviceKey,
|
|
350
|
+
"remainInputTime",
|
|
351
|
+
obj.remainInputTime
|
|
352
|
+
);
|
|
353
|
+
}
|
|
354
|
+
if ((obj == null ? void 0 : obj.socSet) != null && (obj == null ? void 0 : obj.socSet) != void 0) {
|
|
355
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
356
|
+
adapter,
|
|
357
|
+
productKey,
|
|
358
|
+
deviceKey,
|
|
359
|
+
"socSet",
|
|
360
|
+
Number(obj.socSet) / 10
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
if ((obj == null ? void 0 : obj.minSoc) != null && (obj == null ? void 0 : obj.minSoc) != void 0) {
|
|
364
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
365
|
+
adapter,
|
|
366
|
+
productKey,
|
|
367
|
+
deviceKey,
|
|
368
|
+
"minSoc",
|
|
369
|
+
Number(obj.minSoc) / 10
|
|
370
|
+
);
|
|
371
|
+
}
|
|
372
|
+
if ((obj == null ? void 0 : obj.pvBrand) != null && (obj == null ? void 0 : obj.pvBrand) != void 0) {
|
|
373
|
+
const value = (obj == null ? void 0 : obj.pvBrand) == 0 ? "Others" : (obj == null ? void 0 : obj.pvBrand) == 1 ? "Hoymiles" : (obj == null ? void 0 : obj.pvBrand) == 2 ? "Enphase" : (obj == null ? void 0 : obj.pvBrand) == 3 ? "APSystems" : (obj == null ? void 0 : obj.pvBrand) == 4 ? "Anker" : (obj == null ? void 0 : obj.pvBrand) == 5 ? "Deye" : (obj == null ? void 0 : obj.pvBrand) == 6 ? "Bosswerk" : "Unknown";
|
|
374
|
+
(0, import_adapterService.updateSolarFlowState)(adapter, productKey, deviceKey, "pvBrand", value);
|
|
375
|
+
}
|
|
376
|
+
if ((obj == null ? void 0 : obj.inverseMaxPower) != null && (obj == null ? void 0 : obj.inverseMaxPower) != void 0) {
|
|
377
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
378
|
+
adapter,
|
|
379
|
+
productKey,
|
|
380
|
+
deviceKey,
|
|
381
|
+
"inverseMaxPower",
|
|
382
|
+
obj.inverseMaxPower
|
|
383
|
+
);
|
|
384
|
+
}
|
|
385
|
+
if ((obj == null ? void 0 : obj.wifiState) != null && (obj == null ? void 0 : obj.wifiState) != void 0) {
|
|
386
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
387
|
+
adapter,
|
|
388
|
+
productKey,
|
|
389
|
+
deviceKey,
|
|
390
|
+
"wifiState",
|
|
391
|
+
obj.wifiState == 1 ? "Connected" : "Disconnected"
|
|
392
|
+
);
|
|
393
|
+
}
|
|
394
|
+
if ((obj == null ? void 0 : obj.hubState) != null && (obj == null ? void 0 : obj.hubState) != void 0) {
|
|
395
|
+
(0, import_adapterService.updateSolarFlowState)(
|
|
396
|
+
adapter,
|
|
397
|
+
productKey,
|
|
398
|
+
deviceKey,
|
|
399
|
+
"hubState",
|
|
400
|
+
obj.hubState == 0 ? "Stop output and standby" : "Stop output and shut down"
|
|
401
|
+
);
|
|
402
|
+
}
|
|
403
|
+
if (obj.packData) {
|
|
404
|
+
addOrUpdatePackData(productKey, deviceKey, obj.packData);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
const onConnected = () => {
|
|
409
|
+
adapter == null ? void 0 : adapter.log.info("[onConnected] Connected with MQTT!");
|
|
410
|
+
};
|
|
411
|
+
const onError = (error) => {
|
|
412
|
+
adapter == null ? void 0 : adapter.log.error("Connection to MQTT failed! Error: " + error);
|
|
413
|
+
};
|
|
414
|
+
const onSubscribeReportTopic = (error) => {
|
|
415
|
+
if (error) {
|
|
416
|
+
adapter == null ? void 0 : adapter.log.error("Subscription to MQTT failed! Error: " + error);
|
|
417
|
+
} else {
|
|
418
|
+
adapter == null ? void 0 : adapter.log.debug("Subscription of Report Topic successful!");
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
const connectFallbackMqttClient = (_adapter, appKey, secret, mqttServer, mqttPort) => {
|
|
422
|
+
var _a;
|
|
423
|
+
adapter = _adapter;
|
|
424
|
+
const options = {
|
|
425
|
+
clientId: (0, import_uuidHelper.generateUniqSerial)(),
|
|
426
|
+
username: appKey,
|
|
427
|
+
password: secret,
|
|
428
|
+
clean: true,
|
|
429
|
+
protocolVersion: 5
|
|
430
|
+
};
|
|
431
|
+
if (import_mqtt.default && adapter && adapter.paths && adapter.deviceList) {
|
|
432
|
+
adapter.log.debug(
|
|
433
|
+
`[connectMqttClient] Connecting to DEV MQTT broker ${mqttServer + ":" + mqttPort}...`
|
|
434
|
+
);
|
|
435
|
+
adapter.mqttClient = import_mqtt.default.connect(
|
|
436
|
+
"mqtt://" + mqttServer + ":" + mqttPort,
|
|
437
|
+
options
|
|
438
|
+
);
|
|
439
|
+
if (adapter && adapter.mqttClient) {
|
|
440
|
+
adapter.mqttClient.on("connect", onConnected);
|
|
441
|
+
adapter.mqttClient.on("error", onError);
|
|
442
|
+
if (adapter) {
|
|
443
|
+
const reportTopic = `${appKey}/#`;
|
|
444
|
+
adapter.log.debug(
|
|
445
|
+
`[connectMqttClient] Subscribing to MQTT Topic: ${reportTopic}`
|
|
446
|
+
);
|
|
447
|
+
(_a = adapter.mqttClient) == null ? void 0 : _a.subscribe(reportTopic, onSubscribeReportTopic);
|
|
448
|
+
}
|
|
449
|
+
adapter.mqttClient.on("message", onMessage);
|
|
450
|
+
return true;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
return false;
|
|
454
|
+
};
|
|
455
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
456
|
+
0 && (module.exports = {
|
|
457
|
+
addOrUpdatePackData,
|
|
458
|
+
connectFallbackMqttClient
|
|
459
|
+
});
|
|
460
|
+
//# sourceMappingURL=fallbackMqttService.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/services/fallbackMqttService.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nimport mqtt from \"mqtt\";\r\nimport { ZendureSolarflow } from \"../main\";\r\nimport { generateUniqSerial } from \"../helpers/uuidHelper\";\r\nimport { IPackData } from \"../models/IPackData\";\r\nimport { updateSolarFlowState } from \"./adapterService\";\r\nimport { ISolarFlowMqttProperties } from \"../models/ISolarFlowMqttProperties\";\r\nimport { setEnergyWhMax } from \"./calculationService\";\r\nimport { createSolarFlowStates } from \"../helpers/createSolarFlowStates\";\r\nimport {\r\n startCalculationJob,\r\n startCheckStatesJob,\r\n startResetValuesJob,\r\n} from \"./jobSchedule\";\r\n\r\nlet adapter: ZendureSolarflow | undefined = undefined;\r\n\r\nexport const addOrUpdatePackData = async (\r\n productKey: string,\r\n deviceKey: string,\r\n packData: IPackData[],\r\n): Promise<void> => {\r\n if (adapter && productKey && deviceKey) {\r\n await packData.forEach(async (x) => {\r\n // Process data only with a serial id!\r\n if (x.sn && adapter) {\r\n // create a state for the serial id\r\n const key = (\r\n productKey +\r\n \".\" +\r\n deviceKey +\r\n \".packData.\" +\r\n x.sn\r\n ).replace(adapter.FORBIDDEN_CHARS, \"\");\r\n\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: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".sn\", x.sn, true);\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: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".socLevel\", x.socLevel, true);\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: false,\r\n },\r\n native: {},\r\n });\r\n\r\n // Convert Kelvin to Celsius\r\n await adapter?.setStateAsync(\r\n key + \".maxTemp\",\r\n x.maxTemp / 10 - 273.15,\r\n true,\r\n );\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: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".minVol\", x.minVol / 100, true);\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: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.setStateAsync(key + \".maxVol\", x.maxVol / 100, true);\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: false,\r\n },\r\n native: {},\r\n });\r\n\r\n const totalVol = x.totalVol / 100;\r\n\r\n await adapter?.setStateAsync(key + \".totalVol\", totalVol, true);\r\n\r\n // Send Voltage to checkVoltage Method - Check Voltage makes no sense, as no control is possible in fallback mode!\r\n //checkVoltage(adapter, productKey, deviceKey, totalVol);\r\n }\r\n }\r\n });\r\n }\r\n};\r\n\r\nconst onMessage = async (topic: string, message: Buffer): Promise<void> => {\r\n if (adapter) {\r\n let obj: ISolarFlowMqttProperties = {};\r\n try {\r\n //console.log(\"Topic: \" + topic);\r\n //console.log(\"Message: \" + message.toString());\r\n obj = JSON.parse(message.toString());\r\n } catch (e) {\r\n const txt = message.toString();\r\n adapter.log.error(`[JSON PARSE ERROR] ${txt}`);\r\n return;\r\n }\r\n\r\n const topicSplitted = topic.split(\"/\");\r\n let productKey = topicSplitted[0];\r\n const deviceKey = topicSplitted[1];\r\n\r\n //console.log(\"productKey: \" + productKey + \" / deviceKey: \" + deviceKey);\r\n\r\n if (deviceKey == \"sensor\" || deviceKey == \"switch\") {\r\n return;\r\n }\r\n\r\n if (productKey == \"E8OdVAA4\") {\r\n // E8OdVAA4 vom Dev MQTT ist 73bkTV vom App MQTT - wir \u00FCberschreiben diesen damit die angelegten States beim Umswitchen des MQTT weitergenutzt werden k\u00F6nnen.\r\n productKey = \"73bkTV\";\r\n }\r\n\r\n if (\r\n !adapter.deviceList.some(\r\n (x) => x.deviceKey == deviceKey && x.productKey == productKey,\r\n )\r\n ) {\r\n adapter.deviceList.push({\r\n productName: \"Solarflow\",\r\n deviceKey: deviceKey,\r\n productKey: productKey,\r\n });\r\n\r\n // Wir erstellen bzw. aktualisieren die States, erfolgt im \"normalen\" MQTT in der main.ts\r\n await createSolarFlowStates(adapter, productKey, deviceKey);\r\n\r\n await updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"registeredServer\",\r\n adapter.config.server,\r\n );\r\n\r\n // Job starten die states in der Nacht zu resetten\r\n startResetValuesJob(adapter);\r\n\r\n // Job starten die States zu checken\r\n startCheckStatesJob(adapter);\r\n\r\n // Calculation Job starten sofern aktiviert\r\n if (adapter.config.useCalculation) {\r\n startCalculationJob(adapter);\r\n }\r\n }\r\n\r\n // set lastUpdate for deviceKey\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"lastUpdate\",\r\n new Date().getTime(),\r\n );\r\n\r\n if (obj?.electricLevel != null && obj?.electricLevel != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"electricLevel\",\r\n obj.electricLevel,\r\n );\r\n\r\n if (adapter?.config.useCalculation && obj.electricLevel == 100) {\r\n setEnergyWhMax(adapter, productKey, deviceKey);\r\n }\r\n }\r\n\r\n if (obj?.packState != null && obj?.packState != undefined) {\r\n const value =\r\n obj?.packState == 0\r\n ? \"Idle\"\r\n : obj?.packState == 1\r\n ? \"Charging\"\r\n : obj?.packState == 2\r\n ? \"Discharging\"\r\n : \"Unknown\";\r\n updateSolarFlowState(adapter, productKey, deviceKey, \"packState\", value);\r\n }\r\n\r\n if (obj?.passMode != null && obj?.passMode != undefined) {\r\n const value =\r\n obj?.passMode == 0\r\n ? \"Automatic\"\r\n : obj?.passMode == 1\r\n ? \"Always off\"\r\n : obj?.passMode == 2\r\n ? \"Always on\"\r\n : \"Unknown\";\r\n updateSolarFlowState(adapter, productKey, deviceKey, \"passMode\", value);\r\n }\r\n\r\n if (obj?.pass != null && obj?.pass != undefined) {\r\n const value = obj?.pass == 0 ? false : true;\r\n\r\n updateSolarFlowState(adapter, productKey, deviceKey, \"pass\", value);\r\n }\r\n\r\n if (obj?.autoRecover != null && obj?.autoRecover != undefined) {\r\n const value = obj?.autoRecover == 0 ? false : true;\r\n\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"autoRecover\",\r\n value,\r\n );\r\n }\r\n\r\n if (obj?.outputHomePower != null && obj?.outputHomePower != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"outputHomePower\",\r\n obj.outputHomePower,\r\n );\r\n }\r\n\r\n if (obj?.outputLimit != null && obj?.outputLimit != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"outputLimit\",\r\n obj.outputLimit,\r\n );\r\n }\r\n\r\n if (obj?.buzzerSwitch != null && obj?.buzzerSwitch != undefined) {\r\n const value = obj?.buzzerSwitch == 0 ? false : true;\r\n\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"buzzerSwitch\",\r\n value,\r\n );\r\n }\r\n\r\n if (obj?.outputPackPower != null && obj?.outputPackPower != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"outputPackPower\",\r\n obj.outputPackPower,\r\n );\r\n\r\n // if outPutPackPower set packInputPower to 0\r\n updateSolarFlowState(adapter, productKey, deviceKey, \"packInputPower\", 0);\r\n }\r\n\r\n if (obj?.packInputPower != null && obj?.packInputPower != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"packInputPower\",\r\n obj.packInputPower,\r\n );\r\n\r\n // if packInputPower set outputPackPower to 0\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"outputPackPower\",\r\n 0,\r\n );\r\n }\r\n\r\n if (obj?.solarInputPower != null && obj?.solarInputPower != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"solarInputPower\",\r\n obj.solarInputPower,\r\n );\r\n }\r\n\r\n if (obj?.pvPower1 != null && obj?.pvPower1 != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"pvPower2\", // Reversed to adjust like offical app\r\n obj.pvPower1,\r\n );\r\n }\r\n\r\n if (obj?.pvPower2 != null && obj?.pvPower2 != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"pvPower1\", // Reversed to adjust like offical app\r\n obj.pvPower2,\r\n );\r\n }\r\n\r\n if (obj?.solarPower1 != null && obj?.solarPower1 != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"pvPower1\",\r\n obj.solarPower1,\r\n );\r\n }\r\n\r\n if (obj?.solarPower2 != null && obj?.solarPower2 != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"pvPower2\",\r\n obj.solarPower2,\r\n );\r\n }\r\n\r\n if (obj?.remainOutTime != null && obj?.remainOutTime != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"remainOutTime\",\r\n obj.remainOutTime,\r\n );\r\n }\r\n\r\n if (obj?.remainInputTime != null && obj?.remainInputTime != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"remainInputTime\",\r\n obj.remainInputTime,\r\n );\r\n }\r\n\r\n if (obj?.socSet != null && obj?.socSet != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"socSet\",\r\n Number(obj.socSet) / 10,\r\n );\r\n }\r\n\r\n if (obj?.minSoc != null && obj?.minSoc != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"minSoc\",\r\n Number(obj.minSoc) / 10,\r\n );\r\n }\r\n\r\n if (obj?.pvBrand != null && obj?.pvBrand != undefined) {\r\n const value =\r\n obj?.pvBrand == 0\r\n ? \"Others\"\r\n : obj?.pvBrand == 1\r\n ? \"Hoymiles\"\r\n : obj?.pvBrand == 2\r\n ? \"Enphase\"\r\n : obj?.pvBrand == 3\r\n ? \"APSystems\"\r\n : obj?.pvBrand == 4\r\n ? \"Anker\"\r\n : obj?.pvBrand == 5\r\n ? \"Deye\"\r\n : obj?.pvBrand == 6\r\n ? \"Bosswerk\"\r\n : \"Unknown\";\r\n updateSolarFlowState(adapter, productKey, deviceKey, \"pvBrand\", value);\r\n }\r\n\r\n if (obj?.inverseMaxPower != null && obj?.inverseMaxPower != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"inverseMaxPower\",\r\n obj.inverseMaxPower,\r\n );\r\n }\r\n\r\n if (obj?.wifiState != null && obj?.wifiState != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"wifiState\",\r\n obj.wifiState == 1 ? \"Connected\" : \"Disconnected\",\r\n );\r\n }\r\n\r\n if (obj?.hubState != null && obj?.hubState != undefined) {\r\n updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"hubState\",\r\n obj.hubState == 0\r\n ? \"Stop output and standby\"\r\n : \"Stop output and shut down\",\r\n );\r\n }\r\n\r\n if (obj.packData) {\r\n addOrUpdatePackData(productKey, deviceKey, obj.packData);\r\n }\r\n }\r\n};\r\n\r\nconst onConnected = (): void => {\r\n adapter?.log.info(\"[onConnected] Connected with MQTT!\");\r\n};\r\n\r\nconst onError = (error: any): void => {\r\n adapter?.log.error(\"Connection to MQTT failed! Error: \" + error);\r\n};\r\n\r\nconst onSubscribeReportTopic: any = (error: Error | null) => {\r\n if (error) {\r\n adapter?.log.error(\"Subscription to MQTT failed! Error: \" + error);\r\n } else {\r\n adapter?.log.debug(\"Subscription of Report Topic successful!\");\r\n }\r\n};\r\n\r\nexport const connectFallbackMqttClient = (\r\n _adapter: ZendureSolarflow,\r\n appKey: string,\r\n secret: string,\r\n mqttServer: string,\r\n mqttPort: number,\r\n): boolean => {\r\n //console.log(\"connectFallbackMqttClient\");\r\n adapter = _adapter;\r\n\r\n const options: mqtt.IClientOptions = {\r\n clientId: generateUniqSerial(),\r\n username: appKey,\r\n password: secret,\r\n clean: true,\r\n protocolVersion: 5,\r\n };\r\n\r\n if (mqtt && adapter && adapter.paths && adapter.deviceList) {\r\n adapter.log.debug(\r\n `[connectMqttClient] Connecting to DEV MQTT broker ${\r\n mqttServer + \":\" + mqttPort\r\n }...`,\r\n );\r\n adapter.mqttClient = mqtt.connect(\r\n \"mqtt://\" + mqttServer + \":\" + mqttPort,\r\n options,\r\n ); // create a client\r\n\r\n if (adapter && adapter.mqttClient) {\r\n adapter.mqttClient.on(\"connect\", onConnected);\r\n adapter.mqttClient.on(\"error\", onError);\r\n\r\n // Subscribe to Topic (appkey von Zendure)\r\n\r\n if (adapter) {\r\n const reportTopic = `${appKey}/#`;\r\n\r\n adapter.log.debug(\r\n `[connectMqttClient] Subscribing to MQTT Topic: ${reportTopic}`,\r\n );\r\n adapter.mqttClient?.subscribe(reportTopic, onSubscribeReportTopic);\r\n }\r\n\r\n adapter.mqttClient.on(\"message\", onMessage);\r\n\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["mqtt"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
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
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var fallbackWebService_exports = {};
|
|
30
|
+
__export(fallbackWebService_exports, {
|
|
31
|
+
createDeveloperAccount: () => createDeveloperAccount
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(fallbackWebService_exports);
|
|
34
|
+
var import_axios = __toESM(require("axios"));
|
|
35
|
+
var import_paths = require("../constants/paths");
|
|
36
|
+
const config = {
|
|
37
|
+
headers: {
|
|
38
|
+
"Content-Type": "application/json",
|
|
39
|
+
"Accept-Language": "de-DE",
|
|
40
|
+
Accept: "*/*"
|
|
41
|
+
},
|
|
42
|
+
timeout: 1e4
|
|
43
|
+
};
|
|
44
|
+
const createDeveloperAccount = (adapter) => {
|
|
45
|
+
adapter.log.info(
|
|
46
|
+
"[createDeveloperAccount] Connecting to Zendure Developer Web API..."
|
|
47
|
+
);
|
|
48
|
+
const body = {
|
|
49
|
+
snNumber: adapter.config.snNumber,
|
|
50
|
+
account: adapter.config.userName
|
|
51
|
+
};
|
|
52
|
+
let paths = void 0;
|
|
53
|
+
if (adapter.config.server == "eu") {
|
|
54
|
+
paths = import_paths.pathsEu;
|
|
55
|
+
} else {
|
|
56
|
+
paths = import_paths.pathsGlobal;
|
|
57
|
+
}
|
|
58
|
+
return import_axios.default.post(paths.solarFlowDevRegisterUrl, JSON.stringify(body), config).then(function(response) {
|
|
59
|
+
adapter.log.info("Successfully created Developer Account!");
|
|
60
|
+
if (response.data && response.data.success == true) {
|
|
61
|
+
return response.data.data;
|
|
62
|
+
} else {
|
|
63
|
+
console.warn("No Response Data!");
|
|
64
|
+
return void 0;
|
|
65
|
+
}
|
|
66
|
+
}).catch(function(error) {
|
|
67
|
+
var _a, _b, _c, _d, _e, _f;
|
|
68
|
+
if (((_b = (_a = error.response) == null ? void 0 : _a.data) == null ? void 0 : _b.code) && ((_d = (_c = error.response) == null ? void 0 : _c.data) == null ? void 0 : _d.msg)) {
|
|
69
|
+
adapter.log.error(
|
|
70
|
+
"Failed to created Zendure Developer Account: " + ((_f = (_e = error.response) == null ? void 0 : _e.data) == null ? void 0 : _f.code) + " - " + error.response.data.msg
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
return Promise.reject("Failed to created Zendure Developer Account!");
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
77
|
+
0 && (module.exports = {
|
|
78
|
+
createDeveloperAccount
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=fallbackWebService.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/services/fallbackWebService.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n\r\nimport axios, { AxiosRequestConfig } from \"axios\";\r\nimport { ZendureSolarflow } from \"../main\";\r\nimport { pathsEu, pathsGlobal } from \"../constants/paths\";\r\nimport { ISolarFlowDevRegisterData } from \"../models/ISolarflowDevRegisterResponse\";\r\n\r\nconst config: AxiosRequestConfig = {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept-Language\": \"de-DE\",\r\n Accept: \"*/*\",\r\n },\r\n timeout: 10000,\r\n};\r\n\r\nexport const createDeveloperAccount = (\r\n adapter: ZendureSolarflow,\r\n): Promise<ISolarFlowDevRegisterData> => {\r\n adapter.log.info(\r\n \"[createDeveloperAccount] Connecting to Zendure Developer Web API...\",\r\n );\r\n\r\n const body = {\r\n snNumber: adapter.config.snNumber,\r\n account: adapter.config.userName,\r\n };\r\n\r\n let paths = undefined;\r\n\r\n if (adapter.config.server == \"eu\") {\r\n paths = pathsEu;\r\n } else {\r\n paths = pathsGlobal;\r\n }\r\n\r\n return axios\r\n .post(paths.solarFlowDevRegisterUrl, JSON.stringify(body), config)\r\n .then(function (response: axios.AxiosResponse) {\r\n adapter.log.info(\"Successfully created Developer Account!\");\r\n\r\n if (response.data && response.data.success == true) {\r\n return response.data.data;\r\n } else {\r\n console.warn(\"No Response Data!\");\r\n return undefined;\r\n }\r\n })\r\n .catch(function (error) {\r\n if (error.response?.data?.code && error.response?.data?.msg) {\r\n // The request was made and the server responded with a status code\r\n // that falls out of the range of 2xx\r\n adapter.log.error(\r\n \"Failed to created Zendure Developer Account: \" +\r\n error.response?.data?.code +\r\n \" - \" +\r\n error.response.data.msg,\r\n );\r\n }\r\n\r\n return Promise.reject(\"Failed to created Zendure Developer Account!\");\r\n });\r\n};\r\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA0C;AAE1C,mBAAqC;AAGrC,MAAM,SAA6B;AAAA,EACjC,SAAS;AAAA,IACP,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,QAAQ;AAAA,EACV;AAAA,EACA,SAAS;AACX;AAEO,MAAM,yBAAyB,CACpC,YACuC;AACvC,UAAQ,IAAI;AAAA,IACV;AAAA,EACF;AAEA,QAAM,OAAO;AAAA,IACX,UAAU,QAAQ,OAAO;AAAA,IACzB,SAAS,QAAQ,OAAO;AAAA,EAC1B;AAEA,MAAI,QAAQ;AAEZ,MAAI,QAAQ,OAAO,UAAU,MAAM;AACjC,YAAQ;AAAA,EACV,OAAO;AACL,YAAQ;AAAA,EACV;AAEA,SAAO,aAAAA,QACJ,KAAK,MAAM,yBAAyB,KAAK,UAAU,IAAI,GAAG,MAAM,EAChE,KAAK,SAAU,UAA+B;AAC7C,YAAQ,IAAI,KAAK,yCAAyC;AAE1D,QAAI,SAAS,QAAQ,SAAS,KAAK,WAAW,MAAM;AAClD,aAAO,SAAS,KAAK;AAAA,IACvB,OAAO;AACL,cAAQ,KAAK,mBAAmB;AAChC,aAAO;AAAA,IACT;AAAA,EACF,CAAC,EACA,MAAM,SAAU,OAAO;AAhD5B;AAiDM,UAAI,iBAAM,aAAN,mBAAgB,SAAhB,mBAAsB,WAAQ,iBAAM,aAAN,mBAAgB,SAAhB,mBAAsB,MAAK;AAG3D,cAAQ,IAAI;AAAA,QACV,oDACE,iBAAM,aAAN,mBAAgB,SAAhB,mBAAsB,QACtB,QACA,MAAM,SAAS,KAAK;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,QAAQ,OAAO,8CAA8C;AAAA,EACtE,CAAC;AACL;",
|
|
6
|
+
"names": ["axios"]
|
|
7
|
+
}
|