iobroker.zendure-solarflow 1.8.5 → 1.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 if (response.data?.data?.userId) {\r\n adapter.userId = response.data?.data?.userId;\r\n }\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;AAChE,aAAI,oBAAS,SAAT,mBAAe,SAAf,mBAAqB,QAAQ;AAC/B,kBAAQ,UAAS,oBAAS,SAAT,mBAAe,SAAf,mBAAqB;AAAA,QACxC;AAEA,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;",
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\nexport const login = (\r\n adapter: ZendureSolarflow\r\n): Promise<string | undefined> => {\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 adapter.log.info(\"[login] Axios config is invalid!\");\r\n return Promise.reject(undefined);\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 if (response.data?.data?.userId) {\r\n adapter.userId = response.data?.data?.userId;\r\n }\r\n\r\n if (response.data?.data?.accessToken) {\r\n return response.data.data.accessToken;\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n });\r\n } else {\r\n return Promise.reject(undefined);\r\n }\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;AAEO,MAAM,QAAQ,CACnB,YACgC;AAChC,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,YAAQ,IAAI,KAAK,kCAAkC;AACnD,WAAO,QAAQ,OAAO,MAAS;AAAA,EACjC;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;AApDhC;AAqDQ,UAAI,SAAS,KAAK,SAAS;AACzB,gBAAQ,IAAI,KAAK,+CAA+C;AAChE,aAAI,oBAAS,SAAT,mBAAe,SAAf,mBAAqB,QAAQ;AAC/B,kBAAQ,UAAS,oBAAS,SAAT,mBAAe,SAAf,mBAAqB;AAAA,QACxC;AAEA,aAAI,oBAAS,SAAT,mBAAe,SAAf,mBAAqB,aAAa;AACpC,iBAAO,SAAS,KAAK,KAAK;AAAA,QAC5B;AAAA,MACF,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACL,OAAO;AACL,WAAO,QAAQ,OAAO,MAAS;AAAA,EACjC;AACF;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,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zendure-solarflow",
4
- "version": "1.8.5",
4
+ "version": "1.8.7",
5
5
  "news": {
6
+ "1.8.7": {
7
+ "en": "Fix missing control states for AIO",
8
+ "de": "Fehlende Kontrollzustände für AIO behoben",
9
+ "ru": "Исправление недостающих состояний управления для AIO",
10
+ "pt": "Corrigir estados de controle ausentes para AIO",
11
+ "nl": "Fix ontbrekende controlestaten voor AIO",
12
+ "fr": "Correction des états de contrôle manquants pour AIO",
13
+ "it": "Fissare gli stati di controllo mancanti per AIO",
14
+ "es": "Fijar estados de control perdidos para AIO",
15
+ "pl": "Napraw brakujące stany kontroli dla AIO",
16
+ "uk": "Виправлення відсутніх контрольних станів для AIO",
17
+ "zh-cn": "为 AIO 修复缺失的控制状态"
18
+ },
19
+ "1.8.6": {
20
+ "en": "Change login method: Added a retry loop for connecting to Zendure Cloud, if the Cloud Service \"hangs\" or is not available it will retry the connection 3 times.",
21
+ "de": "Login-Methode ändern: Hinzugefügt eine Retry-Loop für die Verbindung mit Zendure Cloud, wenn der Cloud Service \"Ändert\" oder nicht verfügbar ist, wird es die Verbindung 3 mal wiederherzustellen.",
22
+ "ru": "Изменение метода входа: Добавлена петля для подключения к Zendure Cloud, если облачная служба «висит» или недоступна, она перепробует соединение 3 раза.",
23
+ "pt": "Alterar método de login: Adicionado um loop de retificação para se conectar ao Zendure Cloud, se o serviço de nuvem \"hangs\" ou não está disponível ele vai retenta a conexão 3 vezes.",
24
+ "nl": "Aanmeldmethode wijzigen: Een retry-lus toegevoegd om verbinding te maken met Zendure Cloud, als de Cloud Service \"hangt\" of niet beschikbaar is, zal het de verbinding 3 keer opnieuw proberen.",
25
+ "fr": "Modifier la méthode de connexion & #160;: Ajout d'une boucle de réessayer pour se connecter à Zendure Cloud, si le service Cloud \"hangs\" ou n'est pas disponible, il réessayera la connexion 3 fois.",
26
+ "it": "Modifica del metodo di login: Aggiunto un loop di riprovazione per il collegamento a Zendure Cloud, se il servizio cloud \"impicca\" o non è disponibile, riproverà la connessione 3 volte.",
27
+ "es": "Cambiar método de inicio de sesión: Se agregó un bucle de reingreso para conectarse a Zendure Cloud, si el Servicio Cloud \"hangs\" o no está disponible, volverá a iniciar la conexión 3 veces.",
28
+ "pl": "Zmień metodę logowania: Dodano pętlę ponowną do podłączenia do Zharb Cloud, jeśli Cloud Service \"zawiśnie\" lub nie jest dostępna, ponownie wypróbuje połączenie 3 razy.",
29
+ "uk": "Спосіб зміни логіки: Додана птиця петля для підключення до Zendure Cloud, якщо Хмарна служба \"хвишки\" або не доступна вона буде переробляти з'єднання 3 рази.",
30
+ "zh-cn": "更改登录方法 : 添加了连接到 Zendure 云的重试循环, 如果云服务“ hangs” 或无法使用, 它将重试连接三次 ."
31
+ },
6
32
  "1.8.5": {
7
33
  "en": "Fix missing states for new HUB Firmware when connected to ACE\nFix corrent max value for AIO",
8
34
  "de": "Fix fehlende Zustände für neue HUB Firmware, wenn mit ACE verbunden\nKorrent max Wert für AIO festsetzen",
@@ -67,32 +93,6 @@
67
93
  "pl": "Napraw obsługę urządzeń 'Hyper _ Test'\nUlepszony kodeks tworzenia państwa",
68
94
  "uk": "Фіксована підтримка пристроїв «Hyper_Test»\nПокращений код для державного створення",
69
95
  "zh-cn": "修正“ Hyper_ test” 设备的支持\n改进国家创建的代码"
70
- },
71
- "1.7.5": {
72
- "en": "Fix controlling AC mode for Hyper 2000 (set acMode to 1: Charge by AC, 2: Output to AC)\nShow product name in channel name\nShow battery type as state in packData\nShow Hyper Temperature in States",
73
- "de": "Fix Controlling AC-Modus für Hyper 2000 (Set acMode auf 1: Lade durch AC, 2: Ausgabe auf AC)\nProduktname in Kanalname anzeigen\nBatterietyp als Zustand in packData anzeigen\nHypertemperatur in den Staaten anzeigen",
74
- "ru": "Fix-управляющий режим переменного тока для Hyper 2000 (настройка acMode до 1: Зарядка AC, 2: Выход к AC)\nПоказать имя продукта в названии канала\nПоказать тип батареи как состояние в упаковкеДата\nПоказать гипертемпературу в Штатах",
75
- "pt": "Fix control modo AC para Hyper 2000 (set acMode para 1: Carga por AC, 2: Saída para AC)\nMostrar nome do produto no nome do canal\nMostrar tipo de bateria como estado em packData\nMostrar temperatura de Hyper nos Estados Unidos",
76
- "nl": "Fix controlling AC mode voor Hyper 2000 (set acMode to 1: Charge by AC, 2: Output to AC)\nProductnaam tonen in kanaalnaam\nAccutype tonen als status in packData\nHypertemperatuur in staten tonen",
77
- "fr": "Correction de la commande du mode AC pour Hyper 2000 (réglage acMode à 1: Charge par AC, 2: Sortie vers AC)\nAfficher le nom du produit dans le nom du canal\nAfficher le type de batterie comme état dans packDonnées\nAfficher l'hypertempérature dans les états",
78
- "it": "Fissare la modalità AC di controllo per Hyper 2000 (impostare acMode 1: Carica tramite AC, 2: Uscita su AC)\nMostra il nome del prodotto nel nome del canale\nMostra il tipo di batteria come stato in packData\nMostra Hyper Temperature negli Stati",
79
- "es": "Fijar el modo AC controlador para Hyper 2000 (set acMode a 1: Carga por AC, 2: Salida a AC)\nMostrar nombre del producto en nombre del canal\nMostrar tipo de batería como estado en packData\nMostrar hipertemperatura en Estados Unidos",
80
- "pl": "Poprawiony tryb sterowania AC dla Hyper 2000 (ustawić acMode do 1: Ładowanie przez AC, 2: Wyjście do AC)\nPokaż nazwę produktu w nazwie kanału\nPokaż typ baterii jako stan w packData\nPokaż temperaturę Hyper w Stanach",
81
- "uk": "Фіксований контрольний режим змінного струму для Hyper 2000 (set acMode до 1: Charge by AC, 2: Вихід до змінного струму)\nПоказати назву продукту в назві каналів\nПоказати тип акумулятора як стан у пачціData\nПоказати гіпертемпературу в США",
82
- "zh-cn": "用于 Hyper 2000 的控制 AC 模式( 设置 acMode 到 1: 由 AC 充电, 2: 输出到 AC)\n在频道名称中显示产品名称\n在 packData 中显示电池类型\n在州内显示超温"
83
- },
84
- "1.7.4": {
85
- "en": "Set max value and step for setInputLimit",
86
- "de": "Maximaler Wert und Schritt für setInputLimit einstellen",
87
- "ru": "Установить максимальное значение и шаг для setInputLimit",
88
- "pt": "Definir valor máximo e passo para setInputLimit",
89
- "nl": "Maximale waarde en stap instellen voor setInputLimit",
90
- "fr": "Définir la valeur maximale et l'étape pour setInputLimit",
91
- "it": "Impostare il valore massimo e il passo per setInputLimit",
92
- "es": "Establecer el valor máximo y el paso para setInputLimit",
93
- "pl": "Ustaw wartość maksymalną i krok dla settInputLimit",
94
- "uk": "Встановити максимальне значення і крок для setInputLimit",
95
- "zh-cn": "设置设置的最大值和步骤"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.zendure-solarflow",
3
- "version": "1.8.5",
3
+ "version": "1.8.7",
4
4
  "description": "zendure-solarflow",
5
5
  "author": {
6
6
  "name": "Peter",