iobroker.zendure-solarflow 1.8.5 → 1.8.7
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 +9 -1
- package/build/constants/hubStates.js +19 -0
- package/build/constants/hubStates.js.map +2 -2
- package/build/constants/paths.js +4 -2
- package/build/constants/paths.js.map +2 -2
- package/build/helpers/createControlStates.js +93 -82
- package/build/helpers/createControlStates.js.map +2 -2
- package/build/helpers/createSolarFlowStates.js +9 -0
- package/build/helpers/createSolarFlowStates.js.map +2 -2
- package/build/main.js +58 -29
- package/build/main.js.map +3 -3
- package/build/models/ISolarFlowDeviceDetails.js.map +1 -1
- package/build/models/ISolarFlowPaths.js.map +1 -1
- package/build/services/adapterService.js +1 -1
- package/build/services/adapterService.js.map +2 -2
- package/build/services/mqttService.js +17 -10
- package/build/services/mqttService.js.map +3 -3
- package/build/services/webService.js +7 -6
- package/build/services/webService.js.map +2 -2
- package/io-package.json +27 -27
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -46,10 +46,18 @@ If you find the adapter useful for you and want to support my work, feel free to
|
|
|
46
46
|
[](https://www.paypal.com/paypalme/PeterFrommert)
|
|
47
47
|
|
|
48
48
|
## Changelog
|
|
49
|
+
### 1.8.7 (2024-09-09)
|
|
50
|
+
|
|
51
|
+
- Fix missing control states for AIO
|
|
52
|
+
|
|
53
|
+
### 1.8.6 (2024-09-06)
|
|
54
|
+
|
|
55
|
+
- Change login method: Added a retry loop for connecting to Zendure Cloud, if the Cloud Service "hangs" or is not available it will retry the connection 3 times.
|
|
56
|
+
|
|
49
57
|
### 1.8.5 (2024-08-26)
|
|
50
58
|
|
|
51
59
|
- Fix missing states for new HUB Firmware when connected to ACE
|
|
52
|
-
- Fix
|
|
60
|
+
- Fix correct max value for AIO
|
|
53
61
|
|
|
54
62
|
### 1.8.4 (2024-08-16)
|
|
55
63
|
|
|
@@ -74,6 +74,25 @@ const hubStates = import_sharedStates.sharedStates.concat([
|
|
|
74
74
|
type: "number",
|
|
75
75
|
role: "value.power",
|
|
76
76
|
unit: "W"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
title: "acMode",
|
|
80
|
+
nameDe: "AC Modus",
|
|
81
|
+
nameEn: "AC mode",
|
|
82
|
+
type: "number",
|
|
83
|
+
role: "value",
|
|
84
|
+
states: {
|
|
85
|
+
0: "Nothing",
|
|
86
|
+
1: "AC input mode",
|
|
87
|
+
2: "AC output mode"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
title: "connectedWithAce",
|
|
92
|
+
nameDe: "Mit ACE (1500) verbunden",
|
|
93
|
+
nameEn: "Connected with ACE (1500)",
|
|
94
|
+
type: "boolean",
|
|
95
|
+
role: "value"
|
|
77
96
|
}
|
|
78
97
|
]);
|
|
79
98
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/constants/hubStates.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\nimport { ISolarflowState } from \"../models/ISolarflowState\";\nimport { sharedStates } from \"./sharedStates\";\n\nexport const hubStates: ISolarflowState[] = sharedStates.concat([\n {\n title: \"inverseMaxPower\",\n nameDe: \"Maximal akzeptabler Eingang des PV-Mikrowechselrichters\",\n nameEn: \"highest acceptable input power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"pass\",\n nameDe: \"Bypass an/aus\",\n nameEn: \"Bypass on/off\",\n type: \"boolean\",\n role: \"value\",\n },\n {\n title: \"autoRecover\",\n nameDe: \"Am n\u00E4chsten Tag Bypass auf Automatik\",\n nameEn: \"Automatic recovery of bypass\",\n type: \"boolean\",\n role: \"value\",\n },\n {\n title: \"passMode\",\n nameDe: \"Einstellung des Bypass Modus\",\n nameEn: \"Setting of bypass mode\",\n type: \"string\",\n role: \"value\",\n },\n {\n title: \"pvBrand\",\n nameDe: \"Wechselrichter Hersteller\",\n nameEn: \"brand of inverter\",\n type: \"string\",\n role: \"value\",\n },\n {\n title: \"outputHomePower\",\n nameDe: \"Ausgangsleistung\",\n nameEn: \"output power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"outputLimit\",\n nameDe: \"Limit der Ausgangsleistung\",\n nameEn: \"limit of output power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n]);\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAA6B;AAEtB,MAAM,YAA+B,iCAAa,OAAO;AAAA,EAC9D;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF,CAAC;",
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\nimport { ISolarflowState } from \"../models/ISolarflowState\";\nimport { sharedStates } from \"./sharedStates\";\n\nexport const hubStates: ISolarflowState[] = sharedStates.concat([\n {\n title: \"inverseMaxPower\",\n nameDe: \"Maximal akzeptabler Eingang des PV-Mikrowechselrichters\",\n nameEn: \"highest acceptable input power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"pass\",\n nameDe: \"Bypass an/aus\",\n nameEn: \"Bypass on/off\",\n type: \"boolean\",\n role: \"value\",\n },\n {\n title: \"autoRecover\",\n nameDe: \"Am n\u00E4chsten Tag Bypass auf Automatik\",\n nameEn: \"Automatic recovery of bypass\",\n type: \"boolean\",\n role: \"value\",\n },\n {\n title: \"passMode\",\n nameDe: \"Einstellung des Bypass Modus\",\n nameEn: \"Setting of bypass mode\",\n type: \"string\",\n role: \"value\",\n },\n {\n title: \"pvBrand\",\n nameDe: \"Wechselrichter Hersteller\",\n nameEn: \"brand of inverter\",\n type: \"string\",\n role: \"value\",\n },\n {\n title: \"outputHomePower\",\n nameDe: \"Ausgangsleistung\",\n nameEn: \"output power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"outputLimit\",\n nameDe: \"Limit der Ausgangsleistung\",\n nameEn: \"limit of output power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"acMode\",\n nameDe: \"AC Modus\",\n nameEn: \"AC mode\",\n type: \"number\",\n role: \"value\",\n states: {\n 0: \"Nothing\",\n 1: \"AC input mode\",\n 2: \"AC output mode\",\n },\n },\n {\n title: \"connectedWithAce\",\n nameDe: \"Mit ACE (1500) verbunden\",\n nameEn: \"Connected with ACE (1500)\",\n type: \"boolean\",\n role: \"value\",\n },\n]);\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAA6B;AAEtB,MAAM,YAA+B,iCAAa,OAAO;AAAA,EAC9D;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build/constants/paths.js
CHANGED
|
@@ -33,14 +33,16 @@ const pathsGlobal = {
|
|
|
33
33
|
solarFlowTokenUrl: `https://${hostname}/${versionGlobal}/${solarFlowTokenPath}`,
|
|
34
34
|
solarFlowQueryDeviceListUrl: `https://${hostname}/${versionGlobal}/${solarFlowDeviceListPath}`,
|
|
35
35
|
mqttUrl: "mq.zen-iot.com",
|
|
36
|
-
mqttPort: 1883
|
|
36
|
+
mqttPort: 1883,
|
|
37
|
+
mqttPassword: "b0sjUENneTZPWnhk"
|
|
37
38
|
};
|
|
38
39
|
const pathsEu = {
|
|
39
40
|
solarFlowDevRegisterUrl: `https://${hostname}/${versionEu}/${solarFlowDevRegisterPath}`,
|
|
40
41
|
solarFlowTokenUrl: `https://${hostname}/${versionEu}/${solarFlowTokenPath}`,
|
|
41
42
|
solarFlowQueryDeviceListUrl: `https://${hostname}/${versionEu}/${solarFlowDeviceListPath}`,
|
|
42
43
|
mqttUrl: "mqtteu.zen-iot.com",
|
|
43
|
-
mqttPort: 1883
|
|
44
|
+
mqttPort: 1883,
|
|
45
|
+
mqttPassword: "SDZzJGo5Q3ROYTBO"
|
|
44
46
|
};
|
|
45
47
|
// Annotate the CommonJS export names for ESM import in node:
|
|
46
48
|
0 && (module.exports = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/constants/paths.ts"],
|
|
4
|
-
"sourcesContent": ["import { ISolarFlowPaths } from \"../models/ISolarFlowPaths\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\nconst hostname = `app.zendure.tech`;\r\nconst versionGlobal = `v2`;\r\nconst versionEu = `eu`; // currently not used! Only the global server is ready at the moment\r\n\r\nconst solarFlowDevRegisterPath = `developer/api/apply`;\r\nconst solarFlowTokenPath = `auth/app/token`;\r\nconst solarFlowDeviceListPath = `productModule/device/queryDeviceListByConsumerId`;\r\n\r\nexport const pathsGlobal: ISolarFlowPaths = {\r\n solarFlowDevRegisterUrl: `https://${hostname}/${versionGlobal}/${solarFlowDevRegisterPath}`,\r\n solarFlowTokenUrl: `https://${hostname}/${versionGlobal}/${solarFlowTokenPath}`,\r\n solarFlowQueryDeviceListUrl: `https://${hostname}/${versionGlobal}/${solarFlowDeviceListPath}`,\r\n mqttUrl: \"mq.zen-iot.com\",\r\n mqttPort: 1883,\r\n};\r\n\r\nexport const pathsEu: ISolarFlowPaths = {\r\n solarFlowDevRegisterUrl: `https://${hostname}/${versionEu}/${solarFlowDevRegisterPath}`,\r\n solarFlowTokenUrl: `https://${hostname}/${versionEu}/${solarFlowTokenPath}`,\r\n solarFlowQueryDeviceListUrl: `https://${hostname}/${versionEu}/${solarFlowDeviceListPath}`,\r\n mqttUrl: \"mqtteu.zen-iot.com\",\r\n mqttPort: 1883,\r\n};\r\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,MAAM,WAAW;AACjB,MAAM,gBAAgB;AACtB,MAAM,YAAY;AAElB,MAAM,2BAA2B;AACjC,MAAM,qBAAqB;AAC3B,MAAM,0BAA0B;AAEzB,MAAM,cAA+B;AAAA,EAC1C,yBAAyB,WAAW,QAAQ,IAAI,aAAa,IAAI,wBAAwB;AAAA,EACzF,mBAAmB,WAAW,QAAQ,IAAI,aAAa,IAAI,kBAAkB;AAAA,EAC7E,6BAA6B,WAAW,QAAQ,IAAI,aAAa,IAAI,uBAAuB;AAAA,EAC5F,SAAS;AAAA,EACT,UAAU;
|
|
4
|
+
"sourcesContent": ["import { ISolarFlowPaths } from \"../models/ISolarFlowPaths\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\nconst hostname = `app.zendure.tech`;\r\nconst versionGlobal = `v2`;\r\nconst versionEu = `eu`; // currently not used! Only the global server is ready at the moment\r\n\r\nconst solarFlowDevRegisterPath = `developer/api/apply`;\r\nconst solarFlowTokenPath = `auth/app/token`;\r\nconst solarFlowDeviceListPath = `productModule/device/queryDeviceListByConsumerId`;\r\n\r\nexport const pathsGlobal: ISolarFlowPaths = {\r\n solarFlowDevRegisterUrl: `https://${hostname}/${versionGlobal}/${solarFlowDevRegisterPath}`,\r\n solarFlowTokenUrl: `https://${hostname}/${versionGlobal}/${solarFlowTokenPath}`,\r\n solarFlowQueryDeviceListUrl: `https://${hostname}/${versionGlobal}/${solarFlowDeviceListPath}`,\r\n mqttUrl: \"mq.zen-iot.com\",\r\n mqttPort: 1883,\r\n mqttPassword: \"b0sjUENneTZPWnhk\",\r\n};\r\n\r\nexport const pathsEu: ISolarFlowPaths = {\r\n solarFlowDevRegisterUrl: `https://${hostname}/${versionEu}/${solarFlowDevRegisterPath}`,\r\n solarFlowTokenUrl: `https://${hostname}/${versionEu}/${solarFlowTokenPath}`,\r\n solarFlowQueryDeviceListUrl: `https://${hostname}/${versionEu}/${solarFlowDeviceListPath}`,\r\n mqttUrl: \"mqtteu.zen-iot.com\",\r\n mqttPort: 1883,\r\n mqttPassword: \"SDZzJGo5Q3ROYTBO\",\r\n};\r\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,MAAM,WAAW;AACjB,MAAM,gBAAgB;AACtB,MAAM,YAAY;AAElB,MAAM,2BAA2B;AACjC,MAAM,qBAAqB;AAC3B,MAAM,0BAA0B;AAEzB,MAAM,cAA+B;AAAA,EAC1C,yBAAyB,WAAW,QAAQ,IAAI,aAAa,IAAI,wBAAwB;AAAA,EACzF,mBAAmB,WAAW,QAAQ,IAAI,aAAa,IAAI,kBAAkB;AAAA,EAC7E,6BAA6B,WAAW,QAAQ,IAAI,aAAa,IAAI,uBAAuB;AAAA,EAC5F,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAChB;AAEO,MAAM,UAA2B;AAAA,EACtC,yBAAyB,WAAW,QAAQ,IAAI,SAAS,IAAI,wBAAwB;AAAA,EACrF,mBAAmB,WAAW,QAAQ,IAAI,SAAS,IAAI,kBAAkB;AAAA,EACzE,6BAA6B,WAAW,QAAQ,IAAI,SAAS,IAAI,uBAAuB;AAAA,EACxF,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAChB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -97,7 +97,7 @@ const createControlStates = async (adapter, productKey, deviceKey, type) => {
|
|
|
97
97
|
native: {}
|
|
98
98
|
}
|
|
99
99
|
));
|
|
100
|
-
if (type == "solarflow" || type == "hyper" || type == "ace") {
|
|
100
|
+
if (type == "aio" || type == "solarflow" || type == "hyper" || type == "ace") {
|
|
101
101
|
await (adapter == null ? void 0 : adapter.extendObject(
|
|
102
102
|
`${productKey}.${deviceKey}.control.setOutputLimit`,
|
|
103
103
|
{
|
|
@@ -192,90 +192,101 @@ const createControlStates = async (adapter, productKey, deviceKey, type) => {
|
|
|
192
192
|
`${productKey}.${deviceKey}.control.lowVoltageBlock`
|
|
193
193
|
);
|
|
194
194
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
195
|
+
if (type == "solarflow" || type == "hyper" || type == "ace") {
|
|
196
|
+
await (adapter == null ? void 0 : adapter.extendObject(
|
|
197
|
+
`${productKey}.${deviceKey}.control.setInputLimit`,
|
|
198
|
+
{
|
|
199
|
+
type: "state",
|
|
200
|
+
common: {
|
|
201
|
+
name: {
|
|
202
|
+
de: "Einzustellende Eingangsleistung",
|
|
203
|
+
en: "Control of the input limit"
|
|
204
|
+
},
|
|
205
|
+
type: "number",
|
|
206
|
+
desc: "setInputLimit",
|
|
207
|
+
role: "value.power",
|
|
208
|
+
read: true,
|
|
209
|
+
write: true,
|
|
210
|
+
min: 0,
|
|
211
|
+
max: type == "ace" ? 900 : 1200,
|
|
212
|
+
step: 100,
|
|
213
|
+
unit: "W"
|
|
214
|
+
},
|
|
215
|
+
native: {}
|
|
214
216
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
217
|
+
));
|
|
218
|
+
adapter == null ? void 0 : adapter.subscribeStates(
|
|
219
|
+
`${productKey}.${deviceKey}.control.setInputLimit`
|
|
220
|
+
);
|
|
221
|
+
await (adapter == null ? void 0 : adapter.extendObject(
|
|
222
|
+
`${productKey}.${deviceKey}.control.acSwitch`,
|
|
223
|
+
{
|
|
224
|
+
type: "state",
|
|
225
|
+
common: {
|
|
226
|
+
name: {
|
|
227
|
+
de: "AC Schalter",
|
|
228
|
+
en: "AC switch"
|
|
229
|
+
},
|
|
230
|
+
type: "boolean",
|
|
231
|
+
desc: "acSwitch",
|
|
232
|
+
role: "switch",
|
|
233
|
+
read: true,
|
|
234
|
+
write: true
|
|
235
|
+
},
|
|
236
|
+
native: {}
|
|
237
|
+
}
|
|
238
|
+
));
|
|
239
|
+
adapter == null ? void 0 : adapter.subscribeStates(`${productKey}.${deviceKey}.control.acSwitch`);
|
|
240
|
+
await (adapter == null ? void 0 : adapter.extendObject(
|
|
241
|
+
`${productKey}.${deviceKey}.control.acMode`,
|
|
242
|
+
{
|
|
243
|
+
type: "state",
|
|
244
|
+
common: {
|
|
245
|
+
name: {
|
|
246
|
+
de: "AC Modus",
|
|
247
|
+
en: "AC mode"
|
|
248
|
+
},
|
|
249
|
+
type: "number",
|
|
250
|
+
desc: "acMode",
|
|
251
|
+
role: "switch",
|
|
252
|
+
min: 0,
|
|
253
|
+
max: 2,
|
|
254
|
+
step: 1,
|
|
255
|
+
read: true,
|
|
256
|
+
write: true,
|
|
257
|
+
states: {
|
|
258
|
+
0: "Nothing",
|
|
259
|
+
1: "AC input mode",
|
|
260
|
+
2: "AC output mode"
|
|
261
|
+
}
|
|
262
|
+
},
|
|
263
|
+
native: {}
|
|
264
|
+
}
|
|
265
|
+
));
|
|
266
|
+
adapter == null ? void 0 : adapter.subscribeStates(`${productKey}.${deviceKey}.control.acMode`);
|
|
267
|
+
}
|
|
219
268
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
269
|
+
if (type == "ace") {
|
|
270
|
+
await (adapter == null ? void 0 : adapter.extendObject(
|
|
271
|
+
`${productKey}.${deviceKey}.control.dcSwitch`,
|
|
272
|
+
{
|
|
273
|
+
type: "state",
|
|
274
|
+
common: {
|
|
275
|
+
name: {
|
|
276
|
+
de: "DC Schalter",
|
|
277
|
+
en: "DC switch"
|
|
278
|
+
},
|
|
279
|
+
type: "boolean",
|
|
280
|
+
desc: "dcSwitch",
|
|
281
|
+
role: "switch",
|
|
282
|
+
read: true,
|
|
283
|
+
write: true
|
|
228
284
|
},
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
min: 0,
|
|
235
|
-
max: type == "ace" ? 900 : 1200,
|
|
236
|
-
step: 100,
|
|
237
|
-
unit: "W"
|
|
238
|
-
},
|
|
239
|
-
native: {}
|
|
240
|
-
}
|
|
241
|
-
));
|
|
242
|
-
adapter == null ? void 0 : adapter.subscribeStates(
|
|
243
|
-
`${productKey}.${deviceKey}.control.setInputLimit`
|
|
244
|
-
);
|
|
245
|
-
await (adapter == null ? void 0 : adapter.extendObject(`${productKey}.${deviceKey}.control.acSwitch`, {
|
|
246
|
-
type: "state",
|
|
247
|
-
common: {
|
|
248
|
-
name: {
|
|
249
|
-
de: "AC Schalter",
|
|
250
|
-
en: "AC switch"
|
|
251
|
-
},
|
|
252
|
-
type: "boolean",
|
|
253
|
-
desc: "acSwitch",
|
|
254
|
-
role: "switch",
|
|
255
|
-
read: true,
|
|
256
|
-
write: true
|
|
257
|
-
},
|
|
258
|
-
native: {}
|
|
259
|
-
}));
|
|
260
|
-
adapter == null ? void 0 : adapter.subscribeStates(`${productKey}.${deviceKey}.control.acSwitch`);
|
|
261
|
-
}
|
|
262
|
-
if (type == "ace") {
|
|
263
|
-
await (adapter == null ? void 0 : adapter.extendObject(`${productKey}.${deviceKey}.control.dcSwitch`, {
|
|
264
|
-
type: "state",
|
|
265
|
-
common: {
|
|
266
|
-
name: {
|
|
267
|
-
de: "DC Schalter",
|
|
268
|
-
en: "DC switch"
|
|
269
|
-
},
|
|
270
|
-
type: "boolean",
|
|
271
|
-
desc: "dcSwitch",
|
|
272
|
-
role: "switch",
|
|
273
|
-
read: true,
|
|
274
|
-
write: true
|
|
275
|
-
},
|
|
276
|
-
native: {}
|
|
277
|
-
}));
|
|
278
|
-
adapter == null ? void 0 : adapter.subscribeStates(`${productKey}.${deviceKey}.control.dcSwitch`);
|
|
285
|
+
native: {}
|
|
286
|
+
}
|
|
287
|
+
));
|
|
288
|
+
adapter == null ? void 0 : adapter.subscribeStates(`${productKey}.${deviceKey}.control.dcSwitch`);
|
|
289
|
+
}
|
|
279
290
|
}
|
|
280
291
|
};
|
|
281
292
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/helpers/createControlStates.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n\r\nimport { ZendureSolarflow } from \"../main\";\r\n\r\nexport const createControlStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n type: string\r\n): Promise<void> => {\r\n // Create control folder\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.control`, {\r\n type: \"channel\",\r\n common: {\r\n name: {\r\n de: \"Steuerung f\u00FCr Ger\u00E4t \" + deviceKey,\r\n en: \"Control for device \" + deviceKey,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n if (type != \"smartPlug\") {\r\n // State zum Setzen des Charge Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.chargeLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Setzen des Lade-Limits\",\r\n en: \"Control of the charge limit\",\r\n },\r\n type: \"number\",\r\n desc: \"chargeLimit\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n min: 40,\r\n max: 100,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.chargeLimit`);\r\n\r\n // State zum Setzen des Discharge Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.dischargeLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Setzen des Entlade-Limits\",\r\n en: \"Control of the discharge limit\",\r\n },\r\n type: \"number\",\r\n desc: \"dischargeLimit\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n max: 90,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.dischargeLimit`\r\n );\r\n\r\n // State zum Setzen des Buzzers\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.buzzerSwitch`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Sounds am HUB aktivieren\",\r\n en: \"Enable buzzer on HUB\",\r\n },\r\n type: \"boolean\",\r\n desc: \"buzzerSwitch\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n if (type == \"solarflow\"
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,MAAM,sBAAsB,OACjC,SACA,YACA,WACA,SACkB;AAElB,SAAM,mCAAS,aAAa,GAAG,UAAU,IAAI,SAAS,YAAY;AAAA,IAChE,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,IAAI,+BAAyB;AAAA,QAC7B,IAAI,wBAAwB;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,QAAQ,CAAC;AAAA,EACX;AAEA,MAAI,QAAQ,aAAa;AAEvB,WAAM,mCAAS;AAAA,MACb,GAAG,UAAU,IAAI,SAAS;AAAA,MAC1B;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,UACN;AAAA,UACA,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,UACP,KAAK;AAAA,UACL,KAAK;AAAA,UACL,MAAM;AAAA,QACR;AAAA,QACA,QAAQ,CAAC;AAAA,MACX;AAAA;AAGF,uCAAS,gBAAgB,GAAG,UAAU,IAAI,SAAS;AAGnD,WAAM,mCAAS;AAAA,MACb,GAAG,UAAU,IAAI,SAAS;AAAA,MAC1B;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,UACN;AAAA,UACA,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,UACP,KAAK;AAAA,UACL,KAAK;AAAA,UACL,MAAM;AAAA,QACR;AAAA,QACA,QAAQ,CAAC;AAAA,MACX;AAAA;AAGF,uCAAS;AAAA,MACP,GAAG,UAAU,IAAI,SAAS;AAAA;AAI5B,WAAM,mCAAS;AAAA,MACb,GAAG,UAAU,IAAI,SAAS;AAAA,MAC1B;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,UACN;AAAA,UACA,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,QACA,QAAQ,CAAC;AAAA,MACX;AAAA;AAGF,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n\r\nimport { ZendureSolarflow } from \"../main\";\r\n\r\nexport const createControlStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n type: string\r\n): Promise<void> => {\r\n // Create control folder\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.control`, {\r\n type: \"channel\",\r\n common: {\r\n name: {\r\n de: \"Steuerung f\u00FCr Ger\u00E4t \" + deviceKey,\r\n en: \"Control for device \" + deviceKey,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n if (type != \"smartPlug\") {\r\n // State zum Setzen des Charge Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.chargeLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Setzen des Lade-Limits\",\r\n en: \"Control of the charge limit\",\r\n },\r\n type: \"number\",\r\n desc: \"chargeLimit\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n min: 40,\r\n max: 100,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.chargeLimit`);\r\n\r\n // State zum Setzen des Discharge Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.dischargeLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Setzen des Entlade-Limits\",\r\n en: \"Control of the discharge limit\",\r\n },\r\n type: \"number\",\r\n desc: \"dischargeLimit\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n max: 90,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.dischargeLimit`\r\n );\r\n\r\n // State zum Setzen des Buzzers\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.buzzerSwitch`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Sounds am HUB aktivieren\",\r\n en: \"Enable buzzer on HUB\",\r\n },\r\n type: \"boolean\",\r\n desc: \"buzzerSwitch\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n if (\r\n type == \"aio\" ||\r\n type == \"solarflow\" ||\r\n type == \"hyper\" ||\r\n type == \"ace\"\r\n ) {\r\n // State zum Setzen des Output Limit\r\n await adapter?.extendObject(\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 // Subcribe to control states\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.setOutputLimit`\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.buzzerSwitch`\r\n );\r\n\r\n // State zum Setzen des Bypass Modus\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.passMode`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Einstellung des Bypass Modus\",\r\n en: \"Setting of bypass mode\",\r\n },\r\n type: \"number\",\r\n desc: \"passMode\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n states: {\r\n 0: \"Automatic\",\r\n 1: \"Always off\",\r\n 2: \"Always on\",\r\n },\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.passMode`);\r\n\r\n // State zum Setzen des Auto-Modus vom Bypass\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.autoRecover`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Am n\u00E4chsten Tag Bypass auf Automatik\",\r\n en: \"Automatic recovery of bypass\",\r\n },\r\n type: \"boolean\",\r\n desc: \"autoRecover\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.autoRecover`\r\n );\r\n\r\n if (adapter.config.useLowVoltageBlock) {\r\n // State zum Setzen des Output Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Niedrige Batteriespannung erkannt\",\r\n en: \"Low Voltage on battery detected\",\r\n },\r\n type: \"boolean\",\r\n desc: \"lowVoltageBlock\",\r\n role: \"indicator.lowbat\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`\r\n );\r\n }\r\n\r\n if (type == \"solarflow\" || type == \"hyper\" || type == \"ace\") {\r\n // State zum Setzen des Input Limit (AC)\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.setInputLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Einzustellende Eingangsleistung\",\r\n en: \"Control of the input limit\",\r\n },\r\n type: \"number\",\r\n desc: \"setInputLimit\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n max: type == \"ace\" ? 900 : 1200,\r\n step: 100,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.setInputLimit`\r\n );\r\n\r\n // State zum Setzen des AC Schalters\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.acSwitch`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"AC Schalter\",\r\n en: \"AC switch\",\r\n },\r\n type: \"boolean\",\r\n desc: \"acSwitch\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.acSwitch`);\r\n\r\n // State zum Setzen des AC Modus\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.acMode`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"AC Modus\",\r\n en: \"AC mode\",\r\n },\r\n type: \"number\",\r\n desc: \"acMode\",\r\n role: \"switch\",\r\n min: 0,\r\n max: 2,\r\n step: 1,\r\n read: true,\r\n write: true,\r\n states: {\r\n 0: \"Nothing\",\r\n 1: \"AC input mode\",\r\n 2: \"AC output mode\",\r\n },\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.acMode`);\r\n }\r\n }\r\n\r\n // States only for ACE 1500\r\n if (type == \"ace\") {\r\n // State zum Setzen des DC Schalters\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.dcSwitch`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"DC Schalter\",\r\n en: \"DC switch\",\r\n },\r\n type: \"boolean\",\r\n desc: \"dcSwitch\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.dcSwitch`);\r\n }\r\n }\r\n};\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -125,6 +125,15 @@ const createSolarFlowStates = async (adapter, device, type) => {
|
|
|
125
125
|
device.snNumber.toString()
|
|
126
126
|
);
|
|
127
127
|
}
|
|
128
|
+
if (type == "solarflow" && device._connectedWithAce != null && device._connectedWithAce != void 0) {
|
|
129
|
+
await (0, import_adapterService.updateSolarFlowState)(
|
|
130
|
+
adapter,
|
|
131
|
+
device.productKey,
|
|
132
|
+
device.deviceKey,
|
|
133
|
+
"connectedWithAce",
|
|
134
|
+
device._connectedWithAce
|
|
135
|
+
);
|
|
136
|
+
}
|
|
128
137
|
await (0, import_adapterService.updateSolarFlowState)(
|
|
129
138
|
adapter,
|
|
130
139
|
productKey,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/helpers/createSolarFlowStates.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n\r\nimport { aceStates } from \"../constants/aceStates\";\r\nimport { aioStates } from \"../constants/aioStates\";\r\nimport { hubStates } from \"../constants/hubStates\";\r\nimport { hyperStates } from \"../constants/hyperStates\";\r\nimport { smartPlugStates } from \"../constants/smartPlugStates\";\r\nimport { ZendureSolarflow } from \"../main\";\r\nimport { ISolarFlowDeviceDetails } from \"../models/ISolarFlowDeviceDetails\";\r\nimport { ISolarflowState } from \"../models/ISolarflowState\";\r\nimport { updateSolarFlowState } from \"../services/adapterService\";\r\nimport { createCalculationStates } from \"./createCalculationStates\";\r\nimport { createControlStates } from \"./createControlStates\";\r\n//import { deleteCalculationStates } from \"./deleteCalculationStates\";\r\n\r\nexport const getStateDefinition = (type: string): ISolarflowState[] => {\r\n switch (type) {\r\n case \"aio\":\r\n return aioStates;\r\n case \"hyper\":\r\n return hyperStates;\r\n case \"solarflow\":\r\n return hubStates;\r\n case \"ace\":\r\n return aceStates;\r\n case \"smartPlug\":\r\n return smartPlugStates;\r\n default:\r\n return [];\r\n }\r\n};\r\n\r\nexport const createSolarFlowStates = async (\r\n adapter: ZendureSolarflow,\r\n device: ISolarFlowDeviceDetails,\r\n type: string\r\n): Promise<void> => {\r\n let productKey = device.productKey.replace(adapter.FORBIDDEN_CHARS, \"\");\r\n let deviceKey = device.deviceKey.replace(adapter.FORBIDDEN_CHARS, \"\");\r\n\r\n if (device.productKey == \"s3Xk4x\" && adapter && adapter.userId && device.id) {\r\n productKey = adapter.userId;\r\n deviceKey = device.id.toString();\r\n }\r\n\r\n adapter.log.debug(\r\n `[createSolarFlowStates] Creating or updating SolarFlow states for ${device.productName} (${productKey}/${deviceKey}) and name '${device.name}'.`\r\n );\r\n\r\n // Create device (e.g. the product type -> SolarFlow)\r\n await adapter?.extendObject(productKey, {\r\n type: \"device\",\r\n common: {\r\n name: {\r\n de: `${device.productName} (${productKey})`,\r\n en: `${device.productName} (${productKey})`,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n // Create channel (e.g. the device specific key)\r\n await adapter?.extendObject(productKey + \".\" + deviceKey, {\r\n type: \"channel\",\r\n common: {\r\n name: {\r\n de: `${device.name} (${deviceKey})`,\r\n en: `${device.name} (${deviceKey})`,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n // Create pack data folder\r\n if (type != \"smartPlug\") {\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.packData`, {\r\n type: \"channel\",\r\n common: {\r\n name: {\r\n de: \"Batterie Packs\",\r\n en: \"Battery packs\",\r\n },\r\n },\r\n native: {},\r\n });\r\n }\r\n\r\n const states = getStateDefinition(type);\r\n\r\n states.forEach(async (state: ISolarflowState) => {\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.${state.title}`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: state.nameDe,\r\n en: state.nameEn,\r\n },\r\n type: state.type,\r\n desc: state.title,\r\n role: state.role,\r\n read: true,\r\n write: false,\r\n unit: state.unit,\r\n },\r\n native: {},\r\n });\r\n });\r\n\r\n // Set SOC from device\r\n if (device.electricity && type != \"smartPlug\") {\r\n await updateSolarFlowState(\r\n adapter,\r\n device.productKey,\r\n device.deviceKey,\r\n \"electricLevel\",\r\n device.electricity\r\n );\r\n }\r\n\r\n // Set sn number from device\r\n if (device.snNumber) {\r\n await updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"snNumber\",\r\n device.snNumber.toString()\r\n );\r\n }\r\n\r\n // Set product name from device\r\n await updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"productName\",\r\n device.productName\r\n );\r\n\r\n // Set wifi state from device\r\n await updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"wifiState\",\r\n device.wifiStatus ? \"Connected\" : \"Disconnected\"\r\n );\r\n\r\n if (type != \"smartPlug\") {\r\n // Create control states only when using App MQTT servers - and not the fallback one!\r\n if (!adapter.config.useFallbackService) {\r\n await createControlStates(adapter, productKey, deviceKey, type);\r\n }\r\n\r\n if (adapter.config.useCalculation) {\r\n // Create calculations folder\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.calculations`, {\r\n type: \"channel\",\r\n common: {\r\n name: {\r\n de: \"Berechnungen f\u00FCr Ger\u00E4t \" + deviceKey,\r\n en: \"Calculations for Device \" + deviceKey,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n await createCalculationStates(adapter, productKey, deviceKey, type);\r\n } else {\r\n //await deleteCalculationStates(adapter, productKey, deviceKey);\r\n }\r\n }\r\n};\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n\r\nimport { aceStates } from \"../constants/aceStates\";\r\nimport { aioStates } from \"../constants/aioStates\";\r\nimport { hubStates } from \"../constants/hubStates\";\r\nimport { hyperStates } from \"../constants/hyperStates\";\r\nimport { smartPlugStates } from \"../constants/smartPlugStates\";\r\nimport { ZendureSolarflow } from \"../main\";\r\nimport { ISolarFlowDeviceDetails } from \"../models/ISolarFlowDeviceDetails\";\r\nimport { ISolarflowState } from \"../models/ISolarflowState\";\r\nimport { updateSolarFlowState } from \"../services/adapterService\";\r\nimport { createCalculationStates } from \"./createCalculationStates\";\r\nimport { createControlStates } from \"./createControlStates\";\r\n//import { deleteCalculationStates } from \"./deleteCalculationStates\";\r\n\r\nexport const getStateDefinition = (type: string): ISolarflowState[] => {\r\n switch (type) {\r\n case \"aio\":\r\n return aioStates;\r\n case \"hyper\":\r\n return hyperStates;\r\n case \"solarflow\":\r\n return hubStates;\r\n case \"ace\":\r\n return aceStates;\r\n case \"smartPlug\":\r\n return smartPlugStates;\r\n default:\r\n return [];\r\n }\r\n};\r\n\r\nexport const createSolarFlowStates = async (\r\n adapter: ZendureSolarflow,\r\n device: ISolarFlowDeviceDetails,\r\n type: string\r\n): Promise<void> => {\r\n let productKey = device.productKey.replace(adapter.FORBIDDEN_CHARS, \"\");\r\n let deviceKey = device.deviceKey.replace(adapter.FORBIDDEN_CHARS, \"\");\r\n\r\n if (device.productKey == \"s3Xk4x\" && adapter && adapter.userId && device.id) {\r\n productKey = adapter.userId;\r\n deviceKey = device.id.toString();\r\n }\r\n\r\n adapter.log.debug(\r\n `[createSolarFlowStates] Creating or updating SolarFlow states for ${device.productName} (${productKey}/${deviceKey}) and name '${device.name}'.`\r\n );\r\n\r\n // Create device (e.g. the product type -> SolarFlow)\r\n await adapter?.extendObject(productKey, {\r\n type: \"device\",\r\n common: {\r\n name: {\r\n de: `${device.productName} (${productKey})`,\r\n en: `${device.productName} (${productKey})`,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n // Create channel (e.g. the device specific key)\r\n await adapter?.extendObject(productKey + \".\" + deviceKey, {\r\n type: \"channel\",\r\n common: {\r\n name: {\r\n de: `${device.name} (${deviceKey})`,\r\n en: `${device.name} (${deviceKey})`,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n // Create pack data folder\r\n if (type != \"smartPlug\") {\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.packData`, {\r\n type: \"channel\",\r\n common: {\r\n name: {\r\n de: \"Batterie Packs\",\r\n en: \"Battery packs\",\r\n },\r\n },\r\n native: {},\r\n });\r\n }\r\n\r\n const states = getStateDefinition(type);\r\n\r\n states.forEach(async (state: ISolarflowState) => {\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.${state.title}`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: state.nameDe,\r\n en: state.nameEn,\r\n },\r\n type: state.type,\r\n desc: state.title,\r\n role: state.role,\r\n read: true,\r\n write: false,\r\n unit: state.unit,\r\n },\r\n native: {},\r\n });\r\n });\r\n\r\n // Set SOC from device\r\n if (device.electricity && type != \"smartPlug\") {\r\n await updateSolarFlowState(\r\n adapter,\r\n device.productKey,\r\n device.deviceKey,\r\n \"electricLevel\",\r\n device.electricity\r\n );\r\n }\r\n\r\n // Set sn number from device\r\n if (device.snNumber) {\r\n await updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"snNumber\",\r\n device.snNumber.toString()\r\n );\r\n }\r\n\r\n // Set the ACE connection info if is solarflow hub device\r\n if (\r\n type == \"solarflow\" &&\r\n device._connectedWithAce != null &&\r\n device._connectedWithAce != undefined\r\n ) {\r\n await updateSolarFlowState(\r\n adapter,\r\n device.productKey,\r\n device.deviceKey,\r\n \"connectedWithAce\",\r\n device._connectedWithAce\r\n );\r\n }\r\n\r\n // Set product name from device\r\n await updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"productName\",\r\n device.productName\r\n );\r\n\r\n // Set wifi state from device\r\n await updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"wifiState\",\r\n device.wifiStatus ? \"Connected\" : \"Disconnected\"\r\n );\r\n\r\n if (type != \"smartPlug\") {\r\n // Create control states only when using App MQTT servers - and not the fallback one!\r\n if (!adapter.config.useFallbackService) {\r\n await createControlStates(adapter, productKey, deviceKey, type);\r\n }\r\n\r\n if (adapter.config.useCalculation) {\r\n // Create calculations folder\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.calculations`, {\r\n type: \"channel\",\r\n common: {\r\n name: {\r\n de: \"Berechnungen f\u00FCr Ger\u00E4t \" + deviceKey,\r\n en: \"Calculations for Device \" + deviceKey,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n await createCalculationStates(adapter, productKey, deviceKey, type);\r\n } else {\r\n //await deleteCalculationStates(adapter, productKey, deviceKey);\r\n }\r\n }\r\n};\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build/main.js
CHANGED
|
@@ -67,7 +67,6 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
67
67
|
* Is called when databases are connected and adapter received configuration.
|
|
68
68
|
*/
|
|
69
69
|
async onReady() {
|
|
70
|
-
var _a;
|
|
71
70
|
await this.extendObject("info", {
|
|
72
71
|
type: "channel",
|
|
73
72
|
common: {
|
|
@@ -110,8 +109,36 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
110
109
|
}
|
|
111
110
|
});
|
|
112
111
|
} else if (!this.config.useFallbackService && this.config.userName && this.config.password) {
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
let _accessToken = void 0;
|
|
113
|
+
let retryCounter = 0;
|
|
114
|
+
while (retryCounter < 4) {
|
|
115
|
+
if (retryCounter > 0) {
|
|
116
|
+
this.log.warn(
|
|
117
|
+
`[onReady] Retrying to connect to Zendure Cloud (Retry #${retryCounter}).`
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
_accessToken = await (0, import_webService.login)(this);
|
|
122
|
+
} catch (ex) {
|
|
123
|
+
if (ex.message.includes("Request failed with status code 400")) {
|
|
124
|
+
this.log.warn(
|
|
125
|
+
`[onReady] Error 400, maybe your credentials are invalid!`
|
|
126
|
+
);
|
|
127
|
+
break;
|
|
128
|
+
} else {
|
|
129
|
+
this.log.error(
|
|
130
|
+
`[onReady] Error connecting to Zendure Cloud. Error: ${ex.message}`
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (_accessToken != void 0) {
|
|
135
|
+
this.accessToken = _accessToken;
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
await new Promise((r) => setTimeout(r, 4e3));
|
|
139
|
+
retryCounter++;
|
|
140
|
+
}
|
|
141
|
+
if (_accessToken != void 0) {
|
|
115
142
|
this.setState("info.connection", true, true);
|
|
116
143
|
this.lastLogin = /* @__PURE__ */ new Date();
|
|
117
144
|
(0, import_webService.getDeviceList)(this).then(async (result) => {
|
|
@@ -125,7 +152,7 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
125
152
|
);
|
|
126
153
|
await this.deviceList.forEach(
|
|
127
154
|
async (device) => {
|
|
128
|
-
var
|
|
155
|
+
var _a;
|
|
129
156
|
let type = "solarflow";
|
|
130
157
|
if (device.productName.toLocaleLowerCase().includes("hyper")) {
|
|
131
158
|
type = "hyper";
|
|
@@ -136,6 +163,21 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
136
163
|
} else if (device.productName.toLocaleLowerCase().includes("smart plug")) {
|
|
137
164
|
type = "smartPlug";
|
|
138
165
|
}
|
|
166
|
+
if (device.packList && device.packList.length > 0) {
|
|
167
|
+
device.packList.forEach(async (subDevice) => {
|
|
168
|
+
if (subDevice.productName.toLocaleLowerCase() == "ace 1500") {
|
|
169
|
+
device._connectedWithAce = true;
|
|
170
|
+
await (0, import_createSolarFlowStates.createSolarFlowStates)(this, subDevice, "ace");
|
|
171
|
+
await (0, import_adapterService.updateSolarFlowState)(
|
|
172
|
+
this,
|
|
173
|
+
subDevice.productKey,
|
|
174
|
+
subDevice.deviceKey,
|
|
175
|
+
"registeredServer",
|
|
176
|
+
this.config.server
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
139
181
|
await (0, import_createSolarFlowStates.createSolarFlowStates)(this, device, type);
|
|
140
182
|
if (!device.productName.toLowerCase().includes("smart plug")) {
|
|
141
183
|
await (0, import_adapterService.updateSolarFlowState)(
|
|
@@ -149,40 +191,21 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
149
191
|
await (0, import_adapterService.updateSolarFlowState)(
|
|
150
192
|
this,
|
|
151
193
|
this.userId,
|
|
152
|
-
(
|
|
194
|
+
(_a = device.id) == null ? void 0 : _a.toString(),
|
|
153
195
|
"registeredServer",
|
|
154
196
|
this.config.server
|
|
155
197
|
);
|
|
156
198
|
}
|
|
157
|
-
if (device.packList && device.packList.length > 0) {
|
|
158
|
-
device.packList.forEach(async (subDevice) => {
|
|
159
|
-
if (subDevice.productName.toLocaleLowerCase() == "ace 1500") {
|
|
160
|
-
await (0, import_createSolarFlowStates.createSolarFlowStates)(this, subDevice, "ace");
|
|
161
|
-
await (0, import_adapterService.updateSolarFlowState)(
|
|
162
|
-
this,
|
|
163
|
-
subDevice.productKey,
|
|
164
|
-
subDevice.deviceKey,
|
|
165
|
-
"registeredServer",
|
|
166
|
-
this.config.server
|
|
167
|
-
);
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
199
|
}
|
|
172
200
|
);
|
|
173
201
|
(0, import_mqttService.connectMqttClient)(this);
|
|
174
202
|
}
|
|
175
203
|
}).catch(() => {
|
|
176
|
-
var
|
|
204
|
+
var _a;
|
|
177
205
|
this.setState("info.connection", false, true);
|
|
178
|
-
(
|
|
206
|
+
(_a = this.log) == null ? void 0 : _a.error("[onReady] Retrieving device failed!");
|
|
179
207
|
});
|
|
180
|
-
}
|
|
181
|
-
this.setState("info.connection", false, true);
|
|
182
|
-
this.log.error(
|
|
183
|
-
"[onReady] Logon error at Zendure cloud service! Error: " + error.toString()
|
|
184
|
-
);
|
|
185
|
-
});
|
|
208
|
+
}
|
|
186
209
|
} else {
|
|
187
210
|
this.setState("info.connection", false, true);
|
|
188
211
|
this.log.error("[onReady] No Login Information provided!");
|
|
@@ -191,13 +214,19 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
191
214
|
/**
|
|
192
215
|
* Is called when adapter shuts down - callback has to be called under any circumstances!
|
|
193
216
|
*/
|
|
194
|
-
onUnload(callback) {
|
|
217
|
+
async onUnload(callback) {
|
|
195
218
|
var _a, _b;
|
|
196
219
|
try {
|
|
197
220
|
if (this.refreshAccessTokenInterval) {
|
|
198
221
|
this.clearInterval(this.refreshAccessTokenInterval);
|
|
199
222
|
}
|
|
200
|
-
|
|
223
|
+
try {
|
|
224
|
+
await ((_a = this.mqttClient) == null ? void 0 : _a.endAsync());
|
|
225
|
+
this.log.info("[onUnload] MQTT client stopped!");
|
|
226
|
+
this.mqttClient = void 0;
|
|
227
|
+
} catch (ex) {
|
|
228
|
+
this.log.error("[onUnload] Error stopping MQTT client: !" + ex.message);
|
|
229
|
+
}
|
|
201
230
|
this.setState("info.connection", false, true);
|
|
202
231
|
if (this.resetValuesJob) {
|
|
203
232
|
this.resetValuesJob.cancel();
|