iobroker.zendure-solarflow 1.0.7 → 1.1.4

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.
@@ -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 { pathsEu, pathsGlobal } from \"../constants/paths\";\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: 5000\r\n};\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\nexport const login = (adapter: ZendureSolarflow): Promise<string> => {\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 to 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(\"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.setState(\"errorMessage\", \"no_error\");\r\n adapter.log.debug(\"Getting device list from Zendure Rest API!\");\r\n\r\n if (adapter.accessToken && config && config.headers) {\r\n config.headers[\"Blade-Auth\"] = \"bearer \" + adapter.accessToken;\r\n\r\n const body = {};\r\n\r\n let paths = undefined;\r\n\r\n if (adapter.config.server == \"eu\") {\r\n paths = pathsEu;\r\n } else {\r\n paths = pathsGlobal;\r\n }\r\n\r\n return axios\r\n .post(paths.solarFlowQueryDeviceListUrl, JSON.stringify(body), config)\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(\"No Access Token found!\");\r\n return Promise.reject(\"No Access Token found!\");\r\n }\r\n};\r\n\r\n/* export const createDeveloperAccount = (adapter: ZendureSolarflow) => {\r\n adapter.log.info(\"Function createDeveloperAccount\");\r\n\r\n adapter.setState(\"errorMessage\", \"\");\r\n\r\n const body = {\r\n snNumber: adapter.snNumber,\r\n account: adapter.config.userName,\r\n };\r\n\r\n let paths = undefined;\r\n\r\n if (adapter.config.server == \"eu\") {\r\n paths = pathsEu;\r\n } else {\r\n paths = pathsGlobal;\r\n }\r\n\r\n return axios\r\n .post(paths.solarFlowDevRegisterUrl, JSON.stringify(body), config)\r\n .then(function (response) {\r\n adapter.log.info(\"Successfully created Developer Account!\");\r\n\r\n if (response.data && response.data.success == true) {\r\n return response.data.data;\r\n } else {\r\n console.warn(\"No Response Data!\");\r\n return undefined;\r\n }\r\n })\r\n .catch(function (error) {\r\n adapter.setObjectNotExists(\"errorMessage\", {\r\n type: \"state\",\r\n common: {\r\n name: \"errorMessage\",\r\n type: \"string\",\r\n role: \"indicator\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n adapter.setState(\r\n \"errorMessage\",\r\n error.response?.data?.code + \" - \" + error.response.data.msg,\r\n );\r\n\r\n if (error.response?.data?.code && error.response?.data?.msg) {\r\n // The request was made and the server responded with a status code\r\n // that falls out of the range of 2xx\r\n adapter.log.error(\r\n \"Failed to created Zendure Developer Account: \" +\r\n error.response?.data?.code +\r\n \" - \" +\r\n error.response.data.msg,\r\n );\r\n }\r\n\r\n return Promise.reject(\"Failed to created Zendure Developer Account!\");\r\n });\r\n};*/\r\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAqC;AAErC,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,QAAM,OAAO,OAAO;AAAA,IAClB,GAAG,QAAQ,OAAO,YAAY,QAAQ,OAAO;AAAA,EAC/C,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;AA3ChC;AA4CQ,UAAI,SAAS,KAAK,SAAS;AACzB,gBAAQ,IAAI,KAAK,+BAA+B;AAEhD,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,sCAAsC;AAAA,IAC9D,CAAC;AAAA,EACL;AAAO,WAAO,QAAQ,OAAO,aAAa;AAC5C;AAEO,MAAM,gBAAgB,CAC3B,YACuC;AAEvC,UAAQ,IAAI,MAAM,4CAA4C;AAE9D,MAAI,QAAQ,eAAe,UAAU,OAAO,SAAS;AACnD,WAAO,QAAQ,gBAAgB,YAAY,QAAQ;AAEnD,UAAM,OAAO,CAAC;AAEd,QAAI,QAAQ;AAEZ,QAAI,QAAQ,OAAO,UAAU,MAAM;AACjC,cAAQ;AAAA,IACV,OAAO;AACL,cAAQ;AAAA,IACV;AAEA,WAAO,aAAAA,QACJ,KAAK,MAAM,6BAA6B,KAAK,UAAU,IAAI,GAAG,MAAM,EACpE,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,wBAAwB;AAC1C,WAAO,QAAQ,OAAO,wBAAwB;AAAA,EAChD;AACF;",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nimport { pathsEu, pathsGlobal } from \"../constants/paths\";\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 to 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(\"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.setState(\"errorMessage\", \"no_error\");\r\n adapter.log.debug(\"Getting device list from Zendure Rest API!\");\r\n\r\n if (adapter.accessToken && config && config.headers) {\r\n config.headers[\"Blade-Auth\"] = \"bearer \" + adapter.accessToken;\r\n\r\n const body = {};\r\n\r\n let paths = undefined;\r\n\r\n if (adapter.config.server == \"eu\") {\r\n paths = pathsEu;\r\n } else {\r\n paths = pathsGlobal;\r\n }\r\n\r\n return axios\r\n .post(paths.solarFlowQueryDeviceListUrl, JSON.stringify(body), config)\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(\"No Access Token found!\");\r\n return Promise.reject(\"No Access Token found!\");\r\n }\r\n};\r\n\r\n/* export const createDeveloperAccount = (adapter: ZendureSolarflow) => {\r\n adapter.log.info(\"Function createDeveloperAccount\");\r\n\r\n adapter.setState(\"errorMessage\", \"\");\r\n\r\n const body = {\r\n snNumber: adapter.snNumber,\r\n account: adapter.config.userName,\r\n };\r\n\r\n let paths = undefined;\r\n\r\n if (adapter.config.server == \"eu\") {\r\n paths = pathsEu;\r\n } else {\r\n paths = pathsGlobal;\r\n }\r\n\r\n return axios\r\n .post(paths.solarFlowDevRegisterUrl, JSON.stringify(body), config)\r\n .then(function (response) {\r\n adapter.log.info(\"Successfully created Developer Account!\");\r\n\r\n if (response.data && response.data.success == true) {\r\n return response.data.data;\r\n } else {\r\n console.warn(\"No Response Data!\");\r\n return undefined;\r\n }\r\n })\r\n .catch(function (error) {\r\n adapter.setObjectNotExists(\"errorMessage\", {\r\n type: \"state\",\r\n common: {\r\n name: \"errorMessage\",\r\n type: \"string\",\r\n role: \"indicator\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n adapter.setState(\r\n \"errorMessage\",\r\n error.response?.data?.code + \" - \" + error.response.data.msg,\r\n );\r\n\r\n if (error.response?.data?.code && error.response?.data?.msg) {\r\n // The request was made and the server responded with a status code\r\n // that falls out of the range of 2xx\r\n adapter.log.error(\r\n \"Failed to created Zendure Developer Account: \" +\r\n error.response?.data?.code +\r\n \" - \" +\r\n error.response.data.msg,\r\n );\r\n }\r\n\r\n return Promise.reject(\"Failed to created Zendure Developer Account!\");\r\n });\r\n};*/\r\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAqC;AAErC,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;AAnDhC;AAoDQ,UAAI,SAAS,KAAK,SAAS;AACzB,gBAAQ,IAAI,KAAK,+BAA+B;AAEhD,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,sCAAsC;AAAA,IAC9D,CAAC;AAAA,EACL;AAAO,WAAO,QAAQ,OAAO,aAAa;AAC5C;AAEO,MAAM,gBAAgB,CAC3B,YACuC;AAEvC,UAAQ,IAAI,MAAM,4CAA4C;AAE9D,MAAI,QAAQ,eAAe,UAAU,OAAO,SAAS;AACnD,WAAO,QAAQ,YAAY,IAAI,YAAY,QAAQ;AAEnD,UAAM,OAAO,CAAC;AAEd,QAAI,QAAQ;AAEZ,QAAI,QAAQ,OAAO,UAAU,MAAM;AACjC,cAAQ;AAAA,IACV,OAAO;AACL,cAAQ;AAAA,IACV;AAEA,WAAO,aAAAA,QACJ,KAAK,MAAM,6BAA6B,KAAK,UAAU,IAAI,GAAG,MAAM,EACpE,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,wBAAwB;AAC1C,WAAO,QAAQ,OAAO,wBAAwB;AAAA,EAChD;AACF;",
6
6
  "names": ["axios"]
7
7
  }
package/io-package.json CHANGED
@@ -1,8 +1,73 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zendure-solarflow",
4
- "version": "1.0.7",
4
+ "version": "1.1.4",
5
5
  "news": {
6
+ "1.1.4": {
7
+ "en": "Fix timeout issues",
8
+ "de": "Timeout Probleme beheben",
9
+ "ru": "Вопросы таймаута",
10
+ "pt": "Corrigir problemas de tempo limite",
11
+ "nl": "Timeout-problemen oplossen",
12
+ "fr": "Correction des problèmes de délai",
13
+ "it": "Risolvere i problemi di timeout",
14
+ "es": "Arreglar los problemas de tiempo",
15
+ "pl": "Popraw problemy z czasem",
16
+ "uk": "Фіксація термінів",
17
+ "zh-cn": "解决超时问题"
18
+ },
19
+ "1.1.3": {
20
+ "en": "Fix timeout issues",
21
+ "de": "Timeout Probleme beheben",
22
+ "ru": "Вопросы таймаута",
23
+ "pt": "Corrigir problemas de tempo limite",
24
+ "nl": "Timeout-problemen oplossen",
25
+ "fr": "Correction des problèmes de délai",
26
+ "it": "Risolvere i problemi di timeout",
27
+ "es": "Arreglar los problemas de tiempo",
28
+ "pl": "Popraw problemy z czasem",
29
+ "uk": "Фіксація термінів",
30
+ "zh-cn": "解决超时问题"
31
+ },
32
+ "1.1.2": {
33
+ "en": "Fix timeout issues",
34
+ "de": "Timeout Probleme beheben",
35
+ "ru": "Вопросы таймаута",
36
+ "pt": "Corrigir problemas de tempo limite",
37
+ "nl": "Timeout-problemen oplossen",
38
+ "fr": "Correction des problèmes de délai",
39
+ "it": "Risolvere i problemi di timeout",
40
+ "es": "Arreglar los problemas de tiempo",
41
+ "pl": "Popraw problemy z czasem",
42
+ "uk": "Фіксація термінів",
43
+ "zh-cn": "解决超时问题"
44
+ },
45
+ "1.1.1": {
46
+ "en": "Fix timeout issues",
47
+ "de": "Timeout Probleme beheben",
48
+ "ru": "Вопросы таймаута",
49
+ "pt": "Corrigir problemas de tempo limite",
50
+ "nl": "Timeout-problemen oplossen",
51
+ "fr": "Correction des problèmes de délai",
52
+ "it": "Risolvere i problemi di timeout",
53
+ "es": "Arreglar los problemas de tiempo",
54
+ "pl": "Popraw problemy z czasem",
55
+ "uk": "Фіксація термінів",
56
+ "zh-cn": "解决超时问题"
57
+ },
58
+ "1.1.0": {
59
+ "en": "Switched solar input 1 und 2 to adjust the behavior like the offical app\nAdded Calculations folder, remaining charge and discharge time is now available as formatted time\nAdded a note in the settings that this adapter only works with the global server",
60
+ "de": "Solareingang 1 und 2 zum Einstellen des Verhaltens wie die Offical App\nHinzufügen Berechnungsordner, Restladung und Entladung Zeit ist jetzt als formatierte Zeit verfügbar\nFügen Sie eine Notiz in den Einstellungen hinzu, die dieser Adapter nur mit dem globalen Server funktioniert",
61
+ "ru": "Переключение солнечного ввода 1 und 2 для корректировки поведения, как оффическое приложение\nДобавить папку расчета, оставшееся время заряда и выгрузки теперь доступно как отформатированное время\nДобавлена нота в настройках, что этот адаптер работает только с глобальным сервером",
62
+ "pt": "Entrada solar comutada 1 und 2 para ajustar o comportamento como o aplicativo offical\nAdicionado pasta Cálculos, restante carga e tempo de descarga está agora disponível como tempo formatado\nAdicionado uma nota nas configurações que este adaptador só funciona com o servidor global",
63
+ "nl": "Schakelde zonne-input 1 und 2 om het gedrag aan te passen zoals de officale app\nToegevoegde rekenmap, resterende lading en ontladingstijd is nu beschikbaar als geformatteerde tijd\nEen opmerking toegevoegd in de instellingen dat deze adapter alleen werkt met de globale server",
64
+ "fr": "Entrée solaire commutée 1 et 2 pour ajuster le comportement comme l'application offical\nAjout du dossier Calculs, la charge restante et le temps de décharge sont maintenant disponibles en formatage\nAjout d'une note dans les paramètres que cet adaptateur ne fonctionne qu'avec le serveur global",
65
+ "it": "Ingresso solare commutato 1 und 2 per regolare il comportamento come l'app offical\nAggiunta cartella Calculazioni, carica rimanente e tempo di scarico è ora disponibile come tempo formattato\nAggiunto una nota nelle impostazioni che questo adattatore funziona solo con il server globale",
66
+ "es": "Interrupción de entrada solar 1 und 2 para ajustar el comportamiento como la aplicación offical\nCarpeta de cálculos añadidos, tiempo de carga y descarga restante está disponible ahora como tiempo formateado\nSe agregó una nota en la configuración que este adaptador sólo funciona con el servidor global",
67
+ "pl": "Switched solar input 1 und 2 to adjustic the behavior like the official app\nDodano folder Obliczeń, pozostały czas ładowania i rozładowania jest teraz dostępny jako sformatowany czas\nDodano notatkę w ustawieniach, że ten adapter działa tylko z globalnym serwerem",
68
+ "uk": "Переключений сонячний вхід 1 унд 2 для регулювання поведінки, як офичний додаток\nДодано папку Розрахунок, що залишився заряд і час розряду тепер доступний як форматований час\nДодано замітку в налаштуваннях, які цей адаптер працює тільки з глобальним сервером",
69
+ "zh-cn": "切换太阳输入 1 und 2 以调整类似外科应用的行为\n已添加计算文件夹、剩余充电和放电时间已作为格式化时间提供\n在设置中添加了一个注释, 该适配器只与全局服务器工作"
70
+ },
6
71
  "1.0.7": {
7
72
  "en": "Add control for charge and discharge limit\nUpdate Readme Screenshot",
8
73
  "de": "Steuerung für Lade- und Entladegrenzen hinzufügen\nUpdate Readme Screenshot",
@@ -28,71 +93,6 @@
28
93
  "pl": "Aktualizacja Readme",
29
94
  "uk": "Оновлення Readme",
30
95
  "zh-cn": "更新读取器"
31
- },
32
- "1.0.5": {
33
- "en": "Added state for both Solarflow PV inputs",
34
- "de": "Zusätzlicher Zustand für beide Solarflow PV-Eingänge",
35
- "ru": "Добавленное состояние для обоих компонентов Solarflow PV",
36
- "pt": "Estado adicionado para ambas as entradas Solarflow PV",
37
- "nl": "Toegevoegde toestand voor beide Solarflow PV-inputs",
38
- "fr": "État ajouté pour les deux entrées Solarflow PV",
39
- "it": "Stato aggiunto per entrambi gli ingressi Solarflow PV",
40
- "es": "Estado añadido para ambas entradas de PV de flujo solar",
41
- "pl": "Dodano stan dla obu wejść Solarflow PV",
42
- "uk": "Додано стан для обох вхідних сонячних батарей",
43
- "zh-cn": "两种太阳流光电输入的添加状态"
44
- },
45
- "1.0.4": {
46
- "en": "Added Timeout for axios",
47
- "de": "Timeout für Axios hinzugefügt",
48
- "ru": "Добавлено Timeout для axios",
49
- "pt": "Adicionado Timeout para axios",
50
- "nl": "Axios",
51
- "fr": "Ajout du timeout pour axios",
52
- "it": "Aggiunto Timeout per assios",
53
- "es": "Tiempo añadido para el eje",
54
- "pl": "Added Timeout",
55
- "uk": "Додано час для axios",
56
- "zh-cn": "增加焦虑时间"
57
- },
58
- "1.0.3": {
59
- "en": "Password is now encrypted. NOTE: You have to re-enter the password after adapter update!",
60
- "de": "Passwort ist jetzt verschlüsselt. HINWEIS: Sie müssen das Passwort nach dem Update des Adapters neu eingeben!",
61
- "ru": "Пароль теперь зашифрован. ПРИМЕЧАНИЕ: Вы должны повторно ввести пароль после обновления адаптера!",
62
- "pt": "A senha é agora criptografada. NOTA: Você tem que reinserir a senha após a atualização do adaptador!",
63
- "nl": "Het wachtwoord is nu versleuteld. Je moet het wachtwoord herstellen na de update van de adapter!",
64
- "fr": "Le mot de passe est désormais crypté. REMARQUE: Vous devez retourner le mot de passe après la mise à jour de l'adaptateur!",
65
- "it": "La password è ora crittografata. NOTA: Devi reinserire la password dopo l'aggiornamento dell'adattatore!",
66
- "es": "La contraseña está ahora encriptada. NOTA: ¡Tienes que volver a introducir la contraseña después de la actualización del adaptador!",
67
- "pl": "Obecnie hasło jest szyfrowane. NOTE: Musisz wrócić do hasła po adapteru!",
68
- "uk": "Пароль тепер зашифрований. ОНОВЛЕННЯ: Ви повинні повторно реєструвати пароль після оновлення адаптера!",
69
- "zh-cn": "护照现在加密。 注:你必须在适应者更新之后重新加入文字。!"
70
- },
71
- "1.0.2": {
72
- "en": "Adapter improvements suggested by iobroker team\nFixed battery pack temperature (data is in kelvin, so now converting to celcius)",
73
- "de": "Adapter Verbesserungen vorgeschlagen von iobroker team\nFeste Akku-Pack-Temperatur (Daten sind in Kelvin, also jetzt in celcius umwandeln)",
74
- "ru": "Улучшения адаптера, предложенные командой iobroker\nФиксированная температура аккумулятора (данные находятся в kelvin, поэтому теперь преобразование в celcius)",
75
- "pt": "Melhorias do adaptador sugeridas pela equipe iobroker\nTemperatura do pacote de bateria fixa (os dados estão em kelvin, então agora convertendo em celcius)",
76
- "nl": "Adapter verbetering suggereert\nGerepareerde batterijttemperatuur (data is in kelvin, dus nu omkeren naar Cecius)",
77
- "fr": "Amélioration de l'adaptateur suggérée par l'équipe iobroker\nTempérature de la batterie fixe (les données sont dans kelvin, donc maintenant convertir en celcius)",
78
- "it": "Miglioramenti dell'adattatore suggeriti dal team di iobroker\nTemperatura del pacchetto batterie fissa (i dati sono in kelvin, quindi ora convertiti in celcius)",
79
- "es": "Mejoras del adaptador sugeridas por el equipo de iobroker\nTemperatura de paquete de batería fija (data está en kelvin, por lo que ahora se convierte en celcio)",
80
- "pl": "Adapter ulepszenia sugerowały zespół iobroker\nFixed battery pack temperature (data jest w kelvinu, więc teraz przekształca się w celcius)",
81
- "uk": "Покращення адаптерів, запропонованих командою iobroker\nФіксована температура пакета акумулятора (data is in kelvin, тому тепер перетворюється в celcius)",
82
- "zh-cn": "气雾器组建议的改进\n固定电池的包装温度(数据是镍vin,因此现在转换为管道)。"
83
- },
84
- "1.0.1": {
85
- "en": "Fix translations\nUse 'extendObjectAsync' instead of 'setObjectNotExistsAsync'\nFirst official release version",
86
- "de": "Übersetzungen löschen\nErweiterung ObjectAsync statt Set Gegenstand NichtExistsAsync\nErste offizielle Version",
87
- "ru": "Fix переводы\nИспользуйте удлинить ObjectAsync вместо набора Объект NotExistsAsync\nПервая официальная версия релиза",
88
- "pt": "Corrigir traduções\nUso de extensão ObjectAsync em vez de set Objeto NotExistsAsync\nPrimeira versão oficial do lançamento",
89
- "nl": "Vertaling:\nGebruik verlenging ObjectAsync in plaats van Object NCIS Los Angeles\nEerste officiële vrijlating",
90
- "fr": "Traductions fixes\nExtension d ' utilisation ObjectAsync au lieu de set Objet NotExistsAsync\nPremière version officielle",
91
- "it": "Fissare le traduzioni\nEsterni di utilizzo ObjectAsync invece di set Oggetto Non esiste\nPrima versione ufficiale di rilascio",
92
- "es": "Traducción fija\nAmpliación de uso ObjectAsync en lugar de set Objeto NoExistsAsync\nPrimera versión oficial",
93
- "pl": "Tłumaczenia Fix\nRozszerzenie ObjectAsync zamiast zbioru obiekt NotExsAsync\nOficjalna wersja",
94
- "uk": "Виправлення перекладів\nВикористання розширення Об'єктАсинхрон замість набору Об'єкт НеExistsAsync\nПерша офіційна версія випуску",
95
- "zh-cn": "固定翻译\n使用 反对 目 录 专家\n第一次正式释放"
96
96
  }
97
97
  },
98
98
  "title": "Zendure Solarflow",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.zendure-solarflow",
3
- "version": "1.0.7",
3
+ "version": "1.1.4",
4
4
  "description": "zendure-solarflow",
5
5
  "author": {
6
6
  "name": "Peter",
@@ -17,7 +17,7 @@
17
17
  "url": "https://github.com/nograx/ioBroker.zendure-solarflow.git"
18
18
  },
19
19
  "engines": {
20
- "node": ">= 16"
20
+ "node": ">= 18"
21
21
  },
22
22
  "dependencies": {
23
23
  "@iobroker/adapter-core": "^3.0.4",