iobroker.senec 1.3.4 → 1.3.7

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.
@@ -91,7 +91,13 @@ const state_trans = {
91
91
  88: 'NETZBETREIBER: ENTLADEN GESPERRT (88)',
92
92
  89: 'RESERVEKAPAZITÄT (89)',
93
93
  90: 'SELBSTTEST FEHLER (90)',
94
- 91: 'ISOLATIONSFEHLER (91)'
94
+ 91: 'ISOLATIONSFEHLER (91)',
95
+ 92: 'PV-MODUS (92)',
96
+ 93: 'FERNABSCHALTUNG NETZBETREIBER (93)',
97
+ 94: 'FEHLER DRM0 (94)',
98
+ 95: 'BATTERIEDIAGNOSE (95)',
99
+ 96: 'BATTERIE BALANCIERUNG (96)',
100
+ 97: 'SICHERHEITSENTLADUNG (97)'
95
101
  },
96
102
  'ENERGY_STAT_STATE.1': {
97
103
  0: 'INITIALSTATE',
@@ -185,7 +191,13 @@ const state_trans = {
185
191
  88: 'GRID OPERATOR: DISCHARGE PROHIBITED',
186
192
  89: 'SPARE CAPACITY',
187
193
  90: 'SELFTEST ERROR',
188
- 91: 'EARTH FAULT'
194
+ 91: 'EARTH FAULT',
195
+ 92: 'PV-MODE',
196
+ 93: 'REMOTE SHUTDOWN GRID OPERATOR',
197
+ 94: 'ERROR DRM0 (94)',
198
+ 95: 'BATTERY DIAGNOSIS (95)',
199
+ 96: 'BATTERY BALANCING (96)',
200
+ 97: 'SAFETY DISCHARGE (97)'
189
201
  },
190
202
  'ENERGY_STAT_STATE.2': {
191
203
  0: 'STATO INIZIALE',
@@ -279,7 +291,13 @@ const state_trans = {
279
291
  88: 'OPERATORE DI RETE: SCARICA BLOCCATA',
280
292
  89: 'CAPACITA INUTILIZZATA',
281
293
  90: 'ERRORE DI AUTOTEST',
282
- 91: 'FAGLIA TERRESTRE'
294
+ 91: 'FAGLIA TERRESTRE',
295
+ 92: 'MODALITÀ FOTOVOLTAICA',
296
+ 93: 'SPEGNIMENTO A DISTANZA OPERATORE DI RETE',
297
+ 94: 'ERRORE DRM0',
298
+ 95: 'DIAGNOSI DELLA BATTERIA (95)',
299
+ 96: 'BILANCIAMENTO DELLA BATTERIA (96)',
300
+ 97: 'SCARICO DI SICUREZZA (97)'
283
301
  },
284
302
  'FACTORY.BAT_TYPE.0' : {
285
303
  0: 'Studer Xtender (0)',
@@ -478,7 +496,13 @@ const state_trans = {
478
496
  88: 'NETZBETREIBER: ENTLADEN GESPERRT (88)',
479
497
  89: 'RESERVEKAPAZITÄT (89)',
480
498
  90: 'SELBSTTEST FEHLER (90)',
481
- 91: 'ISOLATIONSFEHLER (91)'
499
+ 91: 'ISOLATIONSFEHLER (91)',
500
+ 92: 'PV-MODUS (92)',
501
+ 93: 'FERNABSCHALTUNG NETZBETREIBER (93)',
502
+ 94: 'FEHLER DRM0 (94)',
503
+ 95: 'BATTERIEDIAGNOSE (95)',
504
+ 96: 'BATTERIE BALANCIERUNG (96)',
505
+ 97: 'SICHERHEITSENTLADUNG (97)'
482
506
  },
483
507
  'STATISTIC.CURRENT_STATE.1': {
484
508
  0: 'INITIALSTATE',
@@ -572,7 +596,13 @@ const state_trans = {
572
596
  88: 'GRID OPERATOR: DISCHARGE PROHIBITED',
573
597
  89: 'SPARE CAPACITY',
574
598
  90: 'SELFTEST ERROR',
575
- 91: 'EARTH FAULT'
599
+ 91: 'EARTH FAULT',
600
+ 92: 'PV-MODE',
601
+ 93: 'REMOTE SHUTDOWN GRID OPERATOR',
602
+ 94: 'ERROR DRM0',
603
+ 95: 'BATTERY DIAGNOSIS',
604
+ 96: 'BATTERY BALANCING',
605
+ 97: 'SAFETY DISCHARGE'
576
606
  },
577
607
  'STATISTIC.CURRENT_STATE.2': {
578
608
  0: 'STATO INIZIALE',
@@ -666,7 +696,13 @@ const state_trans = {
666
696
  88: 'OPERATORE DI RETE: SCARICA BLOCCATA',
667
697
  89: 'CAPACITA INUTILIZZATA',
668
698
  90: 'ERRORE DI AUTOTEST',
669
- 91: 'FAGLIA TERRESTRE'
699
+ 91: 'FAGLIA TERRESTRE',
700
+ 92: 'MODALITÀ FOTOVOLTAICA',
701
+ 93: 'SPEGNIMENTO A DISTANZA OPERATORE DI RETE',
702
+ 94: 'ERRORE DRM0',
703
+ 95: 'DIAGNOSI DELLA BATTERIA',
704
+ 96: 'BILANCIAMENTO DELLA BATTERIA',
705
+ 97: 'SCARICO DI SICUREZZA'
670
706
  },
671
707
  'WALLBOX.STATE.0' : {
672
708
  161: 'Warte auf E-Fahrzeug (161)',
package/main.js CHANGED
@@ -66,29 +66,29 @@ class Senec extends utils.Adapter {
66
66
  * Fallback to default values in case they are out of scope
67
67
  */
68
68
  async checkConfig() {
69
- this.log.debug("Configured polling interval high priority: " + this.config.interval);
69
+ this.log.debug("(checkConf) Configured polling interval high priority: " + this.config.interval);
70
70
  if (this.config.interval < 1 || this.config.interval > 3600) {
71
- this.log.warn("Config interval high priority " + this.config.interval + " not [1..3600] seconds. Using default: 10");
71
+ this.log.warn("(checkConf) Config interval high priority " + this.config.interval + " not [1..3600] seconds. Using default: 10");
72
72
  this.config.interval = 10;
73
73
  }
74
- this.log.debug("Configured polling interval low priority: " + this.config.intervalLow);
74
+ this.log.debug("(checkConf) Configured polling interval low priority: " + this.config.intervalLow);
75
75
  if (this.config.intervalLow < 60 || this.config.intervalLow > 3600) {
76
- this.log.warn("Config interval low priority " + this.config.intervalLow + " not [60..3600] minutes. Using default: 60");
76
+ this.log.warn("(checkConf) Config interval low priority " + this.config.intervalLow + " not [60..3600] minutes. Using default: 60");
77
77
  this.config.intervalLow = 60;
78
78
  }
79
- this.log.debug("Configured polling timeout: " + this.config.pollingTimeout);
79
+ this.log.debug("(checkConf) Configured polling timeout: " + this.config.pollingTimeout);
80
80
  if (this.config.pollingTimeout < 1000 || this.config.pollingTimeout > 10000) {
81
- this.log.warn("Config timeout " + this.config.pollingTimeout + " not [1000..10000] ms. Using default: 5000");
81
+ this.log.warn("(checkConf) Config timeout " + this.config.pollingTimeout + " not [1000..10000] ms. Using default: 5000");
82
82
  this.config.pollingTimeout = 5000;
83
83
  }
84
- this.log.debug("Configured num of retries: " + this.config.retries);
84
+ this.log.debug("(checkConf) Configured num of retries: " + this.config.retries);
85
85
  if (this.config.retries < 0 || this.config.retries > 999) {
86
- this.log.warn("Config num of retries " + this.config.retries + " not [0..999] seconds. Using default: 10");
86
+ this.log.warn("(checkConf) Config num of retries " + this.config.retries + " not [0..999] seconds. Using default: 10");
87
87
  this.config.retries = 10;
88
88
  }
89
- this.log.debug("Configured retry multiplier: " + this.config.retrymultiplier);
89
+ this.log.debug("(checkConf) Configured retry multiplier: " + this.config.retrymultiplier);
90
90
  if (this.config.retrymultiplier < 1 || this.config.retrymultiplier > 10) {
91
- this.log.warn("Config retry multiplier " + this.config.retrymultiplier + " not [1..10] seconds. Using default: 2");
91
+ this.log.warn("(checkConf) Config retry multiplier " + this.config.retrymultiplier + " not [1..10] seconds. Using default: 2");
92
92
  this.config.retrymultiplier = 2;
93
93
  }
94
94
  }
@@ -121,30 +121,32 @@ class Senec extends utils.Adapter {
121
121
  url: pUrl,
122
122
  data: pForm,
123
123
  timeout: pollingTimeout
124
- }).then(
124
+ })
125
+ .then(
125
126
  async (response) => {
126
127
  const content = response.data;
127
- caller.log.debug('received data (' + response.status + '): ' + JSON.stringify(content));
128
+ caller.log.debug('(Poll) received data (' + response.status + '): ' + JSON.stringify(content));
128
129
  resolve(JSON.stringify(content));
129
130
  }
130
- ).catch(
131
- (error) => {
132
- if (error.response) {
133
- // The request was made and the server responded with a status code
134
- caller.log.warn('received error ' + error.response.status + ' response from SENEC with content: ' + JSON.stringify(error.response.data));
135
- reject(error.response.status);
136
- } else if (error.request) {
137
- // The request was made but no response was received
138
- // `error.request` is an instance of XMLHttpRequest in the browser and an instance of http.ClientRequest in node.js<div></div>
139
- caller.log.info(error.message);
140
- reject(error.message);
141
- } else {
142
- // Something happened in setting up the request that triggered an Error
143
- caller.log.info(error.message);
144
- reject(error.status);
145
- }
146
- }
147
- );
131
+ )
132
+ .catch(
133
+ (error) => {
134
+ if (error.response) {
135
+ // The request was made and the server responded with a status code
136
+ caller.log.warn('(Poll) received error ' + error.response.status + ' response from SENEC with content: ' + JSON.stringify(error.response.data));
137
+ reject(error.response.status);
138
+ } else if (error.request) {
139
+ // The request was made but no response was received
140
+ // `error.request` is an instance of XMLHttpRequest in the browser and an instance of http.ClientRequest in node.js<div></div>
141
+ caller.log.info(error.message);
142
+ reject(error.message);
143
+ } else {
144
+ // Something happened in setting up the request that triggered an Error
145
+ caller.log.info(error.message);
146
+ reject(error.status);
147
+ }
148
+ }
149
+ );
148
150
  });
149
151
  }
150
152
 
@@ -155,7 +157,7 @@ class Senec extends utils.Adapter {
155
157
  async readSenecV21() {
156
158
  // read by webinterface are the following values. Not all are "high priority" though.
157
159
  // "STATISTIC":{"STAT_DAY_E_HOUSE":"","STAT_DAY_E_PV":"","STAT_DAY_BAT_CHARGE":"","STAT_DAY_BAT_DISCHARGE":"","STAT_DAY_E_GRID_IMPORT":"","STAT_DAY_E_GRID_EXPORT":"","STAT_YEAR_E_PU1_ARR":""}
158
- // "ENERGY":{"STAT_STATE":"","STAT_STATE_DECODE":"","GUI_BAT_DATA_POWER":"","GUI_INVERTER_POWER":"","GUI_HOUSE_POW":"","GUI_GRID_POW":"","STAT_MAINT_REQUIRED":"","GUI_BAT_DATA_FUEL_CHARGE":"","GUI_CHARGING_INFO":"","GUI_BOOSTING_INFO":""}
160
+ // "ENERGY":{"STAT_STATE":"","GUI_BAT_DATA_POWER":"","GUI_INVERTER_POWER":"","GUI_HOUSE_POW":"","GUI_GRID_POW":"","STAT_MAINT_REQUIRED":"","GUI_BAT_DATA_FUEL_CHARGE":"","GUI_CHARGING_INFO":"","GUI_BOOSTING_INFO":""}
159
161
  // "WIZARD":{"CONFIG_LOADED":""},"SYS_UPDATE":{"UPDATE_AVAILABLE":""}
160
162
  // "PV1":{"POWER_RATIO":""},"WIZARD":{"MAC_ADDRESS_BYTES":""},"BAT1OBJ1":{"BMS_NR_INSTALLED":"","SPECIAL_TIMEOUT":"","INV_CYCLE":"","TEMP1":"","TEMP2":"","TEMP3":"","TEMP4":"","TEMP5":"","SW_VERSION":"","SW_VERSION2":"","SW_VERSION3":"","I_DC":""},"BAT1OBJ2":{"TEMP1":"","TEMP2":"","TEMP3":"","TEMP4":"","TEMP5":"","I_DC":""},"BAT1OBJ3":{"TEMP1":"","TEMP2":"","TEMP3":"","TEMP4":"","TEMP5":"","I_DC":""},"PWR_UNIT":{"POWER_L1":"","POWER_L2":"","POWER_L3":""},"BAT1":{"CEI_LIMIT":""},"BMS":{}
161
163
  // "PM1OBJ1":{"FREQ":"","U_AC":"","I_AC":"","P_AC":"","P_TOTAL":""},"PM1OBJ2":{"FREQ":"","U_AC":"","I_AC":"","P_AC":"","P_TOTAL":""}
@@ -163,9 +165,9 @@ class Senec extends utils.Adapter {
163
165
 
164
166
  const url = 'http://' + this.config.senecip + '/lala.cgi';
165
167
  var form = '{';
166
- form += '"ENERGY":{"STAT_STATE":"","STAT_STATE_DECODE":"","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":""}';
167
- // MPP_INT got replaced by MPP_POWER but might still be in use by some machines. Can be removed at a later point in time. (includes state_attr) 2020-10-22
168
- form += ',"PV1":{"POWER_RATIO":"","MPP_POWER":"","MPP_INT":""}';
168
+ 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":""}';
169
+ 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":""}';
170
+ form += ',"PV1":{"POWER_RATIO":"","MPP_POWER":""}';
169
171
  form += ',"PWR_UNIT":{"POWER_L1":"","POWER_L2":"","POWER_L3":""}';
170
172
  form += ',"PM1OBJ1":{"FREQ":"","U_AC":"","I_AC":"","P_AC":"","P_TOTAL":""}';
171
173
  form += ',"PM1OBJ2":{"FREQ":"","U_AC":"","I_AC":"","P_AC":"","P_TOTAL":""}';
@@ -173,7 +175,13 @@ class Senec extends utils.Adapter {
173
175
  form += '}';
174
176
 
175
177
  try {
176
- const body = await this.doGet(url, form, this, this.config.pollingTimeout);
178
+ var body = await this.doGet(url, form, this, this.config.pollingTimeout);
179
+ if (body.includes('\\"')) {
180
+ // in rare cases senec reports back extra escape sequences on some machines ...
181
+ this.log.info("(Poll) Double escapes detected! Body inc: " + body);
182
+ body = body.replace(/\\"/g, '"');
183
+ this.log.info("(Poll) Double escapes autofixed! Body out: " + body);
184
+ }
177
185
  var obj = JSON.parse(body, reviverNumParse);
178
186
  await this.evalPoll(obj);
179
187
 
@@ -203,7 +211,13 @@ class Senec extends utils.Adapter {
203
211
  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":{}}';
204
212
 
205
213
  try {
206
- const body = await this.doGet(url, form, this, this.config.pollingTimeout);
214
+ var body = await this.doGet(url, form, this, this.config.pollingTimeout);
215
+ if (body.includes('\\"')) {
216
+ // in rare cases senec reports back extra escape sequences on some machines ...
217
+ this.log.info("(Poll) Double escapes detected! Body inc: " + body);
218
+ body = body.replace(/\\"/g, '"');
219
+ this.log.info("(Poll) Double escapes autofixed! Body out: " + body);
220
+ }
207
221
  var obj = JSON.parse(body, reviverNumParse);
208
222
 
209
223
  await this.evalPoll(obj);
@@ -226,7 +240,12 @@ class Senec extends utils.Adapter {
226
240
  * sets a state's value and creates the state if it doesn't exist yet
227
241
  */
228
242
  async doState(name, value, description, unit, write) {
229
- this.log.silly('Update: ' + name + ': ' + value);
243
+ if (!isNaN(name.substring(0, 1))) {
244
+ // keys cannot start with digits! Possibly SENEC delivering erraneous data
245
+ this.log.debug('(doState) Invalid datapoint: ' + name + ': ' + value);
246
+ return;
247
+ }
248
+ this.log.silly('(doState) Update: ' + name + ': ' + value);
230
249
  await this.setObjectNotExistsAsync(name, {
231
250
  type: 'state',
232
251
  common: {
@@ -243,19 +262,19 @@ class Senec extends utils.Adapter {
243
262
  // Check object for changes:
244
263
  var obj = await this.getObjectAsync(name);
245
264
  if (obj.common.name != description) {
246
- this.log.debug("Updating object: " + name + " (desc): " + obj.common.name + " -> " + description);
265
+ this.log.debug("(doState) Updating object: " + name + " (desc): " + obj.common.name + " -> " + description);
247
266
  await this.extendObject(name, {common: {name: description}});
248
267
  }
249
268
  if (obj.common.type != typeof(value)) {
250
- this.log.debug("Updating object: " + name + " (type): " + obj.common.type + " -> " + typeof(value));
269
+ this.log.debug("(doState) Updating object: " + name + " (type): " + obj.common.type + " -> " + typeof(value));
251
270
  await this.extendObject(name, {common: {type: typeof(value)}});
252
271
  }
253
272
  if (obj.common.unit != unit) {
254
- this.log.debug("Updating object: " + name + " (unit): " + obj.common.unit + " -> " + unit);
273
+ this.log.debug("(doState) Updating object: " + name + " (unit): " + obj.common.unit + " -> " + unit);
255
274
  await this.extendObject(name, {common: {unit: unit}});
256
275
  }
257
276
  if (obj.common.write != write) {
258
- this.log.debug("Updating object: " + name + " (write): " + obj.common.write + " -> " + write);
277
+ this.log.debug("(doState) Updating object: " + name + " (write): " + obj.common.write + " -> " + write);
259
278
  await this.extendObject(name, {common: {write: write}});
260
279
  }
261
280
 
@@ -265,7 +284,7 @@ class Senec extends utils.Adapter {
265
284
  await this.checkUpdateSelfStat(name);
266
285
  return;
267
286
  }
268
- this.log.silly('Update: ' + name + ': ' + oldState.val + ' -> ' + value);
287
+ this.log.debug('(doState) Update: ' + name + ': ' + oldState.val + ' -> ' + value);
269
288
  }
270
289
  await this.setStateAsync(name, {
271
290
  val: value,
@@ -284,15 +303,15 @@ class Senec extends utils.Adapter {
284
303
  var lang = 1; // fallback to english
285
304
  var langState = await this.getStateAsync('WIZARD.GUI_LANG');
286
305
  if (langState) lang = langState.val;
287
- this.log.silly("Senec language: " + lang);
306
+ this.log.silly("(Decode) Senec language: " + lang);
288
307
  var key = name;
289
308
  if (!isNaN(name.substring(name.lastIndexOf('.')) + 1)) key = name.substring(0, name.lastIndexOf('.'));
290
- this.log.silly("Checking: " + name + " -> " + key);
309
+ this.log.silly("(Decode) Checking: " + name + " -> " + key);
291
310
 
292
311
  if (state_trans[key + "." + lang] !== undefined) {
293
- this.log.silly("Trans found for: " + key + "." + lang);
312
+ this.log.silly("(Decode) Trans found for: " + key + "." + lang);
294
313
  const trans = (state_trans[key + "." + lang] !== undefined ? (state_trans[key + "." + lang][value] !== undefined ? state_trans[key + "." + lang][value] : "(unknown)") : "(unknown)");
295
- this.log.debug("Trans " + key + ":" + value + " = " + trans);
314
+ this.log.silly("(Decode) Trans " + key + ":" + value + " = " + trans);
296
315
  const desc = (state_attr[key + "_Text"] !== undefined) ? state_attr[key + "_Text"].name : key;
297
316
  await this.doState(name + "_Text", trans, desc, "", true);
298
317
  }
@@ -317,7 +336,7 @@ class Senec extends utils.Adapter {
317
336
  if (value2 !== "VARIABLE_NOT_FOUND" && key2 !== "OBJECT_NOT_FOUND") {
318
337
  const key = key1 + '.' + key2;
319
338
  if (state_attr[key] === undefined) {
320
- this.log.debug('REPORT_TO_DEV: State attribute definition missing for: ' + key + ', Val: ' + value2);
339
+ this.log.info('REPORT_TO_DEV: State attribute definition missing for: ' + key + ', Val: ' + value2);
321
340
  }
322
341
  const desc = (state_attr[key] !== undefined) ? state_attr[key].name : key2;
323
342
  const unit = (state_attr[key] !== undefined) ? state_attr[key].unit : "";
@@ -366,7 +385,7 @@ class Senec extends utils.Adapter {
366
385
  const unitRefDay = (state_attr[key + ".ref" + day] !== undefined) ? state_attr[key + ".ref" + day].unit : "";
367
386
 
368
387
  if (refDay != curDay) {
369
- this.log.debug("New " + day + " (or first value seen). Updating stat data for: " + name.substring(10));
388
+ this.log.debug("(Calc) New " + day + " (or first value seen). Updating stat data for: " + name.substring(10));
370
389
  // Change of day
371
390
  await this.doState(key + ".ref" + day, curDay, descRefDay, unitRefDay, false);
372
391
  await this.doState(key + yesterday, valToday, descYesterday, unitYesterday, false);
@@ -374,10 +393,10 @@ class Senec extends utils.Adapter {
374
393
  if (valRef < valCur) {
375
394
  await this.doState(key + refValue, valCur, descRef, unitRef, true);
376
395
  } else {
377
- this.log.warning("Not updating reference value for: " + name.substring(10) + "! Old RefValue (" + valRef + ") >= new RefValue (" + valCur + "). Impossible situation. If this is intentional, please update via admin!");
396
+ 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!");
378
397
  }
379
398
  } else {
380
- this.log.debug("Updating " + day +" value for: " + name.substring(10) + ": " + Number((valCur - valRef).toFixed(2)));
399
+ this.log.silly("(Calc) Updating " + day +" value for: " + name.substring(10) + ": " + Number((valCur - valRef).toFixed(2)));
381
400
  // update today's value
382
401
  await this.doState(key + today, Number((valCur - valRef).toFixed(2)), descToday, unitToday, false);
383
402
  }
@@ -418,7 +437,7 @@ class Senec extends utils.Adapter {
418
437
  const unitRefDay = (state_attr[key + ".ref" + day] !== undefined) ? state_attr[key + ".ref" + day].unit : "";
419
438
 
420
439
  if (refDay != curDay) {
421
- this.log.debug("New " + day + " (or first value seen). Updating Autarky data for: " + key + " " + day);
440
+ this.log.debug("(Autarky) New " + day + " (or first value seen). Updating Autarky data for: " + key + " " + day);
422
441
  // Change of day
423
442
  await this.doState(key + ".ref" + day, curDay, descRefDay, unitRefDay, false);
424
443
  await this.doState(key + yesterday, valToday, descYesterday, unitYesterday, false);
@@ -428,7 +447,7 @@ class Senec extends utils.Adapter {
428
447
  // update today's value - but beware of div/0
429
448
  var newVal = 0;
430
449
  if (valHouseCons > 0) newVal = Number((((valPVGen - valGridExp - valBatCharge + valBatDischarge) / valHouseCons) * 100).toFixed(0));
431
- this.log.debug("Updating Autarky " + day +" value for: " + key + today + ": " + newVal);
450
+ this.log.silly("(Autarky) Updating Autarky " + day +" value for: " + key + today + ": " + newVal);
432
451
  if (valHouseCons > 0) await this.doState(key + today, newVal, descToday, unitToday, false);
433
452
  }
434
453
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.senec",
3
- "version": "1.3.4",
3
+ "version": "1.3.7",
4
4
  "description": "Senec Home",
5
5
  "author": {
6
6
  "name": "NoBl",
@@ -24,29 +24,29 @@
24
24
  "url": "https://github.com/nobl/ioBroker.senec.git"
25
25
  },
26
26
  "dependencies": {
27
- "axios": "^0.25.0",
28
- "@iobroker/adapter-core": "^2.5.1"
27
+ "axios": "^0.27.2",
28
+ "@iobroker/adapter-core": "^2.6.0"
29
29
  },
30
30
  "devDependencies": {
31
- "@alcalzone/release-script": "^3.5.2",
32
- "@iobroker/testing": "^2.5.2",
33
- "@types/chai": "^4.3.0",
31
+ "@alcalzone/release-script": "^3.5.9",
32
+ "@iobroker/testing": "^3.0.2",
33
+ "@types/chai": "^4.3.1",
34
34
  "@types/chai-as-promised": "^7.1.4",
35
35
  "@types/gulp": "^4.0.9",
36
- "@types/mocha": "^9.0.0",
37
- "@types/node": "^17.0.17",
36
+ "@types/mocha": "^9.1.1",
37
+ "@types/node": "^17.0.38",
38
38
  "@types/proxyquire": "^1.3.28",
39
39
  "@types/sinon": "^10.0.6",
40
40
  "@types/sinon-chai": "^3.2.8",
41
41
  "chai": "^4.3.6",
42
42
  "chai-as-promised": "^7.1.1",
43
- "eslint": "^8.8.0",
43
+ "eslint": "^8.16.0",
44
44
  "gulp": "^4.0.2",
45
- "mocha": "^9.1.3",
45
+ "mocha": "^10.0.0",
46
46
  "proxyquire": "^2.1.3",
47
- "sinon": "^12.0.1",
47
+ "sinon": "^14.0.0",
48
48
  "sinon-chai": "^3.7.0",
49
- "typescript": "~4.5.5"
49
+ "typescript": "~4.7.2"
50
50
  },
51
51
  "main": "main.js",
52
52
  "files": [