iobroker.zendure-solarflow 1.4.0 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/admin/build/index.js +30 -30
- package/admin/build/index.js.map +2 -2
- package/build/helpers/createSolarFlowStates.js +3 -1
- package/build/helpers/createSolarFlowStates.js.map +2 -2
- package/build/helpers/uuidHelper.js +34 -0
- package/build/helpers/uuidHelper.js.map +7 -0
- package/build/main.js +21 -31
- package/build/main.js.map +2 -2
- package/build/models/ISolarFlowDeviceDetails.js.map +1 -1
- package/build/models/ISolarFlowMqttProperties.js.map +1 -1
- package/build/models/ISolarflowDevRegisterResponse.js +17 -0
- package/build/models/ISolarflowDevRegisterResponse.js.map +7 -0
- package/build/services/adapterService.js +14 -1
- package/build/services/adapterService.js.map +2 -2
- package/build/services/fallbackMqttService.js +460 -0
- package/build/services/fallbackMqttService.js.map +7 -0
- package/build/services/fallbackWebService.js +80 -0
- package/build/services/fallbackWebService.js.map +7 -0
- package/build/services/jobSchedule.js +46 -48
- package/build/services/jobSchedule.js.map +2 -2
- package/build/services/mqttService.js +75 -31
- package/build/services/mqttService.js.map +2 -2
- package/build/services/webService.js +5 -1
- package/build/services/webService.js.map +2 -2
- package/io-package.json +41 -2
- package/package.json +3 -3
|
@@ -427,7 +427,9 @@ const createSolarFlowStates = async (adapter, productKey, deviceKey) => {
|
|
|
427
427
|
},
|
|
428
428
|
native: {}
|
|
429
429
|
}));
|
|
430
|
-
|
|
430
|
+
if (!adapter.config.useFallbackService) {
|
|
431
|
+
await (0, import_createControlStates.createControlStates)(adapter, productKey, deviceKey);
|
|
432
|
+
}
|
|
431
433
|
if (adapter.config.useCalculation) {
|
|
432
434
|
await (0, import_createCalculationStates.createCalculationStates)(adapter, productKey, deviceKey);
|
|
433
435
|
} else {
|
|
@@ -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 adapter.log.debug(\r\n `[createSolarFlowStates] Creating or updating SolarFlow states for productKey ${productKey} and deviceKey ${deviceKey}.`,\r\n );\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}.buzzerSwitch`, {\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: \"passMode\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.passMode`, {\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: \"string\",\r\n desc: \"passMode\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.pass`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Bypass an/aus\", en: \"Bypass on/off\" },\r\n type: \"boolean\",\r\n desc: \"pass\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.autoRecover`, {\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: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.packState`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Systemstatus\", en: \"Status of system\" },\r\n type: \"string\",\r\n desc: \"packState\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.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(`${productKey}.${deviceKey}.name`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Name\", en: \"Name\" },\r\n type: \"string\",\r\n desc: \"name\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.snNumber`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Seriennnummer\", en: \"Serial ID\" },\r\n type: \"string\",\r\n desc: \"snNumber\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.productName`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Produkt Name\", en: \"Product name\" },\r\n type: \"string\",\r\n desc: \"productName\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(\r\n `${productKey}.${deviceKey}.registeredServer`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Registrierter Server\", en: \"Registered server\" },\r\n type: \"string\",\r\n desc: \"registeredServer\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n },\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 adapter?.extendObjectAsync(`${productKey}.${deviceKey}.pvBrand`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Wechselrichter Hersteller\", en: \"brand of inverter\" },\r\n type: \"string\",\r\n desc: \"pvBrand\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(\r\n `${productKey}.${deviceKey}.inverseMaxPower`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Maximal akzeptabler Eingang des PV-Mikrowechselrichters\",\r\n en: \"highest acceptable input power\",\r\n },\r\n type: \"number\",\r\n desc: \"inverseMaxPower\",\r\n role: \"value\",\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}.wifiState`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"WiFi Status\",\r\n en: \"WiFi Status\",\r\n },\r\n type: \"string\",\r\n desc: \"wifiState\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.hubState`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Verhalten wenn minimale reservierte Ladung erreicht\",\r\n en: \"Behavior when minimum reserved charge is reached\",\r\n },\r\n type: \"string\",\r\n desc: \"hubState\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\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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
|
|
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 adapter.log.debug(\r\n `[createSolarFlowStates] Creating or updating SolarFlow states for productKey ${productKey} and deviceKey ${deviceKey}.`,\r\n );\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}.buzzerSwitch`, {\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: \"passMode\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.passMode`, {\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: \"string\",\r\n desc: \"passMode\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.pass`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Bypass an/aus\", en: \"Bypass on/off\" },\r\n type: \"boolean\",\r\n desc: \"pass\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.autoRecover`, {\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: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.packState`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Systemstatus\", en: \"Status of system\" },\r\n type: \"string\",\r\n desc: \"packState\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.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(`${productKey}.${deviceKey}.name`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Name\", en: \"Name\" },\r\n type: \"string\",\r\n desc: \"name\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.snNumber`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Seriennnummer\", en: \"Serial ID\" },\r\n type: \"string\",\r\n desc: \"snNumber\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.productName`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Produkt Name\", en: \"Product name\" },\r\n type: \"string\",\r\n desc: \"productName\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(\r\n `${productKey}.${deviceKey}.registeredServer`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Registrierter Server\", en: \"Registered server\" },\r\n type: \"string\",\r\n desc: \"registeredServer\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n },\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 adapter?.extendObjectAsync(`${productKey}.${deviceKey}.pvBrand`, {\r\n type: \"state\",\r\n common: {\r\n name: { de: \"Wechselrichter Hersteller\", en: \"brand of inverter\" },\r\n type: \"string\",\r\n desc: \"pvBrand\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(\r\n `${productKey}.${deviceKey}.inverseMaxPower`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Maximal akzeptabler Eingang des PV-Mikrowechselrichters\",\r\n en: \"highest acceptable input power\",\r\n },\r\n type: \"number\",\r\n desc: \"inverseMaxPower\",\r\n role: \"value\",\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}.wifiState`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"WiFi Status\",\r\n en: \"WiFi Status\",\r\n },\r\n type: \"string\",\r\n desc: \"wifiState\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\r\n await adapter?.extendObjectAsync(`${productKey}.${deviceKey}.hubState`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Verhalten wenn minimale reservierte Ladung erreicht\",\r\n en: \"Behavior when minimum reserved charge is reached\",\r\n },\r\n type: \"string\",\r\n desc: \"hubState\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\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);\r\n }\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
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var uuidHelper_exports = {};
|
|
20
|
+
__export(uuidHelper_exports, {
|
|
21
|
+
generateUniqSerial: () => generateUniqSerial
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(uuidHelper_exports);
|
|
24
|
+
const generateUniqSerial = () => {
|
|
25
|
+
return "xxxx-xxxx-xxx-xxxx".replace(/[x]/g, function(c) {
|
|
26
|
+
const r = Math.random() * 16 | 0, v = c == "x" ? r : r & 3 | 8;
|
|
27
|
+
return v.toString(16);
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
generateUniqSerial
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=uuidHelper.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/helpers/uuidHelper.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nexport const generateUniqSerial = (): string => {\r\n return \"xxxx-xxxx-xxx-xxxx\".replace(/[x]/g, function (c) {\r\n const r = (Math.random() * 16) | 0,\r\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n};\r\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,MAAM,qBAAqB,MAAc;AAC9C,SAAO,qBAAqB,QAAQ,QAAQ,SAAU,GAAG;AACvD,UAAM,IAAK,KAAK,OAAO,IAAI,KAAM,GAC/B,IAAI,KAAK,MAAM,IAAK,IAAI,IAAO;AACjC,WAAO,EAAE,SAAS,EAAE;AAAA,EACtB,CAAC;AACH;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/build/main.js
CHANGED
|
@@ -38,6 +38,8 @@ var import_paths = require("./constants/paths");
|
|
|
38
38
|
var import_jobSchedule = require("./services/jobSchedule");
|
|
39
39
|
var import_adapterService = require("./services/adapterService");
|
|
40
40
|
var import_createSolarFlowStates = require("./helpers/createSolarFlowStates");
|
|
41
|
+
var import_fallbackWebService = require("./services/fallbackWebService");
|
|
42
|
+
var import_fallbackMqttService = require("./services/fallbackMqttService");
|
|
41
43
|
class ZendureSolarflow extends utils.Adapter {
|
|
42
44
|
constructor(options = {}) {
|
|
43
45
|
super({
|
|
@@ -54,6 +56,7 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
54
56
|
this.checkStatesJob = void 0;
|
|
55
57
|
this.calculationJob = void 0;
|
|
56
58
|
this.refreshAccessTokenInterval = void 0;
|
|
59
|
+
this.createdSnNumberSolarflowStates = [];
|
|
57
60
|
this.on("ready", this.onReady.bind(this));
|
|
58
61
|
this.on("stateChange", this.onStateChange.bind(this));
|
|
59
62
|
this.on("unload", this.onUnload.bind(this));
|
|
@@ -91,7 +94,19 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
91
94
|
this.paths = import_paths.pathsGlobal;
|
|
92
95
|
}
|
|
93
96
|
this.log.debug("[onReady] Using server " + this.config.server);
|
|
94
|
-
if (this.config.
|
|
97
|
+
if (this.config.useFallbackService && this.config.snNumber) {
|
|
98
|
+
(0, import_fallbackWebService.createDeveloperAccount)(this).then((data) => {
|
|
99
|
+
if (data.appKey && data.mqttUrl && data.port && data.secret) {
|
|
100
|
+
(0, import_fallbackMqttService.connectFallbackMqttClient)(
|
|
101
|
+
this,
|
|
102
|
+
data.appKey,
|
|
103
|
+
data.secret,
|
|
104
|
+
data.mqttUrl,
|
|
105
|
+
data.port
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
} else if (!this.config.useFallbackService && this.config.userName && this.config.password) {
|
|
95
110
|
(_a = (0, import_webService.login)(this)) == null ? void 0 : _a.then((_accessToken) => {
|
|
96
111
|
this.accessToken = _accessToken;
|
|
97
112
|
this.setState("info.connection", true, true);
|
|
@@ -112,34 +127,6 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
112
127
|
device.productKey,
|
|
113
128
|
device.deviceKey
|
|
114
129
|
);
|
|
115
|
-
await (0, import_adapterService.updateSolarFlowState)(
|
|
116
|
-
this,
|
|
117
|
-
device.productKey,
|
|
118
|
-
device.deviceKey,
|
|
119
|
-
"electricLevel",
|
|
120
|
-
device.electricity
|
|
121
|
-
);
|
|
122
|
-
await (0, import_adapterService.updateSolarFlowState)(
|
|
123
|
-
this,
|
|
124
|
-
device.productKey,
|
|
125
|
-
device.deviceKey,
|
|
126
|
-
"name",
|
|
127
|
-
device.name
|
|
128
|
-
);
|
|
129
|
-
await (0, import_adapterService.updateSolarFlowState)(
|
|
130
|
-
this,
|
|
131
|
-
device.productKey,
|
|
132
|
-
device.deviceKey,
|
|
133
|
-
"productName",
|
|
134
|
-
device.productName
|
|
135
|
-
);
|
|
136
|
-
await (0, import_adapterService.updateSolarFlowState)(
|
|
137
|
-
this,
|
|
138
|
-
device.productKey,
|
|
139
|
-
device.deviceKey,
|
|
140
|
-
"snNumber",
|
|
141
|
-
device.snNumber
|
|
142
|
-
);
|
|
143
130
|
await (0, import_adapterService.updateSolarFlowState)(
|
|
144
131
|
this,
|
|
145
132
|
device.productKey,
|
|
@@ -211,7 +198,11 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
211
198
|
const deviceKey = splitted[3];
|
|
212
199
|
const stateName1 = splitted[4];
|
|
213
200
|
const stateName2 = splitted[5];
|
|
214
|
-
if (
|
|
201
|
+
if (this.config.useFallbackService && stateName1 == "control") {
|
|
202
|
+
this.log.warn(
|
|
203
|
+
`[onStateChange] Using Fallback server, control of Solarflow device is not possible!`
|
|
204
|
+
);
|
|
205
|
+
} else if (state.val != void 0 && state.val != null && !state.ack) {
|
|
215
206
|
switch (stateName1) {
|
|
216
207
|
case "control":
|
|
217
208
|
if (stateName2 == "setOutputLimit") {
|
|
@@ -242,7 +233,6 @@ class ZendureSolarflow extends utils.Adapter {
|
|
|
242
233
|
break;
|
|
243
234
|
}
|
|
244
235
|
} else {
|
|
245
|
-
this.log.debug(`state ${id} deleted`);
|
|
246
236
|
}
|
|
247
237
|
}
|
|
248
238
|
}
|
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 setAutoRecover,\r\n setBuzzerSwitch,\r\n setChargeLimit,\r\n setDischargeLimit,\r\n setOutputLimit,\r\n setPassMode,\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 startCalculationJob,\r\n startCheckStatesJob,\r\n startRefreshAccessTokenTimerJob,\r\n startResetValuesJob,\r\n} from \"./services/jobSchedule\";\r\nimport { MqttClient } from \"mqtt\";\r\nimport {\r\n checkDevicesServer,\r\n updateSolarFlowState,\r\n} from \"./services/adapterService\";\r\nimport { createSolarFlowStates } from \"./helpers/createSolarFlowStates\";\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\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 public refreshAccessTokenInterval: ioBroker.Interval | 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 await this.extendObjectAsync(\"info\", {\r\n type: \"channel\",\r\n common: {\r\n name: \"Information\",\r\n },\r\n native: {},\r\n });\r\n\r\n await this.extendObjectAsync(`info.connection`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Mit Zendure Cloud verbunden\",\r\n en: \"Connected to Zendure cloud\",\r\n },\r\n type: \"boolean\",\r\n desc: \"connection\",\r\n role: \"indicator.connected\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\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 this.log.debug(\"[onReady] Using server \" + this.config.server);\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.setState(\"info.connection\", true, true);\r\n this.lastLogin = new Date();\r\n\r\n // Try to get the device list\r\n getDeviceList(this)\r\n .then(async (result: ISolarFlowDeviceDetails[]) => {\r\n if (result) {\r\n // Device List found. Save in the adapter properties and connect to MQTT\r\n\r\n // Filtering to SolarFlow devices\r\n this.deviceList = result.filter((device) =>\r\n device.productName.toLowerCase().includes(\"solarflow\"),\r\n );\r\n\r\n await checkDevicesServer(this);\r\n\r\n this.log.info(\r\n `[onReady] Found ${this.deviceList.length} SolarFlow device(s).`,\r\n );\r\n\r\n await this.deviceList.forEach(\r\n async (device: ISolarFlowDeviceDetails) => {\r\n // States erstellen\r\n await createSolarFlowStates(\r\n this,\r\n device.productKey,\r\n device.deviceKey,\r\n );\r\n\r\n // Set electricLevel (soc) from device details.\r\n await updateSolarFlowState(\r\n this,\r\n device.productKey,\r\n device.deviceKey,\r\n \"electricLevel\",\r\n device.electricity,\r\n );\r\n\r\n // Set name from device details.\r\n await updateSolarFlowState(\r\n this,\r\n device.productKey,\r\n device.deviceKey,\r\n \"name\",\r\n device.name,\r\n );\r\n\r\n // Set name from device details.\r\n await updateSolarFlowState(\r\n this,\r\n device.productKey,\r\n device.deviceKey,\r\n \"productName\",\r\n device.productName,\r\n );\r\n\r\n // Set Serial ID from device details.\r\n await updateSolarFlowState(\r\n this,\r\n device.productKey,\r\n device.deviceKey,\r\n \"snNumber\",\r\n device.snNumber,\r\n );\r\n\r\n await updateSolarFlowState(\r\n this,\r\n device.productKey,\r\n device.deviceKey,\r\n \"registeredServer\",\r\n this.config.server,\r\n );\r\n },\r\n );\r\n\r\n connectMqttClient(this);\r\n\r\n // Schedule Jobs\r\n startResetValuesJob(this);\r\n startCheckStatesJob(this);\r\n startRefreshAccessTokenTimerJob(this);\r\n\r\n if (this.config.useCalculation) {\r\n startCalculationJob(this);\r\n }\r\n }\r\n })\r\n .catch(() => {\r\n this.setState(\"info.connection\", false, true);\r\n this.log?.error(\"[onReady] Retrieving device failed!\");\r\n });\r\n })\r\n .catch((error) => {\r\n this.setState(\"info.connection\", false, true);\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.setState(\"info.connection\", false, true);\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.refreshAccessTokenInterval) {\r\n this.clearInterval(this.refreshAccessTokenInterval);\r\n }\r\n\r\n this.mqttClient?.end();\r\n\r\n this.setState(\"info.connection\", false, true);\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 // !!! Only stateChanges with ack==false are allowed to be processed.\r\n if (state.val != undefined && state.val != null && !state.ack) {\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 == \"passMode\") {\r\n setPassMode(this, productKey, deviceKey, Number(state.val));\r\n } else if (stateName2 == \"autoRecover\") {\r\n setAutoRecover(\r\n this,\r\n productKey,\r\n deviceKey,\r\n state.val ? true : false,\r\n );\r\n } else if (stateName2 == \"buzzerSwitch\") {\r\n setBuzzerSwitch(\r\n this,\r\n productKey,\r\n deviceKey,\r\n state.val ? true : false,\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,yBAQO;AACP,wBAAqC;AAGrC,mBAAqC;AAErC,yBAKO;AAEP,4BAGO;AACP,mCAAsC;
|
|
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 setAutoRecover,\r\n setBuzzerSwitch,\r\n setChargeLimit,\r\n setDischargeLimit,\r\n setOutputLimit,\r\n setPassMode,\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 startCalculationJob,\r\n startCheckStatesJob,\r\n startRefreshAccessTokenTimerJob,\r\n startResetValuesJob,\r\n} from \"./services/jobSchedule\";\r\nimport { MqttClient } from \"mqtt\";\r\nimport {\r\n checkDevicesServer,\r\n updateSolarFlowState,\r\n} from \"./services/adapterService\";\r\nimport { createSolarFlowStates } from \"./helpers/createSolarFlowStates\";\r\nimport { createDeveloperAccount } from \"./services/fallbackWebService\";\r\nimport { ISolarFlowDevRegisterData } from \"./models/ISolarflowDevRegisterResponse\";\r\nimport { connectFallbackMqttClient } from \"./services/fallbackMqttService\";\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\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 public refreshAccessTokenInterval: ioBroker.Interval | undefined = undefined;\r\n\r\n public createdSnNumberSolarflowStates: string[] = [];\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 await this.extendObjectAsync(\"info\", {\r\n type: \"channel\",\r\n common: {\r\n name: \"Information\",\r\n },\r\n native: {},\r\n });\r\n\r\n await this.extendObjectAsync(`info.connection`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Mit Zendure Cloud verbunden\",\r\n en: \"Connected to Zendure cloud\",\r\n },\r\n type: \"boolean\",\r\n desc: \"connection\",\r\n role: \"indicator.connected\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n });\r\n\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 this.log.debug(\"[onReady] Using server \" + this.config.server);\r\n\r\n if (this.config.useFallbackService && this.config.snNumber) {\r\n // Use Fallback service. Using the developer version of the MQTT and Webservice from zendure\r\n createDeveloperAccount(this).then((data: ISolarFlowDevRegisterData) => {\r\n //console.log(data);\r\n if (data.appKey && data.mqttUrl && data.port && data.secret) {\r\n connectFallbackMqttClient(\r\n this,\r\n data.appKey,\r\n data.secret,\r\n data.mqttUrl,\r\n data.port,\r\n );\r\n }\r\n });\r\n } else if (\r\n !this.config.useFallbackService &&\r\n this.config.userName &&\r\n this.config.password\r\n ) {\r\n // App mode: If Username and Password is provided, try to login and get the access token.\r\n login(this)\r\n ?.then((_accessToken: string) => {\r\n this.accessToken = _accessToken;\r\n\r\n this.setState(\"info.connection\", true, true);\r\n this.lastLogin = new Date();\r\n\r\n // Try to get the device list\r\n getDeviceList(this)\r\n .then(async (result: ISolarFlowDeviceDetails[]) => {\r\n if (result) {\r\n // Device List found. Save in the adapter properties and connect to MQTT\r\n\r\n // Filtering to SolarFlow devices\r\n this.deviceList = result.filter((device) =>\r\n device.productName.toLowerCase().includes(\"solarflow\"),\r\n );\r\n\r\n await checkDevicesServer(this);\r\n\r\n this.log.info(\r\n `[onReady] Found ${this.deviceList.length} SolarFlow device(s).`,\r\n );\r\n\r\n await this.deviceList.forEach(\r\n async (device: ISolarFlowDeviceDetails) => {\r\n // States erstellen\r\n await createSolarFlowStates(\r\n this,\r\n device.productKey,\r\n device.deviceKey,\r\n );\r\n\r\n await updateSolarFlowState(\r\n this,\r\n device.productKey,\r\n device.deviceKey,\r\n \"registeredServer\",\r\n this.config.server,\r\n );\r\n },\r\n );\r\n\r\n connectMqttClient(this);\r\n\r\n // Schedule Jobs\r\n\r\n // Job starten die states in der Nacht zu resetten\r\n startResetValuesJob(this);\r\n\r\n // Job starten die States zu checken\r\n startCheckStatesJob(this);\r\n\r\n // Den Access Token aktualiseren\r\n startRefreshAccessTokenTimerJob(this);\r\n\r\n // Calculation Job starten sofern aktiviert\r\n if (this.config.useCalculation) {\r\n startCalculationJob(this);\r\n }\r\n }\r\n })\r\n .catch(() => {\r\n this.setState(\"info.connection\", false, true);\r\n this.log?.error(\"[onReady] Retrieving device failed!\");\r\n });\r\n })\r\n .catch((error) => {\r\n this.setState(\"info.connection\", false, true);\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.setState(\"info.connection\", false, true);\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.refreshAccessTokenInterval) {\r\n this.clearInterval(this.refreshAccessTokenInterval);\r\n }\r\n\r\n this.mqttClient?.end();\r\n\r\n this.setState(\"info.connection\", false, true);\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 (this.config.useFallbackService && stateName1 == \"control\") {\r\n this.log.warn(\r\n `[onStateChange] Using Fallback server, control of Solarflow device is not possible!`,\r\n );\r\n }\r\n // !!! Only stateChanges with ack==false are allowed to be processed.\r\n else if (state.val != undefined && state.val != null && !state.ack) {\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 == \"passMode\") {\r\n setPassMode(this, productKey, deviceKey, Number(state.val));\r\n } else if (stateName2 == \"autoRecover\") {\r\n setAutoRecover(\r\n this,\r\n productKey,\r\n deviceKey,\r\n state.val ? true : false,\r\n );\r\n } else if (stateName2 == \"buzzerSwitch\") {\r\n setBuzzerSwitch(\r\n this,\r\n productKey,\r\n deviceKey,\r\n state.val ? true : false,\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": "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",
|
|
6
6
|
"names": ["_a"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/models/ISolarFlowDeviceDetails.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nexport interface ISolarFlowDeviceDetails {\r\n batteryCode
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nexport interface ISolarFlowDeviceDetails {\r\n batteryCode?: string;\r\n bindId?: number;\r\n bindStatus?: number;\r\n bindType?: number;\r\n blueState?: boolean;\r\n deviceKey: string;\r\n electricity?: number; // SOC\r\n fourGStatus?: boolean;\r\n id?: number;\r\n input?: boolean;\r\n inputPower?: number;\r\n isShareFlag?: string;\r\n isSwitch?: boolean;\r\n name?: string; // SolarFlow\r\n networkType?: number;\r\n onlineFlag?: string;\r\n output?: boolean;\r\n outputPower?: number;\r\n packList?: number[];\r\n parallelMode?: number;\r\n productId?: number;\r\n productKey: string;\r\n productName: string;\r\n productType?: number;\r\n remainOutTime?: number;\r\n seriesMode?: number;\r\n slowChargePower?: number;\r\n snNumber?: string;\r\n standard?: string;\r\n temperature?: number;\r\n temperatureUnit?: number;\r\n upgradeStatus?: unknown;\r\n upgradeStatusDes?: string;\r\n upsMode?: boolean;\r\n url?: string;\r\n wifiStatus?: boolean;\r\n}\r\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/models/ISolarFlowMqttProperties.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nimport { IPackData } from \"./IPackData\";\r\n\r\nexport interface IMqttData {\r\n properties?: ISolarFlowMqttProperties;\r\n packData?: IPackData[];\r\n}\r\n\r\nexport interface ISolarFlowMqttProperties {\r\n electricLevel?: number;\r\n packState?: number;\r\n pass?: number;\r\n passMode?: number;\r\n autoRecover?: number;\r\n outputHomePower?: number;\r\n outputLimit?: number;\r\n buzzerSwitch?: number;\r\n outputPackPower?: number;\r\n packInputPower?: number;\r\n solarInputPower?: number;\r\n pvPower1?: number;\r\n pvPower2?: number;\r\n solarPower1?: number;\r\n solarPower2?: number;\r\n remainOutTime?: number;\r\n remainInputTime?: number;\r\n socSet?: number;\r\n minSoc?: number;\r\n pvBrand?: number;\r\n inverseMaxPower?: number;\r\n wifiState?: number;\r\n hubState?: number;\r\n // ambientLightNess\r\n // ambientLightColor\r\n // ambientLightMode\r\n // ambientSwitch\r\n // lowTemperature\r\n // solarInputPowerCycle\r\n // solarInputPowerCycle2\r\n // electricLevelCycle\r\n // autoModel\r\n // autoHeat\r\n // heatState\r\n // loraInvState\r\n // loraModuleState\r\n // invOutputPower\r\n // masterSoftVersion: 4112\r\n // inputMode\r\n // blueOta\r\n}\r\n"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nimport { IPackData } from \"./IPackData\";\r\n\r\nexport interface IMqttData {\r\n properties?: ISolarFlowMqttProperties;\r\n packData?: IPackData[];\r\n}\r\n\r\nexport interface ISolarFlowMqttProperties {\r\n electricLevel?: number;\r\n packData?: IPackData[];\r\n packState?: number;\r\n pass?: number;\r\n passMode?: number;\r\n autoRecover?: number;\r\n outputHomePower?: number;\r\n outputLimit?: number;\r\n buzzerSwitch?: number;\r\n outputPackPower?: number;\r\n packInputPower?: number;\r\n solarInputPower?: number;\r\n pvPower1?: number;\r\n pvPower2?: number;\r\n solarPower1?: number;\r\n solarPower2?: number;\r\n remainOutTime?: number;\r\n remainInputTime?: number;\r\n socSet?: number;\r\n minSoc?: number;\r\n pvBrand?: number;\r\n inverseMaxPower?: number;\r\n wifiState?: number;\r\n hubState?: number;\r\n sn?: string;\r\n // ambientLightNess\r\n // ambientLightColor\r\n // ambientLightMode\r\n // ambientSwitch\r\n // lowTemperature\r\n // solarInputPowerCycle\r\n // solarInputPowerCycle2\r\n // electricLevelCycle\r\n // autoModel\r\n // autoHeat\r\n // heatState\r\n // loraInvState\r\n // loraModuleState\r\n // invOutputPower\r\n // masterSoftVersion: 4112\r\n // inputMode\r\n // blueOta\r\n}\r\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var ISolarflowDevRegisterResponse_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(ISolarflowDevRegisterResponse_exports);
|
|
17
|
+
//# sourceMappingURL=ISolarflowDevRegisterResponse.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/models/ISolarflowDevRegisterResponse.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nexport interface ISolarFlowDevRegisterResponse {\r\n code: number;\r\n success: boolean;\r\n data: ISolarFlowDevRegisterData;\r\n msg: string;\r\n}\r\n\r\nexport interface ISolarFlowDevRegisterData {\r\n appKey: string;\r\n secret: string;\r\n mqttUrl: string;\r\n port: number;\r\n}\r\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -20,13 +20,25 @@ var adapterService_exports = {};
|
|
|
20
20
|
__export(adapterService_exports, {
|
|
21
21
|
checkDevicesServer: () => checkDevicesServer,
|
|
22
22
|
checkVoltage: () => checkVoltage,
|
|
23
|
+
updateSolarFlowControlState: () => updateSolarFlowControlState,
|
|
23
24
|
updateSolarFlowState: () => updateSolarFlowState
|
|
24
25
|
});
|
|
25
26
|
module.exports = __toCommonJS(adapterService_exports);
|
|
26
27
|
var import_calculationService = require("./calculationService");
|
|
27
28
|
var import_mqttService = require("./mqttService");
|
|
28
29
|
const updateSolarFlowState = async (adapter, productKey, deviceKey, state, val) => {
|
|
29
|
-
await (adapter == null ? void 0 : adapter.setStateAsync(
|
|
30
|
+
await (adapter == null ? void 0 : adapter.setStateAsync(
|
|
31
|
+
`${productKey}.${deviceKey}.${state}`,
|
|
32
|
+
val,
|
|
33
|
+
true
|
|
34
|
+
));
|
|
35
|
+
};
|
|
36
|
+
const updateSolarFlowControlState = async (adapter, productKey, deviceKey, state, val) => {
|
|
37
|
+
await (adapter == null ? void 0 : adapter.setStateAsync(
|
|
38
|
+
`${productKey}.${deviceKey}.control.${state}`,
|
|
39
|
+
val,
|
|
40
|
+
true
|
|
41
|
+
));
|
|
30
42
|
};
|
|
31
43
|
const checkVoltage = async (adapter, productKey, deviceKey, voltage) => {
|
|
32
44
|
if (voltage < 46.1) {
|
|
@@ -75,6 +87,7 @@ const checkDevicesServer = async (adapter) => {
|
|
|
75
87
|
0 && (module.exports = {
|
|
76
88
|
checkDevicesServer,
|
|
77
89
|
checkVoltage,
|
|
90
|
+
updateSolarFlowControlState,
|
|
78
91
|
updateSolarFlowState
|
|
79
92
|
});
|
|
80
93
|
//# sourceMappingURL=adapterService.js.map
|
|
@@ -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?.setStateAsync(`${productKey}.${deviceKey}.${state}
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gCAA6B;AAC7B,yBAA+B;AAIxB,MAAM,uBAAuB,OAClC,SACA,YACA,WACA,OACA,QACkB;AAClB,SAAM,mCAAS,
|
|
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?.setStateAsync(\r\n `${productKey}.${deviceKey}.${state}`,\r\n val,\r\n true,\r\n );\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?.setStateAsync(\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?.setStateAsync(\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 >= 48.0) {\r\n if (adapter.config.useLowVoltageBlock) {\r\n // Deactivate Low Voltage Block\r\n await adapter?.setStateAsync(\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;AAAA,IACb,GAAG,UAAU,IAAI,SAAS,IAAI,KAAK;AAAA,IACnC;AAAA,IACA;AAAA;AAEJ;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,IAAM;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
|
}
|