iobroker.zendure-solarflow 1.8.6 → 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 +4 -0
- package/build/constants/hubStates.js +12 -0
- package/build/constants/hubStates.js.map +2 -2
- package/build/helpers/createControlStates.js +93 -82
- package/build/helpers/createControlStates.js.map +2 -2
- package/build/services/adapterService.js +1 -1
- package/build/services/adapterService.js.map +2 -2
- package/io-package.json +14 -14
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -46,6 +46,10 @@ 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
|
+
|
|
49
53
|
### 1.8.6 (2024-09-06)
|
|
50
54
|
|
|
51
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.
|
|
@@ -75,6 +75,18 @@ const hubStates = import_sharedStates.sharedStates.concat([
|
|
|
75
75
|
role: "value.power",
|
|
76
76
|
unit: "W"
|
|
77
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
|
+
},
|
|
78
90
|
{
|
|
79
91
|
title: "connectedWithAce",
|
|
80
92
|
nameDe: "Mit ACE (1500) verbunden",
|
|
@@ -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 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,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
|
}
|
|
@@ -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
|
}
|
|
@@ -49,7 +49,7 @@ const checkVoltage = async (adapter, productKey, deviceKey, voltage) => {
|
|
|
49
49
|
));
|
|
50
50
|
(0, import_mqttService.setOutputLimit)(adapter, productKey, deviceKey, 0);
|
|
51
51
|
}
|
|
52
|
-
} else if (voltage >=
|
|
52
|
+
} else if (voltage >= 47.5) {
|
|
53
53
|
if (adapter.config.useLowVoltageBlock) {
|
|
54
54
|
await (adapter == null ? void 0 : adapter.setState(
|
|
55
55
|
`${productKey}.${deviceKey}.control.lowVoltageBlock`,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/services/adapterService.ts"],
|
|
4
|
-
"sourcesContent": ["import { ZendureSolarflow } from \"../main\";\r\nimport { setSocToZero } from \"./calculationService\";\r\nimport { setOutputLimit } from \"./mqttService\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\n\r\nexport const updateSolarFlowState = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n state: string,\r\n val: number | string | boolean\r\n): Promise<void> => {\r\n await adapter?.setState(`${productKey}.${deviceKey}.${state}`, val, true);\r\n};\r\n\r\nexport const updateSolarFlowControlState = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n state: string,\r\n val: number | string | boolean\r\n): Promise<void> => {\r\n await adapter?.setState(\r\n `${productKey}.${deviceKey}.control.${state}`,\r\n val,\r\n true\r\n );\r\n};\r\n\r\nexport const checkVoltage = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n voltage: number\r\n): Promise<void> => {\r\n if (voltage < 46.1) {\r\n if (adapter.config.useCalculation) {\r\n setSocToZero(adapter, productKey, deviceKey);\r\n }\r\n\r\n if (adapter.config.useLowVoltageBlock) {\r\n // Activate Low Voltage Block\r\n await adapter?.setState(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`,\r\n true,\r\n true\r\n );\r\n\r\n // Low Voltage Block activated, stop power input immediately\r\n setOutputLimit(adapter, productKey, deviceKey, 0);\r\n }\r\n } else if (voltage >=
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gCAA6B;AAC7B,yBAA+B;AAIxB,MAAM,uBAAuB,OAClC,SACA,YACA,WACA,OACA,QACkB;AAClB,SAAM,mCAAS,SAAS,GAAG,UAAU,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK;AACtE;AAEO,MAAM,8BAA8B,OACzC,SACA,YACA,WACA,OACA,QACkB;AAClB,SAAM,mCAAS;AAAA,IACb,GAAG,UAAU,IAAI,SAAS,YAAY,KAAK;AAAA,IAC3C;AAAA,IACA;AAAA;AAEJ;AAEO,MAAM,eAAe,OAC1B,SACA,YACA,WACA,YACkB;AAClB,MAAI,UAAU,MAAM;AAClB,QAAI,QAAQ,OAAO,gBAAgB;AACjC,kDAAa,SAAS,YAAY,SAAS;AAAA,IAC7C;AAEA,QAAI,QAAQ,OAAO,oBAAoB;AAErC,aAAM,mCAAS;AAAA,QACb,GAAG,UAAU,IAAI,SAAS;AAAA,QAC1B;AAAA,QACA;AAAA;AAIF,6CAAe,SAAS,YAAY,WAAW,CAAC;AAAA,IAClD;AAAA,EACF,WAAW,WAAW,
|
|
4
|
+
"sourcesContent": ["import { ZendureSolarflow } from \"../main\";\r\nimport { setSocToZero } from \"./calculationService\";\r\nimport { setOutputLimit } from \"./mqttService\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\n\r\nexport const updateSolarFlowState = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n state: string,\r\n val: number | string | boolean\r\n): Promise<void> => {\r\n await adapter?.setState(`${productKey}.${deviceKey}.${state}`, val, true);\r\n};\r\n\r\nexport const updateSolarFlowControlState = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n state: string,\r\n val: number | string | boolean\r\n): Promise<void> => {\r\n await adapter?.setState(\r\n `${productKey}.${deviceKey}.control.${state}`,\r\n val,\r\n true\r\n );\r\n};\r\n\r\nexport const checkVoltage = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n voltage: number\r\n): Promise<void> => {\r\n if (voltage < 46.1) {\r\n if (adapter.config.useCalculation) {\r\n setSocToZero(adapter, productKey, deviceKey);\r\n }\r\n\r\n if (adapter.config.useLowVoltageBlock) {\r\n // Activate Low Voltage Block\r\n await adapter?.setState(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`,\r\n true,\r\n true\r\n );\r\n\r\n // Low Voltage Block activated, stop power input immediately\r\n setOutputLimit(adapter, productKey, deviceKey, 0);\r\n }\r\n } else if (voltage >= 47.5) {\r\n if (adapter.config.useLowVoltageBlock) {\r\n // Deactivate Low Voltage Block\r\n await adapter?.setState(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`,\r\n false,\r\n true\r\n );\r\n }\r\n }\r\n};\r\n\r\nexport const checkDevicesServer = async (\r\n adapter: ZendureSolarflow\r\n): Promise<void> => {\r\n const channels = await adapter.getChannelsAsync();\r\n\r\n channels.forEach(async (channel) => {\r\n if (channel._id) {\r\n const splitted = channel._id.split(\".\");\r\n if (splitted.length == 4) {\r\n const productKey = splitted[2];\r\n const deviceKey = splitted[3];\r\n\r\n const currentServerState = await adapter.getStateAsync(\r\n `${productKey}.${deviceKey}.registeredServer`\r\n );\r\n\r\n if (\r\n currentServerState &&\r\n currentServerState.val &&\r\n currentServerState.val != adapter.config.server\r\n ) {\r\n adapter.log.warn(\r\n `Device with ProductKey '${productKey}' and DeviceKey '${deviceKey}' was configured on server '${currentServerState.val}', but adapter is configured to use server '${adapter.config.server}'! No data will be available!`\r\n );\r\n }\r\n }\r\n }\r\n });\r\n};\r\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gCAA6B;AAC7B,yBAA+B;AAIxB,MAAM,uBAAuB,OAClC,SACA,YACA,WACA,OACA,QACkB;AAClB,SAAM,mCAAS,SAAS,GAAG,UAAU,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK;AACtE;AAEO,MAAM,8BAA8B,OACzC,SACA,YACA,WACA,OACA,QACkB;AAClB,SAAM,mCAAS;AAAA,IACb,GAAG,UAAU,IAAI,SAAS,YAAY,KAAK;AAAA,IAC3C;AAAA,IACA;AAAA;AAEJ;AAEO,MAAM,eAAe,OAC1B,SACA,YACA,WACA,YACkB;AAClB,MAAI,UAAU,MAAM;AAClB,QAAI,QAAQ,OAAO,gBAAgB;AACjC,kDAAa,SAAS,YAAY,SAAS;AAAA,IAC7C;AAEA,QAAI,QAAQ,OAAO,oBAAoB;AAErC,aAAM,mCAAS;AAAA,QACb,GAAG,UAAU,IAAI,SAAS;AAAA,QAC1B;AAAA,QACA;AAAA;AAIF,6CAAe,SAAS,YAAY,WAAW,CAAC;AAAA,IAClD;AAAA,EACF,WAAW,WAAW,MAAM;AAC1B,QAAI,QAAQ,OAAO,oBAAoB;AAErC,aAAM,mCAAS;AAAA,QACb,GAAG,UAAU,IAAI,SAAS;AAAA,QAC1B;AAAA,QACA;AAAA;AAAA,IAEJ;AAAA,EACF;AACF;AAEO,MAAM,qBAAqB,OAChC,YACkB;AAClB,QAAM,WAAW,MAAM,QAAQ,iBAAiB;AAEhD,WAAS,QAAQ,OAAO,YAAY;AAClC,QAAI,QAAQ,KAAK;AACf,YAAM,WAAW,QAAQ,IAAI,MAAM,GAAG;AACtC,UAAI,SAAS,UAAU,GAAG;AACxB,cAAM,aAAa,SAAS,CAAC;AAC7B,cAAM,YAAY,SAAS,CAAC;AAE5B,cAAM,qBAAqB,MAAM,QAAQ;AAAA,UACvC,GAAG,UAAU,IAAI,SAAS;AAAA,QAC5B;AAEA,YACE,sBACA,mBAAmB,OACnB,mBAAmB,OAAO,QAAQ,OAAO,QACzC;AACA,kBAAQ,IAAI;AAAA,YACV,2BAA2B,UAAU,oBAAoB,SAAS,+BAA+B,mBAAmB,GAAG,+CAA+C,QAAQ,OAAO,MAAM;AAAA,UAC7L;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "zendure-solarflow",
|
|
4
|
-
"version": "1.8.
|
|
4
|
+
"version": "1.8.7",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.8.7": {
|
|
7
|
+
"en": "Fix missing control states for AIO",
|
|
8
|
+
"de": "Fehlende Kontrollzustände für AIO behoben",
|
|
9
|
+
"ru": "Исправление недостающих состояний управления для AIO",
|
|
10
|
+
"pt": "Corrigir estados de controle ausentes para AIO",
|
|
11
|
+
"nl": "Fix ontbrekende controlestaten voor AIO",
|
|
12
|
+
"fr": "Correction des états de contrôle manquants pour AIO",
|
|
13
|
+
"it": "Fissare gli stati di controllo mancanti per AIO",
|
|
14
|
+
"es": "Fijar estados de control perdidos para AIO",
|
|
15
|
+
"pl": "Napraw brakujące stany kontroli dla AIO",
|
|
16
|
+
"uk": "Виправлення відсутніх контрольних станів для AIO",
|
|
17
|
+
"zh-cn": "为 AIO 修复缺失的控制状态"
|
|
18
|
+
},
|
|
6
19
|
"1.8.6": {
|
|
7
20
|
"en": "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.",
|
|
8
21
|
"de": "Login-Methode ändern: Hinzugefügt eine Retry-Loop für die Verbindung mit Zendure Cloud, wenn der Cloud Service \"Ändert\" oder nicht verfügbar ist, wird es die Verbindung 3 mal wiederherzustellen.",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "Napraw obsługę urządzeń 'Hyper _ Test'\nUlepszony kodeks tworzenia państwa",
|
|
81
94
|
"uk": "Фіксована підтримка пристроїв «Hyper_Test»\nПокращений код для державного створення",
|
|
82
95
|
"zh-cn": "修正“ Hyper_ test” 设备的支持\n改进国家创建的代码"
|
|
83
|
-
},
|
|
84
|
-
"1.7.5": {
|
|
85
|
-
"en": "Fix controlling AC mode for Hyper 2000 (set acMode to 1: Charge by AC, 2: Output to AC)\nShow product name in channel name\nShow battery type as state in packData\nShow Hyper Temperature in States",
|
|
86
|
-
"de": "Fix Controlling AC-Modus für Hyper 2000 (Set acMode auf 1: Lade durch AC, 2: Ausgabe auf AC)\nProduktname in Kanalname anzeigen\nBatterietyp als Zustand in packData anzeigen\nHypertemperatur in den Staaten anzeigen",
|
|
87
|
-
"ru": "Fix-управляющий режим переменного тока для Hyper 2000 (настройка acMode до 1: Зарядка AC, 2: Выход к AC)\nПоказать имя продукта в названии канала\nПоказать тип батареи как состояние в упаковкеДата\nПоказать гипертемпературу в Штатах",
|
|
88
|
-
"pt": "Fix control modo AC para Hyper 2000 (set acMode para 1: Carga por AC, 2: Saída para AC)\nMostrar nome do produto no nome do canal\nMostrar tipo de bateria como estado em packData\nMostrar temperatura de Hyper nos Estados Unidos",
|
|
89
|
-
"nl": "Fix controlling AC mode voor Hyper 2000 (set acMode to 1: Charge by AC, 2: Output to AC)\nProductnaam tonen in kanaalnaam\nAccutype tonen als status in packData\nHypertemperatuur in staten tonen",
|
|
90
|
-
"fr": "Correction de la commande du mode AC pour Hyper 2000 (réglage acMode à 1: Charge par AC, 2: Sortie vers AC)\nAfficher le nom du produit dans le nom du canal\nAfficher le type de batterie comme état dans packDonnées\nAfficher l'hypertempérature dans les états",
|
|
91
|
-
"it": "Fissare la modalità AC di controllo per Hyper 2000 (impostare acMode 1: Carica tramite AC, 2: Uscita su AC)\nMostra il nome del prodotto nel nome del canale\nMostra il tipo di batteria come stato in packData\nMostra Hyper Temperature negli Stati",
|
|
92
|
-
"es": "Fijar el modo AC controlador para Hyper 2000 (set acMode a 1: Carga por AC, 2: Salida a AC)\nMostrar nombre del producto en nombre del canal\nMostrar tipo de batería como estado en packData\nMostrar hipertemperatura en Estados Unidos",
|
|
93
|
-
"pl": "Poprawiony tryb sterowania AC dla Hyper 2000 (ustawić acMode do 1: Ładowanie przez AC, 2: Wyjście do AC)\nPokaż nazwę produktu w nazwie kanału\nPokaż typ baterii jako stan w packData\nPokaż temperaturę Hyper w Stanach",
|
|
94
|
-
"uk": "Фіксований контрольний режим змінного струму для Hyper 2000 (set acMode до 1: Charge by AC, 2: Вихід до змінного струму)\nПоказати назву продукту в назві каналів\nПоказати тип акумулятора як стан у пачціData\nПоказати гіпертемпературу в США",
|
|
95
|
-
"zh-cn": "用于 Hyper 2000 的控制 AC 模式( 设置 acMode 到 1: 由 AC 充电, 2: 输出到 AC)\n在频道名称中显示产品名称\n在 packData 中显示电池类型\n在州内显示超温"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|