iobroker.zendure-solarflow 2.0.4 → 3.0.0-alpha.3

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.
Files changed (68) hide show
  1. package/README.md +8 -5
  2. package/admin/build/index.js +35 -35
  3. package/admin/build/index.js.map +2 -2
  4. package/build/constants/constants.js +41 -0
  5. package/build/constants/constants.js.map +7 -0
  6. package/build/helpers/helpers.js +93 -96
  7. package/build/helpers/helpers.js.map +2 -2
  8. package/build/main.js +108 -180
  9. package/build/main.js.map +2 -2
  10. package/build/models/IDeviceAutomationPayload.js.map +1 -1
  11. package/build/models/{IPack2Device.js → IDevicePack.js} +3 -3
  12. package/build/models/IDevicePack.js.map +7 -0
  13. package/build/models/{ISolarFlowDeviceDetails.js → IHaDeviceListData.js} +3 -3
  14. package/build/models/IHaDeviceListData.js.map +7 -0
  15. package/build/models/{ISolarflowDevRegisterResponse.js → IZenHaDeviceDetails.js} +3 -3
  16. package/build/models/IZenHaDeviceDetails.js.map +7 -0
  17. package/build/models/{ISolarFlowPaths.js → IZenHaMqttData.js} +3 -3
  18. package/build/models/IZenHaMqttData.js.map +7 -0
  19. package/build/models/deviceModels/Ace1500.js +77 -0
  20. package/build/models/deviceModels/Ace1500.js.map +7 -0
  21. package/build/models/deviceModels/Aio2400.js +121 -0
  22. package/build/models/deviceModels/Aio2400.js.map +7 -0
  23. package/build/models/deviceModels/Hyper2000.js +200 -0
  24. package/build/models/deviceModels/Hyper2000.js.map +7 -0
  25. package/build/models/deviceModels/Sf2400Ac.js +146 -0
  26. package/build/models/deviceModels/Sf2400Ac.js.map +7 -0
  27. package/build/models/deviceModels/Sf800.js +144 -0
  28. package/build/models/deviceModels/Sf800.js.map +7 -0
  29. package/build/models/deviceModels/SfHub1200.js +179 -0
  30. package/build/models/deviceModels/SfHub1200.js.map +7 -0
  31. package/build/models/deviceModels/SfHub2000.js +177 -0
  32. package/build/models/deviceModels/SfHub2000.js.map +7 -0
  33. package/build/models/deviceModels/ZenHaDevice.js +1093 -0
  34. package/build/models/deviceModels/ZenHaDevice.js.map +7 -0
  35. package/build/services/jobSchedule.js +19 -58
  36. package/build/services/jobSchedule.js.map +2 -2
  37. package/build/services/mqttCloudZenService.js +79 -0
  38. package/build/services/mqttCloudZenService.js.map +7 -0
  39. package/build/services/mqttLocalService.js +70 -0
  40. package/build/services/mqttLocalService.js.map +7 -0
  41. package/build/services/mqttSharedService.js +432 -0
  42. package/build/services/mqttSharedService.js.map +7 -0
  43. package/build/services/zenWebService.js +84 -0
  44. package/build/services/zenWebService.js.map +7 -0
  45. package/io-package.json +70 -27
  46. package/package.json +2 -2
  47. package/build/constants/paths.js +0 -52
  48. package/build/constants/paths.js.map +0 -7
  49. package/build/helpers/createSolarFlowLocalStates.js +0 -113
  50. package/build/helpers/createSolarFlowLocalStates.js.map +0 -7
  51. package/build/helpers/createSolarFlowStates.js +0 -193
  52. package/build/helpers/createSolarFlowStates.js.map +0 -7
  53. package/build/models/IPack2Device.js.map +0 -7
  54. package/build/models/ISolarFlowDeviceDetails.js.map +0 -7
  55. package/build/models/ISolarFlowPaths.js.map +0 -7
  56. package/build/models/ISolarflowDevRegisterResponse.js.map +0 -7
  57. package/build/services/adapterService.js +0 -142
  58. package/build/services/adapterService.js.map +0 -7
  59. package/build/services/calculationService.js +0 -350
  60. package/build/services/calculationService.js.map +0 -7
  61. package/build/services/fallbackMqttService.js +0 -461
  62. package/build/services/fallbackMqttService.js.map +0 -7
  63. package/build/services/fallbackWebService.js +0 -80
  64. package/build/services/fallbackWebService.js.map +0 -7
  65. package/build/services/mqttService.js +0 -1545
  66. package/build/services/mqttService.js.map +0 -7
  67. package/build/services/webService.js +0 -119
  68. package/build/services/webService.js.map +0 -7
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zendure-solarflow",
4
- "version": "2.0.4",
4
+ "version": "3.0.0-alpha.3",
5
5
  "news": {
6
+ "3.0.0-alpha.3": {
7
+ "en": "Breaking Change: Change authentication to \"authentication cloud key\". You can generate a key in the official zendure app\nRemoved fallback server\nAdd deviceKey 'a4ss5P' for Solarflow 800\nRefactor a lot of code",
8
+ "de": "Veränderung: Ändern Sie die Authentifizierung auf \"Authentifizierungs-Cloud-Taste\". Sie können einen Schlüssel in der offiziellen Zendure-App generieren\nEntfernen von Fallback-Server\nGerät hinzufügenKey 'a4ss5P' für Solarflow 800\nRefactor eine Menge Code",
9
+ "ru": "Переломные изменения: Измените аутентификацию на «облачный ключ аутентификации». Вы можете создать ключ в официальном приложении zendure\nУдаленный сервер Fallback\nДобавить устройствоKey ‘a4ss5P для Solarflow 800\nРефактор много кода",
10
+ "pt": "Quebrar a Mudança: Alterar autenticação para \"chave de nuvem de autenticação\". Você pode gerar uma chave no aplicativo oficial zendure\nServidor de reserva removido\nAdicionar dispositivoKey 'a4ss5P' para Solarflow 800\nRefactorar um monte de código",
11
+ "nl": "Verandering doorbreken: Authenticatie wijzigen naar \"authentication cloud key.\" U kunt een sleutel genereren in de officiële zindure app\nTerugvalserver verwijderd\nApparaat toevoegenKey 'a4ss5P' voor Solarflow 800\nRefactor veel code",
12
+ "fr": "Briser le changement : Changez l'authentification en \"clé de nuage d'authentification\". Vous pouvez générer une clé dans l'application officielle zendure\nServeur de repli supprimé\nAjouter la clé 'a4ss5P' pour Solarflow 800\nRefactor beaucoup de code",
13
+ "it": "Cambiamento di rottura: Modificare l'autenticazione a \"chiave cloud di autenticazione\". È possibile generare una chiave nell'app ufficiale zendure\nServer di failback rimosso\nAggiungi dispositivoKey 'a4ss5P' per Solarflow 800\nRefactor un sacco di codice",
14
+ "es": "Cambio de ruptura: Cambiar la autenticación a \"la clave de nube de autenticación\". Usted puede generar una clave en la aplicación oficial de zendure\nServidor de retroceso eliminado\nAñadir dispositivoKey 'a4s5P' para el flujo solar 800\nRefactor mucho código",
15
+ "pl": "Łamanie zmian: Zmień uwierzytelnianie na \"klucz do uwierzytelniania w chmurze\". Możesz wygenerować klucz w oficjalnej aplikacji Zabb\nUsunięto serwer awaryjny\nDodaj deviceKey 'a4ss5P' dla Solarflow 800\nZmień dużo kodu",
16
+ "uk": "Зміна несправностей: Зміна автентифікації на \"автентифікаційний ключ хмари\". Ви можете генерувати ключ в офіційному додатку zendure\nВидалити резервний сервер\nДодати пристрійKey 'a4ss5P' для Solarflow 800\nРефактор багато коду",
17
+ "zh-cn": "中断更改 : 认证改为\"认证云密钥\". 您可以在正式 Zendure app 中生成密钥\n删除后退服务器\n为 Solarflow 800 添加设备Key 'a4ss5P'\n重构很多代码"
18
+ },
6
19
  "2.0.4": {
7
20
  "en": "Fix creation of control states on new Hyper 2000 v3\nUpdates dependencies",
8
21
  "de": "Behebung der Erstellung von Steuerungszuständen auf dem neuen Hyper 2000 v3\nAktualisiert Abhängigkeiten",
@@ -67,32 +80,6 @@
67
80
  "pl": "Łamanie zmian: Dodaj parametr sterowania 'setDeviceAutomationInOutLimit', który emuluje tryb inteligentnego dopasowywania Zhamb. Ponieważ pojawiły się obawy, że w pamięci flash zostaną zapisane granice ustawień, zalecam stosowanie automatyzacji tego urządzenia zamiast 'setInputLimit' / 'setOutputLimit'. Możesz użyć wartości ujemnych do ładowania i dodatnich do podawania.",
68
81
  "uk": "Зміна несправностей: Додавання параметра керування «setDeviceAutomationInOutLimit», який визначає режим Smart Matching Zendure. З тих пір, як було занепокоєння, що обмеження налаштування будуть зберігатися в флеш-пам'яті, я рекомендую використовувати цей пристрій автоматизації замість 'setInputLimit'/'setOutputLimit' відтепер. Ви можете використовувати негативні значення для зарядки та позитиву для живлення.",
69
82
  "zh-cn": "中断更改 : 添加模拟 Zendure 智能匹配模式的控制参数“ set DeviceAutomation InOutLimit ” 。 由于有人担心设定限制会存储在闪存中,我建议从现在开始使用这个设备自动化,而不是“setInputLimit”/“setOutputLimit”. 可以使用负值充电,正值用于饲料输入."
70
- },
71
- "2.0.0-alpha.0": {
72
- "en": "Breaking Change: Add control parameter 'setDeviceAutomation' which emulates Zendure's Smart Matching mode. Since there were concerns that setting limits would be stored in the flash memory, I recommend using this device automation instead of 'setInputLimit'/'setOutputLimit' from now on. You can use negative values for charging and positive for feed in.",
73
- "de": "Veränderung: Fügen Sie den Steuerparameter 'setDeviceAutomation' hinzu, der den Smart Matching-Modus von Zendure emuliert. Da Bedenken bestehen, dass Einstellgrenzen im Flash-Speicher gespeichert werden würden, empfehle ich die Verwendung dieser Geräteautomatisierung anstelle von 'setInputLimit'/'setOutputLimit' von jetzt an. Sie können negative Werte für das Laden und positiv für das Einspeisen verwenden.",
74
- "ru": "Переломные изменения: Добавьте параметр управления «setDeviceAutomation», который эмулирует режим Smart Matching от Zendure. Поскольку были опасения, что установление ограничений будет храниться во флэш-памяти, я рекомендую использовать эту автоматизацию устройства вместо «setInputLimit» / «setOutputLimit». Вы можете использовать отрицательные значения для зарядки и положительные для подачи.",
75
- "pt": "Quebrar a Mudança: Adicionar parâmetro de controle 'setDeviceAutomation' que emula o modo Smart Matching da Zendure. Como havia preocupações de que a definição de limites seria armazenada na memória flash, eu recomendo usar esta automação do dispositivo em vez de 'setInputLimit'/'setOutputLimit' a partir de agora. Você pode usar valores negativos para carregar e positivos para alimentação.",
76
- "nl": "Verandering doorbreken: Voeg controleparameter 'setDeviceAutomation' toe die Zendure's Smart Matching-modus emuleert. Aangezien er bezorgdheid was dat het instellen van limieten in het flashgeheugen zou worden opgeslagen, raad ik aan om deze apparaatautomatisering te gebruiken in plaats van 'setInputLimit'/'setOutputLimit' vanaf nu. U kunt negatieve waarden gebruiken voor het opladen en positief voor voer in.",
77
- "fr": "Briser le changement : Ajouter le paramètre de contrôle 'setDeviceAutomation' qui émule le mode Smart Matching de Zendure. Étant donné qu'il y avait des inquiétudes quant au stockage des limites de réglage dans la mémoire flash, je recommande d'utiliser cette automatisation au lieu de 'setInputLimit'/'setOutputLimit' à partir de maintenant. Vous pouvez utiliser des valeurs négatives pour la charge et positives pour l'alimentation.",
78
- "it": "Cambiamento di rottura: Aggiungi il parametro di controllo 'setDeviceAutomation' che emula la modalità Smart Matching di Zendure. Poiché ci sono state preoccupazioni che i limiti di impostazione sarebbero stati memorizzati nella memoria flash, consiglio di utilizzare questo dispositivo di automazione invece di 'setInputLimit'/'setOutputLimit' da ora in poi. È possibile utilizzare valori negativi per la ricarica e positivo per il feed in.",
79
- "es": "Cambio de ruptura: Añadir parámetro de control 'setDeviceAutomation' que emula el modo Smart Matching de Zendure. Dado que había preocupaciones de que los límites de configuración se almacenarían en la memoria flash, recomiendo usar esta automatización de dispositivos en lugar de 'setInputLimit'/'setOutputLimit' de ahora en adelante. Puede utilizar valores negativos para cargar y positivos para alimentarse.",
80
- "pl": "Łamanie zmian: Dodaj parametr sterowania 'setDeviceAutomation', który emuluje tryb Smart Matching Zabada. Ponieważ pojawiły się obawy, że w pamięci flash zostaną zapisane granice ustawień, zalecam stosowanie automatyzacji tego urządzenia zamiast 'setInputLimit' / 'setOutputLimit'. Możesz użyć wartości ujemnych do ładowania i dodatnich do podawania.",
81
- "uk": "Зміна несправностей: Додавання параметра керування «setDeviceAutomation», який визначає режим Smart Matching Zendure. З тих пір, як було занепокоєння, що обмеження налаштування будуть зберігатися в флеш-пам'яті, я рекомендую використовувати цей пристрій автоматизації замість 'setInputLimit'/'setOutputLimit' відтепер. Ви можете використовувати негативні значення для зарядки та позитиву для живлення.",
82
- "zh-cn": "中断更改 : 添加模拟 Zendure 智能匹配模式的控制参数“ setDeviceAutomation ” 。 由于有人担心设定限制会存储在闪存中,我建议从现在开始使用这个设备自动化,而不是“setInputLimit”/“setOutputLimit”. 可以使用负值充电,正值用于饲料输入."
83
- },
84
- "1.15.4": {
85
- "en": "Add smart mode control parameter for more devices",
86
- "de": "Smart-Mode-Control-Parameter für mehr Geräte hinzufügen",
87
- "ru": "Добавьте параметр управления умным режимом для большего количества устройств",
88
- "pt": "Adicionar parâmetro de controle de modo inteligente para mais dispositivos",
89
- "nl": "Smart mode control parameter voor meer apparaten toevoegen",
90
- "fr": "Ajouter le paramètre de contrôle du mode intelligent pour plus de périphériques",
91
- "it": "Aggiungi il parametro di controllo della modalità intelligente per più dispositivi",
92
- "es": "Añadir parámetro de control de modo inteligente para más dispositivos",
93
- "pl": "Dodaj inteligentny parametr sterowania trybem dla większej liczby urządzeń",
94
- "uk": "Додавання параметра керування смарт-режимом для більших пристроїв",
95
- "zh-cn": "为更多设备添加智能模式控制参数"
96
83
  }
97
84
  },
98
85
  "titleLang": {
@@ -157,11 +144,67 @@
157
144
  {
158
145
  "admin": ">=7.4.10"
159
146
  }
147
+ ],
148
+ "messages": [
149
+ {
150
+ "condition": {
151
+ "operand": "and",
152
+ "rules": [
153
+ "oldVersion<3.0.0",
154
+ "newVersion>=3.0.0"
155
+ ]
156
+ },
157
+ "title": {
158
+ "en": "Important notice!",
159
+ "de": "Wichtiger Hinweis!",
160
+ "ru": "Важное замечание!",
161
+ "pt": "Notícia importante!",
162
+ "nl": "Belangrijke mededeling!",
163
+ "fr": "Avis important!",
164
+ "it": "Avviso IMPORTANTE!",
165
+ "es": "Noticia importante!",
166
+ "pl": "Ważna uwaga!",
167
+ "zh-cn": "重要通知!"
168
+ },
169
+ "text": {
170
+ "en": "BREAKING CHANGE. <br> Changed authentication with username/password to 'cloud authentication key'. You have to generate a key in the official zendure app!<br>'Fallback server' is no longer supported and removed in this version!",
171
+ "de": "ÄNDERUNG. <br> Die Authentifizierung mit Benutzername/Passwort wurde auf 'Cloud-Authentifizierungsschlüssel' geändert. Sie müssen einen Schlüssel in der offiziellen Zendure-App generieren!<br>'Fallback Server' wird nicht mehr unterstützt und in dieser Version entfernt!",
172
+ "ru": "ИЗМЕНЕНИЕ. <br> Заменена аутентификация с помощью имени пользователя/пароля на \"ключ облачной аутентификации\". Вы должны сгенерировать ключ в официальном приложении zendure!<br> \"Fallback server\" больше не поддерживается и удален в этой версии!",
173
+ "pt": "MUDANÇA DE RUPTURA. <br> Alterada a autenticação com nome de usuário/senha para 'chave de autenticação na nuvem'. Você precisa gerar uma chave no aplicativo oficial do zendure!<br>'Servidor de fallback' não é mais suportado e foi removido nesta versão!",
174
+ "nl": "BREAKING WIJZIGING. <br> Verandering van authenticatie met gebruikersnaam/wachtwoord naar 'cloud authenticatie sleutel'. Je moet een sleutel genereren in de officiële zendure app!<br>'Fallback server' wordt niet langer ondersteund en verwijderd in deze versie!",
175
+ "fr": "BREAKING CHANGE. <br>Changement de l'authentification par nom d'utilisateur/mot de passe en 'clé d'authentification cloud'. Vous devez générer une clé dans l'application officielle de zendure!<br>Le 'Fallback server' n'est plus supporté et supprimé dans cette version !",
176
+ "it": "MODIFICA DI ROTTURA. <br> Cambiata l'autenticazione con nome utente/password in 'chiave di autenticazione cloud'. È necessario generare una chiave nell'app ufficiale di zendure!<br> Il 'Fallback server' non è più supportato e viene rimosso in questa versione!",
177
+ "es": "CAMBIO DE ÚLTIMA HORA. <br> Cambiada la autenticación con nombre de usuario/contraseña a 'clave de autenticación en la nube'. Usted tiene que generar una clave en la aplicación oficial zendure!<br>'Fallback server' ya no es compatible y eliminado en esta versión!",
178
+ "pl": "PRZEŁOMOWA ZMIANA. <br> Zmieniono uwierzytelnianie za pomocą nazwy użytkownika/hasła na \"klucz uwierzytelniania w chmurze\". Musisz wygenerować klucz w oficjalnej aplikacji zendure!<br>\"Serwer awaryjny\" nie jest już obsługiwany i został usunięty w tej wersji!",
179
+ "uk": "ЗМІНА, ЩО РУЙНУЄ. <br> Змінено автентифікацію за допомогою імені користувача/пароля на \"хмарний ключ автентифікації\". Ви повинні згенерувати ключ в офіційному додатку zendure! <br>\"Резервний сервер\" більше не підтримується і вилучений у цій версії!",
180
+ "zh-cn": "BREAKING CHANGE. <br> Changed authentication with username/password to 'cloud authentication key'. You have to generate a key in the official zendure app!<br>'Fallback server' is no longer supported and removed in this version!"
181
+ },
182
+ "link": "https://github.com/nograx/ioBroker.zendure-solarflow/blob/main/README.md",
183
+ "level": "warn",
184
+ "linkText": {
185
+ "en": "Readme",
186
+ "de": "Liesmich",
187
+ "ru": "Прочти меня",
188
+ "pt": "Leia-me",
189
+ "nl": "Leesmij",
190
+ "fr": "Lisez-moi",
191
+ "it": "Leggimi",
192
+ "es": "Léame",
193
+ "pl": "Readme",
194
+ "zh-cn": "自述文件"
195
+ },
196
+ "buttons": [
197
+ "agree",
198
+ "cancel"
199
+ ]
200
+ }
160
201
  ]
161
202
  },
162
203
  "native": {
163
204
  "userName": "",
164
205
  "password": "",
206
+ "connectionMode": "authKey",
207
+ "authorizationCloudKey": "",
165
208
  "server": "global",
166
209
  "useCalculation": false,
167
210
  "useLowVoltageBlock": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.zendure-solarflow",
3
- "version": "2.0.4",
3
+ "version": "3.0.0-alpha.3",
4
4
  "description": "zendure-solarflow",
5
5
  "author": {
6
6
  "name": "Peter",
@@ -24,7 +24,7 @@
24
24
  "@iobroker/adapter-core": "^3.2.3",
25
25
  "@types/node-schedule": "^2.1.6",
26
26
  "axios": "^1.9.0",
27
- "mqtt": "^5.1.3"
27
+ "mqtt": "^5.14.1"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@alcalzone/release-script": "^3.8.0",
@@ -1,52 +0,0 @@
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 paths_exports = {};
20
- __export(paths_exports, {
21
- pathsEu: () => pathsEu,
22
- pathsGlobal: () => pathsGlobal
23
- });
24
- module.exports = __toCommonJS(paths_exports);
25
- const hostname = `app.zendure.tech`;
26
- const versionGlobal = `v2`;
27
- const versionEu = `eu`;
28
- const solarFlowDevRegisterPath = `developer/api/apply`;
29
- const solarFlowTokenPath = `auth/app/token`;
30
- const solarFlowDeviceListPath = `productModule/device/queryDeviceListByConsumerId`;
31
- const pathsGlobal = {
32
- solarFlowDevRegisterUrl: `https://${hostname}/${versionGlobal}/${solarFlowDevRegisterPath}`,
33
- solarFlowTokenUrl: `https://${hostname}/${versionGlobal}/${solarFlowTokenPath}`,
34
- solarFlowQueryDeviceListUrl: `https://${hostname}/${versionGlobal}/${solarFlowDeviceListPath}`,
35
- mqttUrl: "mq.zen-iot.com",
36
- mqttPort: 1883,
37
- mqttPassword: "b0sjUENneTZPWnhk"
38
- };
39
- const pathsEu = {
40
- solarFlowDevRegisterUrl: `https://${hostname}/${versionEu}/${solarFlowDevRegisterPath}`,
41
- solarFlowTokenUrl: `https://${hostname}/${versionEu}/${solarFlowTokenPath}`,
42
- solarFlowQueryDeviceListUrl: `https://${hostname}/${versionEu}/${solarFlowDeviceListPath}`,
43
- mqttUrl: "mqtteu.zen-iot.com",
44
- mqttPort: 1883,
45
- mqttPassword: "SDZzJGo5Q3ROYTBO"
46
- };
47
- // Annotate the CommonJS export names for ESM import in node:
48
- 0 && (module.exports = {
49
- pathsEu,
50
- pathsGlobal
51
- });
52
- //# sourceMappingURL=paths.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/constants/paths.ts"],
4
- "sourcesContent": ["import { ISolarFlowPaths } from \"../models/ISolarFlowPaths\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\nconst hostname = `app.zendure.tech`;\r\nconst versionGlobal = `v2`;\r\nconst versionEu = `eu`; // currently not used! Only the global server is ready at the moment\r\n\r\nconst solarFlowDevRegisterPath = `developer/api/apply`;\r\nconst solarFlowTokenPath = `auth/app/token`;\r\nconst solarFlowDeviceListPath = `productModule/device/queryDeviceListByConsumerId`;\r\n\r\nexport const pathsGlobal: ISolarFlowPaths = {\r\n solarFlowDevRegisterUrl: `https://${hostname}/${versionGlobal}/${solarFlowDevRegisterPath}`,\r\n solarFlowTokenUrl: `https://${hostname}/${versionGlobal}/${solarFlowTokenPath}`,\r\n solarFlowQueryDeviceListUrl: `https://${hostname}/${versionGlobal}/${solarFlowDeviceListPath}`,\r\n mqttUrl: \"mq.zen-iot.com\",\r\n mqttPort: 1883,\r\n mqttPassword: \"b0sjUENneTZPWnhk\",\r\n};\r\n\r\nexport const pathsEu: ISolarFlowPaths = {\r\n solarFlowDevRegisterUrl: `https://${hostname}/${versionEu}/${solarFlowDevRegisterPath}`,\r\n solarFlowTokenUrl: `https://${hostname}/${versionEu}/${solarFlowTokenPath}`,\r\n solarFlowQueryDeviceListUrl: `https://${hostname}/${versionEu}/${solarFlowDeviceListPath}`,\r\n mqttUrl: \"mqtteu.zen-iot.com\",\r\n mqttPort: 1883,\r\n mqttPassword: \"SDZzJGo5Q3ROYTBO\",\r\n};\r\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,MAAM,WAAW;AACjB,MAAM,gBAAgB;AACtB,MAAM,YAAY;AAElB,MAAM,2BAA2B;AACjC,MAAM,qBAAqB;AAC3B,MAAM,0BAA0B;AAEzB,MAAM,cAA+B;AAAA,EAC1C,yBAAyB,WAAW,QAAQ,IAAI,aAAa,IAAI,wBAAwB;AAAA,EACzF,mBAAmB,WAAW,QAAQ,IAAI,aAAa,IAAI,kBAAkB;AAAA,EAC7E,6BAA6B,WAAW,QAAQ,IAAI,aAAa,IAAI,uBAAuB;AAAA,EAC5F,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAChB;AAEO,MAAM,UAA2B;AAAA,EACtC,yBAAyB,WAAW,QAAQ,IAAI,SAAS,IAAI,wBAAwB;AAAA,EACrF,mBAAmB,WAAW,QAAQ,IAAI,SAAS,IAAI,kBAAkB;AAAA,EACzE,6BAA6B,WAAW,QAAQ,IAAI,SAAS,IAAI,uBAAuB;AAAA,EACxF,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAChB;",
6
- "names": []
7
- }
@@ -1,113 +0,0 @@
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 createSolarFlowLocalStates_exports = {};
20
- __export(createSolarFlowLocalStates_exports, {
21
- createSolarFlowLocalStates: () => createSolarFlowLocalStates
22
- });
23
- module.exports = __toCommonJS(createSolarFlowLocalStates_exports);
24
- var import_createCalculationStates = require("./createCalculationStates");
25
- var import_createControlStates = require("./createControlStates");
26
- var import_createSolarFlowStates = require("./createSolarFlowStates");
27
- var import_helpers = require("./helpers");
28
- const createSolarFlowLocalStates = async (adapter, productKey, deviceKey) => {
29
- productKey = productKey.replace(adapter.FORBIDDEN_CHARS, "");
30
- deviceKey = deviceKey.replace(adapter.FORBIDDEN_CHARS, "");
31
- const productName = (0, import_helpers.getProductNameFromProductKey)(productKey);
32
- if (productName == "") {
33
- adapter.log.error(
34
- `[createSolarFlowLocalStates] Unknown product (${productKey}/${deviceKey}). We cannot create control states! Please contact the developer!`
35
- );
36
- return;
37
- }
38
- adapter.log.debug(
39
- `[createSolarFlowLocalStates] Creating or updating SolarFlow states for ${productName} (${productKey}/${deviceKey}).`
40
- );
41
- await (adapter == null ? void 0 : adapter.extendObject(productKey, {
42
- type: "device",
43
- common: {
44
- name: {
45
- de: `${productName} (${productKey})`,
46
- en: `${productName} (${productKey})`
47
- }
48
- },
49
- native: {}
50
- }));
51
- await (adapter == null ? void 0 : adapter.extendObject(productKey + "." + deviceKey, {
52
- type: "channel",
53
- common: {
54
- name: {
55
- de: `Device Key ${deviceKey}`,
56
- en: `Device Key ${deviceKey}`
57
- }
58
- },
59
- native: {}
60
- }));
61
- if (productName == null ? void 0 : productName.toLowerCase().includes("smart plug")) {
62
- await (adapter == null ? void 0 : adapter.extendObject(`${productKey}.${deviceKey}.packData`, {
63
- type: "channel",
64
- common: {
65
- name: {
66
- de: "Batterie Packs",
67
- en: "Battery packs"
68
- }
69
- },
70
- native: {}
71
- }));
72
- }
73
- const states = (0, import_createSolarFlowStates.getStateDefinition)(productName);
74
- states.forEach(async (state) => {
75
- await (adapter == null ? void 0 : adapter.extendObject(`${productKey}.${deviceKey}.${state.title}`, {
76
- type: "state",
77
- common: {
78
- name: {
79
- de: state.nameDe,
80
- en: state.nameEn
81
- },
82
- type: state.type,
83
- desc: state.title,
84
- role: state.role,
85
- read: true,
86
- write: false,
87
- unit: state.unit,
88
- states: state.states
89
- },
90
- native: {}
91
- }));
92
- });
93
- await (0, import_createControlStates.createControlStates)(adapter, productKey, deviceKey, productName);
94
- if (adapter.config.useCalculation) {
95
- await (adapter == null ? void 0 : adapter.extendObject(`${productKey}.${deviceKey}.calculations`, {
96
- type: "channel",
97
- common: {
98
- name: {
99
- de: "Berechnungen f\xFCr Ger\xE4t " + deviceKey,
100
- en: "Calculations for Device " + deviceKey
101
- }
102
- },
103
- native: {}
104
- }));
105
- await (0, import_createCalculationStates.createCalculationStates)(adapter, productKey, deviceKey);
106
- } else {
107
- }
108
- };
109
- // Annotate the CommonJS export names for ESM import in node:
110
- 0 && (module.exports = {
111
- createSolarFlowLocalStates
112
- });
113
- //# sourceMappingURL=createSolarFlowLocalStates.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/helpers/createSolarFlowLocalStates.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\n\nimport { ZendureSolarflow } from \"../main\";\nimport { ISolarflowState } from \"../models/ISolarflowState\";\nimport { createCalculationStates } from \"./createCalculationStates\";\nimport { createControlStates } from \"./createControlStates\";\nimport { getStateDefinition } from \"./createSolarFlowStates\";\nimport { getProductNameFromProductKey } from \"./helpers\";\n//import { deleteCalculationStates } from \"./deleteCalculationStates\";\n\nexport const createSolarFlowLocalStates = async (\n adapter: ZendureSolarflow,\n productKey: string,\n deviceKey: string\n): Promise<void> => {\n productKey = productKey.replace(adapter.FORBIDDEN_CHARS, \"\");\n deviceKey = deviceKey.replace(adapter.FORBIDDEN_CHARS, \"\");\n\n const productName = getProductNameFromProductKey(productKey);\n\n if (productName == \"\") {\n adapter.log.error(\n `[createSolarFlowLocalStates] Unknown product (${productKey}/${deviceKey}). We cannot create control states! Please contact the developer!`\n );\n return;\n }\n\n adapter.log.debug(\n `[createSolarFlowLocalStates] Creating or updating SolarFlow states for ${productName} (${productKey}/${deviceKey}).`\n );\n\n // Create device (e.g. the product type -> SolarFlow)\n await adapter?.extendObject(productKey, {\n type: \"device\",\n common: {\n name: {\n de: `${productName} (${productKey})`,\n en: `${productName} (${productKey})`,\n },\n },\n native: {},\n });\n\n // Create channel (e.g. the device specific key)\n await adapter?.extendObject(productKey + \".\" + deviceKey, {\n type: \"channel\",\n common: {\n name: {\n de: `Device Key ${deviceKey}`,\n en: `Device Key ${deviceKey}`,\n },\n },\n native: {},\n });\n\n // Create pack data folder\n if (productName?.toLowerCase().includes(\"smart plug\")) {\n await adapter?.extendObject(`${productKey}.${deviceKey}.packData`, {\n type: \"channel\",\n common: {\n name: {\n de: \"Batterie Packs\",\n en: \"Battery packs\",\n },\n },\n native: {},\n });\n }\n\n const states = getStateDefinition(productName);\n\n states.forEach(async (state: ISolarflowState) => {\n await adapter?.extendObject(`${productKey}.${deviceKey}.${state.title}`, {\n type: \"state\",\n common: {\n name: {\n de: state.nameDe,\n en: state.nameEn,\n },\n type: state.type,\n desc: state.title,\n role: state.role,\n read: true,\n write: false,\n unit: state.unit,\n states: state.states,\n },\n native: {},\n });\n });\n\n // Create control states\n await createControlStates(adapter, productKey, deviceKey, productName);\n\n if (adapter.config.useCalculation) {\n // Create calculations folder\n await adapter?.extendObject(`${productKey}.${deviceKey}.calculations`, {\n type: \"channel\",\n common: {\n name: {\n de: \"Berechnungen f\u00FCr Ger\u00E4t \" + deviceKey,\n en: \"Calculations for Device \" + deviceKey,\n },\n },\n native: {},\n });\n\n await createCalculationStates(adapter, productKey, deviceKey);\n } else {\n //await deleteCalculationStates(adapter, productKey, deviceKey);\n }\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,qCAAwC;AACxC,iCAAoC;AACpC,mCAAmC;AACnC,qBAA6C;AAGtC,MAAM,6BAA6B,OACxC,SACA,YACA,cACkB;AAClB,eAAa,WAAW,QAAQ,QAAQ,iBAAiB,EAAE;AAC3D,cAAY,UAAU,QAAQ,QAAQ,iBAAiB,EAAE;AAEzD,QAAM,kBAAc,6CAA6B,UAAU;AAE3D,MAAI,eAAe,IAAI;AACrB,YAAQ,IAAI;AAAA,MACV,iDAAiD,UAAU,IAAI,SAAS;AAAA,IAC1E;AACA;AAAA,EACF;AAEA,UAAQ,IAAI;AAAA,IACV,0EAA0E,WAAW,KAAK,UAAU,IAAI,SAAS;AAAA,EACnH;AAGA,SAAM,mCAAS,aAAa,YAAY;AAAA,IACtC,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,IAAI,GAAG,WAAW,KAAK,UAAU;AAAA,QACjC,IAAI,GAAG,WAAW,KAAK,UAAU;AAAA,MACnC;AAAA,IACF;AAAA,IACA,QAAQ,CAAC;AAAA,EACX;AAGA,SAAM,mCAAS,aAAa,aAAa,MAAM,WAAW;AAAA,IACxD,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,IAAI,cAAc,SAAS;AAAA,QAC3B,IAAI,cAAc,SAAS;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,QAAQ,CAAC;AAAA,EACX;AAGA,MAAI,2CAAa,cAAc,SAAS,eAAe;AACrD,WAAM,mCAAS,aAAa,GAAG,UAAU,IAAI,SAAS,aAAa;AAAA,MACjE,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,QACN;AAAA,MACF;AAAA,MACA,QAAQ,CAAC;AAAA,IACX;AAAA,EACF;AAEA,QAAM,aAAS,iDAAmB,WAAW;AAE7C,SAAO,QAAQ,OAAO,UAA2B;AAC/C,WAAM,mCAAS,aAAa,GAAG,UAAU,IAAI,SAAS,IAAI,MAAM,KAAK,IAAI;AAAA,MACvE,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,IAAI,MAAM;AAAA,UACV,IAAI,MAAM;AAAA,QACZ;AAAA,QACA,MAAM,MAAM;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,MAChB;AAAA,MACA,QAAQ,CAAC;AAAA,IACX;AAAA,EACF,CAAC;AAGD,YAAM,gDAAoB,SAAS,YAAY,WAAW,WAAW;AAErE,MAAI,QAAQ,OAAO,gBAAgB;AAEjC,WAAM,mCAAS,aAAa,GAAG,UAAU,IAAI,SAAS,iBAAiB;AAAA,MACrE,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,IAAI,kCAA4B;AAAA,UAChC,IAAI,6BAA6B;AAAA,QACnC;AAAA,MACF;AAAA,MACA,QAAQ,CAAC;AAAA,IACX;AAEA,cAAM,wDAAwB,SAAS,YAAY,SAAS;AAAA,EAC9D,OAAO;AAAA,EAEP;AACF;",
6
- "names": []
7
- }
@@ -1,193 +0,0 @@
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 createSolarFlowStates_exports = {};
20
- __export(createSolarFlowStates_exports, {
21
- createSolarFlowStates: () => createSolarFlowStates,
22
- getStateDefinition: () => getStateDefinition
23
- });
24
- module.exports = __toCommonJS(createSolarFlowStates_exports);
25
- var import_ac2400States = require("../constants/ac2400States");
26
- var import_aceStates = require("../constants/aceStates");
27
- var import_aioStates = require("../constants/aioStates");
28
- var import_hubStates = require("../constants/hubStates");
29
- var import_hyperStates = require("../constants/hyperStates");
30
- var import_solarflow800ProStates = require("../constants/solarflow800ProStates");
31
- var import_solarflow800States = require("../constants/solarflow800States");
32
- var import_adapterService = require("../services/adapterService");
33
- var import_createCalculationStates = require("./createCalculationStates");
34
- var import_createControlStates = require("./createControlStates");
35
- var import_helpers = require("./helpers");
36
- const getStateDefinition = (productName) => {
37
- switch (productName.toLocaleLowerCase()) {
38
- case "hyper 2000":
39
- return import_hyperStates.hyperStates;
40
- case "solarflow 800":
41
- return import_solarflow800States.solarflow800States;
42
- case "solarflow2.0":
43
- return import_hubStates.hubStates;
44
- case "solarflow hub 2000":
45
- return import_hubStates.hubStates;
46
- case "solarflow aio zy":
47
- return import_aioStates.aioStates;
48
- case "ace 1500":
49
- return import_aceStates.aceStates;
50
- case "solarflow 800 pro":
51
- return import_solarflow800ProStates.solarflow800ProStates;
52
- case "solarflow 2400 ac":
53
- return import_ac2400States.ac2400States;
54
- default:
55
- return [];
56
- }
57
- };
58
- const createSolarFlowStates = async (adapter, device) => {
59
- const productKey = device.productKey.replace(adapter.FORBIDDEN_CHARS, "");
60
- const deviceKey = device.deviceKey.replace(adapter.FORBIDDEN_CHARS, "");
61
- const productName = (0, import_helpers.getProductNameFromProductKey)(productKey);
62
- if (device.productKey == "s3Xk4x") {
63
- adapter.log.debug(`[createSolarFlowStates] Smart Plug not supported.`);
64
- return;
65
- }
66
- adapter.log.debug(
67
- `[createSolarFlowStates] Creating or updating SolarFlow states for ${device.productName} (${productKey}/${deviceKey}) and name '${device.name}'.`
68
- );
69
- await (adapter == null ? void 0 : adapter.extendObject(productKey, {
70
- type: "device",
71
- common: {
72
- name: {
73
- de: `${device.productName} (${productKey})`,
74
- en: `${device.productName} (${productKey})`
75
- }
76
- },
77
- native: {}
78
- }));
79
- await (adapter == null ? void 0 : adapter.extendObject(productKey + "." + deviceKey, {
80
- type: "channel",
81
- common: {
82
- name: {
83
- de: `${device.name} (${deviceKey})`,
84
- en: `${device.name} (${deviceKey})`
85
- }
86
- },
87
- native: {}
88
- }));
89
- if (!device.productName.toLocaleLowerCase().includes("smart plug")) {
90
- await (adapter == null ? void 0 : adapter.extendObject(`${productKey}.${deviceKey}.packData`, {
91
- type: "channel",
92
- common: {
93
- name: {
94
- de: "Batterie Packs",
95
- en: "Battery packs"
96
- }
97
- },
98
- native: {}
99
- }));
100
- }
101
- const states = getStateDefinition(productName);
102
- if (states.length == 0) {
103
- adapter.log.error(
104
- `[createSolarFlowLocalStates] Unknown product (${device.productKey}/'${device.productName}'). We cannot create control states! Please contact the developer!`
105
- );
106
- return;
107
- }
108
- states.forEach(async (state) => {
109
- await (adapter == null ? void 0 : adapter.extendObject(`${productKey}.${deviceKey}.${state.title}`, {
110
- type: "state",
111
- common: {
112
- name: {
113
- de: state.nameDe,
114
- en: state.nameEn
115
- },
116
- type: state.type,
117
- desc: state.title,
118
- role: state.role,
119
- read: true,
120
- write: false,
121
- unit: state.unit,
122
- states: state.states
123
- },
124
- native: {}
125
- }));
126
- });
127
- if (device.electricity && !device.productName.toLocaleLowerCase().includes("smart plug")) {
128
- await (0, import_adapterService.updateSolarFlowState)(
129
- adapter,
130
- device.productKey,
131
- device.deviceKey,
132
- "electricLevel",
133
- device.electricity
134
- );
135
- }
136
- if (device.snNumber) {
137
- await (0, import_adapterService.updateSolarFlowState)(
138
- adapter,
139
- productKey,
140
- deviceKey,
141
- "snNumber",
142
- device.snNumber.toString()
143
- );
144
- }
145
- if ((device.productName.toLocaleLowerCase() == "solarflow hub 2000" || device.productName.toLocaleLowerCase() == "solarflow2.0") && device._connectedWithAce != null && device._connectedWithAce != void 0) {
146
- await (0, import_adapterService.updateSolarFlowState)(
147
- adapter,
148
- device.productKey,
149
- device.deviceKey,
150
- "connectedWithAce",
151
- device._connectedWithAce
152
- );
153
- }
154
- await (0, import_adapterService.updateSolarFlowState)(
155
- adapter,
156
- productKey,
157
- deviceKey,
158
- "productName",
159
- device.productName
160
- );
161
- await (0, import_adapterService.updateSolarFlowState)(
162
- adapter,
163
- productKey,
164
- deviceKey,
165
- "wifiState",
166
- device.wifiStatus ? "Connected" : "Disconnected"
167
- );
168
- if (!device.productName.toLocaleLowerCase().includes("smart plug")) {
169
- if (!adapter.config.useFallbackService) {
170
- await (0, import_createControlStates.createControlStates)(adapter, productKey, deviceKey, productName);
171
- }
172
- if (adapter.config.useCalculation) {
173
- await (adapter == null ? void 0 : adapter.extendObject(`${productKey}.${deviceKey}.calculations`, {
174
- type: "channel",
175
- common: {
176
- name: {
177
- de: "Berechnungen f\xFCr Ger\xE4t " + deviceKey,
178
- en: "Calculations for Device " + deviceKey
179
- }
180
- },
181
- native: {}
182
- }));
183
- await (0, import_createCalculationStates.createCalculationStates)(adapter, productKey, deviceKey);
184
- } else {
185
- }
186
- }
187
- };
188
- // Annotate the CommonJS export names for ESM import in node:
189
- 0 && (module.exports = {
190
- createSolarFlowStates,
191
- getStateDefinition
192
- });
193
- //# sourceMappingURL=createSolarFlowStates.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/helpers/createSolarFlowStates.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n\r\nimport { ac2400States } from \"../constants/ac2400States\";\r\nimport { aceStates } from \"../constants/aceStates\";\r\nimport { aioStates } from \"../constants/aioStates\";\r\nimport { hubStates } from \"../constants/hubStates\";\r\nimport { hyperStates } from \"../constants/hyperStates\";\r\nimport { solarflow800ProStates } from \"../constants/solarflow800ProStates\";\r\nimport { solarflow800States } from \"../constants/solarflow800States\";\r\nimport { ZendureSolarflow } from \"../main\";\r\nimport { ISolarFlowDeviceDetails } from \"../models/ISolarFlowDeviceDetails\";\r\nimport { ISolarflowState } from \"../models/ISolarflowState\";\r\nimport { updateSolarFlowState } from \"../services/adapterService\";\r\nimport { createCalculationStates } from \"./createCalculationStates\";\r\nimport { createControlStates } from \"./createControlStates\";\r\nimport { getProductNameFromProductKey } from \"./helpers\";\r\n//import { deleteCalculationStates } from \"./deleteCalculationStates\";\r\n\r\nexport const getStateDefinition = (productName: string): ISolarflowState[] => {\r\n switch (productName.toLocaleLowerCase()) {\r\n case \"hyper 2000\":\r\n return hyperStates;\r\n case \"solarflow 800\":\r\n return solarflow800States;\r\n case \"solarflow2.0\":\r\n return hubStates;\r\n case \"solarflow hub 2000\":\r\n return hubStates;\r\n case \"solarflow aio zy\":\r\n return aioStates;\r\n case \"ace 1500\":\r\n return aceStates;\r\n case \"solarflow 800 pro\":\r\n return solarflow800ProStates;\r\n case \"solarflow 2400 ac\":\r\n return ac2400States;\r\n default:\r\n return [];\r\n }\r\n};\r\n\r\nexport const createSolarFlowStates = async (\r\n adapter: ZendureSolarflow,\r\n device: ISolarFlowDeviceDetails\r\n): Promise<void> => {\r\n const productKey = device.productKey.replace(adapter.FORBIDDEN_CHARS, \"\");\r\n const deviceKey = device.deviceKey.replace(adapter.FORBIDDEN_CHARS, \"\");\r\n const productName = getProductNameFromProductKey(productKey);\r\n\r\n if (\r\n device.productKey ==\r\n \"s3Xk4x\" /* && adapter && adapter.userId && device.id */\r\n ) {\r\n adapter.log.debug(`[createSolarFlowStates] Smart Plug not supported.`);\r\n return;\r\n // productKey = adapter.userId;\r\n // deviceKey = device.id.toString();\r\n }\r\n\r\n adapter.log.debug(\r\n `[createSolarFlowStates] Creating or updating SolarFlow states for ${device.productName} (${productKey}/${deviceKey}) and name '${device.name}'.`\r\n );\r\n\r\n // Create device (e.g. the product type -> SolarFlow)\r\n await adapter?.extendObject(productKey, {\r\n type: \"device\",\r\n common: {\r\n name: {\r\n de: `${device.productName} (${productKey})`,\r\n en: `${device.productName} (${productKey})`,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n // Create channel (e.g. the device specific key)\r\n await adapter?.extendObject(productKey + \".\" + deviceKey, {\r\n type: \"channel\",\r\n common: {\r\n name: {\r\n de: `${device.name} (${deviceKey})`,\r\n en: `${device.name} (${deviceKey})`,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n // Create pack data folder\r\n if (!device.productName.toLocaleLowerCase().includes(\"smart plug\")) {\r\n await adapter?.extendObject(`${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\r\n const states = getStateDefinition(productName);\r\n\r\n if (states.length == 0) {\r\n adapter.log.error(\r\n `[createSolarFlowLocalStates] Unknown product (${device.productKey}/'${device.productName}'). We cannot create control states! Please contact the developer!`\r\n );\r\n return;\r\n }\r\n\r\n states.forEach(async (state: ISolarflowState) => {\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.${state.title}`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: state.nameDe,\r\n en: state.nameEn,\r\n },\r\n type: state.type,\r\n desc: state.title,\r\n role: state.role,\r\n read: true,\r\n write: false,\r\n unit: state.unit,\r\n states: state.states,\r\n },\r\n native: {},\r\n });\r\n });\r\n\r\n // Set SOC from device\r\n if (\r\n device.electricity &&\r\n !device.productName.toLocaleLowerCase().includes(\"smart plug\")\r\n ) {\r\n await updateSolarFlowState(\r\n adapter,\r\n device.productKey,\r\n device.deviceKey,\r\n \"electricLevel\",\r\n device.electricity\r\n );\r\n }\r\n\r\n // Set sn number from device\r\n if (device.snNumber) {\r\n await updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"snNumber\",\r\n device.snNumber.toString()\r\n );\r\n }\r\n\r\n // Set the ACE connection info if is solarflow hub device\r\n if (\r\n (device.productName.toLocaleLowerCase() == \"solarflow hub 2000\" ||\r\n device.productName.toLocaleLowerCase() == \"solarflow2.0\") &&\r\n device._connectedWithAce != null &&\r\n device._connectedWithAce != undefined\r\n ) {\r\n await updateSolarFlowState(\r\n adapter,\r\n device.productKey,\r\n device.deviceKey,\r\n \"connectedWithAce\",\r\n device._connectedWithAce\r\n );\r\n }\r\n\r\n // Set product name from device\r\n await updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"productName\",\r\n device.productName\r\n );\r\n\r\n // Set wifi state from device\r\n await updateSolarFlowState(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n \"wifiState\",\r\n device.wifiStatus ? \"Connected\" : \"Disconnected\"\r\n );\r\n\r\n if (!device.productName.toLocaleLowerCase().includes(\"smart plug\")) {\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, productName);\r\n }\r\n\r\n if (adapter.config.useCalculation) {\r\n // Create calculations folder\r\n await adapter?.extendObject(`${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 await createCalculationStates(adapter, productKey, deviceKey);\r\n } else {\r\n //await deleteCalculationStates(adapter, productKey, deviceKey);\r\n }\r\n }\r\n};\r\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAA6B;AAC7B,uBAA0B;AAC1B,uBAA0B;AAC1B,uBAA0B;AAC1B,yBAA4B;AAC5B,mCAAsC;AACtC,gCAAmC;AAInC,4BAAqC;AACrC,qCAAwC;AACxC,iCAAoC;AACpC,qBAA6C;AAGtC,MAAM,qBAAqB,CAAC,gBAA2C;AAC5E,UAAQ,YAAY,kBAAkB,GAAG;AAAA,IACvC,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO,CAAC;AAAA,EACZ;AACF;AAEO,MAAM,wBAAwB,OACnC,SACA,WACkB;AAClB,QAAM,aAAa,OAAO,WAAW,QAAQ,QAAQ,iBAAiB,EAAE;AACxE,QAAM,YAAY,OAAO,UAAU,QAAQ,QAAQ,iBAAiB,EAAE;AACtE,QAAM,kBAAc,6CAA6B,UAAU;AAE3D,MACE,OAAO,cACP,UACA;AACA,YAAQ,IAAI,MAAM,mDAAmD;AACrE;AAAA,EAGF;AAEA,UAAQ,IAAI;AAAA,IACV,qEAAqE,OAAO,WAAW,KAAK,UAAU,IAAI,SAAS,eAAe,OAAO,IAAI;AAAA,EAC/I;AAGA,SAAM,mCAAS,aAAa,YAAY;AAAA,IACtC,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,IAAI,GAAG,OAAO,WAAW,KAAK,UAAU;AAAA,QACxC,IAAI,GAAG,OAAO,WAAW,KAAK,UAAU;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,QAAQ,CAAC;AAAA,EACX;AAGA,SAAM,mCAAS,aAAa,aAAa,MAAM,WAAW;AAAA,IACxD,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,IAAI,GAAG,OAAO,IAAI,KAAK,SAAS;AAAA,QAChC,IAAI,GAAG,OAAO,IAAI,KAAK,SAAS;AAAA,MAClC;AAAA,IACF;AAAA,IACA,QAAQ,CAAC;AAAA,EACX;AAGA,MAAI,CAAC,OAAO,YAAY,kBAAkB,EAAE,SAAS,YAAY,GAAG;AAClE,WAAM,mCAAS,aAAa,GAAG,UAAU,IAAI,SAAS,aAAa;AAAA,MACjE,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,QACN;AAAA,MACF;AAAA,MACA,QAAQ,CAAC;AAAA,IACX;AAAA,EACF;AAEA,QAAM,SAAS,mBAAmB,WAAW;AAE7C,MAAI,OAAO,UAAU,GAAG;AACtB,YAAQ,IAAI;AAAA,MACV,iDAAiD,OAAO,UAAU,KAAK,OAAO,WAAW;AAAA,IAC3F;AACA;AAAA,EACF;AAEA,SAAO,QAAQ,OAAO,UAA2B;AAC/C,WAAM,mCAAS,aAAa,GAAG,UAAU,IAAI,SAAS,IAAI,MAAM,KAAK,IAAI;AAAA,MACvE,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,IAAI,MAAM;AAAA,UACV,IAAI,MAAM;AAAA,QACZ;AAAA,QACA,MAAM,MAAM;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,MAChB;AAAA,MACA,QAAQ,CAAC;AAAA,IACX;AAAA,EACF,CAAC;AAGD,MACE,OAAO,eACP,CAAC,OAAO,YAAY,kBAAkB,EAAE,SAAS,YAAY,GAC7D;AACA,cAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAGA,MAAI,OAAO,UAAU;AACnB,cAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,SAAS,SAAS;AAAA,IAC3B;AAAA,EACF;AAGA,OACG,OAAO,YAAY,kBAAkB,KAAK,wBACzC,OAAO,YAAY,kBAAkB,KAAK,mBAC5C,OAAO,qBAAqB,QAC5B,OAAO,qBAAqB,QAC5B;AACA,cAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAGA,YAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACT;AAGA,YAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,aAAa,cAAc;AAAA,EACpC;AAEA,MAAI,CAAC,OAAO,YAAY,kBAAkB,EAAE,SAAS,YAAY,GAAG;AAElE,QAAI,CAAC,QAAQ,OAAO,oBAAoB;AACtC,gBAAM,gDAAoB,SAAS,YAAY,WAAW,WAAW;AAAA,IACvE;AAEA,QAAI,QAAQ,OAAO,gBAAgB;AAEjC,aAAM,mCAAS,aAAa,GAAG,UAAU,IAAI,SAAS,iBAAiB;AAAA,QACrE,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,IAAI,kCAA4B;AAAA,YAChC,IAAI,6BAA6B;AAAA,UACnC;AAAA,QACF;AAAA,QACA,QAAQ,CAAC;AAAA,MACX;AAEA,gBAAM,wDAAwB,SAAS,YAAY,SAAS;AAAA,IAC9D,OAAO;AAAA,IAEP;AAAA,EACF;AACF;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/models/IPack2Device.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\nexport interface IPack2Device {\n deviceKey: string;\n packSn: string;\n type: string;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/models/ISolarFlowDeviceDetails.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nexport interface ISolarFlowDeviceDetails {\r\n _connectedWithAce?: boolean;\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?: ISolarFlowDeviceDetails[];\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
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/models/ISolarFlowPaths.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\nexport interface ISolarFlowPaths {\r\n solarFlowDevRegisterUrl: string;\r\n solarFlowTokenUrl: string;\r\n solarFlowQueryDeviceListUrl: string;\r\n mqttUrl: string;\r\n mqttPort: number;\r\n mqttPassword: string;\r\n}\r\n"],
5
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
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
- }