iobroker.senec 1.4.0 → 1.4.2

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
@@ -366,6 +366,12 @@ This channel contains calculated values. Currently these are day/week/month/year
366
366
  *Read-only number, which designates the number of wallbox [0..3]. This is only available on systems with configured wallboxes.*
367
367
 
368
368
  ## Changelog
369
+ ### 1.4.2 (NoBl)
370
+ * Added option to use https for connecting to SENEC (only activate if your appliance supports / requires this!)
371
+
372
+ ### 1.4.1 (NoBl)
373
+ * Fix: Autarky calculations are working again.
374
+
369
375
  ### 1.4.0 (NoBl)
370
376
  * Added object caching along with some minor code updates. Due to the amount of objects we deal with caching is about mandatory.
371
377
 
@@ -33,6 +33,37 @@
33
33
  "default": "0.0.0.0",
34
34
  "newLine": true
35
35
  },
36
+ "useHttps": {
37
+ "type": "checkbox",
38
+ "label": {
39
+ "en": "Use https?",
40
+ "de": "https verwenden?",
41
+ "ru": "Используйте https?",
42
+ "pt": "Usar https?",
43
+ "nl": "HTP's gebruiken?",
44
+ "fr": "Utiliser des https ?",
45
+ "it": "Utilizzare https?",
46
+ "es": "¿Usar https?",
47
+ "pl": "Użycie https?",
48
+ "uk": "Використовуйте HTTPS?",
49
+ "zh-cn": "使用网址?"
50
+ },
51
+ "help": {
52
+ "en": "Is https required to connect to SENEC? Only check if SENEC supports https already!",
53
+ "de": "Ist https erforderlich, um mit SENEC zu verbinden? Nur aktivieren, falls SENEC bereits https unterstützt!",
54
+ "ru": "Необходимо ли подключиться к SENEC? Только проверьте, поддерживает ли SENEC https уже!",
55
+ "pt": "São necessários https para se conectar ao SENEC? Basta verificar se o SENEC suporta https já!",
56
+ "nl": "Is HTP's nodig om te verbinden met SENEC? Controleer of SENEC al HTP's steunt!",
57
+ "fr": "Les https sont-ils nécessaires pour se connecter à SENEC? Vérifiez seulement si SENEC prend déjà en charge https!",
58
+ "it": "Https è necessario connettersi a SENEC? Controlla solo se SENEC supporta già https!",
59
+ "es": "¿Se requiere https para conectarse a SENEC? ¡Sólo comprueba si SENEC admite https ya!",
60
+ "pl": "Czy https musi łączyć się z SENEC? Jeśli SENEC obsługuje https już!",
61
+ "uk": "Чи потрібен HTTPS для підключення до SENEC? Тільки перевірте, чи підтримує SENEC HTTPS вже!",
62
+ "zh-cn": "是否需要与ENEC联系? 只有检查有无国界协会支持已经!"
63
+ },
64
+ "default": false,
65
+ "newLine": false
66
+ },
36
67
  "interval": {
37
68
  "type": "number",
38
69
  "label": {
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "senec",
4
- "version": "1.4.0",
4
+ "version": "1.4.2",
5
5
  "news": {
6
+ "1.4.2": {
7
+ "en": "Added option to use https for connecting to SENEC (only activate if your appliance supports / requires this!)",
8
+ "de": "Zusätzliche Option zur Verwendung von https zur Verbindung mit SENEC hinzugefügt (nur aktivieren, wenn Ihr Gerät dies unterstützt / erfordert)",
9
+ "ru": "Добавлена возможность использования https для подключения к SENEC (только активируйте, если ваше приложение поддерживает / требует этого)",
10
+ "pt": "Adicionado opção para usar https para conectar-se ao SENEC (apenas ativar se o seu aparelho suporta / requer este)",
11
+ "nl": "Aangepaste optie om HTP's te gebruiken voor verbinding met SENEC (only geactiveerd als je appliance steunt / vereist dit",
12
+ "fr": "Ajout de l'option d'utiliser les https pour se connecter à SENEC (seulement activer si votre appareil prend en charge / nécessite ceci) ",
13
+ "it": "Aggiunta opzione per utilizzare https per il collegamento a SENEC (solo attivare se il tuo elettrodomestici supporta / richiede questo)",
14
+ "es": "Opción agregada para usar https para conectarse a SENEC (sólo activar si su dispositivo soporta / requiere esto)",
15
+ "pl": "Dodana opcja do używania https dla połączenia z SENEC (w sposób aktywowana, jeśli dana osoba obsługuje / wymaga to)",
16
+ "uk": "Додано можливість використовувати HTTPS для підключення до SENEC (тільки активуйте, якщо підтримує додаток / вимагає цього)",
17
+ "zh-cn": "增加使用连接到SENEC的网站的选择(如果你的可靠支持/要求这样做)"
18
+ },
19
+ "1.4.1": {
20
+ "en": "Autarky calculations are working again.",
21
+ "de": "Autarkieberechnungen funktionieren wieder.",
22
+ "ru": "Расчеты Autarky снова работают.",
23
+ "pt": "Cálculos autarcos estão a funcionar outra vez.",
24
+ "nl": "Autarische berekeningen werken weer.",
25
+ "fr": "Les calculs Autarky fonctionnent à nouveau.",
26
+ "it": "I calcoli autarky funzionano di nuovo.",
27
+ "es": "Los cálculos autárquicos están funcionando de nuevo.",
28
+ "pl": "Ponowne obliczenia autarktyczne działają ponownie.",
29
+ "uk": "Аутарки знову працюють.",
30
+ "zh-cn": "Autarky的计算正再次工作。."
31
+ },
6
32
  "1.4.0": {
7
33
  "en": "Added object caching and minor code updates. Due to the amount of objects we deal with caching is about mandatory.",
8
34
  "de": "Objekt-Caching und kleinere Code-Updates hinzugefügt. Aufgrund der Menge an Objekten, die der Adapter bearbeitet, ist Caching zwingend notwendig.",
@@ -61,17 +87,17 @@
61
87
  "zh-cn": "塞内克"
62
88
  },
63
89
  "desc": {
64
- "en": "This adapter reads available values from a Senec Home V2.1 system using lala.cgi",
65
- "de": "Dieser Adapter liest verfügbare Werte von einem Senec Home V2.1 System mit lala.cgi",
66
- "ru": "Этот адаптер читает доступные значения от системы Senec Home V2.1 с использованием lala.cgi",
67
- "pt": "Este adaptador lê valores disponíveis de um sistema Senec Home V2.1 usando lala.cgi",
68
- "nl": "Deze adapter leest beschikbare waarden van een Senec Home V2.1 systeem met lala",
69
- "fr": "Cet adaptateur lit les valeurs disponibles d'un système Senec Home V2.1 en utilisant lala.cgi",
70
- "it": "Questo adattatore legge i valori disponibili da un sistema Senec Home V2.1 utilizzando lala.cgi",
71
- "es": "Este adaptador lee los valores disponibles de un sistema Senec Home V2.1 utilizando lala.cgi",
72
- "pl": "Ten adapter odczytuje dostępne wartości z systemu Senec Home V2.1 używając lala.cgi",
73
- "uk": "Цей адаптер читає доступні значення з системи Senec Home V2.1 за допомогою lala.cgi",
74
- "zh-cn": "这种适应者用Fla.cgi改为Senec Home V2.1系统可得到的数值。"
90
+ "en": "This adapter reads available values from a Senec Home V2.1 (and later) system using lala.cgi",
91
+ "de": "Dieser Adapter liest verfügbare Werte von einem Senec Home V2.1 (und später) System mit lala.cgi",
92
+ "ru": "Этот адаптер считывает доступные значения от системы Senec Home V2.1 (и позже) с помощью lala.cgi",
93
+ "pt": "Este adaptador lê valores disponíveis de um sistema Senec Home V2.1 (e posterior) usando lala.cgi",
94
+ "nl": "Deze adapter leest beschikbare waarden van een Senec Home V21 (en later) systeem met lala",
95
+ "fr": "Cet adaptateur lit les valeurs disponibles d'un système Senec Home V2.1 (et plus tard) utilisant lala.cgi",
96
+ "it": "Questo adattatore legge i valori disponibili da un sistema Senec Home V2.1 (e successivamente) utilizzando lala.cgi",
97
+ "es": "Este adaptador lee los valores disponibles de un sistema Senec Home V2.1 (y más tarde) usando lala.cgi",
98
+ "pl": "Ta adapter przeczytała dostępne wartości z systemu Senec Home V2.1 (a później) używając lala.cgi",
99
+ "uk": "Цей адаптер зчитуває доступні значення від Senec Home V2.1 (і пізніше) системи за допомогою lala.cgi",
100
+ "zh-cn": "这种适应者从Senec Home V2.1(和以后)利用Fla.cgi阅读了可使用的数值。"
75
101
  },
76
102
  "authors": [
77
103
  "NoBl <github@bluemle.org>"
@@ -113,7 +139,8 @@
113
139
  "intervalLow": 60,
114
140
  "pollingTimeout": 5000,
115
141
  "retries": 10,
116
- "retrymultiplier": 2
142
+ "retrymultiplier": 2,
143
+ "useHttps": false
117
144
  },
118
145
  "objects": [],
119
146
  "instanceObjects": [{
package/main.js CHANGED
@@ -7,6 +7,7 @@ const state_trans = require(__dirname + '/lib/state_trans.js');
7
7
 
8
8
  let retry = 0; // retry-counter
9
9
  let retryLowPrio = 0; // retry-counter
10
+ let connectVia = "http://";
10
11
 
11
12
  let unloaded = false;
12
13
 
@@ -96,21 +97,26 @@ class Senec extends utils.Adapter {
96
97
  this.log.warn("(checkConf) Config retry multiplier " + this.config.retrymultiplier + " not [1..10] seconds. Using default: 2");
97
98
  this.config.retrymultiplier = 2;
98
99
  }
100
+ this.log.debug("(checkConf) Configured https-usage: " + this.config.useHttps);
101
+ if (this.config.useHttps) {
102
+ connectVia = "https://";
103
+ this.log.debug("(checkConf) Switching to https ... " + this.config.useHttps);
104
+ }
99
105
  }
100
106
 
101
107
  /**
102
108
  * checks connection to senec service
103
109
  */
104
110
  async checkConnection() {
105
- const url = 'http://' + this.config.senecip + '/lala.cgi';
111
+ const url = connectVia + this.config.senecip + '/lala.cgi';
106
112
  const form = '{"ENERGY":{"STAT_STATE":""}}';
107
113
  try {
108
- this.log.info('connecting to Senec: ' + this.config.senecip);
114
+ this.log.info('connecting to Senec: ' + url);
109
115
  const body = await this.doGet(url, form, this, this.config.pollingTimeout);
110
- this.log.info('connected to Senec: ' + this.config.senecip);
116
+ this.log.info('connected to Senec: ' + url);
111
117
  this.setState('info.connection', true, true);
112
118
  } catch (error) {
113
- throw new Error("Error connecting to Senec (IP: " + this.config.senecip + "). Exiting! (" + error + ")");
119
+ throw new Error("Error connecting to Senec (IP: " + connectVia + this.config.senecip + "). Exiting! (" + error + "). Try to toggle https-mode in settings and check FQDN of SENEC appliance.");
114
120
  }
115
121
  }
116
122
 
@@ -168,7 +174,7 @@ class Senec extends utils.Adapter {
168
174
  // "PM1OBJ1":{"FREQ":"","U_AC":"","I_AC":"","P_AC":"","P_TOTAL":""},"PM1OBJ2":{"FREQ":"","U_AC":"","I_AC":"","P_AC":"","P_TOTAL":""}
169
175
  // "ENERGY":{"STAT_HOURS_OF_OPERATION":"","STAT_DAYS_SINCE_MAINT":"","GUI_BAT_DATA_POWER":"","GUI_BAT_DATA_VOLTAGE":"","GUI_BAT_DATA_CURRENT":"","GUI_BAT_DATA_FUEL_CHARGE":"","GUI_BAT_DATA_OA_CHARGING":"","STAT_SULFAT_CHRG_COUNTER":"","STAT_LIMITED_NET_SKEW":"","STAT_LIMITED_NO_STAND_BY":"","GUI_CAP_TEST_DIS_COUNT":"","GUI_SCHARGE_REMAIN":"","GUI_SCHARGE_ELAPSED":"","GUI_CHARGING_INFO":"","OFFPEAK_DURATION":"","OFFPEAK_RUNNING":"","OFFPEAK_CURRENT":"","OFFPEAK_TARGET":""},"SYS_UPDATE":{"NPU_VER":"","NPU_IMAGE_VERSION":""}}
170
176
 
171
- const url = 'http://' + this.config.senecip + '/lala.cgi';
177
+ const url = connectVia + this.config.senecip + '/lala.cgi';
172
178
  var form = '{';
173
179
  form += '"BMS":{"CELL_TEMPERATURES_MODULE_A":"","CELL_TEMPERATURES_MODULE_B":"","CELL_TEMPERATURES_MODULE_C":"","CELL_TEMPERATURES_MODULE_D":"","CELL_VOLTAGES_MODULE_A":"","CELL_VOLTAGES_MODULE_B":"","CELL_VOLTAGES_MODULE_C":"","CELL_VOLTAGES_MODULE_D":"","CURRENT":"","SOC":"","SYSTEM_SOC":"","TEMP_MAX":"","TEMP_MIN":"","VOLTAGE":""}';
174
180
  form += ',"ENERGY":{"STAT_STATE":"","GUI_BAT_DATA_POWER":"","GUI_INVERTER_POWER":"","GUI_HOUSE_POW":"","GUI_GRID_POW":"","GUI_BAT_DATA_FUEL_CHARGE":"","GUI_CHARGING_INFO":"","GUI_BOOSTING_INFO":"","GUI_BAT_DATA_POWER":"","GUI_BAT_DATA_VOLTAGE":"","GUI_BAT_DATA_CURRENT":"","GUI_BAT_DATA_FUEL_CHARGE":"","GUI_BAT_DATA_OA_CHARGING":"","STAT_LIMITED_NET_SKEW":""}';
@@ -214,7 +220,7 @@ class Senec extends utils.Adapter {
214
220
  this.log.info('LowPrio polling ...');
215
221
  // we are polling all known objects ...
216
222
 
217
- const url = 'http://' + this.config.senecip + '/lala.cgi';
223
+ const url = connectVia + this.config.senecip + '/lala.cgi';
218
224
  const form = '{"STATISTIC":{},"ENERGY":{},"FEATURES":{},"LOG":{},"SYS_UPDATE":{},"WIZARD":{},"BMS":{},"BAT1":{},"BAT1OBJ1":{},"BAT1OBJ2":{},"BAT1OBJ2":{},"BAT1OBJ3":{},"BAT1OBJ4":{},"PWR_UNIT":{},"PM1OBJ1":{},"PM1OBJ2":{},"PV1":{},"FACTORY":{},"GRIDCONFIG":{},"EG_CONTROL":{},"RTC":{},"PM1":{},"TEMPMEASURE":{},"DEBUG":{},"SOCKETS":{},"CASC":{},"WALLBOX":{},"CONNX50":{},"STECA":{}}';
219
225
 
220
226
  try {
@@ -299,6 +305,7 @@ class Senec extends utils.Adapter {
299
305
  val: value,
300
306
  ack: true
301
307
  });
308
+ await this.checkUpdateSelfStat(name);
302
309
  await this.doDecode(name, value);
303
310
  }
304
311
 
@@ -405,7 +412,7 @@ class Senec extends utils.Adapter {
405
412
  this.log.warn("(Calc) Not updating reference value for: " + name.substring(10) + "! Old RefValue (" + valRef + ") >= new RefValue (" + valCur + "). Impossible situation. If this is intentional, please update via admin!");
406
413
  }
407
414
  } else {
408
- this.log.silly("(Calc) Updating " + day +" value for: " + name.substring(10) + ": " + Number((valCur - valRef).toFixed(2)));
415
+ this.log.debug("(Calc) Updating " + day +" value for: " + name.substring(10) + ": " + Number((valCur - valRef).toFixed(2)));
409
416
  // update today's value
410
417
  await this.doState(key + today, Number((valCur - valRef).toFixed(2)), descToday, unitToday, false);
411
418
  }
@@ -455,9 +462,11 @@ class Senec extends utils.Adapter {
455
462
  }
456
463
  // update today's value - but beware of div/0
457
464
  var newVal = 0;
458
- if (valHouseCons > 0) newVal = Number((((valPVGen - valGridExp - valBatCharge + valBatDischarge) / valHouseCons) * 100).toFixed(0));
459
- this.log.silly("(Autarky) Updating Autarky " + day +" value for: " + key + today + ": " + newVal);
460
- if (valHouseCons > 0) await this.doState(key + today, newVal, descToday, unitToday, false);
465
+ if (valHouseCons > 0) {
466
+ newVal = Number((((valPVGen - valGridExp - valBatCharge + valBatDischarge) / valHouseCons) * 100).toFixed(0));
467
+ this.log.debug("(Autarky) Updating Autarky " + day +" value for: " + key + today + ": " + newVal);
468
+ await this.doState(key + today, newVal, descToday, unitToday, false);
469
+ }
461
470
  }
462
471
 
463
472
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.senec",
3
- "version": "1.4.0",
3
+ "version": "1.4.2",
4
4
  "description": "Senec Home",
5
5
  "author": {
6
6
  "name": "NoBl",
@@ -47,9 +47,9 @@
47
47
  "eslint": "^8.47.0",
48
48
  "mocha": "^10.2.0",
49
49
  "proxyquire": "^2.1.3",
50
- "sinon": "^15.0.4",
50
+ "sinon": "^15.2.0",
51
51
  "sinon-chai": "^3.7.0",
52
- "typescript": "~4.9.5"
52
+ "typescript": "~5.1.6"
53
53
  },
54
54
  "main": "main.js",
55
55
  "files": [