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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/services/webService.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nimport { ZendureSolarflow } from \"../main\";\r\nimport axios, { AxiosRequestConfig } from \"axios\";\r\nimport { ISolarFlowDeviceDetails } from \"../models/ISolarFlowDeviceDetails\";\r\n\r\nconst config: AxiosRequestConfig = {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept-Language\": \"de-DE\",\r\n appVersion: \"4.3.1\",\r\n \"User-Agent\": \"Zendure/4.3.1 (iPhone; iOS 14.4.2; Scale/3.00)\",\r\n Accept: \"*/*\",\r\n Authorization: \"Basic Q29uc3VtZXJBcHA6NX4qUmRuTnJATWg0WjEyMw==\",\r\n \"Blade-Auth\": \"bearer (null)\",\r\n },\r\n timeout: 10000,\r\n};\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\nexport const login = (adapter: ZendureSolarflow): Promise<string> => {\r\n if (adapter.accessToken) {\r\n return new Promise((resolve) => {\r\n if (adapter.accessToken) {\r\n resolve(adapter.accessToken);\r\n }\r\n });\r\n }\r\n\r\n const auth = Buffer.from(\r\n `${adapter.config.userName}:${adapter.config.password}`,\r\n ).toString(\"base64\");\r\n\r\n if (!config || !config.headers) {\r\n return Promise.reject(\"No axios config!\");\r\n }\r\n\r\n config.headers.Authorization = \"Basic \" + auth;\r\n\r\n const authBody = {\r\n password: adapter.config.password,\r\n account: adapter.config.userName,\r\n appId: \"121c83f761305d6cf7b\",\r\n appType: \"iOS\",\r\n grantType: \"password\",\r\n tenantId: \"\",\r\n };\r\n\r\n if (adapter.paths && adapter.paths.solarFlowTokenUrl) {\r\n return axios\r\n .post(adapter.paths.solarFlowTokenUrl, authBody, config)\r\n .then(function (response) {\r\n if (response.data.success) {\r\n adapter.log.info(\"[login] Login to Zendure Rest API successful!\");\r\n\r\n if (response.data?.data?.accessToken) {\r\n return response.data.data.accessToken;\r\n }\r\n }\r\n })\r\n .catch(function (error) {\r\n adapter.log.error(error);\r\n return Promise.reject(\"[login] Failed to login to Zendure REST API!\");\r\n });\r\n } else return Promise.reject(\"Path error!\");\r\n};\r\n\r\nexport const getDeviceList = (\r\n adapter: ZendureSolarflow,\r\n): Promise<ISolarFlowDeviceDetails[]> => {\r\n adapter.log.debug(\r\n \"[getDeviceList] Getting device list from Zendure Rest API!\",\r\n );\r\n\r\n if (adapter
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA0C;AAG1C,MAAM,SAA6B;AAAA,EACjC,SAAS;AAAA,IACP,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,cAAc;AAAA,EAChB;AAAA,EACA,SAAS;AACX;AAGO,MAAM,QAAQ,CAAC,YAA+C;AACnE,MAAI,QAAQ,aAAa;AACvB,WAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAI,QAAQ,aAAa;AACvB,gBAAQ,QAAQ,WAAW;AAAA,MAC7B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,OAAO,OAAO;AAAA,IAClB,GAAG,QAAQ,OAAO,QAAQ,IAAI,QAAQ,OAAO,QAAQ;AAAA,EACvD,EAAE,SAAS,QAAQ;AAEnB,MAAI,CAAC,UAAU,CAAC,OAAO,SAAS;AAC9B,WAAO,QAAQ,OAAO,kBAAkB;AAAA,EAC1C;AAEA,SAAO,QAAQ,gBAAgB,WAAW;AAE1C,QAAM,WAAW;AAAA,IACf,UAAU,QAAQ,OAAO;AAAA,IACzB,SAAS,QAAQ,OAAO;AAAA,IACxB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,WAAW;AAAA,IACX,UAAU;AAAA,EACZ;AAEA,MAAI,QAAQ,SAAS,QAAQ,MAAM,mBAAmB;AACpD,WAAO,aAAAA,QACJ,KAAK,QAAQ,MAAM,mBAAmB,UAAU,MAAM,EACtD,KAAK,SAAU,UAAU;AAlDhC;AAmDQ,UAAI,SAAS,KAAK,SAAS;AACzB,gBAAQ,IAAI,KAAK,+CAA+C;AAEhE,aAAI,oBAAS,SAAT,mBAAe,SAAf,mBAAqB,aAAa;AACpC,iBAAO,SAAS,KAAK,KAAK;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,CAAC,EACA,MAAM,SAAU,OAAO;AACtB,cAAQ,IAAI,MAAM,KAAK;AACvB,aAAO,QAAQ,OAAO,8CAA8C;AAAA,IACtE,CAAC;AAAA,EACL;AAAO,WAAO,QAAQ,OAAO,aAAa;AAC5C;AAEO,MAAM,gBAAgB,CAC3B,YACuC;AACvC,UAAQ,IAAI;AAAA,IACV;AAAA,EACF;AAEA,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nimport { ZendureSolarflow } from \"../main\";\r\nimport axios, { AxiosRequestConfig } from \"axios\";\r\nimport { ISolarFlowDeviceDetails } from \"../models/ISolarFlowDeviceDetails\";\r\n\r\nconst config: AxiosRequestConfig = {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept-Language\": \"de-DE\",\r\n appVersion: \"4.3.1\",\r\n \"User-Agent\": \"Zendure/4.3.1 (iPhone; iOS 14.4.2; Scale/3.00)\",\r\n Accept: \"*/*\",\r\n Authorization: \"Basic Q29uc3VtZXJBcHA6NX4qUmRuTnJATWg0WjEyMw==\",\r\n \"Blade-Auth\": \"bearer (null)\",\r\n },\r\n timeout: 10000,\r\n};\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\nexport const login = (adapter: ZendureSolarflow): Promise<string> => {\r\n if (adapter.accessToken) {\r\n return new Promise((resolve) => {\r\n if (adapter.accessToken) {\r\n resolve(adapter.accessToken);\r\n }\r\n });\r\n }\r\n\r\n const auth = Buffer.from(\r\n `${adapter.config.userName}:${adapter.config.password}`,\r\n ).toString(\"base64\");\r\n\r\n if (!config || !config.headers) {\r\n return Promise.reject(\"No axios config!\");\r\n }\r\n\r\n config.headers.Authorization = \"Basic \" + auth;\r\n\r\n const authBody = {\r\n password: adapter.config.password,\r\n account: adapter.config.userName,\r\n appId: \"121c83f761305d6cf7b\",\r\n appType: \"iOS\",\r\n grantType: \"password\",\r\n tenantId: \"\",\r\n };\r\n\r\n if (adapter.paths && adapter.paths.solarFlowTokenUrl) {\r\n return axios\r\n .post(adapter.paths.solarFlowTokenUrl, authBody, config)\r\n .then(function (response) {\r\n if (response.data.success) {\r\n adapter.log.info(\"[login] Login to Zendure Rest API successful!\");\r\n\r\n if (response.data?.data?.accessToken) {\r\n return response.data.data.accessToken;\r\n }\r\n }\r\n })\r\n .catch(function (error) {\r\n adapter.log.error(error);\r\n return Promise.reject(\"[login] Failed to login to Zendure REST API!\");\r\n });\r\n } else return Promise.reject(\"Path error!\");\r\n};\r\n\r\nexport const getDeviceList = (\r\n adapter: ZendureSolarflow,\r\n): Promise<ISolarFlowDeviceDetails[]> => {\r\n adapter.log.debug(\r\n \"[getDeviceList] Getting device list from Zendure Rest API!\",\r\n );\r\n\r\n if (\r\n adapter &&\r\n adapter.paths &&\r\n adapter.accessToken &&\r\n config &&\r\n config.headers\r\n ) {\r\n config.headers[\"Blade-Auth\"] = \"bearer \" + adapter.accessToken;\r\n\r\n const body = {};\r\n\r\n return axios\r\n .post(\r\n adapter.paths.solarFlowQueryDeviceListUrl,\r\n JSON.stringify(body),\r\n config,\r\n )\r\n .then(function (response) {\r\n if (response.data.data && response.data.data.length > 0) {\r\n return response.data.data as ISolarFlowDeviceDetails[];\r\n } else {\r\n return [];\r\n }\r\n });\r\n } else {\r\n adapter.log.error(\"[getDeviceList] No Access Token found!\");\r\n return Promise.reject(\"No Access Token found!\");\r\n }\r\n};\r\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA0C;AAG1C,MAAM,SAA6B;AAAA,EACjC,SAAS;AAAA,IACP,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,cAAc;AAAA,EAChB;AAAA,EACA,SAAS;AACX;AAGO,MAAM,QAAQ,CAAC,YAA+C;AACnE,MAAI,QAAQ,aAAa;AACvB,WAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAI,QAAQ,aAAa;AACvB,gBAAQ,QAAQ,WAAW;AAAA,MAC7B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,OAAO,OAAO;AAAA,IAClB,GAAG,QAAQ,OAAO,QAAQ,IAAI,QAAQ,OAAO,QAAQ;AAAA,EACvD,EAAE,SAAS,QAAQ;AAEnB,MAAI,CAAC,UAAU,CAAC,OAAO,SAAS;AAC9B,WAAO,QAAQ,OAAO,kBAAkB;AAAA,EAC1C;AAEA,SAAO,QAAQ,gBAAgB,WAAW;AAE1C,QAAM,WAAW;AAAA,IACf,UAAU,QAAQ,OAAO;AAAA,IACzB,SAAS,QAAQ,OAAO;AAAA,IACxB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,WAAW;AAAA,IACX,UAAU;AAAA,EACZ;AAEA,MAAI,QAAQ,SAAS,QAAQ,MAAM,mBAAmB;AACpD,WAAO,aAAAA,QACJ,KAAK,QAAQ,MAAM,mBAAmB,UAAU,MAAM,EACtD,KAAK,SAAU,UAAU;AAlDhC;AAmDQ,UAAI,SAAS,KAAK,SAAS;AACzB,gBAAQ,IAAI,KAAK,+CAA+C;AAEhE,aAAI,oBAAS,SAAT,mBAAe,SAAf,mBAAqB,aAAa;AACpC,iBAAO,SAAS,KAAK,KAAK;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,CAAC,EACA,MAAM,SAAU,OAAO;AACtB,cAAQ,IAAI,MAAM,KAAK;AACvB,aAAO,QAAQ,OAAO,8CAA8C;AAAA,IACtE,CAAC;AAAA,EACL;AAAO,WAAO,QAAQ,OAAO,aAAa;AAC5C;AAEO,MAAM,gBAAgB,CAC3B,YACuC;AACvC,UAAQ,IAAI;AAAA,IACV;AAAA,EACF;AAEA,MACE,WACA,QAAQ,SACR,QAAQ,eACR,UACA,OAAO,SACP;AACA,WAAO,QAAQ,YAAY,IAAI,YAAY,QAAQ;AAEnD,UAAM,OAAO,CAAC;AAEd,WAAO,aAAAA,QACJ;AAAA,MACC,QAAQ,MAAM;AAAA,MACd,KAAK,UAAU,IAAI;AAAA,MACnB;AAAA,IACF,EACC,KAAK,SAAU,UAAU;AACxB,UAAI,SAAS,KAAK,QAAQ,SAAS,KAAK,KAAK,SAAS,GAAG;AACvD,eAAO,SAAS,KAAK;AAAA,MACvB,OAAO;AACL,eAAO,CAAC;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACL,OAAO;AACL,YAAQ,IAAI,MAAM,wCAAwC;AAC1D,WAAO,QAAQ,OAAO,wBAAwB;AAAA,EAChD;AACF;",
|
|
6
6
|
"names": ["axios"]
|
|
7
7
|
}
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "zendure-solarflow",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.5.2",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.5.2": {
|
|
7
|
+
"en": "Minor bugfixes and improvements",
|
|
8
|
+
"de": "Minor Bugfixes und Verbesserungen",
|
|
9
|
+
"ru": "Незначительные исправления и улучшения",
|
|
10
|
+
"pt": "Pequenas correções e melhorias",
|
|
11
|
+
"nl": "Kleine bugfixes en verbeteringen",
|
|
12
|
+
"fr": "Corrections mineures et améliorations",
|
|
13
|
+
"it": "Minor bugfix e miglioramenti",
|
|
14
|
+
"es": "Fixes menores y mejoras",
|
|
15
|
+
"pl": "Niewielkie poprawki i ulepszenia",
|
|
16
|
+
"uk": "Мінорні виправлення та вдосконалення",
|
|
17
|
+
"zh-cn": "小错误修正和改进"
|
|
18
|
+
},
|
|
19
|
+
"1.5.1": {
|
|
20
|
+
"en": "Minor bugfixes and improvements",
|
|
21
|
+
"de": "Minor Bugfixes und Verbesserungen",
|
|
22
|
+
"ru": "Незначительные исправления и улучшения",
|
|
23
|
+
"pt": "Pequenas correções e melhorias",
|
|
24
|
+
"nl": "Kleine bugfixes en verbeteringen",
|
|
25
|
+
"fr": "Corrections mineures et améliorations",
|
|
26
|
+
"it": "Minor bugfix e miglioramenti",
|
|
27
|
+
"es": "Fixes menores y mejoras",
|
|
28
|
+
"pl": "Niewielkie poprawki i ulepszenia",
|
|
29
|
+
"uk": "Мінорні виправлення та вдосконалення",
|
|
30
|
+
"zh-cn": "小错误修正和改进"
|
|
31
|
+
},
|
|
32
|
+
"1.5.0": {
|
|
33
|
+
"en": "Add the possibility to connect to the 'Fallback' MQTT server known as 'Developer MQTT'. This server is read-only - so no control is possible!",
|
|
34
|
+
"de": "Fügen Sie die Möglichkeit hinzu, sich mit dem MQTT-Server 'Fallback' zu verbinden. Dieser Server ist nur lesbar - so ist keine Kontrolle möglich!",
|
|
35
|
+
"ru": "Добавить возможность подключения к серверу MQTT 'Fallback', известному как 'Developer MQTT'. Этот сервер только для чтения - так что никакого контроля невозможно!",
|
|
36
|
+
"pt": "Adicione a possibilidade de se conectar ao servidor MQTT 'Fallback' conhecido como 'Developer MQTT'. Este servidor é somente leitura - então nenhum controle é possível!",
|
|
37
|
+
"nl": "Voeg de mogelijkheid toe om verbinding te maken met de 'Fallback' MQTT server bekend als 'Developer MQTT'. Deze server is alleen-lezen - dus geen controle mogelijk!",
|
|
38
|
+
"fr": "Ajoutez la possibilité de vous connecter au serveur MQTT 'Fallback' connu sous le nom de 'Developer MQTT'. Ce serveur est en lecture seule - donc aucun contrôle n'est possible!",
|
|
39
|
+
"it": "Aggiungi la possibilità di connettersi al server MQTT 'Fallback' conosciuto come 'Developer MQTT'. Questo server è in sola lettura - quindi nessun controllo è possibile!",
|
|
40
|
+
"es": "Añadir la posibilidad de conectarse al servidor MQTT 'Fallback' conocido como 'Developer MQTT'. Este servidor es sólo lectura - así que ningún control es posible!",
|
|
41
|
+
"pl": "Dodaj możliwość podłączenia do 'Fallback' serwera MQTT znanego jako 'Developer MQTT'. Ten serwer jest tylko read- więc nie jest możliwe sterowanie!",
|
|
42
|
+
"uk": "Додайте можливість підключення до сервера MQTT «Fallback» від «Developer MQTT». Цей сервер читає-тільки - так не можна керувати!",
|
|
43
|
+
"zh-cn": "添加连接到名为“ 开发者 MQTT” 的“ Fallback” MQTT 服务器的可能性 。 此服务器只读 - 因此无法控制 !"
|
|
44
|
+
},
|
|
6
45
|
"1.4.0": {
|
|
7
46
|
"en": "Add calculation states for solar input 1 & 2\nAdd states for wifiState, hubState, pvBrand and inverseMaxPower\nRename missleading title for input field 'Username' in settings to 'E-Mail'\nFix energyWh, energyWhMax and SOC in calculations if \"Low Voltage Check\" is not used, it will set the calculation soc to 0 if minSoc (discharge limit) is reached\nFix password input in settings",
|
|
8
47
|
"de": "Berechnungszustände für den Solareingang 1 & 2 hinzufügen\nFügen Sie Zustände für wifiState, hubState, pvBrand und inverse hinzu Max Power\nUmbenennen verfehlter Titel für Eingabefeld 'Username' in Einstellungen auf 'E-Mail'\nEnergie Wh, energyWhMax und SOC in Berechnungen, wenn \"Low Voltage Check\" nicht verwendet wird, wird die Berechnung soc auf 0 gesetzt, wenn minSoc (Entladungsgrenze) erreicht ist\nPassworteingabe in Einstellungen festlegen",
|
|
@@ -76,8 +115,8 @@
|
|
|
76
115
|
"Zendure",
|
|
77
116
|
"Solarflow"
|
|
78
117
|
],
|
|
79
|
-
"license": "MIT",
|
|
80
118
|
"licenseInformation": {
|
|
119
|
+
"license": "GPL-3.0-only",
|
|
81
120
|
"type": "free"
|
|
82
121
|
},
|
|
83
122
|
"platform": "Javascript/Node.js",
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.zendure-solarflow",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.2",
|
|
4
4
|
"description": "zendure-solarflow",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Peter",
|
|
7
7
|
"email": "peter.frommert@outlook.com"
|
|
8
8
|
},
|
|
9
|
-
"license": "
|
|
9
|
+
"license": "GPL-3.0-only",
|
|
10
10
|
"homepage": "https://github.com/nograx/ioBroker.zendure-solarflow",
|
|
11
11
|
"keywords": [
|
|
12
12
|
"Zendure",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@alcalzone/release-script-plugin-manual-review": "^3.5.9",
|
|
33
33
|
"@iobroker/adapter-dev": "^1.2.0",
|
|
34
34
|
"@iobroker/adapter-react": "2.2.4",
|
|
35
|
-
"@iobroker/testing": "^4.1.
|
|
35
|
+
"@iobroker/testing": "^4.1.3",
|
|
36
36
|
"@material-ui/core": "^4.12.4",
|
|
37
37
|
"@tsconfig/node16": "^16.1.1",
|
|
38
38
|
"@types/chai": "^4.3.6",
|