iobroker.alpha-ess 0.0.6-beta.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/io-package.json +27 -27
- package/main.js +57 -20
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -35,6 +35,14 @@ The password is stored encrypted and must therefore be entered manually: demo
|
|
|
35
35
|
**All product and company names or logos are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them or any associated subsidiaries! This personal project is maintained in spare time and has no business goal.**
|
|
36
36
|
|
|
37
37
|
## Changelog
|
|
38
|
+
### 0.2.0 (2023-01-19)
|
|
39
|
+
* (Gaspode) Added states EV1_power, EV2_power, EV3_power and EV4_power to Realtime folder
|
|
40
|
+
|
|
41
|
+
### 0.1.0 (2023-01-15)
|
|
42
|
+
* (Gaspode) First release for Latest repository
|
|
43
|
+
* (Gaspode) Corrected typo in state ID Battery_SOC
|
|
44
|
+
* (Gaspode) Implemented improvements as suggested in code review
|
|
45
|
+
|
|
38
46
|
### 0.0.6-beta.5 (2023-01-07)
|
|
39
47
|
* (Gaspode) Slow down requests in case of permanent errors
|
|
40
48
|
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "alpha-ess",
|
|
4
|
-
"version": "0.0
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.2.0": {
|
|
7
|
+
"en": "Added states EV1_power, EV2_power, EV3_power and EV4_power to Realtime folder",
|
|
8
|
+
"de": "EV1_power, EV2_power, EV3_power und EV4_power in Echtzeit-Ordner",
|
|
9
|
+
"ru": "Добавлены состояния EV1_power, EV2_power, EV3_power и EV4_power в папку Realtime",
|
|
10
|
+
"pt": "Estados adicionados EV1_power, EV2_power, EV3_power e EV4_power para pasta em tempo real",
|
|
11
|
+
"nl": "Vertaling:",
|
|
12
|
+
"fr": "Ajout des états EV1_power, EV2_power, EV3_power et EV4_power dans le dossier Realtime",
|
|
13
|
+
"it": "Aggiunti stati EV1_power, EV2_power, EV3_power e EV4_power nella cartella in tempo reale",
|
|
14
|
+
"es": "Estados adicionales EV1_power, EV2_power, EV3_power y EV4_power a carpeta en tiempo real",
|
|
15
|
+
"pl": "EV1_power, EV2_power, EV3_power i EV4_power do Realtime folder",
|
|
16
|
+
"uk": "Додано стани EV1_power, EV2_power, EV3_power і EV4_power до папки реального часу",
|
|
17
|
+
"zh-cn": "增加国家EV1:能力,EV2_ 能力, EV3_ 权力和EV4_ 实际工作时间的能力"
|
|
18
|
+
},
|
|
19
|
+
"0.1.0": {
|
|
20
|
+
"en": "First release for Latest repository\nCorrected typo in state ID Battery_SOC\nImplemented improvements as suggested in code review",
|
|
21
|
+
"de": "Erste Veröffentlichung für Neueste Repository\nKorrigierte Typo im Zustand ID Battery_SOC\nImplementierte Verbesserungen wie in der Code-Review vorgeschlagen",
|
|
22
|
+
"ru": "Первый выпуск для последней репозитории\nИсправлена опечатка в штате ID Батарея_SOC\nВнедренные улучшения, как предлагается в обзоре кода",
|
|
23
|
+
"pt": "Primeiro lançamento para o repositório mais recente\nTipo corrigido no estado ID Battery_SOC\nMelhorias implementadas conforme sugerido na revisão de código",
|
|
24
|
+
"nl": "Eerste vrijlating voor Latest\nQuality over Quantity (QoQ) Releases Vertaling: ID Battery\nVerbeteringen zoals geadviseerd in codereview",
|
|
25
|
+
"fr": "Première version pour Dernier dépôt\nTypo corrigé en état ID Battery_SOC\nAméliorations mises en œuvre comme suggéré dans l ' examen des codes",
|
|
26
|
+
"it": "Prima release per gli ultimi repository\nTipo corretto in stato ID Battery_SOC\nMiglioramenti attuati come suggerito nella revisione del codice",
|
|
27
|
+
"es": "Primer lanzamiento para el repositorio más reciente\nTypo corregido en estado ID Battery_SOC\nMejoras aplicadas como se sugiere en el examen del código",
|
|
28
|
+
"pl": "Pierwsze wydanie repozytorium Latest\nKary w państwie Bateria IDSOC\nImplementacja poprawek, jak zasugerowano w przegląd kodowy",
|
|
29
|
+
"uk": "Перший реліз для останніх репозиторій\nВиправлено типо в стані Акумулятор ID_SOC\nРеалізовані вдосконалення, як пропонуються в перегляді коду",
|
|
30
|
+
"zh-cn": "第一批La证存放处的释放\n州的打字 ID Battery_SOC\n实施守则审查建议的改进"
|
|
31
|
+
},
|
|
6
32
|
"0.0.6-beta.5": {
|
|
7
33
|
"en": "Slow down requests in case of permanent errors",
|
|
8
34
|
"de": "Langsame Anträge bei dauerhaften Fehlern",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "...",
|
|
68
94
|
"uk": "...",
|
|
69
95
|
"zh-cn": "..."
|
|
70
|
-
},
|
|
71
|
-
"0.0.6-beta.0": {
|
|
72
|
-
"en": "...",
|
|
73
|
-
"de": "...",
|
|
74
|
-
"ru": "...",
|
|
75
|
-
"pt": "...",
|
|
76
|
-
"nl": "...",
|
|
77
|
-
"fr": "...",
|
|
78
|
-
"it": "...",
|
|
79
|
-
"es": "...",
|
|
80
|
-
"pl": "...",
|
|
81
|
-
"uk": "...",
|
|
82
|
-
"zh-cn": "..."
|
|
83
|
-
},
|
|
84
|
-
"0.0.1": {
|
|
85
|
-
"en": "initial release",
|
|
86
|
-
"de": "Erstveröffentlichung",
|
|
87
|
-
"ru": "Начальная версия",
|
|
88
|
-
"pt": "lançamento inicial",
|
|
89
|
-
"nl": "Eerste uitgave",
|
|
90
|
-
"fr": "Première version",
|
|
91
|
-
"it": "Versione iniziale",
|
|
92
|
-
"es": "Versión inicial",
|
|
93
|
-
"pl": "Pierwsze wydanie",
|
|
94
|
-
"zh-cn": "首次出版",
|
|
95
|
-
"uk": "початковий випуск"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
package/main.js
CHANGED
|
@@ -16,6 +16,8 @@ const AUTHCONSTANT = 'LS885ZYDA95JVFQKUIUUUV7PQNODZRDZIS4ERREDS0EED8BCWSS';
|
|
|
16
16
|
const AUTHSUFFIX = 'ui893ed';
|
|
17
17
|
const BaseURI = 'https://cloud.alphaess.com/';
|
|
18
18
|
|
|
19
|
+
const REQUEST_TIMEOUT = 10000;
|
|
20
|
+
|
|
19
21
|
const stateList = [{
|
|
20
22
|
Group: 'Realtime'
|
|
21
23
|
, states: [
|
|
@@ -127,10 +129,46 @@ const stateList = [{
|
|
|
127
129
|
, unit: 'W'
|
|
128
130
|
, dayIndex: false
|
|
129
131
|
}
|
|
132
|
+
, {
|
|
133
|
+
stateName: 'ev1_power'
|
|
134
|
+
, role: 'value.power'
|
|
135
|
+
, id: 'EV1_power'
|
|
136
|
+
, name: 'Wallbox Power 1'
|
|
137
|
+
, type: 'number'
|
|
138
|
+
, unit: 'W'
|
|
139
|
+
, dayIndex: false
|
|
140
|
+
}
|
|
141
|
+
, {
|
|
142
|
+
stateName: 'ev2_power'
|
|
143
|
+
, role: 'value.power'
|
|
144
|
+
, id: 'EV2_power'
|
|
145
|
+
, name: 'Wallbox Power 2'
|
|
146
|
+
, type: 'number'
|
|
147
|
+
, unit: 'W'
|
|
148
|
+
, dayIndex: false
|
|
149
|
+
}
|
|
150
|
+
, {
|
|
151
|
+
stateName: 'ev3_power'
|
|
152
|
+
, role: 'value.power'
|
|
153
|
+
, id: 'EV3_power'
|
|
154
|
+
, name: 'Wallbox Power 3'
|
|
155
|
+
, type: 'number'
|
|
156
|
+
, unit: 'W'
|
|
157
|
+
, dayIndex: false
|
|
158
|
+
}
|
|
159
|
+
, {
|
|
160
|
+
stateName: 'ev4_power'
|
|
161
|
+
, role: 'value.power'
|
|
162
|
+
, id: 'EV4_power'
|
|
163
|
+
, name: 'Wallbox Power 4'
|
|
164
|
+
, type: 'number'
|
|
165
|
+
, unit: 'W'
|
|
166
|
+
, dayIndex: false
|
|
167
|
+
}
|
|
130
168
|
, {
|
|
131
169
|
stateName: 'soc'
|
|
132
170
|
, role: 'value.battery'
|
|
133
|
-
, id: '
|
|
171
|
+
, id: 'Battery_SOC'
|
|
134
172
|
, name: 'State of charge'
|
|
135
173
|
, type: 'number'
|
|
136
174
|
, unit: '%'
|
|
@@ -363,7 +401,6 @@ class AlphaEss extends utils.Adapter {
|
|
|
363
401
|
await this.setStateChangedAsync('info.connection', false, true);
|
|
364
402
|
|
|
365
403
|
this.log.debug('config username: ' + this.config.username);
|
|
366
|
-
this.log.debug('config password: ' + this.config.password);
|
|
367
404
|
this.log.debug('config systemId: ' + this.config.systemId);
|
|
368
405
|
this.log.debug('config intervalRealtimedata: ' + this.config.intervalRealtimedata);
|
|
369
406
|
this.log.debug('config intervalSettingsdata: ' + this.config.intervalSettingsdata);
|
|
@@ -377,25 +414,21 @@ class AlphaEss extends utils.Adapter {
|
|
|
377
414
|
|
|
378
415
|
if (this.config.password && this.config.username && this.config.systemId) {
|
|
379
416
|
if (this.config.enableRealtimedata) {
|
|
380
|
-
this.fetchRealtimeData();
|
|
417
|
+
await this.fetchRealtimeData();
|
|
381
418
|
}
|
|
382
419
|
else {
|
|
383
420
|
this.log.info('Realtime data disabled! Adapter won\'t fetch realtime data.');
|
|
384
421
|
}
|
|
385
422
|
|
|
386
423
|
if (this.config.enableEnergydata) {
|
|
387
|
-
|
|
388
|
-
const _this = this;
|
|
389
|
-
this.settingsDataTimeoutHandle = setTimeout(function () { _this.fetchEnergyData(); }, 3000);
|
|
424
|
+
await this.fetchEnergyData();
|
|
390
425
|
}
|
|
391
426
|
else {
|
|
392
427
|
this.log.info('Energydata data disabled! Adapter won\'t fetch energy data.');
|
|
393
428
|
}
|
|
394
429
|
|
|
395
430
|
if (this.config.enableSettingsdata) {
|
|
396
|
-
|
|
397
|
-
const _this = this;
|
|
398
|
-
this.settingsDataTimeoutHandle = setTimeout(function () { _this.fetchSettingsData(); }, 6000);
|
|
431
|
+
await this.fetchSettingsData();
|
|
399
432
|
}
|
|
400
433
|
else {
|
|
401
434
|
this.log.info('Settings data disabled! Adapter won\'t fetch settings data.');
|
|
@@ -540,12 +573,13 @@ class AlphaEss extends utils.Adapter {
|
|
|
540
573
|
};
|
|
541
574
|
}
|
|
542
575
|
|
|
543
|
-
this.log.debug('Login data: ' + JSON.stringify(LoginData));
|
|
544
|
-
|
|
545
576
|
// @ts-ignore
|
|
546
577
|
const res = await axios.post(BaseURI + 'api/' + (refresh ? 'Account/RefreshToken' : 'Account/Login'),
|
|
547
578
|
JSON.stringify(LoginData),
|
|
548
|
-
{
|
|
579
|
+
{
|
|
580
|
+
timeout: REQUEST_TIMEOUT,
|
|
581
|
+
headers: this.headers(null)
|
|
582
|
+
});
|
|
549
583
|
|
|
550
584
|
if (res.status == 200) {
|
|
551
585
|
if (res.data && res.data.code && res.data.code == 5) {
|
|
@@ -591,8 +625,7 @@ class AlphaEss extends utils.Adapter {
|
|
|
591
625
|
this.createAndUpdateStates(groupName, body.data);
|
|
592
626
|
|
|
593
627
|
if (!this.realtimeDataTimeoutHandle) {
|
|
594
|
-
|
|
595
|
-
this.realtimeDataTimeoutHandle = setTimeout(function () { _this.fetchRealtimeData(); }, this.calculateIntervalInMs(this.config.intervalRealtimedata, groupName));
|
|
628
|
+
this.realtimeDataTimeoutHandle = setTimeout(() => this.fetchRealtimeData(), this.calculateIntervalInMs(this.config.intervalRealtimedata, groupName));
|
|
596
629
|
}
|
|
597
630
|
}
|
|
598
631
|
catch (e) {
|
|
@@ -623,8 +656,7 @@ class AlphaEss extends utils.Adapter {
|
|
|
623
656
|
this.createAndUpdateStates(groupName, body.data);
|
|
624
657
|
|
|
625
658
|
if (!this.energyDataTimeoutHandle) {
|
|
626
|
-
|
|
627
|
-
this.energyDataTimeoutHandle = setTimeout(function () { _this.fetchEnergyData(); }, this.calculateIntervalInMs(this.config.intervalEnergydata, groupName));
|
|
659
|
+
this.energyDataTimeoutHandle = setTimeout(() => this.fetchEnergyData(), this.calculateIntervalInMs(this.config.intervalEnergydata, groupName));
|
|
628
660
|
}
|
|
629
661
|
}
|
|
630
662
|
catch (e) {
|
|
@@ -646,8 +678,7 @@ class AlphaEss extends utils.Adapter {
|
|
|
646
678
|
this.createAndUpdateStates(groupName, body.data);
|
|
647
679
|
|
|
648
680
|
if (!this.settingsDataTimeoutHandle) {
|
|
649
|
-
|
|
650
|
-
this.settingsDataTimeoutHandle = setTimeout(function () { _this.fetchSettingsData(); }, this.calculateIntervalInMs(this.config.intervalSettingsdata, groupName));
|
|
681
|
+
this.settingsDataTimeoutHandle = setTimeout(() => this.fetchSettingsData(), this.calculateIntervalInMs(this.config.intervalSettingsdata, groupName));
|
|
651
682
|
}
|
|
652
683
|
}
|
|
653
684
|
catch (e) {
|
|
@@ -747,7 +778,10 @@ class AlphaEss extends utils.Adapter {
|
|
|
747
778
|
|
|
748
779
|
// @ts-ignore
|
|
749
780
|
const res = await axios.get(uri,
|
|
750
|
-
{
|
|
781
|
+
{
|
|
782
|
+
timeout: REQUEST_TIMEOUT,
|
|
783
|
+
headers: this.headers({ 'Authorization': 'Bearer ' + this.Auth.Token })
|
|
784
|
+
});
|
|
751
785
|
|
|
752
786
|
if (res.status == 200) {
|
|
753
787
|
await this.setStateChangedAsync('info.connection', true, true);
|
|
@@ -788,7 +822,10 @@ class AlphaEss extends utils.Adapter {
|
|
|
788
822
|
// @ts-ignore
|
|
789
823
|
const res = await axios.post(uri,
|
|
790
824
|
sndBody,
|
|
791
|
-
{
|
|
825
|
+
{
|
|
826
|
+
timeout: REQUEST_TIMEOUT,
|
|
827
|
+
headers: this.headers({ 'Authorization': 'Bearer ' + this.Auth.Token })
|
|
828
|
+
});
|
|
792
829
|
|
|
793
830
|
if (res.status == 200) {
|
|
794
831
|
await this.setStateChangedAsync('info.connection', true, true);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.alpha-ess",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Read and write data from and to Alpha ESS systems.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Gaspode",
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"node": ">= 14"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@iobroker/adapter-core": "^2.6.7"
|
|
22
|
+
"@iobroker/adapter-core": "^2.6.7",
|
|
23
|
+
"axios": "^1.2.2"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
26
|
"@alcalzone/release-script": "^3.5.9",
|
|
@@ -36,7 +37,6 @@
|
|
|
36
37
|
"@types/proxyquire": "^1.3.28",
|
|
37
38
|
"@types/sinon": "^10.0.13",
|
|
38
39
|
"@types/sinon-chai": "^3.2.9",
|
|
39
|
-
"axios": "^1.2.0",
|
|
40
40
|
"chai": "^4.3.7",
|
|
41
41
|
"chai-as-promised": "^7.1.1",
|
|
42
42
|
"eslint": "^8.31.0",
|