iobroker.sprinklecontrol 0.2.5 → 0.2.8

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.
@@ -2,7 +2,7 @@
2
2
  /*
3
3
  info: log aufbau evaporation.js: #3.*
4
4
  */
5
- const myConfig = require('./myConfig.js'); // myConfig => Speichern und abrufen von Konfigurationsdaten der Ventile
5
+ const myConfig = require('./myConfig.js'); // myConfig Speichern und abrufen von Konfigurationsdaten der Ventile
6
6
  const formatTime = require('./tools').formatTime; // tools => laden von Hilfsfunktionen
7
7
  const trend = require('./tools').trend; // tools => laden von Hilfsfunktionen
8
8
 
@@ -11,18 +11,18 @@ let adapter;
11
11
 
12
12
  /* calcEvaporation */
13
13
  /** akt. Temperatur °C
14
- * - -20 bis 55°C
14
+ * - -20 bis 55 °C
15
15
  * - ts Zeitstempel, wann der Wert aktualisiert wurde (auch ohne Wertänderung)
16
16
  * @type {{val: number, ts: any}} */
17
17
  let curTemperature = {},
18
18
  /** akt. LuftFeuchtigkeit in %
19
- * - 1 bis 99%
19
+ * - 1 bis 99 %
20
20
  * - lc: Zeitstempel, wann der Wert geändert wurde
21
21
  * @type {{val: number, lc: any}} */
22
22
  curHumidity = {},
23
23
  /** akt. Helligkeit (relativ)
24
24
  * - 0 bis 100000
25
- * - intern Begrenzung 100...7000
25
+ * - intern Begrenzung 100...7000
26
26
  * - lc: Zeitstempel, wann der Wert geändert wurde
27
27
  * @type {{val: number, lc: any}} */
28
28
  curIllumination = {},
@@ -45,11 +45,11 @@ let ETpTodayNum = 0,
45
45
  * - berechneter tabellarischer Tageswert
46
46
  * @type {number} */
47
47
  toDayExtraTerStr,
48
- /** kleinste Extraterrestrische Tagesstrahlung im Jahr in W/m²
48
+ /** kleinste extraterrestrische Tagesstrahlung im Jahr in W/m²
49
49
  * - berechneter tabellarischer Mindestwert
50
50
  * @type {number} */
51
51
  minExtraTerStr,
52
- /** größter Extraterrestrische Tagesstrahlung im Jahr in W/m²
52
+ /** größter extraterrestrische Tagesstrahlung im Jahr in W/m²
53
53
  * - berechneter tabellarischer Maximalwert
54
54
  * @type {number} */
55
55
  maxExtraTerStr;
@@ -136,12 +136,12 @@ function extraTerStr () { // latitude Breitengrad
136
136
  * @param {number} timeDifference
137
137
  */
138
138
  function calcEvaporation (timeDifference) {
139
- if (adapter.config.debug) {adapter.log.info('calcEvaporation => gestartet TimeDifferenz: ' + timeDifference);}
139
+ adapter.log.debug(`calcEvaporation => gestartet TimeDifferenz: ${timeDifference}`);
140
140
  // Sonnenscheindauer in %
141
141
  const curSunshineDuration = (curIllumination.val < 100) ? (0) : (curIllumination.val > 7000) ? (1) : ((curIllumination.val - 100) / (6900));
142
142
 
143
143
  /**
144
- * Sättigungsdampfdruck Es in hPa
144
+ * Sättigungsdampfdruck 'Es' in hPa
145
145
  * @type {number} m1
146
146
  */
147
147
  const m1 = 6.11 * ( 10 ** (( 7.48 * curTemperature.val ) / ( 237 + curTemperature.val )));
@@ -201,7 +201,7 @@ function addEvaporation (value) {
201
201
 
202
202
  /**
203
203
  * externe Funktionen
204
- * @type {{setCurTemperature: evaporation.setCurTemperature, setCurIllumination: evaporation.setCurIllumination, initEvaporation: evaporation.initEvaporation, timeExtension: (function(number): number), setCurAmountOfRain: evaporation.setCurAmountOfRain, setNewDay: evaporation.setNewDay, setCurHumidity: evaporation.setCurHumidity, setCurWindSpeed: evaporation.setCurWindSpeed, setETpTodayNum: evaporation.setETpTodayNum}}
204
+ * @type {{setCurTemperature(number, (Date|number)): void, setCurIllumination(number, *): void, initEvaporation(ioBroker.Adapter): void, timeExtension(number): number, setCurAmountOfRain(number): void, setNewDay(): void, setCurHumidity(number, *): void, setCurWindSpeed(number, *): void, setETpTodayNum(number): void}}
205
205
  */
206
206
  const evaporation = {
207
207
  /**
@@ -209,7 +209,7 @@ const evaporation = {
209
209
  * - Bereitstellen von Umweltdaten
210
210
  * @param {ioBroker.Adapter} myAdapter
211
211
  */
212
- initEvaporation: (myAdapter) => {
212
+ initEvaporation (myAdapter) {
213
213
  adapter = myAdapter;
214
214
  /**
215
215
  * - Sensors to calculate the evaporation are required
@@ -230,7 +230,7 @@ const evaporation = {
230
230
  curTemperature.val = (parseFloat(state.val));
231
231
  curTemperature.ts = state.ts;
232
232
  } else {
233
- adapter.log.warn('sensorOutsideTemperature => Wrong value: '+ state.val + ', Type: ' + typeof state.val)
233
+ adapter.log.warn(`sensorOutsideTemperature => Wrong value: ${state.val}, Type: ${typeof state.val}`)
234
234
  }
235
235
  }
236
236
  });
@@ -246,7 +246,7 @@ const evaporation = {
246
246
  curHumidity.val = (parseFloat(state.val));
247
247
  curHumidity.lc = state.lc;
248
248
  } else {
249
- adapter.log.warn('sensorOutsideHumidity => Wrong value: '+ state.val + ', Type: ' + typeof state.val)
249
+ adapter.log.warn(`sensorOutsideHumidity => Wrong value: ${state.val}, Type: ${typeof state.val}`)
250
250
  }
251
251
  }
252
252
  });
@@ -278,7 +278,7 @@ const evaporation = {
278
278
  curWindSpeed.val = (parseFloat(state.val));
279
279
  curWindSpeed.lc = state.lc;
280
280
  } else {
281
- adapter.log.warn('sensorWindSpeed => Wrong value: '+ state.val + ', Type: ' + typeof state.val)
281
+ adapter.log.warn(`sensorWindSpeed => Wrong value: ${state.val}, Type: ${typeof state.val}`)
282
282
  }
283
283
  }
284
284
  });
@@ -293,7 +293,7 @@ const evaporation = {
293
293
  if (!Number.isNaN(Number.parseFloat(state.val))) {
294
294
  lastRainCounter = (parseFloat(state.val));
295
295
  } else {
296
- adapter.log.warn('sensorRainfall => Wrong value: '+ state.val + ', Type: ' + typeof state.val)
296
+ adapter.log.warn(`sensorRainfall => Wrong value: ${state.val}, Type: ${typeof state.val}`)
297
297
  }
298
298
  }
299
299
  })
@@ -304,7 +304,7 @@ const evaporation = {
304
304
  * @param {number} value curTemperature
305
305
  * @param {Date | number} curTime ts (akt. Zeit)
306
306
  */
307
- setCurTemperature: (value, curTime) => {
307
+ setCurTemperature (value, curTime) {
308
308
  curTemperature.val = value;
309
309
  curTemperature.ts = curTime;
310
310
 
@@ -324,9 +324,7 @@ const evaporation = {
324
324
  * @type {number}
325
325
  */
326
326
  const timeDifference = (curTime - lastChangeEvaPor) / 86400000; // 1Tag === 24/h * 60/min * 60/s * 1000/ms === 86400000 ms
327
- if (adapter.config.debug) {
328
- adapter.log.info('ts: ' + curTime + ' - lastChangeEvaPor: ' + lastChangeEvaPor + ' = timeDifference: ' + timeDifference);
329
- }
327
+ adapter.log.debug(`ts: ${curTime} - lastChangeEvaPor: ${lastChangeEvaPor} = timeDifference: ${timeDifference}`);
330
328
 
331
329
  if (timeDifference) {
332
330
  setTimeout(() => {
@@ -340,7 +338,7 @@ const evaporation = {
340
338
  * @param {number} value
341
339
  * @param {any} lc
342
340
  */
343
- setCurHumidity: (value, lc) => {
341
+ setCurHumidity (value, lc) {
344
342
  curHumidity.val = value;
345
343
  curHumidity.lc =lc;
346
344
  },
@@ -349,7 +347,7 @@ const evaporation = {
349
347
  * @param {number} value
350
348
  * @param {any} lc
351
349
  */
352
- setCurIllumination: (value, lc) => {
350
+ setCurIllumination (value, lc) {
353
351
  curIllumination.val = value;
354
352
  curIllumination.lc = lc;
355
353
  },
@@ -358,38 +356,36 @@ const evaporation = {
358
356
  * @param {number} value Windgeschwindigkeit in km/h
359
357
  * @param {any} lc
360
358
  */
361
- setCurWindSpeed: (value, lc) => {
359
+ setCurWindSpeed (value, lc) {
362
360
  curWindSpeed.val = value;
363
361
  curWindSpeed.lc = lc;
364
362
  },
365
363
  /**
366
364
  * akt. Regenmengenzähler
367
- * => Bei einer Änderungen über 10 mm wird der Wert nur intern gespeichert,
365
+ * Bei einer Änderung über 10 mm wird der Wert nur intern gespeichert,
368
366
  * es findet aber keine Anwendung statt!
369
- * @param {number} value current rain counter => aktueller Regencontainer in mm
367
+ * @param {number} value current rain counter aktueller Regencontainer in mm
370
368
  */
371
- setCurAmountOfRain: (value) => {
369
+ setCurAmountOfRain (value) {
372
370
  if ((value > lastRainCounter) // es regnet
373
- && ((value - lastRainCounter) < 10) // && Plausibilitätskontrolle (Regenmenge unter 10mm)
371
+ && ((value - lastRainCounter) < 10) // && Plausibilitätskontrolle (Regenmenge unter 10 mm)
374
372
  ) {
375
373
  addEvaporation(lastRainCounter - value);
376
374
  }
377
375
  lastRainCounter = value;
378
- if (adapter.config.debug) {
379
- adapter.log.info('lastRainCounter: ' + lastRainCounter + ' curAmountOfRain: ' + (lastRainCounter - value) + ' state.val: ' + value);
380
- }
376
+ adapter.log.debug(`lastRainCounter: ${lastRainCounter} curAmountOfRain: ${(lastRainCounter - value)} state.val: ${value}`);
381
377
  },
382
378
  /**
383
379
  * Summe der heutigen Verdunstung
384
380
  * @param {number} value
385
381
  */
386
- setETpTodayNum: (value) => {
382
+ setETpTodayNum (value) {
387
383
  ETpTodayNum = value;
388
384
  },
389
385
  /**
390
386
  * ETpToday und ETpYesterday in evaporation aktualisieren da ein neuer Tag beginnt
391
387
  */
392
- setNewDay: () => {
388
+ setNewDay () {
393
389
  extraTerStr();
394
390
  setTimeout(() => {
395
391
  adapter.setState('evaporation.ETpYesterday', { val: Math.round(ETpTodayNum * 10000) / 10000, ack: true });
@@ -399,10 +395,10 @@ const evaporation = {
399
395
  },
400
396
  /**
401
397
  *
402
- * @param {number} maxExtension - Wert aus der Konfiguration (wateringAdd 100...300%) des Bewässerungskreises
398
+ * @param {number} maxExtension - Wert aus der Konfiguration (wateringAdd 100...300 %) des Bewässerungskreises
403
399
  * @return {number} - Erweiterung/Multiplikator (1...3) der Bewässerungszeit
404
400
  */
405
- timeExtension: (maxExtension) => {
401
+ timeExtension (maxExtension) {
406
402
  return trend(minExtraTerStr, maxExtraTerStr,1, maxExtension / 100, toDayExtraTerStr);
407
403
  }
408
404
  }
package/lib/myConfig.js CHANGED
@@ -4,7 +4,7 @@
4
4
  info: log aufbau myConfig.js: #1.*
5
5
  */
6
6
  const trend = require('./tools').trend; // tools => laden von Hilfsfunktionen
7
- const formatTime = require('./tools').formatTime; // tools => laden von Hilfsfunktionen
7
+ // const formatTime = require('./tools').formatTime; // tools => laden von Hilfsfunktionen
8
8
 
9
9
  /**
10
10
  * The adapter instance
@@ -29,12 +29,11 @@ let adapter;
29
29
  * @param {boolean} res.thur - Donnerstag, Thursday (Thur) (Thurs)
30
30
  * @param {boolean} res.fri - Freitag, Friday (Fri)
31
31
  * @param {boolean} res.sat - Samstag, Saturday (Sat)
32
- * @param {string} objectName - zur StableVersion löschen
33
32
  * @returns {{setMetConSM: string, setPct: (number|null), setStartDay: (string|null), setStartFixDay: boolean[], setAnalogZPct: (number|null), setAnalogOHPct: (number|null), setTrigSM: (string|null), setVal: (number|null), setBool: (boolean|null)}}
34
33
  */
35
- function getMetConSM(res, objectName) {
34
+ function getMetConSM(res) {
36
35
 
37
- if (res.methodControlSM === 'bistable' && res.triggerSM.length > 5) {
36
+ if (res.methodControlSM === 'bistable') {
38
37
  // bistable (Bodenfeuchte-Sensor)
39
38
  adapter.subscribeForeignStates(res.triggerSM);
40
39
  return {
@@ -50,7 +49,7 @@ function getMetConSM(res, objectName) {
50
49
  };
51
50
 
52
51
 
53
- } else if (res.methodControlSM === 'analog' && res.triggerSM.length > 5) {
52
+ } else if (res.methodControlSM === 'analog') {
54
53
  // analog (Bodenfeuchte-Sensor)
55
54
  adapter.subscribeForeignStates(res.triggerSM);
56
55
  return {
@@ -74,10 +73,10 @@ function getMetConSM(res, objectName) {
74
73
 
75
74
  if(res.startDay === 'threeRd' || res.startDay === 'twoNd') {
76
75
  /** @type {number} */
77
- let today = formatTime(adapter,'', 'day');
76
+ //let today = formatTime(adapter,'', 'day');
78
77
  /** @type {number} */
79
- let nextStartDay = ((today + 1) > 6) ? 0 : (today + 1);
80
- startFixDay[nextStartDay] = true; // Start am nächsten Tag
78
+ //let nextStartDay = ((today + 1) > 6) ? 0 : (today + 1);
79
+ //startFixDay[nextStartDay] = true; // Start am nächsten Tag
81
80
  } else if (res.startDay === 'fixDay') {
82
81
  startFixDay[0] = res.sun;
83
82
  startFixDay[1] = res.mon;
@@ -98,7 +97,7 @@ function getMetConSM(res, objectName) {
98
97
  setVal: null,
99
98
  setBool: null
100
99
  };
101
- } else {
100
+ } else if (res.methodControlSM === 'calculation') {
102
101
  // interne (Berechnung der Verdunstung)
103
102
  return {
104
103
  setStartDay: null,
@@ -111,6 +110,8 @@ function getMetConSM(res, objectName) {
111
110
  setVal: parseFloat(res.maxSoilMoistureIrrigation) / 2,
112
111
  setBool: null
113
112
  };
113
+ } else {
114
+ adapter.log.warn('No irrigation type is selected in the SprinkleControl configuration! Please adjust.');
114
115
  }
115
116
  }
116
117
 
@@ -128,8 +129,13 @@ const myConfig = {
128
129
  /** Name des Bewässerungskreises
129
130
  * @type {string}
130
131
  */
131
- const objectName = res.sprinkleName.replace(/[.;, ]/g, '_');
132
- const metConSM = getMetConSM(res, objectName);
132
+ let objectName
133
+ if(res.sprinkleName !== '') {
134
+ objectName = res.sprinkleName.replace(/[.;, ]/g, '_');
135
+ } else if (res.sprinkleName === '') {
136
+ objectName = res.name.replace(/[.;, ]/g, '_');
137
+ }
138
+ const metConSM = getMetConSM(res);
133
139
  const newEntry = {
134
140
  /** Starttage in der Woche
135
141
  * - 0(Sun); 1(Mon); 2(Tue); 3(Wed); 4(Thur); 5(Fri); 6(Sat)
@@ -178,9 +184,7 @@ const myConfig = {
178
184
  adapter.subscribeStates(newEntry.autoOnID); // abonnieren der Statusänderungen des Objekts (reagieren auf 'autoOn' der einzelnen Bewässerungskreise)
179
185
  // adapter.subscribeForeignStates(newEntry.idState); // abonnieren der Statusänderungen des Objekts (reagiert auf Änderung des 'Ventils' der einzelnen Bewässerungskreise zur Fehlerkontrolle bzw. Verbrauchsermittlung)
180
186
  }
181
- //if (adapter.config.debug) {
182
- adapter.log.info('#1.0 => Set ID: ' + objectName + '(' + newEntry.sprinkleID + ') hinzugefügt - ' + JSON.stringify(myConfig.config[newEntry.sprinkleID]));
183
- //}
187
+ adapter.log.debug(`Config ${objectName} created (${newEntry.sprinkleID}) - ${JSON.stringify(myConfig.config[newEntry.sprinkleID])}`);
184
188
  }
185
189
  }
186
190
  },
@@ -192,7 +196,8 @@ const myConfig = {
192
196
  applyEvaporation: (eTP) => {
193
197
  if (myConfig.config) {
194
198
  for(const entry of myConfig.config) {
195
- if (entry.methodControlSM === 'calculation') {
199
+ if (entry.methodControlSM === 'calculation'
200
+ && !(entry.inGreenhouse && (eTP < 0))) { // nicht anwenden im Gewächshaus und Regen
196
201
  const objectName = entry.objectName;
197
202
  const pfadActSoiMoi = 'sprinkle.' + objectName + '.actualSoilMoisture';
198
203
 
@@ -203,9 +208,7 @@ const myConfig = {
203
208
  entry.soilMoisture.val = entry.soilMoisture.maxRain;
204
209
  }
205
210
  entry.soilMoisture.pct = Math.round(1000 * entry.soilMoisture.val / entry.soilMoisture.maxIrrigation) / 10; // Berechnung in %
206
- if (adapter.config.debug) {
207
- adapter.log.info('#1.1 Set ID: ' + objectName + ' => soilMoisture: ' + entry.soilMoisture.val + ' soilMoisture in %: ' + entry.soilMoisture.pct + ' %');
208
- }
211
+ adapter.log.debug(`apply Evaporation: ${objectName} => soilMoisture: ${entry.soilMoisture.val} soilMoisture: ${entry.soilMoisture.pct} %`);
209
212
  adapter.setState(pfadActSoiMoi, {
210
213
  val: entry.soilMoisture.pct,
211
214
  ack: true
@@ -216,12 +219,9 @@ const myConfig = {
216
219
  },
217
220
  /**
218
221
  * Bodenfeuchte (soilMoisture) setzen auf: => pct = 100%; val = maxIrrigation
219
- * @param {number} mySprinkleID - ID des Bewässerungskreis
222
+ * @param {number} mySprinkleID - ID des Bewässerungskreises
220
223
  */
221
224
  setSoilMoistPct100: (mySprinkleID) => {
222
- if (adapter.config.debug) {
223
- adapter.log.info('#1.2 Set ID: '+ myConfig.config[mySprinkleID].objectName + ' setSoilMoistPct100 = 100%');
224
- }
225
225
  myConfig.config[mySprinkleID].soilMoisture.val = myConfig.config[mySprinkleID].soilMoisture.maxIrrigation;
226
226
  myConfig.config[mySprinkleID].soilMoisture.pct = 100;
227
227
  adapter.setState('sprinkle.' + myConfig.config[mySprinkleID].objectName + '.actualSoilMoisture', {
@@ -243,10 +243,10 @@ const myConfig = {
243
243
  ack: true
244
244
  });
245
245
  } else {
246
- adapter.log.warn('The ' + myConfig.config[mySprinkleID].objectName + ' soil moisture sensor does not provide a Boolean signal');
246
+ adapter.log.warn(`The ${myConfig.config[mySprinkleID].objectName} soil moisture sensor does not provide a Boolean signal`);
247
247
  }
248
248
  } else {
249
- adapter.log.warn('Please check the signals and settings of the ' + myConfig.config[mySprinkleID].objectName + ' soil moisture sensor');
249
+ adapter.log.warn(`Please check the signals and settings of the ${myConfig.config[mySprinkleID].objectName} soil moisture sensor`);
250
250
  }
251
251
  },
252
252
  /**
@@ -261,10 +261,10 @@ const myConfig = {
261
261
  newVal = parseFloat(newVal);
262
262
  if (newVal < myConfig.config[mySprinkleID].analogZPct) {
263
263
  myVal = myConfig.config[mySprinkleID].analogZPct;
264
- adapter.log.warn(myConfig.config[mySprinkleID].objectName + ': analog soil moisture sensor at 0 % => The value range was undercut');
264
+ adapter.log.warn(`${myConfig.config[mySprinkleID].objectName}: analog soil moisture sensor at 0 % => The value range was undercut`);
265
265
  } else if (newVal > myConfig.config[mySprinkleID].analogOHPct) {
266
266
  myVal = myConfig.config[mySprinkleID].analogOHPct;
267
- adapter.log.warn(myConfig.config[mySprinkleID].objectName + ': analog soil moisture sensor at 100 % => The range of values has been exceeded');
267
+ adapter.log.warn(`${myConfig.config[mySprinkleID].objectName}: analog soil moisture sensor at 100 % => The range of values has been exceeded`);
268
268
  } else {
269
269
  myVal = newVal;
270
270
  }
@@ -274,10 +274,10 @@ const myConfig = {
274
274
  ack: true
275
275
  });
276
276
  } else {
277
- adapter.log.warn('The ' + myConfig.config[mySprinkleID].objectName + ' soil moisture sensor does not provide a Number signal');
277
+ adapter.log.warn(`The ${myConfig.config[mySprinkleID].objectName} soil moisture sensor does not provide a Number signal`);
278
278
  }
279
279
  } else {
280
- adapter.log.warn('Please check the signals and settings of the ' + myConfig.config[mySprinkleID].objectName + ' soil moisture sensor');
280
+ adapter.log.warn(`Please check the signals and settings of the ${myConfig.config[mySprinkleID].objectName} soil moisture sensor`);
281
281
  }
282
282
  },
283
283
  /**
@@ -286,9 +286,6 @@ const myConfig = {
286
286
  * @param {number} addVal - soilMoisture.val wird um den Wert addVal erhöht
287
287
  */
288
288
  addSoilMoistVal: (mySprinkleID, addVal) => {
289
- if (adapter.config.debug) {
290
- adapter.log.info('#1.3 Set ID: '+ myConfig.config[mySprinkleID].objectName + ' addVal: (' + addVal + ')');
291
- }
292
289
  myConfig.config[mySprinkleID].soilMoisture.val += addVal;
293
290
  if (myConfig.config[mySprinkleID].soilMoisture.val > myConfig.config[mySprinkleID].soilMoisture.maxRain) {myConfig.config[mySprinkleID].soilMoisture.val = myConfig.config[mySprinkleID].soilMoisture.maxRain}
294
291
  myConfig.config[mySprinkleID].soilMoisture.pct = Math.round(1000 * myConfig.config[mySprinkleID].soilMoisture.val
@@ -12,11 +12,11 @@ let adapter;
12
12
  * @type {{}}
13
13
  */
14
14
  let ObjMessage = {};
15
+
15
16
  /**
16
- * Modul zum versenden von Nachrichten mittels Telegram, E-Mail, Pushover oder WhatsApp
17
- * Der passende Adapter muss installiert sein!
18
- * @param {any} adapter
19
- * @param {object} ObjMessage
17
+ * Modul zum Versenden von Nachrichten mittels Telegram, E-Mail, Pushover oder WhatsApp
18
+ * der passende Adapter muss installiert sein!
19
+ * @type {{onlySendError(): boolean, sendMessage(string): void, initConfigMessage(ioBroker.Adapter): void}}
20
20
  */
21
21
  const sendMessageText = {
22
22
 
@@ -24,7 +24,7 @@ const sendMessageText = {
24
24
  *
25
25
  * @param {ioBroker.Adapter} myAdapter - Kopie von Adapter main.js
26
26
  */
27
- initConfigMessage: (myAdapter) => {
27
+ initConfigMessage (myAdapter) {
28
28
  adapter = myAdapter;
29
29
  switch (adapter.config.notificationsType) {
30
30
  case 'Telegram':
@@ -87,7 +87,7 @@ const sendMessageText = {
87
87
  * send Message ist für Telegram formatiert und muss für andere Empfänger umformatiert werden
88
88
  *@param {string} message - Botschaft
89
89
  */
90
- sendMessage: (message) => {
90
+ sendMessage (message) {
91
91
 
92
92
  let sendMessage = message;
93
93
 
@@ -98,9 +98,7 @@ const sendMessageText = {
98
98
  ObjMessage.instance !== '' &&
99
99
  ObjMessage.instance !== null &&
100
100
  ObjMessage.instance !== undefined) {
101
- if (adapter.config.debug) {
102
- adapter.log.debug('start sendMessageText per Telegram');
103
- }
101
+ adapter.log.debug('start sendMessageText per Telegram');
104
102
  sendMessage = '<b><u>SprinkleControl:</u></b>\n' + sendMessage;
105
103
  // send Telegram Message
106
104
  if ((ObjMessage.User) && (ObjMessage.User !== 'allTelegramUsers')) {
@@ -128,9 +126,7 @@ const sendMessageText = {
128
126
  ObjMessage.instance !== undefined) {
129
127
  sendMessage = '<b><u>SprinkleControl:</u></b>\n' + sendMessage;
130
128
  sendMessage = sendMessage.replace(/\n/g, '<br />');
131
- if (adapter.config.debug) {
132
- adapter.log.debug('start sendMessageText per E-Mail on used E-Mail-Instance: ${adapter.ObjMessage.instance}');
133
- }
129
+ adapter.log.debug(`start sendMessageText per E-Mail on used E-Mail-Instance: ${ObjMessage.instance}`);
134
130
  // Send E-Mail Message
135
131
  adapter.sendTo(ObjMessage.instance, 'send', {
136
132
  html: sendMessage,
@@ -147,9 +143,7 @@ const sendMessageText = {
147
143
  ObjMessage.instance !== '' &&
148
144
  ObjMessage.instance !== null &&
149
145
  ObjMessage.instance !== undefined) {
150
- if (adapter.config.debug) {
151
- adapter.log.debug('start sendMessageText per E-Mail on used E-Mail-Instance: ${adapter.ObjMessage.instance}');
152
- }
146
+ adapter.log.debug(`start sendMessageText per E-Mail on used E-Mail-Instance: ${ObjMessage.instance}`);
153
147
  // Send pushover Message
154
148
  if (ObjMessage.SilentNotice === 'true' || ObjMessage.SilentNotice === true) {
155
149
  adapter.sendTo(ObjMessage.instance, 'send', {
@@ -181,9 +175,7 @@ const sendMessageText = {
181
175
  sendMessage = sendMessage.replace(/<b>|<\/b>/g, '*'); // Fett Bold
182
176
  sendMessage = sendMessage.replace(/<i>|<\/i>/g, '_'); // kursive Italic
183
177
  sendMessage = sendMessage.replace(/<u>|<\/u>/g, ''); // unterstrichen
184
- if (adapter.config.debug) {
185
- adapter.log.debug(`start sendMessageText per WhatsApp on used WhatsApp-Instance: ${ObjMessage.instance}`);
186
- }
178
+ adapter.log.debug(`start sendMessageText per WhatsApp on used WhatsApp-Instance: ${ObjMessage.instance}`);
187
179
  // Send WhatsApp Message
188
180
  adapter.sendTo(ObjMessage.instance, 'send', {
189
181
  text: sendMessage
@@ -198,7 +190,7 @@ const sendMessageText = {
198
190
  * Nachrichtenversandabfrage => true (Ja)
199
191
  * @returns {boolean}
200
192
  */
201
- onlySendError: () => {
193
+ onlySendError () {
202
194
  return (adapter.config.notificationEnabled && adapter.config.notificationsType && ObjMessage.onlyError);
203
195
  }
204
196
 
package/lib/tools.js CHANGED
@@ -21,7 +21,7 @@ function addTime(time1, time2){
21
21
  } // end function seconds2string
22
22
 
23
23
  function string2seconds(n) {
24
- if(!n) return 0;
24
+ if(!n || (n === "--:--")) return 0;
25
25
  if(Number.isInteger(n)) return n;
26
26
  const tmp = n.split(':').reverse();
27
27
  if(!tmp.length) tmp[0] = 0; // Sekunden