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 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.6-beta.5",
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: 'Bttery_SOC'
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
- // We delay the first start for 3 seconds
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
- // We delay the first start for 6 seconds
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
- { headers: this.headers(null) });
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
- const _this = this;
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
- const _this = this;
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
- const _this = this;
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
- { headers: this.headers({ 'Authorization': 'Bearer ' + this.Auth.Token }) });
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
- { headers: this.headers({ 'Authorization': 'Bearer ' + this.Auth.Token }) });
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.6-beta.5",
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",