iobroker.sprinklecontrol 0.2.7 → 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.
- package/.commitmessage +4 -0
- package/Lizenz +1 -1
- package/README.md +8 -6
- package/admin/index_m.html +0 -15
- package/admin/style.css +8 -0
- package/admin/words.js +0 -2
- package/docs/de/sprinklecontrol.md +17 -16
- package/io-package.json +19 -5
- package/lib/evaporation.js +28 -32
- package/lib/myConfig.js +20 -17
- package/lib/sendMessageText.js +11 -19
- package/lib/valveControl.js +47 -61
- package/main.js +677 -598
- package/package.json +64 -62
package/lib/sendMessageText.js
CHANGED
|
@@ -12,11 +12,11 @@ let adapter;
|
|
|
12
12
|
* @type {{}}
|
|
13
13
|
*/
|
|
14
14
|
let ObjMessage = {};
|
|
15
|
+
|
|
15
16
|
/**
|
|
16
|
-
* Modul zum
|
|
17
|
-
*
|
|
18
|
-
* @
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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/valveControl.js
CHANGED
|
@@ -16,7 +16,7 @@ let adapter;
|
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Thread-list
|
|
19
|
-
*
|
|
19
|
+
* → Auflistung aller aktiver Sprenger-Kreise
|
|
20
20
|
* @type {array}
|
|
21
21
|
*/
|
|
22
22
|
const threadList = [];
|
|
@@ -62,7 +62,7 @@ const currentPumpUse = {
|
|
|
62
62
|
|
|
63
63
|
/**
|
|
64
64
|
* Sprinkle (sprinkleName) delete
|
|
65
|
-
*
|
|
65
|
+
* → Ventil (sprinkleName) löschen
|
|
66
66
|
* @param {array.<{sprinkleName: string}>} killList
|
|
67
67
|
*/
|
|
68
68
|
function delList (killList) {
|
|
@@ -81,9 +81,7 @@ function delList (killList) {
|
|
|
81
81
|
/* If a valve is found, delete the last array (entry). Wenn Ventil gefunden letzten Array (Auftrag) löschen */
|
|
82
82
|
if (bValveFound) {
|
|
83
83
|
threadList.pop();
|
|
84
|
-
|
|
85
|
-
adapter.log.info('#2.10 order deleted ID: ' + sprinkleName + ' ( rest orders: ' + threadList.length + ')');
|
|
86
|
-
}
|
|
84
|
+
adapter.log.debug(`delList=> order deleted ID: ${sprinkleName} ( rest orders: ${threadList.length} )`);
|
|
87
85
|
}
|
|
88
86
|
}
|
|
89
87
|
|
|
@@ -152,7 +150,7 @@ function boostList (sprinkleID) {
|
|
|
152
150
|
|
|
153
151
|
/**
|
|
154
152
|
* If boostOn is ended by entering "runningTime = 0", normal operation should be restored. (Delete timer)
|
|
155
|
-
*
|
|
153
|
+
* → Wenn boostOn über die Eingabe "runningTime = 0" beendet wird, so soll zum Normalen ablauf wieder zurückgekehrt werden. (Löschen der Timer)
|
|
156
154
|
* @param {number} sprinkleID
|
|
157
155
|
*/
|
|
158
156
|
function boostKill (sprinkleID) {
|
|
@@ -170,9 +168,7 @@ function boostKill (sprinkleID) {
|
|
|
170
168
|
if (entry.times.boostTime1) {
|
|
171
169
|
clearTimeout(entry.times.boostTime1);
|
|
172
170
|
entry.times.boostTime1 = null;
|
|
173
|
-
|
|
174
|
-
adapter.log.info('#2.11 ID: ' + entry.sprinkleName + ' => boostTime2 (Ende) gelöscht)');
|
|
175
|
-
}
|
|
171
|
+
adapter.log.debug(`boostKill => ID: ${entry.sprinkleName} => boostTime2 (Ende) gelöscht)`);
|
|
176
172
|
}
|
|
177
173
|
if (entry.times.boostTime2) {
|
|
178
174
|
clearTimeout(entry.times.boostTime2);
|
|
@@ -207,14 +203,14 @@ const valveDelay = () => {
|
|
|
207
203
|
* @returns {Promise<void>}
|
|
208
204
|
*/
|
|
209
205
|
const switchTheValvesOffOn = async (threadList, parallel) => {
|
|
210
|
-
/**Sammlung von
|
|
206
|
+
/**Sammlung von.sprinkleName die am Ende von updateList gelöscht werden
|
|
211
207
|
* @type {array} - */
|
|
212
208
|
const killList = [];
|
|
213
209
|
for (const entry of threadList) { // ausschalten der Ventile
|
|
214
|
-
if ((!entry.enabled //
|
|
210
|
+
if ((!entry.enabled // Ventile ausgeschaltet z.B. Intervall-Beregnung
|
|
215
211
|
|| entry.enabled && entry.myBreak // || in Pause z.B. Boost
|
|
216
|
-
|| entry.killSprinkle) // || Bewässerung erledigt
|
|
217
|
-
&& entry.enabled !== entry.enabledState //
|
|
212
|
+
|| entry.killSprinkle) // || Bewässerung erledigt
|
|
213
|
+
&& entry.enabled !== entry.enabledState // && Ventil nicht aktuell
|
|
218
214
|
) {
|
|
219
215
|
adapter.setForeignState(entry.idState, {
|
|
220
216
|
val: false,
|
|
@@ -223,11 +219,11 @@ const switchTheValvesOffOn = async (threadList, parallel) => {
|
|
|
223
219
|
if (err) {
|
|
224
220
|
return err;
|
|
225
221
|
} else {
|
|
226
|
-
adapter.log.info(
|
|
222
|
+
adapter.log.info(`Set (${myConfig.config[entry.sprinkleID].methodControlSM}) ID: ${entry.sprinkleName}, value: ${entry.enabled}`);
|
|
227
223
|
}
|
|
228
224
|
});
|
|
229
225
|
entry.enabledState = entry.enabled;
|
|
230
|
-
/* Ventil aus threadList löschen
|
|
226
|
+
/* Ventil aus threadList löschen → Aufgabe beendet und sind nicht in der Pause */
|
|
231
227
|
if (entry.killSprinkle) {
|
|
232
228
|
killList.push(entry.sprinkleName);
|
|
233
229
|
}
|
|
@@ -257,7 +253,7 @@ const switchTheValvesOffOn = async (threadList, parallel) => {
|
|
|
257
253
|
if (err) {
|
|
258
254
|
return err;
|
|
259
255
|
} else {
|
|
260
|
-
adapter.log.info(
|
|
256
|
+
adapter.log.info(`Valve => Set (${myConfig.config[entry.sprinkleID].methodControlSM}) ID: ${entry.sprinkleName}, value: ${entry.enabled}, duration: ${addTime(entry.wateringTime,'')}`);
|
|
261
257
|
}
|
|
262
258
|
});
|
|
263
259
|
entry.enabledState = entry.enabled;
|
|
@@ -326,7 +322,7 @@ function updateList () {
|
|
|
326
322
|
&& (!entry.calcOn // Vergleich nur bei Berechnung der Verdunstung
|
|
327
323
|
|| !entry.autoOn // Vergleich nur bei Automatik
|
|
328
324
|
|| (myConfig.config[entry.sprinkleID].soilMoisture.val < myConfig.config[entry.sprinkleID].soilMoisture.maxIrrigation)) // Bodenfeuchte noch nicht erreicht? (z.B. beim Regen)
|
|
329
|
-
) { /*
|
|
325
|
+
) { /* Zeit läuft */
|
|
330
326
|
adapter.setState('sprinkle.' + entry.sprinkleName + '.countdown', {
|
|
331
327
|
val: addTime(entry.wateringTime - entry.count, ''),
|
|
332
328
|
ack: true
|
|
@@ -374,7 +370,7 @@ function updateList () {
|
|
|
374
370
|
ack: true
|
|
375
371
|
});
|
|
376
372
|
|
|
377
|
-
/* Wenn in der Konfiguration Bodenfeuchte = 100% gesetzt ist und Auto-Bewässerung aktive, dann Bodenfeuchte = 100% setzen*/
|
|
373
|
+
/* Wenn in der Konfiguration Bodenfeuchte = 100 % gesetzt ist und Auto-Bewässerung aktive, dann Bodenfeuchte = 100 % setzen*/
|
|
378
374
|
if (entry.autoOn && entry.calcOn && myConfig.config[entry.sprinkleID].endIrrigation) {
|
|
379
375
|
myConfig.setSoilMoistPct100(entry.sprinkleID);
|
|
380
376
|
}
|
|
@@ -384,15 +380,13 @@ function updateList () {
|
|
|
384
380
|
if (myConfig.config[entry.sprinkleID].booster) {
|
|
385
381
|
if (boostOn) {boostKill(entry.sprinkleID);}
|
|
386
382
|
boostReady = true;
|
|
387
|
-
|
|
388
|
-
adapter.log.info('#2.12 ID: ' + entry.sprinkleName + 'UpdateList Sprinkle Off: boostReady = ' + boostReady);
|
|
389
|
-
}
|
|
383
|
+
adapter.log.debug(`ID: ${entry.sprinkleName}UpdateList Sprinkle Off: boostReady = ${boostReady}`);
|
|
390
384
|
}
|
|
391
385
|
/* Zeiten löschen */
|
|
392
386
|
clearInterval(entry.countdown);
|
|
393
387
|
/*clearTimeout(entry.onOffTimeoutOn);*/
|
|
394
388
|
clearTimeout(entry.onOffTimeoutOff);
|
|
395
|
-
/* Ventil aus threadList löschen
|
|
389
|
+
/* Ventil aus threadList löschen → Aufgabe beendet */
|
|
396
390
|
//delList(entry.sprinkleName);
|
|
397
391
|
entry.killSprinkle = true;
|
|
398
392
|
updateList();
|
|
@@ -408,7 +402,7 @@ function updateList () {
|
|
|
408
402
|
}
|
|
409
403
|
|
|
410
404
|
if (curFlow < 0) {
|
|
411
|
-
/* - wenn beim Umschalten der Pumpen die Förderleistung zu gering
|
|
405
|
+
/* - wenn beim Umschalten der Pumpen die Förderleistung zu gering → Ventile deaktivieren - */
|
|
412
406
|
// aufsteigend sortieren nach der Verbrauchsmenge
|
|
413
407
|
threadList.sort(mySortAscending);
|
|
414
408
|
|
|
@@ -427,7 +421,7 @@ function updateList () {
|
|
|
427
421
|
ack: true
|
|
428
422
|
});
|
|
429
423
|
// valveOnOff(entry, false, '#2.6 Set: wait, ID: ');
|
|
430
|
-
adapter.log.info(
|
|
424
|
+
adapter.log.info(`Set ID: ${entry.sprinkleName} Pump delivery rate too low, wait! curFlow ${curFlow} parallel: ${parallel}`);
|
|
431
425
|
}
|
|
432
426
|
}
|
|
433
427
|
}
|
|
@@ -447,9 +441,7 @@ function updateList () {
|
|
|
447
441
|
entry.enabled = true; // einschalten merken
|
|
448
442
|
if (myConfig.config[entry.sprinkleID].booster) {
|
|
449
443
|
boostReady = false;
|
|
450
|
-
|
|
451
|
-
adapter.log.info('#2.13 ID: ' + entry.sprinkleName + 'UpdateList sprinkle On: boostReady = ' + boostReady);
|
|
452
|
-
}
|
|
444
|
+
adapter.log.debug(`ID: ${entry.sprinkleName}UpdateList sprinkle On: boostReady = ${boostReady}`);
|
|
453
445
|
setTimeout(() => {
|
|
454
446
|
boostList(entry.sprinkleID);
|
|
455
447
|
}, 50);
|
|
@@ -484,7 +476,7 @@ function updateList () {
|
|
|
484
476
|
|
|
485
477
|
switchTheValvesOffOn(threadList, parallel).then(err => {
|
|
486
478
|
if (err) {
|
|
487
|
-
adapter.log.error('
|
|
479
|
+
adapter.log.error('Error - Set (false) err: ' + err);
|
|
488
480
|
sendMessageText.sendMessage('Error - Set (fase) err: ' + err);
|
|
489
481
|
}
|
|
490
482
|
});
|
|
@@ -494,11 +486,11 @@ function updateList () {
|
|
|
494
486
|
|
|
495
487
|
/**
|
|
496
488
|
* +++++ Set the current pump for irrigation +++++
|
|
497
|
-
*
|
|
489
|
+
* → Festlegen der aktuellen Pumpe zur Bewässerung
|
|
498
490
|
*/
|
|
499
491
|
function setActualPump () {
|
|
500
492
|
if (adapter.config.cisternSettings === true) {
|
|
501
|
-
/* Zisternen-Bewässerung Einstellung in der config (2.Pumpe) aktiviert */
|
|
493
|
+
/* Zisternen-Bewässerung Einstellung in der config (2. Pumpe) aktiviert */
|
|
502
494
|
if (currentPumpUse.enable === true) {
|
|
503
495
|
/* Bewässerungspumpen aktiv */
|
|
504
496
|
if ((fillLevelCistern < parseFloat(adapter.config.triggerMinCisternLevel)) && (currentPumpUse.pumpCistern === true)) {
|
|
@@ -514,7 +506,7 @@ function setActualPump () {
|
|
|
514
506
|
val: true,
|
|
515
507
|
ack: false
|
|
516
508
|
}); // Hauptpumpe Ein
|
|
517
|
-
adapter.log.info('
|
|
509
|
+
adapter.log.info('Pump change (cistern empty) Cistern pump off => main pump on');
|
|
518
510
|
updateList(); // Wasserverbrauch an Pumpenleistung anpassen
|
|
519
511
|
}
|
|
520
512
|
if (fillLevelCistern < parseFloat(adapter.config.triggerMinCisternLevel)) {
|
|
@@ -584,7 +576,7 @@ function setPumpOnOff(pumpOnOff) {
|
|
|
584
576
|
ack: false
|
|
585
577
|
});
|
|
586
578
|
currentPumpUse.enable = true;
|
|
587
|
-
adapter.log.info('
|
|
579
|
+
adapter.log.info('Set pump on');
|
|
588
580
|
}
|
|
589
581
|
} else {
|
|
590
582
|
if (state.val !== false) {
|
|
@@ -593,11 +585,11 @@ function setPumpOnOff(pumpOnOff) {
|
|
|
593
585
|
ack: false
|
|
594
586
|
});
|
|
595
587
|
currentPumpUse.enable = false;
|
|
596
|
-
adapter.log.info('
|
|
588
|
+
adapter.log.info('Set pump off');
|
|
597
589
|
}
|
|
598
590
|
}
|
|
599
591
|
} else if (err) {
|
|
600
|
-
adapter.log.error(
|
|
592
|
+
adapter.log.error(`triggerMainPump ${currentPumpUse.pumpName} is not available (ist nicht erreichbar): ${err}`);
|
|
601
593
|
}
|
|
602
594
|
});
|
|
603
595
|
}
|
|
@@ -618,7 +610,7 @@ function setVoltageOnOff(voltageOnOff) {
|
|
|
618
610
|
val: true,
|
|
619
611
|
ack: false
|
|
620
612
|
});
|
|
621
|
-
adapter.log.info('
|
|
613
|
+
adapter.log.info('Set voltage on');
|
|
622
614
|
}
|
|
623
615
|
} else {
|
|
624
616
|
if (state.val !== false) {
|
|
@@ -626,11 +618,11 @@ function setVoltageOnOff(voltageOnOff) {
|
|
|
626
618
|
val: false ,
|
|
627
619
|
ack: false
|
|
628
620
|
});
|
|
629
|
-
adapter.log.info('
|
|
621
|
+
adapter.log.info('Set voltage off');
|
|
630
622
|
}
|
|
631
623
|
}
|
|
632
624
|
} else if (err) {
|
|
633
|
-
adapter.log.error('
|
|
625
|
+
adapter.log.error('triggerControlVoltage is not available (ist nicht erreichbar): ' + err);
|
|
634
626
|
}
|
|
635
627
|
});
|
|
636
628
|
}
|
|
@@ -678,8 +670,8 @@ function addConsumedAndTime(entry) {
|
|
|
678
670
|
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
|
|
679
671
|
|
|
680
672
|
/**
|
|
681
|
-
*
|
|
682
|
-
* @type {{clearEntireList:
|
|
673
|
+
* -- externe Funktionen -> initValveControl - addList - clearEntireList - setFillLevelCistern --
|
|
674
|
+
* @type {{clearEntireList(): void, initValveControl(ioBroker.Adapter): void, setFillLevelCistern(number): void, addList(Array<{auto: Boolean, sprinkleID: Number, wateringTime: Number}>): void}}
|
|
683
675
|
*/
|
|
684
676
|
const valveControl = {
|
|
685
677
|
/**
|
|
@@ -687,7 +679,7 @@ const valveControl = {
|
|
|
687
679
|
* => Initialisieren Sie die Startkonfiguration von ventilControl
|
|
688
680
|
* @param {ioBroker.Adapter} myAdapter
|
|
689
681
|
*/
|
|
690
|
-
initValveControl
|
|
682
|
+
initValveControl (myAdapter) {
|
|
691
683
|
adapter = adapter || myAdapter;
|
|
692
684
|
currentPumpUse.pumpCistern = false;
|
|
693
685
|
currentPumpUse.pumpName = adapter.config.triggerMainPump || '';
|
|
@@ -703,7 +695,7 @@ const valveControl = {
|
|
|
703
695
|
val: 0 + ' : ' + adapter.config.maximumParallelValves,
|
|
704
696
|
ack: true
|
|
705
697
|
});
|
|
706
|
-
/* Pumpe ausschalter wenn vorhanden */
|
|
698
|
+
/* Pumpe ausschalter, wenn vorhanden */
|
|
707
699
|
if (adapter.config.triggerMainPump !== '') {
|
|
708
700
|
adapter.getState('adapter.config.triggerMainPump', (err, state) => {
|
|
709
701
|
if (state) {
|
|
@@ -714,7 +706,7 @@ const valveControl = {
|
|
|
714
706
|
}
|
|
715
707
|
});
|
|
716
708
|
}
|
|
717
|
-
/* Pumpe (Zisterne) ausschalter wenn vorhanden */
|
|
709
|
+
/* Pumpe (Zisterne) ausschalter, wenn vorhanden */
|
|
718
710
|
if (adapter.config.triggerCisternPump !== '') {
|
|
719
711
|
adapter.getState('adapter.config.triggerCisternPump', (err, state) => {
|
|
720
712
|
if (state) {
|
|
@@ -728,7 +720,7 @@ const valveControl = {
|
|
|
728
720
|
/* alle Ventile (.name = "hm-rpc.0.MEQ1234567.3.STATE") in einem definierten Zustand (false) versetzen*/
|
|
729
721
|
const result = adapter.config.events;
|
|
730
722
|
if (result) {
|
|
731
|
-
for(const res of result) {
|
|
723
|
+
for (const res of result) {
|
|
732
724
|
adapter.getState(res.name, (err, state) => {
|
|
733
725
|
if (state) {
|
|
734
726
|
adapter.setState(res.name, {
|
|
@@ -743,19 +735,19 @@ const valveControl = {
|
|
|
743
735
|
|
|
744
736
|
/**
|
|
745
737
|
* Add Sprinkle
|
|
746
|
-
*
|
|
747
|
-
* - auto
|
|
748
|
-
* - sprinkleID
|
|
749
|
-
* - wateringTime
|
|
738
|
+
* → Sprinkle hinzufügen
|
|
739
|
+
* - auto → Automatik == (true), Handbetrieb == (false)
|
|
740
|
+
* - sprinkleID → zugriff auf myConfig.config[sprinkleID]. xyz
|
|
741
|
+
* - wateringTime → Bewässerungszeit in min
|
|
750
742
|
* @param {Array.<{auto: Boolean, sprinkleID: Number, wateringTime: Number}>} sprinkleList
|
|
751
743
|
*/
|
|
752
|
-
addList
|
|
744
|
+
addList (sprinkleList) {
|
|
753
745
|
//
|
|
754
746
|
for (const res of sprinkleList) {
|
|
755
747
|
const sprinkleName = myConfig.config[res.sprinkleID].objectName;
|
|
756
748
|
/**
|
|
757
749
|
* add done
|
|
758
|
-
*
|
|
750
|
+
* → hinzufügen erledigt (Sprenger bereits aktive)
|
|
759
751
|
* @type {boolean}
|
|
760
752
|
*/
|
|
761
753
|
let addDone = false;
|
|
@@ -774,9 +766,7 @@ const valveControl = {
|
|
|
774
766
|
ack: false
|
|
775
767
|
});
|
|
776
768
|
addDone = true; // Sprinkle found
|
|
777
|
-
|
|
778
|
-
adapter.log.info('#2.14 update ID: ' + entry.sprinkleName + ' new time: ' + addTime(res.wateringTime, ''));
|
|
779
|
-
}
|
|
769
|
+
adapter.log.debug(`update ID: ${entry.sprinkleName} new time: ${addTime(res.wateringTime, '')}`);
|
|
780
770
|
break;
|
|
781
771
|
}
|
|
782
772
|
}
|
|
@@ -821,9 +811,7 @@ const valveControl = {
|
|
|
821
811
|
val: addTime(res.wateringTime, ''),
|
|
822
812
|
ack: false
|
|
823
813
|
});
|
|
824
|
-
|
|
825
|
-
adapter.log.info('#2.15 ID: ' + sprinkleName + 'new order created: ' + JSON.stringify(threadList[newThread.id]));
|
|
826
|
-
}
|
|
814
|
+
adapter.log.debug(`ID: ${sprinkleName} new order created: ${JSON.stringify(threadList[newThread.id])}`);
|
|
827
815
|
}
|
|
828
816
|
}
|
|
829
817
|
updateList();
|
|
@@ -833,7 +821,7 @@ const valveControl = {
|
|
|
833
821
|
* switch off all devices, when close the adapter
|
|
834
822
|
* => Beim Beenden des adapters alles ausschalten
|
|
835
823
|
*/
|
|
836
|
-
clearEntireList
|
|
824
|
+
clearEntireList () {
|
|
837
825
|
if (boostListTimer) {
|
|
838
826
|
clearTimeout(boostListTimer);
|
|
839
827
|
}
|
|
@@ -873,9 +861,7 @@ const valveControl = {
|
|
|
873
861
|
entry.times.boostTime2 = null;
|
|
874
862
|
}
|
|
875
863
|
threadList.pop();
|
|
876
|
-
|
|
877
|
-
adapter.log.info('#2.16 order deleted Stop all ID: ' + entry.sprinkleName + ' ( rest orders: ' + threadList.length + ')');
|
|
878
|
-
}
|
|
864
|
+
adapter.log.debug(`order deleted Stop all ID: ${entry.sprinkleName} ( rest orders: ${threadList.length} )`);
|
|
879
865
|
}
|
|
880
866
|
updateList();
|
|
881
867
|
}, // End clearEntireList
|
|
@@ -884,11 +870,11 @@ const valveControl = {
|
|
|
884
870
|
* Änderungen des Füllstands setzen + Vorrang der Pumpe setzen
|
|
885
871
|
* @param {number} levelCistern
|
|
886
872
|
*/
|
|
887
|
-
setFillLevelCistern
|
|
873
|
+
setFillLevelCistern (levelCistern) {
|
|
888
874
|
fillLevelCistern = (typeof levelCistern === 'number') ? levelCistern : 0 ;
|
|
889
875
|
setActualPump();
|
|
890
876
|
} // End setFillLevelCistern
|
|
891
|
-
}
|
|
877
|
+
} // End valveControl
|
|
892
878
|
|
|
893
879
|
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
|
|
894
880
|
|