iobroker.zendure-solarflow 1.1.14 → 1.1.16
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 +10 -0
- package/admin/build/index.js +12 -12
- package/admin/build/index.js.map +2 -2
- package/build/helpers/createCalculationStates.js +20 -20
- package/build/helpers/createCalculationStates.js.map +2 -2
- package/build/helpers/createControlStates.js +30 -13
- package/build/helpers/createControlStates.js.map +2 -2
- package/build/helpers/createSolarFlowStates.js +123 -162
- package/build/helpers/createSolarFlowStates.js.map +2 -2
- package/build/helpers/deleteCalculationStates.js +1 -1
- package/build/helpers/deleteCalculationStates.js.map +2 -2
- package/build/main.js +20 -25
- package/build/main.js.map +2 -2
- package/build/services/adapterService.js +46 -1
- package/build/services/adapterService.js.map +2 -2
- package/build/services/calculationService.js +48 -32
- package/build/services/calculationService.js.map +2 -2
- package/build/services/jobSchedule.js +25 -9
- package/build/services/jobSchedule.js.map +2 -2
- package/build/services/mqttService.js +48 -27
- package/build/services/mqttService.js.map +2 -2
- package/build/services/webService.js +6 -4
- package/build/services/webService.js.map +2 -2
- package/io-package.json +27 -27
- package/package.json +2 -1
|
@@ -40,62 +40,53 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
|
|
|
40
40
|
},
|
|
41
41
|
native: {}
|
|
42
42
|
}));
|
|
43
|
-
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
44
|
-
|
|
45
|
-
{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
));
|
|
56
|
-
await (adapter == null ? void 0 : adapter.extendObjectAsync(productKey + "." + deviceKey + ".packData", {
|
|
43
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(`${productKey}.${deviceKey}.calculations`, {
|
|
44
|
+
type: "channel",
|
|
45
|
+
common: {
|
|
46
|
+
name: {
|
|
47
|
+
de: "Berechnungen f\xFCr Ger\xE4t " + deviceKey,
|
|
48
|
+
en: "Calculations for Device " + deviceKey
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
native: {}
|
|
52
|
+
}));
|
|
53
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(`${productKey}.${deviceKey}.packData`, {
|
|
57
54
|
type: "channel",
|
|
58
55
|
common: {
|
|
59
56
|
name: {
|
|
60
|
-
de: "
|
|
57
|
+
de: "Batterie Packs",
|
|
61
58
|
en: "Battery packs"
|
|
62
59
|
}
|
|
63
60
|
},
|
|
64
61
|
native: {}
|
|
65
62
|
}));
|
|
63
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(`${productKey}.${deviceKey}.lastUpdate`, {
|
|
64
|
+
type: "state",
|
|
65
|
+
common: {
|
|
66
|
+
name: { de: "Letztes Update", en: "Last Update" },
|
|
67
|
+
type: "number",
|
|
68
|
+
desc: "lastUpdate",
|
|
69
|
+
role: "value.time",
|
|
70
|
+
read: true,
|
|
71
|
+
write: false
|
|
72
|
+
},
|
|
73
|
+
native: {}
|
|
74
|
+
}));
|
|
75
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(`${productKey}.${deviceKey}.electricLevel`, {
|
|
76
|
+
type: "state",
|
|
77
|
+
common: {
|
|
78
|
+
name: { de: "SOC Gesamtsystem", en: "SOC of the system" },
|
|
79
|
+
type: "number",
|
|
80
|
+
desc: "electricLevel",
|
|
81
|
+
role: "value.battery",
|
|
82
|
+
read: true,
|
|
83
|
+
write: false,
|
|
84
|
+
unit: "%"
|
|
85
|
+
},
|
|
86
|
+
native: {}
|
|
87
|
+
}));
|
|
66
88
|
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
67
|
-
productKey
|
|
68
|
-
{
|
|
69
|
-
type: "state",
|
|
70
|
-
common: {
|
|
71
|
-
name: { de: "Letztes Update", en: "Last Update" },
|
|
72
|
-
type: "number",
|
|
73
|
-
desc: "lastUpdate",
|
|
74
|
-
role: "value.time",
|
|
75
|
-
read: true,
|
|
76
|
-
write: false
|
|
77
|
-
},
|
|
78
|
-
native: {}
|
|
79
|
-
}
|
|
80
|
-
));
|
|
81
|
-
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
82
|
-
productKey + "." + deviceKey + ".electricLevel",
|
|
83
|
-
{
|
|
84
|
-
type: "state",
|
|
85
|
-
common: {
|
|
86
|
-
name: { de: "SOC Gesamtsystem", en: "SOC of the system" },
|
|
87
|
-
type: "number",
|
|
88
|
-
desc: "electricLevel",
|
|
89
|
-
role: "value.battery",
|
|
90
|
-
read: true,
|
|
91
|
-
write: false,
|
|
92
|
-
unit: "%"
|
|
93
|
-
},
|
|
94
|
-
native: {}
|
|
95
|
-
}
|
|
96
|
-
));
|
|
97
|
-
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
98
|
-
productKey + "." + deviceKey + ".outputHomePower",
|
|
89
|
+
`${productKey}.${deviceKey}.outputHomePower`,
|
|
99
90
|
{
|
|
100
91
|
type: "state",
|
|
101
92
|
common: {
|
|
@@ -110,28 +101,25 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
|
|
|
110
101
|
native: {}
|
|
111
102
|
}
|
|
112
103
|
));
|
|
104
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(`${productKey}.${deviceKey}.outputLimit`, {
|
|
105
|
+
type: "state",
|
|
106
|
+
common: {
|
|
107
|
+
name: { de: "Limit der Ausgangsleistung", en: "limit of output power" },
|
|
108
|
+
type: "number",
|
|
109
|
+
desc: "outputLimit",
|
|
110
|
+
role: "value.power",
|
|
111
|
+
read: true,
|
|
112
|
+
write: false,
|
|
113
|
+
unit: "W"
|
|
114
|
+
},
|
|
115
|
+
native: {}
|
|
116
|
+
}));
|
|
113
117
|
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
114
|
-
productKey
|
|
115
|
-
{
|
|
116
|
-
type: "state",
|
|
117
|
-
common: {
|
|
118
|
-
name: { de: "Limit der Ausgangsleistung", en: "limit of output power" },
|
|
119
|
-
type: "number",
|
|
120
|
-
desc: "outputLimit",
|
|
121
|
-
role: "value.power",
|
|
122
|
-
read: true,
|
|
123
|
-
write: false,
|
|
124
|
-
unit: "W"
|
|
125
|
-
},
|
|
126
|
-
native: {}
|
|
127
|
-
}
|
|
128
|
-
));
|
|
129
|
-
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
130
|
-
productKey + "." + deviceKey + ".outputPackPower",
|
|
118
|
+
`${productKey}.${deviceKey}.outputPackPower`,
|
|
131
119
|
{
|
|
132
120
|
type: "state",
|
|
133
121
|
common: {
|
|
134
|
-
name: { de: "Ladeleistung
|
|
122
|
+
name: { de: "Ladeleistung zur Batterie", en: "charge power" },
|
|
135
123
|
type: "number",
|
|
136
124
|
desc: "outputPackPower",
|
|
137
125
|
role: "value.power",
|
|
@@ -143,11 +131,11 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
|
|
|
143
131
|
}
|
|
144
132
|
));
|
|
145
133
|
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
146
|
-
productKey
|
|
134
|
+
`${productKey}.${deviceKey}.packInputPower`,
|
|
147
135
|
{
|
|
148
136
|
type: "state",
|
|
149
137
|
common: {
|
|
150
|
-
name: { de: "Entladeleistung
|
|
138
|
+
name: { de: "Entladeleistung aus Batterie", en: "discharge power" },
|
|
151
139
|
type: "number",
|
|
152
140
|
desc: "packInputPower",
|
|
153
141
|
role: "value.power",
|
|
@@ -159,7 +147,7 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
|
|
|
159
147
|
}
|
|
160
148
|
));
|
|
161
149
|
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
162
|
-
productKey
|
|
150
|
+
`${productKey}.${deviceKey}.solarInputPower`,
|
|
163
151
|
{
|
|
164
152
|
type: "state",
|
|
165
153
|
common: {
|
|
@@ -174,40 +162,34 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
|
|
|
174
162
|
native: {}
|
|
175
163
|
}
|
|
176
164
|
));
|
|
165
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(`${productKey}.${deviceKey}.pvPower1`, {
|
|
166
|
+
type: "state",
|
|
167
|
+
common: {
|
|
168
|
+
name: { de: "Leistung PV 1", en: "solar power channel 1" },
|
|
169
|
+
type: "number",
|
|
170
|
+
desc: "pvPower1",
|
|
171
|
+
role: "value.power",
|
|
172
|
+
read: true,
|
|
173
|
+
write: false,
|
|
174
|
+
unit: "W"
|
|
175
|
+
},
|
|
176
|
+
native: {}
|
|
177
|
+
}));
|
|
178
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(`${productKey}.${deviceKey}.pvPower2`, {
|
|
179
|
+
type: "state",
|
|
180
|
+
common: {
|
|
181
|
+
name: { de: "Leistung PV 2", en: "solar power channel 2" },
|
|
182
|
+
type: "number",
|
|
183
|
+
desc: "pvPower2",
|
|
184
|
+
role: "value.power",
|
|
185
|
+
read: true,
|
|
186
|
+
write: false,
|
|
187
|
+
unit: "W"
|
|
188
|
+
},
|
|
189
|
+
native: {}
|
|
190
|
+
}));
|
|
177
191
|
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
178
|
-
productKey
|
|
179
|
-
{
|
|
180
|
-
type: "state",
|
|
181
|
-
common: {
|
|
182
|
-
name: { de: "Leistung PV 1", en: "solar power channel 1" },
|
|
183
|
-
type: "number",
|
|
184
|
-
desc: "pvPower1",
|
|
185
|
-
role: "value.power",
|
|
186
|
-
read: true,
|
|
187
|
-
write: false,
|
|
188
|
-
unit: "W"
|
|
189
|
-
},
|
|
190
|
-
native: {}
|
|
191
|
-
}
|
|
192
|
-
));
|
|
193
|
-
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
194
|
-
productKey + "." + deviceKey + ".pvPower2",
|
|
195
|
-
{
|
|
196
|
-
type: "state",
|
|
197
|
-
common: {
|
|
198
|
-
name: { de: "Leistung PV 2", en: "solar power channel 2" },
|
|
199
|
-
type: "number",
|
|
200
|
-
desc: "pvPower2",
|
|
201
|
-
role: "value.power",
|
|
202
|
-
read: true,
|
|
203
|
-
write: false,
|
|
204
|
-
unit: "W"
|
|
205
|
-
},
|
|
206
|
-
native: {}
|
|
207
|
-
}
|
|
208
|
-
));
|
|
209
|
-
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
210
|
-
productKey + "." + deviceKey + ".remainInputTime",
|
|
192
|
+
`${productKey}.${deviceKey}.remainInputTime`,
|
|
211
193
|
{
|
|
212
194
|
type: "state",
|
|
213
195
|
common: {
|
|
@@ -221,68 +203,47 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
|
|
|
221
203
|
native: {}
|
|
222
204
|
}
|
|
223
205
|
));
|
|
224
|
-
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
225
|
-
|
|
226
|
-
{
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
de: "Erwartete Entladedauer (Minuten)",
|
|
231
|
-
en: "remaining discharge time (minutes)"
|
|
232
|
-
},
|
|
233
|
-
type: "number",
|
|
234
|
-
desc: "remainOutTime",
|
|
235
|
-
role: "value.interval",
|
|
236
|
-
read: true,
|
|
237
|
-
write: false
|
|
238
|
-
},
|
|
239
|
-
native: {}
|
|
240
|
-
}
|
|
241
|
-
));
|
|
242
|
-
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
243
|
-
productKey + "." + deviceKey + ".socSet",
|
|
244
|
-
{
|
|
245
|
-
type: "state",
|
|
246
|
-
common: {
|
|
247
|
-
name: { de: "Max. SOC", en: "max. SOC" },
|
|
248
|
-
type: "number",
|
|
249
|
-
desc: "socSet",
|
|
250
|
-
role: "value.battery",
|
|
251
|
-
read: true,
|
|
252
|
-
write: false,
|
|
253
|
-
unit: "%"
|
|
254
|
-
},
|
|
255
|
-
native: {}
|
|
256
|
-
}
|
|
257
|
-
));
|
|
258
|
-
await (adapter == null ? void 0 : adapter.extendObjectAsync(
|
|
259
|
-
productKey + "." + deviceKey + ".minSoc",
|
|
260
|
-
{
|
|
261
|
-
type: "state",
|
|
262
|
-
common: {
|
|
263
|
-
name: { de: "Min. SOC", en: "min. SOC" },
|
|
264
|
-
type: "number",
|
|
265
|
-
desc: "minSoc",
|
|
266
|
-
role: "value.battery",
|
|
267
|
-
read: true,
|
|
268
|
-
write: false,
|
|
269
|
-
unit: "%"
|
|
206
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(`${productKey}.${deviceKey}.remainOutTime`, {
|
|
207
|
+
type: "state",
|
|
208
|
+
common: {
|
|
209
|
+
name: {
|
|
210
|
+
de: "Erwartete Entladedauer (Minuten)",
|
|
211
|
+
en: "remaining discharge time (minutes)"
|
|
270
212
|
},
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
213
|
+
type: "number",
|
|
214
|
+
desc: "remainOutTime",
|
|
215
|
+
role: "value.interval",
|
|
216
|
+
read: true,
|
|
217
|
+
write: false
|
|
218
|
+
},
|
|
219
|
+
native: {}
|
|
220
|
+
}));
|
|
221
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(`${productKey}.${deviceKey}.socSet`, {
|
|
222
|
+
type: "state",
|
|
223
|
+
common: {
|
|
224
|
+
name: { de: "Max. SOC", en: "max. SOC" },
|
|
225
|
+
type: "number",
|
|
226
|
+
desc: "socSet",
|
|
227
|
+
role: "value.battery",
|
|
228
|
+
read: true,
|
|
229
|
+
write: false,
|
|
230
|
+
unit: "%"
|
|
231
|
+
},
|
|
232
|
+
native: {}
|
|
233
|
+
}));
|
|
234
|
+
await (adapter == null ? void 0 : adapter.extendObjectAsync(`${productKey}.${deviceKey}.minSoc`, {
|
|
235
|
+
type: "state",
|
|
236
|
+
common: {
|
|
237
|
+
name: { de: "Min. SOC", en: "min. SOC" },
|
|
238
|
+
type: "number",
|
|
239
|
+
desc: "minSoc",
|
|
240
|
+
role: "value.battery",
|
|
241
|
+
read: true,
|
|
242
|
+
write: false,
|
|
243
|
+
unit: "%"
|
|
244
|
+
},
|
|
245
|
+
native: {}
|
|
246
|
+
}));
|
|
286
247
|
await (0, import_createControlStates.createControlStates)(adapter, productKey, deviceKey);
|
|
287
248
|
if (adapter.config.useCalculation) {
|
|
288
249
|
await (0, import_createCalculationStates.createCalculationStates)(adapter, productKey, deviceKey);
|
|
@@ -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 { ZendureSolarflow } from \"../main\";\r\nimport { createCalculationStates } from \"./createCalculationStates\";\r\nimport { createControlStates } from \"./createControlStates\";\r\n//import { deleteCalculationStates } from \"./deleteCalculationStates\";\r\n\r\nexport const createSolarFlowStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n): Promise<void> => {\r\n productKey = productKey.replace(adapter.FORBIDDEN_CHARS, \"\");\r\n deviceKey = deviceKey.replace(adapter.FORBIDDEN_CHARS, \"\");\r\n\r\n // Create device (e.g. the product type -> SolarFlow)\r\n await adapter?.extendObjectAsync(productKey, {\r\n type: \"device\",\r\n common: {\r\n name: { de: \"Produkt \" + productKey, en: \"Product \" + productKey },\r\n },\r\n native: {},\r\n });\r\n\r\n // Create channel (e.g. the device specific key)\r\n await adapter?.extendObjectAsync(productKey + \".\" + deviceKey, {\r\n type: \"channel\",\r\n common: {\r\n name: { de: \"Device Key \" + deviceKey, en: \"Device Key \" + deviceKey },\r\n },\r\n native: {},\r\n });\r\n\r\n // Create calculations folder\r\n await adapter?.extendObjectAsync(
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qCAAwC;AACxC,iCAAoC;AAG7B,MAAM,wBAAwB,OACnC,SACA,YACA,cACkB;AAClB,eAAa,WAAW,QAAQ,QAAQ,iBAAiB,EAAE;AAC3D,cAAY,UAAU,QAAQ,QAAQ,iBAAiB,EAAE;AAGzD,SAAM,mCAAS,kBAAkB,YAAY;AAAA,IAC3C,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM,EAAE,IAAI,aAAa,YAAY,IAAI,aAAa,WAAW;AAAA,IACnE;AAAA,IACA,QAAQ,CAAC;AAAA,EACX;AAGA,SAAM,mCAAS,kBAAkB,aAAa,MAAM,WAAW;AAAA,IAC7D,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM,EAAE,IAAI,gBAAgB,WAAW,IAAI,gBAAgB,UAAU;AAAA,IACvE;AAAA,IACA,QAAQ,CAAC;AAAA,EACX;AAGA,SAAM,mCAAS
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n\r\nimport { ZendureSolarflow } from \"../main\";\r\nimport { createCalculationStates } from \"./createCalculationStates\";\r\nimport { createControlStates } from \"./createControlStates\";\r\n//import { deleteCalculationStates } from \"./deleteCalculationStates\";\r\n\r\nexport const createSolarFlowStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n): Promise<void> => {\r\n productKey = productKey.replace(adapter.FORBIDDEN_CHARS, \"\");\r\n deviceKey = deviceKey.replace(adapter.FORBIDDEN_CHARS, \"\");\r\n\r\n // Create device (e.g. the product type -> SolarFlow)\r\n await adapter?.extendObjectAsync(productKey, {\r\n type: \"device\",\r\n common: {\r\n name: { de: \"Produkt \" + productKey, en: \"Product \" + productKey },\r\n },\r\n native: {},\r\n });\r\n\r\n // Create channel (e.g. the device specific key)\r\n await adapter?.extendObjectAsync(productKey + \".\" + deviceKey, {\r\n type: \"channel\",\r\n common: {\r\n name: { de: \"Device Key \" + deviceKey, en: \"Device Key \" + deviceKey },\r\n },\r\n native: {},\r\n });\r\n\r\n // Create calculations folder\r\n await adapter?.extendObjectAsync(`${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 // Create pack data folder\r\n await adapter?.extendObjectAsync(`${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 await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.lastUpdate`, {\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: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.electricLevel`, {\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: false,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(\r\n `${productKey}.${deviceKey}.outputHomePower`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Ausgangsleistung\", en: \"output power\" },\r\n type: \"number\",\r\n desc: \"outputHomePower\",\r\n role: \"value.power\",\r\n read: true,\r\n write: false,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.outputLimit`, {\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: false,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(\r\n `${productKey}.${deviceKey}.outputPackPower`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Ladeleistung zur Batterie\", en: \"charge power\" },\r\n type: \"number\",\r\n desc: \"outputPackPower\",\r\n role: \"value.power\",\r\n read: true,\r\n write: false,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n `${productKey}.${deviceKey}.packInputPower`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Entladeleistung aus Batterie\", en: \"discharge power\" },\r\n type: \"number\",\r\n desc: \"packInputPower\",\r\n role: \"value.power\",\r\n read: true,\r\n write: false,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(\r\n `${productKey}.${deviceKey}.solarInputPower`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Leistung der Solarmodule\", en: \"solar power\" },\r\n type: \"number\",\r\n desc: \"solarInputPower\",\r\n role: \"value.power\",\r\n read: true,\r\n write: false,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.pvPower1`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Leistung PV 1\", en: \"solar power channel 1\" },\r\n type: \"number\",\r\n desc: \"pvPower1\",\r\n role: \"value.power\",\r\n read: true,\r\n write: false,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.pvPower2`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Leistung PV 2\", en: \"solar power channel 2\" },\r\n type: \"number\",\r\n desc: \"pvPower2\",\r\n role: \"value.power\",\r\n read: true,\r\n write: false,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(\r\n `${productKey}.${deviceKey}.remainInputTime`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Erwartete Ladedauer\", en: \"remaining charge time\" },\r\n type: \"number\",\r\n desc: \"remainInputTime\",\r\n role: \"value.interval\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n },\r\n );\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.remainOutTime`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Erwartete Entladedauer (Minuten)\",\r\n en: \"remaining discharge time (minutes)\",\r\n },\r\n type: \"number\",\r\n desc: \"remainOutTime\",\r\n role: \"value.interval\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.socSet`, {\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: false,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.minSoc`, {\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: false,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n });\r\n\r\n await createControlStates(adapter, productKey, deviceKey);\r\n\r\n if (adapter.config.useCalculation) {\r\n await createCalculationStates(adapter, productKey, deviceKey);\r\n } else {\r\n //await deleteCalculationStates(adapter, productKey, deviceKey);\r\n }\r\n};\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -40,7 +40,7 @@ const deleteCalculationStates = async (adapter, productKey, deviceKey) => {
|
|
|
40
40
|
stateNames.forEach(async (stateName) => {
|
|
41
41
|
const key = productKey + "." + deviceKey + ".calculations." + stateName;
|
|
42
42
|
if (await adapter.objectExists(key)) {
|
|
43
|
-
await (adapter == null ? void 0 : adapter.
|
|
43
|
+
await (adapter == null ? void 0 : adapter.deleteStateAsync(key));
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
46
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/helpers/deleteCalculationStates.ts"],
|
|
4
|
-
"sourcesContent": ["import { ZendureSolarflow } from \"../main\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\n\r\nexport const deleteCalculationStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n): Promise<void> => {\r\n const stateNames = [\r\n \"energyWhMax\",\r\n \"energyWh\",\r\n \"soc\",\r\n \"remainOutTime\",\r\n \"remainInputTime\",\r\n \"outputHomeEnergyTodaykWh\",\r\n \"outputHomeEnergyTodayWh\",\r\n \"packInputEnergyTodaykWh\",\r\n \"packInputEnergyTodayWh\",\r\n \"outputPackEnergyTodaykWh\",\r\n \"outputPackEnergyTodayWh\",\r\n \"solarInputEnergyTodaykWh\",\r\n \"solarInputEnergyTodayWh\",\r\n ];\r\n\r\n stateNames.forEach(async (stateName) => {\r\n const key = productKey + \".\" + deviceKey + \".calculations.\" + stateName;\r\n if (await adapter.objectExists(key)) {\r\n await adapter?.
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,MAAM,0BAA0B,OACrC,SACA,YACA,cACkB;AAClB,QAAM,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,aAAW,QAAQ,OAAO,cAAc;AACtC,UAAM,MAAM,aAAa,MAAM,YAAY,mBAAmB;AAC9D,QAAI,MAAM,QAAQ,aAAa,GAAG,GAAG;AACnC,aAAM,mCAAS,
|
|
4
|
+
"sourcesContent": ["import { ZendureSolarflow } from \"../main\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\n\r\nexport const deleteCalculationStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n): Promise<void> => {\r\n const stateNames = [\r\n \"energyWhMax\",\r\n \"energyWh\",\r\n \"soc\",\r\n \"remainOutTime\",\r\n \"remainInputTime\",\r\n \"outputHomeEnergyTodaykWh\",\r\n \"outputHomeEnergyTodayWh\",\r\n \"packInputEnergyTodaykWh\",\r\n \"packInputEnergyTodayWh\",\r\n \"outputPackEnergyTodaykWh\",\r\n \"outputPackEnergyTodayWh\",\r\n \"solarInputEnergyTodaykWh\",\r\n \"solarInputEnergyTodayWh\",\r\n ];\r\n\r\n stateNames.forEach(async (stateName) => {\r\n const key = productKey + \".\" + deviceKey + \".calculations.\" + stateName;\r\n if (await adapter.objectExists(key)) {\r\n await adapter?.deleteStateAsync(key);\r\n }\r\n });\r\n};\r\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,MAAM,0BAA0B,OACrC,SACA,YACA,cACkB;AAClB,QAAM,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,aAAW,QAAQ,OAAO,cAAc;AACtC,UAAM,MAAM,aAAa,MAAM,YAAY,mBAAmB;AAC9D,QAAI,MAAM,QAAQ,aAAa,GAAG,GAAG;AACnC,aAAM,mCAAS,iBAAiB;AAAA,IAClC;AAAA,EACF,CAAC;AACH;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build/main.js
CHANGED
|
@@ -36,7 +36,6 @@ var import_mqttService = require("./services/mqttService");
|
|
|
36
36
|
var import_webService = require("./services/webService");
|
|
37
37
|
var import_paths = require("./constants/paths");
|
|
38
38
|
var import_jobSchedule = require("./services/jobSchedule");
|
|
39
|
-
var import_calculationService = require("./services/calculationService");
|
|
40
39
|
class ZendureSolarflow extends utils.Adapter {
|
|
41
40
|
constructor(options = {}) {
|
|
42
41
|
super({
|
|
@@ -49,8 +48,10 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
49
48
|
this.paths = void 0;
|
|
50
49
|
this.interval = void 0;
|
|
51
50
|
this.lastLogin = void 0;
|
|
51
|
+
this.mqttClient = void 0;
|
|
52
52
|
this.resetValuesJob = void 0;
|
|
53
53
|
this.checkStatesJob = void 0;
|
|
54
|
+
this.calculationJob = void 0;
|
|
54
55
|
this.on("ready", this.onReady.bind(this));
|
|
55
56
|
this.on("stateChange", this.onStateChange.bind(this));
|
|
56
57
|
this.on("unload", this.onUnload.bind(this));
|
|
@@ -60,7 +61,11 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
60
61
|
*/
|
|
61
62
|
async onReady() {
|
|
62
63
|
var _a;
|
|
63
|
-
this.
|
|
64
|
+
if (this.config.server && this.config.server == "eu") {
|
|
65
|
+
this.paths = import_paths.pathsEu;
|
|
66
|
+
} else {
|
|
67
|
+
this.paths = import_paths.pathsGlobal;
|
|
68
|
+
}
|
|
64
69
|
if (this.config.userName && this.config.password) {
|
|
65
70
|
(_a = (0, import_webService.login)(this)) == null ? void 0 : _a.then((_accessToken) => {
|
|
66
71
|
this.accessToken = _accessToken;
|
|
@@ -76,17 +81,17 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
76
81
|
}).catch(() => {
|
|
77
82
|
var _a2;
|
|
78
83
|
this.connected = false;
|
|
79
|
-
(_a2 = this.log) == null ? void 0 : _a2.error("Retrieving device failed!");
|
|
84
|
+
(_a2 = this.log) == null ? void 0 : _a2.error("[onReady] Retrieving device failed!");
|
|
80
85
|
});
|
|
81
86
|
}).catch((error) => {
|
|
82
87
|
this.connected = false;
|
|
83
88
|
this.log.error(
|
|
84
|
-
"Logon error at Zendure cloud service! Error: " + error.toString()
|
|
89
|
+
"[onReady] Logon error at Zendure cloud service! Error: " + error.toString()
|
|
85
90
|
);
|
|
86
91
|
});
|
|
87
92
|
} else {
|
|
88
93
|
this.connected = false;
|
|
89
|
-
this.log.error("No Login Information provided!");
|
|
94
|
+
this.log.error("[onReady] No Login Information provided!");
|
|
90
95
|
}
|
|
91
96
|
}
|
|
92
97
|
/**
|
|
@@ -106,6 +111,10 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
106
111
|
(_a = this.checkStatesJob) == null ? void 0 : _a.cancel();
|
|
107
112
|
this.checkStatesJob = void 0;
|
|
108
113
|
}
|
|
114
|
+
if (this.calculationJob) {
|
|
115
|
+
this.calculationJob.cancel();
|
|
116
|
+
this.calculationJob = void 0;
|
|
117
|
+
}
|
|
109
118
|
callback();
|
|
110
119
|
} catch (e) {
|
|
111
120
|
callback();
|
|
@@ -130,26 +139,12 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
130
139
|
(0, import_mqttService.setDischargeLimit)(this, productKey, deviceKey, Number(state.val));
|
|
131
140
|
} else if (stateName2 == "chargeLimit") {
|
|
132
141
|
(0, import_mqttService.setChargeLimit)(this, productKey, deviceKey, Number(state.val));
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
break;
|
|
140
|
-
case "outputPackPower":
|
|
141
|
-
if (this.config.useCalculation) {
|
|
142
|
-
(0, import_calculationService.calculateEnergy)(this, productKey, deviceKey, "outputPack", state);
|
|
143
|
-
}
|
|
144
|
-
break;
|
|
145
|
-
case "packInputPower":
|
|
146
|
-
if (this.config.useCalculation) {
|
|
147
|
-
(0, import_calculationService.calculateEnergy)(this, productKey, deviceKey, "packInput", state);
|
|
148
|
-
}
|
|
149
|
-
break;
|
|
150
|
-
case "outputHomePower":
|
|
151
|
-
if (this.config.useCalculation) {
|
|
152
|
-
(0, import_calculationService.calculateEnergy)(this, productKey, deviceKey, "outputHome", state);
|
|
142
|
+
} else if (stateName2 == "lowVoltageBlock") {
|
|
143
|
+
if (this.config.useLowVoltageBlock) {
|
|
144
|
+
if (state.val == true) {
|
|
145
|
+
(0, import_mqttService.setOutputLimit)(this, productKey, deviceKey, 0);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
153
148
|
}
|
|
154
149
|
break;
|
|
155
150
|
default:
|
package/build/main.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/main.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n/*\r\n * Created with @iobroker/create-adapter v2.5.0\r\n */\r\n\r\n// The adapter-core module gives you access to the core ioBroker functions\r\n// you need to create an adapter\r\nimport * as utils from \"@iobroker/adapter-core\";\r\nimport {\r\n connectMqttClient,\r\n setChargeLimit,\r\n setDischargeLimit,\r\n setOutputLimit,\r\n} from \"./services/mqttService\";\r\nimport { getDeviceList, login } from \"./services/webService\";\r\nimport { ISolarFlowDeviceDetails } from \"./models/ISolarFlowDeviceDetails\";\r\nimport { ISolarFlowPaths } from \"./models/ISolarFlowPaths\";\r\nimport { pathsGlobal } from \"./constants/paths\";\r\nimport { Job } from \"node-schedule\";\r\nimport {\r\n startCheckStatesJob,\r\n startReloginAndResetValuesJob,\r\n} from \"./services/jobSchedule\";\r\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,YAAuB;AACvB,yBAKO;AACP,wBAAqC;AAGrC,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n/*\r\n * Created with @iobroker/create-adapter v2.5.0\r\n */\r\n\r\n// The adapter-core module gives you access to the core ioBroker functions\r\n// you need to create an adapter\r\nimport * as utils from \"@iobroker/adapter-core\";\r\nimport {\r\n connectMqttClient,\r\n setChargeLimit,\r\n setDischargeLimit,\r\n setOutputLimit,\r\n} from \"./services/mqttService\";\r\nimport { getDeviceList, login } from \"./services/webService\";\r\nimport { ISolarFlowDeviceDetails } from \"./models/ISolarFlowDeviceDetails\";\r\nimport { ISolarFlowPaths } from \"./models/ISolarFlowPaths\";\r\nimport { pathsEu, pathsGlobal } from \"./constants/paths\";\r\nimport { Job } from \"node-schedule\";\r\nimport {\r\n startCheckStatesJob,\r\n startReloginAndResetValuesJob,\r\n} from \"./services/jobSchedule\";\r\nimport { MqttClient } from \"mqtt\";\r\n\r\nexport class ZendureSolarflow extends utils.Adapter {\r\n public constructor(options: Partial<utils.AdapterOptions> = {}) {\r\n super({\r\n ...options,\r\n name: \"zendure-solarflow\",\r\n });\r\n this.on(\"ready\", this.onReady.bind(this));\r\n this.on(\"stateChange\", this.onStateChange.bind(this));\r\n this.on(\"unload\", this.onUnload.bind(this));\r\n }\r\n\r\n public accessToken: string | undefined = undefined; // Access Token for Zendure Rest API\r\n public deviceList: ISolarFlowDeviceDetails[] = [];\r\n public paths: ISolarFlowPaths | undefined = undefined;\r\n public interval: ioBroker.Interval | undefined = undefined;\r\n public lastLogin: Date | undefined = undefined;\r\n\r\n public mqttClient: MqttClient | undefined = undefined;\r\n\r\n public resetValuesJob: Job | undefined = undefined;\r\n public checkStatesJob: Job | undefined = undefined;\r\n public calculationJob: Job | undefined = undefined;\r\n\r\n /**\r\n * Is called when databases are connected and adapter received configuration.\r\n */\r\n private async onReady(): Promise<void> {\r\n // Select paths by config value\r\n if (this.config.server && this.config.server == \"eu\") {\r\n this.paths = pathsEu;\r\n } else {\r\n this.paths = pathsGlobal;\r\n }\r\n\r\n // If Username and Password is provided, try to login and get the access token.\r\n if (this.config.userName && this.config.password) {\r\n login(this)\r\n ?.then((_accessToken: string) => {\r\n this.accessToken = _accessToken;\r\n\r\n this.connected = true;\r\n this.lastLogin = new Date();\r\n\r\n // Try to get the device list\r\n getDeviceList(this)\r\n .then((result: ISolarFlowDeviceDetails[]) => {\r\n if (result) {\r\n // Device List found. Save in the adapter properties and connect to MQTT\r\n this.deviceList = result;\r\n connectMqttClient(this);\r\n\r\n // Schedule Job\r\n startReloginAndResetValuesJob(this);\r\n startCheckStatesJob(this);\r\n }\r\n })\r\n .catch(() => {\r\n this.connected = false;\r\n this.log?.error(\"[onReady] Retrieving device failed!\");\r\n });\r\n })\r\n .catch((error) => {\r\n this.connected = false;\r\n this.log.error(\r\n \"[onReady] Logon error at Zendure cloud service! Error: \" +\r\n error.toString(),\r\n );\r\n });\r\n } else {\r\n this.connected = false;\r\n this.log.error(\"[onReady] No Login Information provided!\");\r\n //this.stop?.();\r\n }\r\n }\r\n\r\n /**\r\n * Is called when adapter shuts down - callback has to be called under any circumstances!\r\n */\r\n private onUnload(callback: () => void): void {\r\n try {\r\n if (this.interval) {\r\n this.clearInterval(this.interval);\r\n }\r\n\r\n // Scheduler beenden\r\n if (this.resetValuesJob) {\r\n this.resetValuesJob.cancel();\r\n this.resetValuesJob = undefined;\r\n }\r\n\r\n if (this.checkStatesJob) {\r\n this.checkStatesJob?.cancel();\r\n this.checkStatesJob = undefined;\r\n }\r\n\r\n if (this.calculationJob) {\r\n this.calculationJob.cancel();\r\n this.calculationJob = undefined;\r\n }\r\n\r\n callback();\r\n } catch (e) {\r\n callback();\r\n }\r\n }\r\n\r\n /**\r\n * Is called if a subscribed state changes\r\n */\r\n private onStateChange(\r\n id: string,\r\n state: ioBroker.State | null | undefined,\r\n ): void {\r\n if (state) {\r\n // The state was changed\r\n //this.log.debug(`state ${id} changed: ${state.val} (ack = ${state.ack})`);\r\n\r\n // Read product and device key from string\r\n const splitted = id.split(\".\");\r\n const productKey = splitted[2];\r\n const deviceKey = splitted[3];\r\n const stateName1 = splitted[4];\r\n const stateName2 = splitted[5];\r\n\r\n if (state.val != undefined && state.val != null) {\r\n switch (stateName1) {\r\n case \"control\":\r\n if (stateName2 == \"setOutputLimit\") {\r\n setOutputLimit(this, productKey, deviceKey, Number(state.val));\r\n } else if (stateName2 == \"dischargeLimit\") {\r\n setDischargeLimit(this, productKey, deviceKey, Number(state.val));\r\n } else if (stateName2 == \"chargeLimit\") {\r\n setChargeLimit(this, productKey, deviceKey, Number(state.val));\r\n } else if (stateName2 == \"lowVoltageBlock\") {\r\n if (this.config.useLowVoltageBlock) {\r\n if (state.val == true) {\r\n // Low Voltage Block activated, stop power input\r\n setOutputLimit(this, productKey, deviceKey, 0);\r\n }\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n // The state was deleted\r\n this.log.debug(`state ${id} deleted`);\r\n }\r\n }\r\n }\r\n}\r\n\r\nif (require.main !== module) {\r\n // Export the constructor in compact mode\r\n module.exports = (options: Partial<utils.AdapterOptions> | undefined) =>\r\n new ZendureSolarflow(options);\r\n} else {\r\n // otherwise start the instance directly\r\n (() => new ZendureSolarflow())();\r\n}\r\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,YAAuB;AACvB,yBAKO;AACP,wBAAqC;AAGrC,mBAAqC;AAErC,yBAGO;AAGA,MAAM,yBAAyB,MAAM,QAAQ;AAAA,EAC3C,YAAY,UAAyC,CAAC,GAAG;AAC9D,UAAM;AAAA,MACJ,GAAG;AAAA,MACH,MAAM;AAAA,IACR,CAAC;AAMH,SAAO,cAAkC;AACzC;AAAA,SAAO,aAAwC,CAAC;AAChD,SAAO,QAAqC;AAC5C,SAAO,WAA0C;AACjD,SAAO,YAA8B;AAErC,SAAO,aAAqC;AAE5C,SAAO,iBAAkC;AACzC,SAAO,iBAAkC;AACzC,SAAO,iBAAkC;AAfvC,SAAK,GAAG,SAAS,KAAK,QAAQ,KAAK,IAAI,CAAC;AACxC,SAAK,GAAG,eAAe,KAAK,cAAc,KAAK,IAAI,CAAC;AACpD,SAAK,GAAG,UAAU,KAAK,SAAS,KAAK,IAAI,CAAC;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAc,UAAyB;AAnDzC;AAqDI,QAAI,KAAK,OAAO,UAAU,KAAK,OAAO,UAAU,MAAM;AACpD,WAAK,QAAQ;AAAA,IACf,OAAO;AACL,WAAK,QAAQ;AAAA,IACf;AAGA,QAAI,KAAK,OAAO,YAAY,KAAK,OAAO,UAAU;AAChD,yCAAM,IAAI,MAAV,mBACI,KAAK,CAAC,iBAAyB;AAC/B,aAAK,cAAc;AAEnB,aAAK,YAAY;AACjB,aAAK,YAAY,oBAAI,KAAK;AAG1B,6CAAc,IAAI,EACf,KAAK,CAAC,WAAsC;AAC3C,cAAI,QAAQ;AAEV,iBAAK,aAAa;AAClB,sDAAkB,IAAI;AAGtB,kEAA8B,IAAI;AAClC,wDAAoB,IAAI;AAAA,UAC1B;AAAA,QACF,CAAC,EACA,MAAM,MAAM;AAjFzB,cAAAA;AAkFc,eAAK,YAAY;AACjB,WAAAA,MAAA,KAAK,QAAL,gBAAAA,IAAU,MAAM;AAAA,QAClB,CAAC;AAAA,MACL,GACC,MAAM,CAAC,UAAU;AAChB,aAAK,YAAY;AACjB,aAAK,IAAI;AAAA,UACP,4DACE,MAAM,SAAS;AAAA,QACnB;AAAA,MACF;AAAA,IACJ,OAAO;AACL,WAAK,YAAY;AACjB,WAAK,IAAI,MAAM,0CAA0C;AAAA,IAE3D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,SAAS,UAA4B;AAvG/C;AAwGI,QAAI;AACF,UAAI,KAAK,UAAU;AACjB,aAAK,cAAc,KAAK,QAAQ;AAAA,MAClC;AAGA,UAAI,KAAK,gBAAgB;AACvB,aAAK,eAAe,OAAO;AAC3B,aAAK,iBAAiB;AAAA,MACxB;AAEA,UAAI,KAAK,gBAAgB;AACvB,mBAAK,mBAAL,mBAAqB;AACrB,aAAK,iBAAiB;AAAA,MACxB;AAEA,UAAI,KAAK,gBAAgB;AACvB,aAAK,eAAe,OAAO;AAC3B,aAAK,iBAAiB;AAAA,MACxB;AAEA,eAAS;AAAA,IACX,SAAS,GAAG;AACV,eAAS;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,cACN,IACA,OACM;AACN,QAAI,OAAO;AAKT,YAAM,WAAW,GAAG,MAAM,GAAG;AAC7B,YAAM,aAAa,SAAS,CAAC;AAC7B,YAAM,YAAY,SAAS,CAAC;AAC5B,YAAM,aAAa,SAAS,CAAC;AAC7B,YAAM,aAAa,SAAS,CAAC;AAE7B,UAAI,MAAM,OAAO,UAAa,MAAM,OAAO,MAAM;AAC/C,gBAAQ,YAAY;AAAA,UAClB,KAAK;AACH,gBAAI,cAAc,kBAAkB;AAClC,qDAAe,MAAM,YAAY,WAAW,OAAO,MAAM,GAAG,CAAC;AAAA,YAC/D,WAAW,cAAc,kBAAkB;AACzC,wDAAkB,MAAM,YAAY,WAAW,OAAO,MAAM,GAAG,CAAC;AAAA,YAClE,WAAW,cAAc,eAAe;AACtC,qDAAe,MAAM,YAAY,WAAW,OAAO,MAAM,GAAG,CAAC;AAAA,YAC/D,WAAW,cAAc,mBAAmB;AAC1C,kBAAI,KAAK,OAAO,oBAAoB;AAClC,oBAAI,MAAM,OAAO,MAAM;AAErB,yDAAe,MAAM,YAAY,WAAW,CAAC;AAAA,gBAC/C;AAAA,cACF;AAAA,YACF;AACA;AAAA,UACF;AACE;AAAA,QACJ;AAAA,MACF,OAAO;AAEL,aAAK,IAAI,MAAM,SAAS,EAAE,UAAU;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAI,QAAQ,SAAS,QAAQ;AAE3B,SAAO,UAAU,CAAC,YAChB,IAAI,iBAAiB,OAAO;AAChC,OAAO;AAEL,GAAC,MAAM,IAAI,iBAAiB,GAAG;AACjC;",
|
|
6
6
|
"names": ["_a"]
|
|
7
7
|
}
|