iobroker.sprinklecontrol 1.0.7 → 1.0.9
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 +34 -4
- package/admin/i18n/{de/translations.json → de.json} +5 -0
- package/admin/i18n/{en/translations.json → en.json} +6 -1
- package/admin/i18n/{es/translations.json → es.json} +5 -0
- package/admin/i18n/{fr/translations.json → fr.json} +5 -0
- package/admin/i18n/{it/translations.json → it.json} +5 -0
- package/admin/i18n/{nl/translations.json → nl.json} +5 -0
- package/admin/i18n/{pl/translations.json → pl.json} +5 -0
- package/admin/i18n/{pt/translations.json → pt.json} +5 -0
- package/admin/i18n/{ru/translations.json → ru.json} +5 -0
- package/admin/i18n/{uk/translations.json → uk.json} +5 -0
- package/admin/i18n/{zh-cn/translations.json → zh-cn.json} +5 -0
- package/admin/index_m.html +51 -19
- package/admin/index_m.js +1 -7
- package/admin/words.js +6 -1
- package/io-package.json +40 -42
- package/lib/evaporation.js +2 -2
- package/lib/myConfig.js +3 -1
- package/lib/sendMessageText.js +1 -1
- package/lib/valveControl.js +92 -45
- package/main.js +72 -39
- package/package.json +6 -4
package/io-package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "sprinklecontrol",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.9",
|
|
5
5
|
"titleLang": {
|
|
6
6
|
"en": "Sprinkler Control",
|
|
7
7
|
"de": "Sprinklersteuerung",
|
|
@@ -19,6 +19,32 @@
|
|
|
19
19
|
"Dirk Peter <dirk.peter@freenet.de>"
|
|
20
20
|
],
|
|
21
21
|
"news": {
|
|
22
|
+
"1.0.9": {
|
|
23
|
+
"en": "Fixed error reading the soil moisture sensor",
|
|
24
|
+
"de": "Fehler beim Auslesen des Bodenfeuchtigkeitssensors behoben",
|
|
25
|
+
"ru": "Исправлена ошибка считывания показаний датчика влажности почвы.",
|
|
26
|
+
"pt": "Erro corrigido na leitura do sensor de umidade do solo",
|
|
27
|
+
"nl": "Fout bij het uitlezen van de bodemvochtigheidssensor gecorrigeerd.",
|
|
28
|
+
"fr": "Correction d'une erreur de lecture du capteur d'humidité du sol",
|
|
29
|
+
"it": "Risolto l'errore di lettura del sensore di umidità del suolo",
|
|
30
|
+
"es": "Se corrigió un error en la lectura del sensor de humedad del suelo.",
|
|
31
|
+
"pl": "Naprawiono błąd odczytu czujnika wilgotności gleby",
|
|
32
|
+
"uk": "Виправлена помилка зчитування даних датчика вологості ґрунту",
|
|
33
|
+
"zh-cn": "修复了读取土壤湿度传感器的错误"
|
|
34
|
+
},
|
|
35
|
+
"1.0.8": {
|
|
36
|
+
"en": "Fixed error in \"Command without response\"\nWater Pressure Control Revised\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] completed",
|
|
37
|
+
"de": "Fehler behoben in \"Befehl ohne Antwort\"\nWasserdruckregelung überarbeitet\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] abgeschlossen",
|
|
38
|
+
"ru": "Исправленная ошибка в «Команда без ответа»\nКонтроль давления воды пересмотрен\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022]",
|
|
39
|
+
"pt": "Erro corrigido em \"Comando sem resposta\"\nControlo da pressão da água revisto\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] concluído",
|
|
40
|
+
"nl": "Vaste fout in \"Command zonder respons\"\nWaterdrukregeling herzien\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] voltooid",
|
|
41
|
+
"fr": "Erreur corrigée dans \"Commande sans réponse\"\nContrôle de la pression d'eau révisé\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] complété",
|
|
42
|
+
"it": "Errore fisso in \"Comando senza risposta\"\nControllo della pressione dell'acqua\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] completato",
|
|
43
|
+
"es": "Error fijo en \"Command sin respuesta\"\nControl de la presión del agua revisado\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] completado",
|
|
44
|
+
"pl": "Naprawiono błąd w \"Polecenie bez odpowiedzi\"\nRegulacja ciśnienia wody\njoBroker- Bot [E6004], [W1127], [W1133], [W1134], [S6022] zakończone",
|
|
45
|
+
"uk": "Виправлена помилка в \"Command без відповіді\"\nКонтроль тиску води\nioBroker-Bot [E6004], [W1127], [W1134], [S6022] завершено",
|
|
46
|
+
"zh-cn": "\"无回复命令\"中的固定错误\n水压控制修订\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] 完成"
|
|
47
|
+
},
|
|
22
48
|
"1.0.7": {
|
|
23
49
|
"en": "Added pressure monitoring.",
|
|
24
50
|
"de": "Drucküberwachung hinzugefügt.",
|
|
@@ -83,32 +109,6 @@
|
|
|
83
109
|
"pl": "Ciśnienie zaworu nadmiarowego dodane po nawadnianiu.",
|
|
84
110
|
"uk": "Клапан для зняття тиску додається після поливу.",
|
|
85
111
|
"zh-cn": "灌溉后增加了减压阀."
|
|
86
|
-
},
|
|
87
|
-
"1.0.2": {
|
|
88
|
-
"en": "Added times for the irrigation ban",
|
|
89
|
-
"de": "Zusätzliche Zeiten für das Bewässerungsverbot",
|
|
90
|
-
"ru": "Добавлено время для запрета ирригации",
|
|
91
|
-
"pt": "Tempos adicionais para a proibição da irrigação",
|
|
92
|
-
"nl": "Toegevoegde tijden voor het irrigatieverbod",
|
|
93
|
-
"fr": "Ajout de temps pour l'interdiction d'irrigation",
|
|
94
|
-
"it": "Aggiunti i tempi per il divieto di irrigazione",
|
|
95
|
-
"es": "Tiempos adicionales para la prohibición de riego",
|
|
96
|
-
"pl": "Dodano czasy zakazu nawadniania",
|
|
97
|
-
"uk": "Додані часи для поливу заборони",
|
|
98
|
-
"zh-cn": "灌溉禁令增加的时间"
|
|
99
|
-
},
|
|
100
|
-
"1.0.1": {
|
|
101
|
-
"en": "Add Homematic ON_TIME\nAdapter configuration revised\nioBroker-Bot [E4041], [E4043] completed",
|
|
102
|
-
"de": "Homematic ON TIME hinzufügen\nAdapterkonfiguration überarbeitet\nioBroker-Bot [E4041], [E4043] abgeschlossen",
|
|
103
|
-
"ru": "Добавить Homematic on time\nПересмотренная конфигурация адаптера\nioBroker-Bot [E4041], [E4043]",
|
|
104
|
-
"pt": "Adicionar tempo de on metragem homemática\nA configuração do adaptador foi revista\nioBroker-Bot [E4041], [E4043] completado",
|
|
105
|
-
"nl": "Homematisch ON TIME toevoegen\nAdapterconfiguratie herzien\nioBroker-Bot [E4041], [E4043] voltooid",
|
|
106
|
-
"fr": "Ajouter Homematic ON TIME\nConfiguration de l'adaptateur révisée\nioBroker-Bot [E4041], [E4043] terminé",
|
|
107
|
-
"it": "Aggiungi Homematic ON TIME\nConfigurazione adattatore revisionata\nioBroker-Bot [E4041], [E4043] completato",
|
|
108
|
-
"es": "Añadir Homematic ON TIME\nAjuste revisado de la configuración del adaptador\nioBroker-Bot [E4041], [E4043] completado",
|
|
109
|
-
"pl": "Dodaj homematic on _ time\nZmieniona konfiguracja adaptera\njoBroker- Bot [E4041], [E4043] ukończone",
|
|
110
|
-
"uk": "Додати Homematic ON TIME\nПереглянуто налаштування адаптера\nioBroker-Bot [E4041], [E4043] завершено",
|
|
111
|
-
"zh-cn": "添加自定义 ON TIME\n修改适应器配置\nioBroker-Bot [E4041], [E4043] 完成"
|
|
112
112
|
}
|
|
113
113
|
},
|
|
114
114
|
"desc": {
|
|
@@ -193,8 +193,10 @@
|
|
|
193
193
|
"startOfInterruption": "10:00",
|
|
194
194
|
"endOfInterruption": "18:00",
|
|
195
195
|
"publicWeekend": true,
|
|
196
|
+
"publicWeekend2": true,
|
|
196
197
|
"weekEndLiving": "07:30",
|
|
197
198
|
"publicHolidays": false,
|
|
199
|
+
"publicHolidays2": false,
|
|
198
200
|
"publicHolInstance": "",
|
|
199
201
|
"latitude": "",
|
|
200
202
|
"longitude": "",
|
|
@@ -297,7 +299,7 @@
|
|
|
297
299
|
"_id": "evaporation.ETpCurrent",
|
|
298
300
|
"type": "state",
|
|
299
301
|
"common": {
|
|
300
|
-
"role": "
|
|
302
|
+
"role": "value",
|
|
301
303
|
"name": "Calculation of the current pot. Evapotranspiration",
|
|
302
304
|
"desc": {
|
|
303
305
|
"en": "Calculation of the current pot. Evapotranspiration",
|
|
@@ -324,7 +326,7 @@
|
|
|
324
326
|
"_id": "evaporation.ETpToday",
|
|
325
327
|
"type": "state",
|
|
326
328
|
"common": {
|
|
327
|
-
"role": "
|
|
329
|
+
"role": "value",
|
|
328
330
|
"name": "today's pot. Evapotranspiration",
|
|
329
331
|
"desc": {
|
|
330
332
|
"en": "today's pot. Evapotranspiration",
|
|
@@ -351,7 +353,7 @@
|
|
|
351
353
|
"_id": "evaporation.ETpYesterday",
|
|
352
354
|
"type": "state",
|
|
353
355
|
"common": {
|
|
354
|
-
"role": "
|
|
356
|
+
"role": "value",
|
|
355
357
|
"name": "yesterday's pot. Evapotranspiration",
|
|
356
358
|
"desc": {
|
|
357
359
|
"en": "yesterday's pot. Evapotranspiration",
|
|
@@ -378,7 +380,7 @@
|
|
|
378
380
|
"_id": "evaporation.dailyHighTemp",
|
|
379
381
|
"type": "state",
|
|
380
382
|
"common": {
|
|
381
|
-
"role": "
|
|
383
|
+
"role": "value",
|
|
382
384
|
"name": "Daily High Temperature",
|
|
383
385
|
"desc": {
|
|
384
386
|
"en": "Daily high temperature",
|
|
@@ -468,10 +470,6 @@
|
|
|
468
470
|
"zh-cn": "自动或手动控制喷头"
|
|
469
471
|
},
|
|
470
472
|
"type": "boolean",
|
|
471
|
-
"states": {
|
|
472
|
-
"false": "off",
|
|
473
|
-
"true": "Auto"
|
|
474
|
-
},
|
|
475
473
|
"read": true,
|
|
476
474
|
"write": true,
|
|
477
475
|
"def": true
|
|
@@ -498,7 +496,7 @@
|
|
|
498
496
|
"zh-cn": "立即启动灌溉过程"
|
|
499
497
|
},
|
|
500
498
|
"type": "boolean",
|
|
501
|
-
"read":
|
|
499
|
+
"read": false,
|
|
502
500
|
"write": true,
|
|
503
501
|
"def": false
|
|
504
502
|
},
|
|
@@ -508,7 +506,7 @@
|
|
|
508
506
|
"_id": "control.parallelOfMax",
|
|
509
507
|
"type": "state",
|
|
510
508
|
"common": {
|
|
511
|
-
"role": "
|
|
509
|
+
"role": "text",
|
|
512
510
|
"name": "parallel of max Sprinklers",
|
|
513
511
|
"desc": {
|
|
514
512
|
"en": "Number of sprinklers that are currently running in parallel",
|
|
@@ -534,7 +532,7 @@
|
|
|
534
532
|
"_id": "control.restFlow",
|
|
535
533
|
"type": "state",
|
|
536
534
|
"common": {
|
|
537
|
-
"role": "
|
|
535
|
+
"role": "text",
|
|
538
536
|
"name": "rest Flow of Pump",
|
|
539
537
|
"desc": {
|
|
540
538
|
"en": "Rest flow of the pump in l/h",
|
|
@@ -581,7 +579,7 @@
|
|
|
581
579
|
"_id": "info.nextAutoStart",
|
|
582
580
|
"type": "state",
|
|
583
581
|
"common": {
|
|
584
|
-
"role": "
|
|
582
|
+
"role": "text",
|
|
585
583
|
"name": "Next automatic start of the sprinklers",
|
|
586
584
|
"desc": {
|
|
587
585
|
"en": "Next automatic start of the sprinklers",
|
|
@@ -607,7 +605,7 @@
|
|
|
607
605
|
"_id": "info.rainToday",
|
|
608
606
|
"type": "state",
|
|
609
607
|
"common": {
|
|
610
|
-
"role": "
|
|
608
|
+
"role": "value",
|
|
611
609
|
"name": "Amount of rain today",
|
|
612
610
|
"desc": {
|
|
613
611
|
"en": "Amount of rain today",
|
|
@@ -634,7 +632,7 @@
|
|
|
634
632
|
"_id": "info.rainTomorrow",
|
|
635
633
|
"type": "state",
|
|
636
634
|
"common": {
|
|
637
|
-
"role": "
|
|
635
|
+
"role": "value",
|
|
638
636
|
"name": "Amount of rain tomorrow",
|
|
639
637
|
"desc": {
|
|
640
638
|
"en": "Amount of rain tomorrow",
|
|
@@ -661,7 +659,7 @@
|
|
|
661
659
|
"_id": "info.cisternState",
|
|
662
660
|
"type": "state",
|
|
663
661
|
"common": {
|
|
664
|
-
"role": "
|
|
662
|
+
"role": "text",
|
|
665
663
|
"name": "State of the cistern",
|
|
666
664
|
"desc": {
|
|
667
665
|
"en": "State of the cistern",
|
package/lib/evaporation.js
CHANGED
|
@@ -374,7 +374,7 @@ const evaporation = {
|
|
|
374
374
|
adapter.log.debug(`${curTemperature.val}°C | ${curHumidity.val}% | ${curIllumination.val} | ${curWindSpeed.val}km/h | ts: ${curTime} - lastChangeEvaPor: ${lastChangeEvaPor} = timeDifference: ${timeDifference}`);
|
|
375
375
|
|
|
376
376
|
if (timeDifference) {
|
|
377
|
-
setTimeout(() => {
|
|
377
|
+
adapter.setTimeout(() => {
|
|
378
378
|
calcEvaporation(timeDifference);
|
|
379
379
|
}, 100);
|
|
380
380
|
}
|
|
@@ -447,7 +447,7 @@ const evaporation = {
|
|
|
447
447
|
*/
|
|
448
448
|
setNewDay () {
|
|
449
449
|
extraTerStr();
|
|
450
|
-
setTimeout(() => {
|
|
450
|
+
adapter.setTimeout(() => {
|
|
451
451
|
adapter.setState('evaporation.ETpYesterday', {
|
|
452
452
|
val: Math.round(ETpTodayNum * 10000) / 10000,
|
|
453
453
|
ack: true
|
package/lib/myConfig.js
CHANGED
|
@@ -138,7 +138,9 @@ const myConfig = {
|
|
|
138
138
|
|
|
139
139
|
/* Abonnieren der Statusänderungen des Objekts (reagieren auf Änderung des 'Ventils'
|
|
140
140
|
der einzelnen Bewässerungskreise zur Fehlerkontrolle bzw. Verbrauchsermittlung) */
|
|
141
|
-
|
|
141
|
+
if (newEntry?.control?.idACK !== null) {
|
|
142
|
+
adapter.subscribeForeignStates(newEntry.control.idACK);
|
|
143
|
+
}
|
|
142
144
|
|
|
143
145
|
// @ts-ignore
|
|
144
146
|
myConfig.config.push(newEntry);
|
package/lib/sendMessageText.js
CHANGED
package/lib/valveControl.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
const asyncTime = require('timers/promises');
|
|
4
|
+
const asyncTime = require('node:timers/promises');
|
|
5
5
|
// import {setTimeout} from 'timers/promises';
|
|
6
6
|
|
|
7
7
|
const myConfig = require('./myConfig.js');
|
|
@@ -55,6 +55,7 @@ let boostReady = true,
|
|
|
55
55
|
fillLevelCistern = 0,
|
|
56
56
|
/**
|
|
57
57
|
* Zeitliche Bewässerungseinschränkung EIN/AUS
|
|
58
|
+
* z.B. Behördenvorgabe, Sommerhitze + Trockenheit, usw.
|
|
58
59
|
*/
|
|
59
60
|
timeBasedRestrictionEn = false;
|
|
60
61
|
|
|
@@ -68,6 +69,7 @@ const updateListMarker = {
|
|
|
68
69
|
/**
|
|
69
70
|
* aktive Pumpendaten
|
|
70
71
|
* - enable: Pumpe ein/ausgeschaltet
|
|
72
|
+
* - pumpSwitching: Umschaltung aktive, während der Umschaltung von Zysterne auf Hauptpumpe bei aktiver Pumpe
|
|
71
73
|
* - name: Bezeichnung der Pumpe
|
|
72
74
|
* - idState: Objektname des State
|
|
73
75
|
* - id: ID des States unter Objecte im ioBroker info.cisternPump || info.mainPump
|
|
@@ -82,7 +84,9 @@ const updateListMarker = {
|
|
|
82
84
|
*/
|
|
83
85
|
|
|
84
86
|
const currentPumpUse = {
|
|
85
|
-
enable: false,
|
|
87
|
+
enable: false,
|
|
88
|
+
pumpSwitching: false,
|
|
89
|
+
pumpReplacement: false,
|
|
86
90
|
name: '',
|
|
87
91
|
wateringTime: 0,
|
|
88
92
|
id: '',
|
|
@@ -134,9 +138,37 @@ const controlVoltage = {
|
|
|
134
138
|
maker: undefined
|
|
135
139
|
}
|
|
136
140
|
};
|
|
137
|
-
|
|
141
|
+
/**
|
|
142
|
+
* Sensor Druck
|
|
143
|
+
* - enable: Sensor vorhanden
|
|
144
|
+
* - active: true = Sensor aktiv, false = Sensor inaktiv
|
|
145
|
+
* - setActive(true/false): Funktion zum setzen des Sensorstatus aktiv/inaktiv
|
|
146
|
+
* - inadequatePressure: true = Nicht ausreichender Druck, false = ausreichender Druck
|
|
147
|
+
* - name: Bezeichnung Sensor Druck
|
|
148
|
+
* - value: aktueller Wert des Sensors
|
|
149
|
+
* - state: aktueller Zustand des Sensors
|
|
150
|
+
* - ac: AbortController für die Überwachung der Sensoraktivität
|
|
151
|
+
*/
|
|
138
152
|
const sensorPressure = {
|
|
139
|
-
|
|
153
|
+
enable: false,
|
|
154
|
+
active: false,
|
|
155
|
+
setActive: async(val) => {
|
|
156
|
+
try {
|
|
157
|
+
sensorPressure.active = val;
|
|
158
|
+
if (val === true && sensorPressure.enable) {
|
|
159
|
+
await valveControl.setSensorPressure(sensorPressure.value);
|
|
160
|
+
} else {
|
|
161
|
+
if (sensorPressure?.ac !== null) {
|
|
162
|
+
await sensorPressure.ac.abort(); // AbortController zurücksetzen
|
|
163
|
+
sensorPressure.ac = null;
|
|
164
|
+
sensorPressure.inadequatePressure = false; // Drucksensor deaktiviert -> Druckverhältnisse wieder in Ordnung
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
} catch (error) {
|
|
168
|
+
adapter.log.error(`Error setting sensor pressure active ${val}: ${error}`);
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
inadequatePressure: false,
|
|
140
172
|
name: 'Sensor Pressure',
|
|
141
173
|
value: 0,
|
|
142
174
|
state: 0,
|
|
@@ -338,14 +370,14 @@ const delList = async (killList) => {
|
|
|
338
370
|
*/
|
|
339
371
|
const currentConsumption = async (write) => {
|
|
340
372
|
try {
|
|
341
|
-
let curFlow = currentPumpUse.intBreak ? 0 : currentPumpUse.pumpPower, /* adapter.config.triggerMainPumpPower; */
|
|
373
|
+
let curFlow = (currentPumpUse.intBreak || sensorPressure.inadequatePressure) ? 0 : currentPumpUse.pumpPower, /* adapter.config.triggerMainPumpPower; */
|
|
342
374
|
/** aktuelle Anzahl der eingeschalteten Ventile */
|
|
343
375
|
parallel = 0,
|
|
344
376
|
pumpRequired = false;
|
|
345
377
|
adapter.log.debug(`currentConsumption curFlow: ${curFlow}, ${currentPumpUse.intBreak} => ${currentPumpUse.intBreak ? 0 : currentPumpUse.pumpPower}`);
|
|
346
|
-
if (!currentPumpUse.intBreak
|
|
347
|
-
|
|
348
|
-
) {
|
|
378
|
+
//if (!currentPumpUse.intBreak
|
|
379
|
+
// && !sensorPressure.inadequatePressure
|
|
380
|
+
//) {
|
|
349
381
|
// ermitteln von curPipe und der Anzahl der parallelen Stränge
|
|
350
382
|
for (const entry of threadList){
|
|
351
383
|
if (entry.state === 'wait') pumpRequired = true; // state => wait
|
|
@@ -358,7 +390,7 @@ const currentConsumption = async (write) => {
|
|
|
358
390
|
pumpRequired = true;
|
|
359
391
|
}
|
|
360
392
|
}
|
|
361
|
-
}
|
|
393
|
+
//}
|
|
362
394
|
// bei write schreiben der aktuellen Förderleistung der Pumpe und der Anzahl der parallelen Stränge
|
|
363
395
|
if (write || currentPumpUse.intBreak) {
|
|
364
396
|
adapter.setStateAsync('control.parallelOfMax', {
|
|
@@ -677,6 +709,7 @@ const updateList = async () => {
|
|
|
677
709
|
});
|
|
678
710
|
await asyncTime.setTimeout(currentPumpUse.leadTime, undefined, undefined);
|
|
679
711
|
}
|
|
712
|
+
await sensorPressure.setActive(true); // Sensor Druck aktivieren, damit die Drucküberwachung startet
|
|
680
713
|
}
|
|
681
714
|
} catch (error) {
|
|
682
715
|
adapter.log.error(`Error trigger current Pump [${currentPumpUse.control.idState}]: ${error}`);
|
|
@@ -701,7 +734,7 @@ const updateList = async () => {
|
|
|
701
734
|
consumption = await currentConsumption(true);
|
|
702
735
|
clearInterval(entry.countdown); // Zähler für Countdown, Verbrauchsmengen, usw. löschen
|
|
703
736
|
entry.countdown = null;
|
|
704
|
-
adapter.log.
|
|
737
|
+
adapter.log.warn(`Set Valve ID: ${entry.name} Pump delivery rate too low, wait! curFlow ${consumption.curFlow} parallel: ${consumption.parallel}`);
|
|
705
738
|
await asyncTime.setTimeout(300, undefined, {signal: entry.ac.acUpdateListPuOff.signal});
|
|
706
739
|
}
|
|
707
740
|
}else{
|
|
@@ -796,6 +829,10 @@ const updateList = async () => {
|
|
|
796
829
|
|
|
797
830
|
// Pumpe ausschalten
|
|
798
831
|
if (currentPumpUse.enable === true) {
|
|
832
|
+
await sensorPressure.setActive(false).catch((error) => { // Sensor Druck deaktivieren, da keine Bewässerung mehr aktiv ist
|
|
833
|
+
adapter.log.error(`Error setting sensor pressure active false: ${error}`);
|
|
834
|
+
});
|
|
835
|
+
|
|
799
836
|
try {
|
|
800
837
|
const _currentPumpUse = await setValve(currentPumpUse, false);
|
|
801
838
|
if (_currentPumpUse === currentPumpUse.control.idState) {
|
|
@@ -806,7 +843,7 @@ const updateList = async () => {
|
|
|
806
843
|
}
|
|
807
844
|
await asyncTime.setTimeout(switchingDistanceMS, undefined, undefined);
|
|
808
845
|
} catch (error) {
|
|
809
|
-
adapter.log.error(`Error trigger current Pump [${currentPumpUse.idState}]: ${error}`);
|
|
846
|
+
adapter.log.error(`Error trigger current Pump [${ currentPumpUse.control.idState }]: ${error}`);
|
|
810
847
|
}
|
|
811
848
|
|
|
812
849
|
// Druckentlastungsventil ansteuern wenn in Konfiguration aktiv
|
|
@@ -923,7 +960,7 @@ const setActualPump = async () => {
|
|
|
923
960
|
}
|
|
924
961
|
/* Info aktualisieren */
|
|
925
962
|
await adapter.setStateAsync('info.cisternState', {
|
|
926
|
-
val: `${ (currentPumpUse.intBreak === true)
|
|
963
|
+
val: `${ (currentPumpUse.intBreak === true) ? `Cistern empty: ${ fillLevelCistern } % (${ adapter.config.triggerOnCisternLevel } %)` : `Cistern filled: ${ fillLevelCistern } % (${ adapter.config.triggerMinCisternLevel } %)` }`,
|
|
927
964
|
ack: true
|
|
928
965
|
});
|
|
929
966
|
break;
|
|
@@ -934,6 +971,8 @@ const setActualPump = async () => {
|
|
|
934
971
|
/* Bewässerungspumpen aktiv */
|
|
935
972
|
if ((fillLevelCistern < parseFloat(adapter.config.triggerMinCisternLevel)) && (currentPumpUse.pumpCistern === true)) {
|
|
936
973
|
/* (Zisterne unter Minimum) && (ZisternenPumpe läuft) */
|
|
974
|
+
currentPumpUse.pumpSwitching = true;
|
|
975
|
+
sensorPressure.setActive(false); // Sensor Druck deaktivieren, da die Hauptpumpe ausgeschaltet wird und somit kein Druck mehr in den Leitungen ist
|
|
937
976
|
const _setValveCisternPumpOff = await setValve(currentPumpUse, false); // Pumpe Zisterne Aus
|
|
938
977
|
if (_setValveCisternPumpOff === currentPumpUse.control.idState) {
|
|
939
978
|
await adapter.setStateAsync(currentPumpUse.id, { // set State cisternPump === false
|
|
@@ -950,7 +989,7 @@ const setActualPump = async () => {
|
|
|
950
989
|
currentPumpUse.pumpPower = parseInt(adapter.config.triggerMainPumpPower);
|
|
951
990
|
/* Hauptpumpe Ein */
|
|
952
991
|
const _setValveMainPumpOn = await setValve(currentPumpUse, true);
|
|
953
|
-
if (_setValveMainPumpOn === currentPumpUse.idState) {
|
|
992
|
+
if (_setValveMainPumpOn === currentPumpUse.control.idState) {
|
|
954
993
|
await adapter.setStateAsync(currentPumpUse.id, { // set State cisternPump === false
|
|
955
994
|
val: currentPumpUse.enable,
|
|
956
995
|
ack: true
|
|
@@ -962,6 +1001,8 @@ const setActualPump = async () => {
|
|
|
962
1001
|
if(!sendMessageText.onlySendError()){
|
|
963
1002
|
sendMessageText.sendMessage('Pump change (cistern empty) Cistern pump off => main pump on');
|
|
964
1003
|
}
|
|
1004
|
+
currentPumpUse.pumpSwitching = false;
|
|
1005
|
+
sensorPressure.setActive(true); // Sensor Druck aktivieren, da die Hauptpumpe eingeschaltet wird und somit wieder Druck in den Leitungen ist
|
|
965
1006
|
updateList(); // Wasserverbrauch an Pumpenleistung anpassen
|
|
966
1007
|
}
|
|
967
1008
|
} else {
|
|
@@ -996,7 +1037,7 @@ const setActualPump = async () => {
|
|
|
996
1037
|
}
|
|
997
1038
|
/* Info aktualisieren */
|
|
998
1039
|
await adapter.setStateAsync('info.cisternState', {
|
|
999
|
-
val: `${ (currentPumpUse.pumpCistern === false)
|
|
1040
|
+
val: `${ (currentPumpUse.pumpCistern === false) ? `Cistern empty: ${ fillLevelCistern } % (${ adapter.config.triggerOnCisternLevel } %)` : `Cistern filled: ${ fillLevelCistern } % (${ adapter.config.triggerMinCisternLevel } %)` }`,
|
|
1000
1041
|
ack: true
|
|
1001
1042
|
});
|
|
1002
1043
|
break;
|
|
@@ -1406,13 +1447,12 @@ const valveControl = {
|
|
|
1406
1447
|
) {
|
|
1407
1448
|
const _sensorPressure = await adapter.getForeignStateAsync(adapter.config.sensorPressure);
|
|
1408
1449
|
if (_sensorPressure) {
|
|
1450
|
+
sensorPressure.enable = true;
|
|
1451
|
+
sensorPressure.active = false;
|
|
1409
1452
|
adapter.subscribeForeignStates(adapter.config.sensorPressure);
|
|
1410
1453
|
const _waterPressure = await adapter.getObjectAsync(`info.waterPressure`);
|
|
1411
1454
|
if (_waterPressure) {
|
|
1412
|
-
|
|
1413
|
-
val: `${ _sensorPressure.val }`,
|
|
1414
|
-
ack: true
|
|
1415
|
-
});
|
|
1455
|
+
sensorPressure.value = _sensorPressure.val;
|
|
1416
1456
|
} else {
|
|
1417
1457
|
await adapter.setObjectNotExistsAsync(`info.waterPressure`, {
|
|
1418
1458
|
type: 'state',
|
|
@@ -1440,15 +1480,16 @@ const valveControl = {
|
|
|
1440
1480
|
},
|
|
1441
1481
|
native: {},
|
|
1442
1482
|
});
|
|
1443
|
-
await adapter.setStateAsync(`info.waterPressure`, {
|
|
1444
|
-
val: `${ _sensorPressure.val }`,
|
|
1445
|
-
ack: true
|
|
1446
|
-
});
|
|
1447
1483
|
}
|
|
1484
|
+
await adapter.setStateAsync(`info.waterPressure`, {
|
|
1485
|
+
val: `Initial ( ${ sensorPressure.value } bar )`,
|
|
1486
|
+
ack: true
|
|
1487
|
+
});
|
|
1448
1488
|
} else {
|
|
1449
1489
|
adapter.log.warn(`The configured pressure sensor "${ adapter.config.sensorPressure }" could not be found. Please check the configuration of the pressure sensor!`);
|
|
1450
1490
|
}
|
|
1451
1491
|
} else {
|
|
1492
|
+
// Wenn kein Drucksensor konfiguriert ist, wird das Objekt info.waterPressure gelöscht, damit keine falschen Werte angezeigt werden
|
|
1452
1493
|
const _waterPressure = await adapter.getObjectAsync(`info.waterPressure`);
|
|
1453
1494
|
if (_waterPressure) await adapter.delObjectAsync(`info.waterPressure`);
|
|
1454
1495
|
}
|
|
@@ -1794,48 +1835,54 @@ const valveControl = {
|
|
|
1794
1835
|
setSensorPressure: async function (pressure) {
|
|
1795
1836
|
let alteredPressure = false; // Veränderter Druck => updateList starten um Verbrauch anzupassen / Ventile ausschalten
|
|
1796
1837
|
let reviews = '';
|
|
1838
|
+
|
|
1797
1839
|
try {
|
|
1798
1840
|
sensorPressure.value = parseFloat(pressure).toFixed(1);
|
|
1799
|
-
if (
|
|
1841
|
+
if (sensorPressure.active === true && adapter.config.minimumPressure > pressure) {
|
|
1800
1842
|
if (sensorPressure.ac === null) {
|
|
1801
1843
|
sensorPressure.ac = new AbortController();
|
|
1802
1844
|
await asyncTime.setTimeout(60000, undefined, { signal: sensorPressure.ac.signal }); // max. 60s warten und Drucksensorwert erneut prüfen, bevor die Pumpe ausgeschaltet wird
|
|
1803
1845
|
const _currentPressure = await adapter.getForeignStateAsync(adapter.config.sensorPressure);
|
|
1804
|
-
if (_currentPressure?.val
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
if
|
|
1810
|
-
|
|
1811
|
-
|
|
1846
|
+
if (_currentPressure?.val){
|
|
1847
|
+
if(typeof _currentPressure.val === 'number') {
|
|
1848
|
+
sensorPressure.value = parseFloat(_currentPressure.val).toFixed(1);
|
|
1849
|
+
}else if(typeof _currentPressure.val === 'string') {
|
|
1850
|
+
sensorPressure.value = parseFloat(_currentPressure.val).toFixed(1);
|
|
1851
|
+
}else if(typeof _currentPressure.val === 'boolean') {
|
|
1852
|
+
(_currentPressure.val === true) ? sensorPressure.value = 100 : sensorPressure.value = 0;
|
|
1853
|
+
}else{
|
|
1854
|
+
throw new Error(`setSensorPressure => Wrong value: ${ _currentPressure.val }, Type: ${ typeof _currentPressure.val }`);
|
|
1812
1855
|
}
|
|
1813
|
-
sensorPressure.
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1856
|
+
if (sensorPressure.active === true
|
|
1857
|
+
&& adapter.config.minimumPressure > sensorPressure.value
|
|
1858
|
+
) {
|
|
1859
|
+
reviews = 'Not Okay'
|
|
1860
|
+
if (sensorPressure.inadequatePressure === false) {
|
|
1861
|
+
alteredPressure = true;
|
|
1862
|
+
sensorPressure.inadequatePressure = true;
|
|
1863
|
+
}
|
|
1864
|
+
adapter.log.warn(`Pressure sensor value ${ sensorPressure.value } bar is below the minimum pressure ${ adapter.config.minimumPressure } bar. The pump will be turned off to prevent damage. Please check the pressure sensor and the configuration of the minimum pressure!`);
|
|
1865
|
+
if (adapter.config.notificationEnabled) {
|
|
1866
|
+
sendMessageText.sendMessage(`Pressure sensor value ${ sensorPressure.value } bar is below the minimum pressure ${ adapter.config.minimumPressure } bar. The pump will be turned off to prevent damage. Please check the pressure sensor and the configuration of the minimum pressure!`);
|
|
1867
|
+
}
|
|
1868
|
+
} else {
|
|
1869
|
+
reviews = 'Okay';
|
|
1817
1870
|
}
|
|
1818
|
-
sensorPressure.ac.abort(); // setTimeout abbrechen, da die Pumpe bereits ausgeschaltet wird
|
|
1819
|
-
sensorPressure.ac = null; // AbortController zurücksetzen
|
|
1820
|
-
} else if (_currentPressure?.val) {
|
|
1821
|
-
reviews = 'Okay';
|
|
1822
1871
|
}
|
|
1823
1872
|
sensorPressure.ac = null; // AbortController zurücksetzen
|
|
1824
1873
|
} else {
|
|
1825
|
-
reviews = 'I don\'t know';
|
|
1874
|
+
reviews = 'I don\'t know'; // Ich weiß nicht
|
|
1826
1875
|
}
|
|
1827
|
-
} else
|
|
1876
|
+
} else {
|
|
1828
1877
|
reviews = 'Okay'
|
|
1829
1878
|
if (sensorPressure?.ac !== null) {
|
|
1830
1879
|
await sensorPressure.ac.abort(); // AbortController zurücksetzen
|
|
1831
1880
|
sensorPressure.ac = null;
|
|
1832
1881
|
}
|
|
1833
|
-
} else {
|
|
1834
|
-
reviews = 'Okay'
|
|
1835
1882
|
}
|
|
1836
1883
|
} catch (error) {
|
|
1837
1884
|
if (error.name === 'AbortError') {
|
|
1838
|
-
adapter.log.debug(`setSensorPressure(${
|
|
1885
|
+
adapter.log.debug(`setSensorPressure(${ sensorPressure.value}): The shutdown process was aborted because the operating pressure was restored.`);
|
|
1839
1886
|
if (sensorPressure?.ac !== null) {
|
|
1840
1887
|
sensorPressure.ac.abort(); // AbortController zurücksetzen
|
|
1841
1888
|
sensorPressure.ac = null;
|
|
@@ -1845,7 +1892,7 @@ const valveControl = {
|
|
|
1845
1892
|
await adapter.setStateAsync(`info.waterPressure`, {
|
|
1846
1893
|
val: `${ reviews } ( ${ sensorPressure.value } bar )`,
|
|
1847
1894
|
ack: true
|
|
1848
|
-
});
|
|
1895
|
+
});
|
|
1849
1896
|
if (alteredPressure) updateList();
|
|
1850
1897
|
}
|
|
1851
1898
|
}
|