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 +6 -0
- package/admin/jsonConfig.json +31 -0
- package/io-package.json +40 -13
- package/main.js +19 -10
- package/package.json +3 -3
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
|
|
package/admin/jsonConfig.json
CHANGED
|
@@ -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.
|
|
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": "Этот адаптер
|
|
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
|
|
69
|
-
"fr": "Cet adaptateur lit les valeurs disponibles d'un système Senec Home V2.1
|
|
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
|
|
72
|
-
"pl": "
|
|
73
|
-
"uk": "Цей адаптер
|
|
74
|
-
"zh-cn": "
|
|
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 =
|
|
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: ' +
|
|
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: ' +
|
|
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 =
|
|
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 =
|
|
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.
|
|
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)
|
|
459
|
-
|
|
460
|
-
|
|
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.
|
|
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
|
|
50
|
+
"sinon": "^15.2.0",
|
|
51
51
|
"sinon-chai": "^3.7.0",
|
|
52
|
-
"typescript": "~
|
|
52
|
+
"typescript": "~5.1.6"
|
|
53
53
|
},
|
|
54
54
|
"main": "main.js",
|
|
55
55
|
"files": [
|