iobroker.sprinklecontrol 1.0.2 → 1.0.4

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 CHANGED
@@ -33,6 +33,12 @@ Wetterabhängige automatische Steuerung der Gartenbewässerung
33
33
  Placeholder for the next version (at the beginning of the line):
34
34
  ### **WORK IN PROGRESS**
35
35
  -->
36
+ ### 1.0.4 (2026-04-26)
37
+ * (Dirk-Peter-md) GitHub error message #274
38
+
39
+ ### 1.0.3 (2026-04-25)
40
+ * (Dirk-Peter-md) Pressure relief valve added after irrigation.
41
+
36
42
  ### 1.0.2 (2026-04-19)
37
43
  * (Dirk-Peter-md) Added times for the irrigation ban
38
44
 
@@ -48,12 +54,6 @@ Wetterabhängige automatische Steuerung der Gartenbewässerung
48
54
  * (Dirk-Peter-md) dependencies updated
49
55
  * (Dirk-Peter-md) update dependabot
50
56
 
51
- ### 0.2.19 (2025-07-02)
52
- * (Dirk-Peter-md) The switch-on hysteresis of the cistern is now stored in the configuration.
53
-
54
- ### 0.2.18 (2025-06-30)
55
- * (Dirk-Peter-md) Hysteresis switch-on value of the cistern changed to 20%
56
-
57
57
  ## License
58
58
  MIT License
59
59
 
@@ -52,6 +52,8 @@
52
52
  "Object-ID sprinkler": "Objekt-ID-Sprinkler",
53
53
  "Ok": "OK",
54
54
  "Precipitation threshold in mm": "Niederschlags-Schwellwert in mm",
55
+ "Pressure relief in the lines before shutdown": "Druckentlastung der Leitungen vor der Abschaltung",
56
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "Druckentlastung! Schaltet nach dem Abschalten der Pumpe den größten Wasserverbraucher für 10 Sekunden ein.",
55
57
  "Pump Settings": "Pumpeneinstellungen",
56
58
  "Pump selection": "Pumpenauswahl",
57
59
  "Pump settings": "Pumpeneinstellungen",
@@ -52,6 +52,8 @@
52
52
  "Object-ID sprinkler": "Object-ID sprinkler",
53
53
  "Ok": "Ok",
54
54
  "Precipitation threshold in mm": "Precipitation threshold in mm",
55
+ "Pressure relief in the lines before shutdown": "Pressure relief in the lines before shutdown",
56
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.",
55
57
  "Pump Settings": "Pump Settings",
56
58
  "Pump selection": "Pump selection",
57
59
  "Pump settings": "Pump settings",
@@ -52,6 +52,8 @@
52
52
  "Object-ID sprinkler": "Aspersor de ID de objeto",
53
53
  "Ok": "Okay",
54
54
  "Precipitation threshold in mm": "Umbral de precipitación en mm",
55
+ "Pressure relief in the lines before shutdown": "Alivio de presión en las líneas antes de la parada.",
56
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "¡Alivio de presión! Enciende el mayor consumidor de agua durante 10 segundos después de apagar la bomba.",
55
57
  "Pump Settings": "Configuraciones de bomba",
56
58
  "Pump selection": "Selección de bombas",
57
59
  "Pump settings": "Ajustes de la bomba",
@@ -52,6 +52,8 @@
52
52
  "Object-ID sprinkler": "Arroseur ID objet",
53
53
  "Ok": "D'accord",
54
54
  "Precipitation threshold in mm": "Seuil de précipitation en mm",
55
+ "Pressure relief in the lines before shutdown": "Décompression dans les conduites avant l'arrêt",
56
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "Soulagement de la pression ! Allume le plus gros consommateur d'eau pendant 10 secondes après l'arrêt de la pompe.",
55
57
  "Pump Settings": "Paramètres de la pompe",
56
58
  "Pump selection": "Choix de la pompe",
57
59
  "Pump settings": "Paramètres de la pompe",
@@ -52,6 +52,8 @@
52
52
  "Object-ID sprinkler": "Irrigatore ID oggetto",
53
53
  "Ok": "Ok",
54
54
  "Precipitation threshold in mm": "Soglia di precipitazione in mm",
55
+ "Pressure relief in the lines before shutdown": "Depressurizzazione nelle linee prima dell'arresto",
56
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "Alleviamento della pressione! Accende l'utenza d'acqua più grande per 10 secondi dopo lo spegnimento della pompa.",
55
57
  "Pump Settings": "Impostazioni della pompa",
56
58
  "Pump selection": "Selezione pompa",
57
59
  "Pump settings": "Impostazioni della pompa",
@@ -52,6 +52,8 @@
52
52
  "Object-ID sprinkler": "Object-ID sproeier",
53
53
  "Ok": "OK",
54
54
  "Precipitation threshold in mm": "Neerslagdrempel in mm",
55
+ "Pressure relief in the lines before shutdown": "Drukontlasting in de leidingen vóór uitschakeling",
56
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "Drukverlichting! Schakelt de grootste waterverbruiker gedurende 10 seconden in nadat de pomp is uitgeschakeld.",
55
57
  "Pump Settings": "Pompinstellingen",
56
58
  "Pump selection": "Pomp selectie",
57
59
  "Pump settings": "Pomp instellingen",
@@ -52,6 +52,8 @@
52
52
  "Object-ID sprinkler": "Zraszacz ID obiektów",
53
53
  "Ok": "Dobrze",
54
54
  "Precipitation threshold in mm": "Próg opadów w mm",
55
+ "Pressure relief in the lines before shutdown": "Redukcja ciśnienia w przewodach przed wyłączeniem",
56
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "Redukcja ciśnienia! Włącza największy odbiornik wody na 10 sekund po wyłączeniu pompy.",
55
57
  "Pump Settings": "Ustawienia pompy",
56
58
  "Pump selection": "Wybór Pumpa",
57
59
  "Pump settings": "Ustawienia pompy",
@@ -52,6 +52,8 @@
52
52
  "Object-ID sprinkler": "Aspersor de identificação de objeto",
53
53
  "Ok": "Está bem",
54
54
  "Precipitation threshold in mm": "Limiar de precipitação em mm",
55
+ "Pressure relief in the lines before shutdown": "Alívio de pressão nas linhas antes do desligamento",
56
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "Alívio de pressão! Liga o maior consumidor de água durante 10 segundos após a bomba ter sido desligada.",
55
57
  "Pump Settings": "Configurações da bomba",
56
58
  "Pump selection": "Seleção de bomba",
57
59
  "Pump settings": "Configurações da bomba",
@@ -52,6 +52,8 @@
52
52
  "Object-ID sprinkler": "Спринклер с идентификатором объекта",
53
53
  "Ok": "Хорошо",
54
54
  "Precipitation threshold in mm": "Порог осадков в мм",
55
+ "Pressure relief in the lines before shutdown": "Сброс давления в линиях перед остановом",
56
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "Сброс давления! Включает самый большой водопотребитель на 10 секунд после выключения насоса.",
55
57
  "Pump Settings": "Настройки насоса",
56
58
  "Pump selection": "Выбор насоса",
57
59
  "Pump settings": "Настройки насоса",
@@ -52,6 +52,8 @@
52
52
  "Object-ID sprinkler": "Спринклер Object-ID",
53
53
  "Ok": "добре",
54
54
  "Precipitation threshold in mm": "Поріг опадів в мм",
55
+ "Pressure relief in the lines before shutdown": "Скидання тиску в лініях перед відключенням",
56
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "Зняття тиску! Вмикає найбільшого споживача води на 10 секунд після вимкнення насоса.",
55
57
  "Pump Settings": "Налаштування насоса",
56
58
  "Pump selection": "Вибір насоса",
57
59
  "Pump settings": "Налаштування насоса",
@@ -52,6 +52,8 @@
52
52
  "Object-ID sprinkler": "对象ID洒水器",
53
53
  "Ok": "好",
54
54
  "Precipitation threshold in mm": "以毫米为单位的降水阈值",
55
+ "Pressure relief in the lines before shutdown": "停机前管线压力释放",
56
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "压力缓解!泵关闭后,打开最大耗水量 10 秒。",
55
57
  "Pump Settings": "泵设定",
56
58
  "Pump selection": "倾销选择",
57
59
  "Pump settings": "泵设定",
@@ -635,6 +635,21 @@
635
635
  </div>
636
636
  </li>
637
637
 
638
+ <!-- Einstellung des Schaltverhaltens -->
639
+ <li>
640
+ <div class="collapsible-header">
641
+ <i class="material-icons">expand_more</i><h6 class="translate">Pressure relief in the lines before shutdown</h6>
642
+ </div>
643
+ <div class="collapsible-body">
644
+ <div class="row s12 m6 l2">
645
+ <div class="input-field col s12 m6 l2">
646
+ <input class="value" id="pressureRelief" type="checkbox"/>
647
+ <span for="pressureRelief" class="translate">Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.</span>
648
+ </div>
649
+ </div>
650
+ </div>
651
+ </li>
652
+
638
653
  <!-- aktuelle Wetterdaten -->
639
654
  <li>
640
655
  <div class="collapsible-header">
package/admin/index_m.js CHANGED
@@ -493,6 +493,7 @@ function showHideSettings() {
493
493
  * @type {boolean}
494
494
  */
495
495
  let selAddStartTime = false;
496
+ let mWeatherForecast = false;
496
497
 
497
498
  // Zeiteinstellungen => Feiertagseinstellung sichtbar bei combobox
498
499
  $('#wateringStartTime').on('change', function () {
@@ -587,14 +588,17 @@ function showHideSettings() {
587
588
  // individuelle Wettervorhersage
588
589
  $('#weatherForecastService').on('change', function () {
589
590
  if ($(this).val() === 'noWeatherData') {
591
+ mWeatherForecast = false;
590
592
  $('.showOwnDataPoint').hide();
591
593
  $('.showDasWetter').hide();
592
594
  $('.showThresholdRain').hide();
593
595
  } else if ($(this).val() === 'ownDataPoint') {
596
+ mWeatherForecast = true;
594
597
  $('.showOwnDataPoint').show();
595
598
  $('.showDasWetter').hide();
596
599
  $('.showThresholdRain').show();
597
600
  } else if ($(this).val() === 'dasWetter') {
601
+ mWeatherForecast = true;
598
602
  $('.showOwnDataPoint').hide();
599
603
  $('.showDasWetter').show();
600
604
  $('.showThresholdRain').show();
package/admin/words.js CHANGED
@@ -61,6 +61,8 @@ systemDictionary = {
61
61
  "Object-ID sprinkler": { "en": "Object-ID sprinkler", "de": "Objekt-ID-Sprinkler", "ru": "Спринклер с идентификатором объекта", "pt": "Aspersor de identificação de objeto", "nl": "Object-ID sproeier", "fr": "Arroseur ID objet", "it": "Irrigatore ID oggetto", "es": "Aspersor de ID de objeto", "pl": "Zraszacz ID obiektów", "uk": "Спринклер Object-ID", "zh-cn": "对象ID洒水器"},
62
62
  "Ok": { "en": "Ok", "de": "OK", "ru": "Хорошо", "pt": "Está bem", "nl": "OK", "fr": "D'accord", "it": "Ok", "es": "Okay", "pl": "Dobrze", "uk": "добре", "zh-cn": "好"},
63
63
  "Precipitation threshold in mm": { "en": "Precipitation threshold in mm", "de": "Niederschlags-Schwellwert in mm", "ru": "Порог осадков в мм", "pt": "Limiar de precipitação em mm", "nl": "Neerslagdrempel in mm", "fr": "Seuil de précipitation en mm", "it": "Soglia di precipitazione in mm", "es": "Umbral de precipitación en mm", "pl": "Próg opadów w mm", "uk": "Поріг опадів в мм", "zh-cn": "以毫米为单位的降水阈值"},
64
+ "Pressure relief in the lines before shutdown": { "en": "Pressure relief in the lines before shutdown", "de": "Druckentlastung der Leitungen vor der Abschaltung", "ru": "Сброс давления в линиях перед остановом", "pt": "Alívio de pressão nas linhas antes do desligamento", "nl": "Drukontlasting in de leidingen vóór uitschakeling", "fr": "Décompression dans les conduites avant l'arrêt", "it": "Depressurizzazione nelle linee prima dell'arresto", "es": "Alivio de presión en las líneas antes de la parada.", "pl": "Redukcja ciśnienia w przewodach przed wyłączeniem", "uk": "Скидання тиску в лініях перед відключенням", "zh-cn": "停机前管线压力释放"},
65
+ "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": {"en": "Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.", "de": "Druckentlastung! Schaltet nach dem Abschalten der Pumpe den größten Wasserverbraucher für 10 Sekunden ein.", "ru": "Сброс давления! Включает самый большой водопотребитель на 10 секунд после выключения насоса.", "pt": "Alívio de pressão! Liga o maior consumidor de água durante 10 segundos após a bomba ter sido desligada.", "nl": "Drukverlichting! Schakelt de grootste waterverbruiker gedurende 10 seconden in nadat de pomp is uitgeschakeld.", "fr": "Soulagement de la pression ! Allume le plus gros consommateur d'eau pendant 10 secondes après l'arrêt de la pompe.", "it": "Alleviamento della pressione! Accende l'utenza d'acqua più grande per 10 secondi dopo lo spegnimento della pompa.", "es": "¡Alivio de presión! Enciende el mayor consumidor de agua durante 10 segundos después de apagar la bomba.", "pl": "Redukcja ciśnienia! Włącza największy odbiornik wody na 10 sekund po wyłączeniu pompy.", "uk": "Зняття тиску! Вмикає найбільшого споживача води на 10 секунд після вимкнення насоса.", "zh-cn": "压力缓解!泵关闭后,打开最大耗水量 10 秒。"},
64
66
  "Pump Settings": { "en": "Pump Settings", "de": "Pumpeneinstellungen", "ru": "Настройки насоса", "pt": "Configurações da bomba", "nl": "Pompinstellingen", "fr": "Paramètres de la pompe", "it": "Impostazioni della pompa", "es": "Configuraciones de bomba", "pl": "Ustawienia pompy", "uk": "Налаштування насоса", "zh-cn": "泵设定"},
65
67
  "Pump selection": { "en": "Pump selection", "de": "Pumpenauswahl", "ru": "Выбор насоса", "pt": "Seleção de bomba", "nl": "Pomp selectie", "fr": "Choix de la pompe", "it": "Selezione pompa", "es": "Selección de bombas", "pl": "Wybór Pumpa", "uk": "Вибір насоса", "zh-cn": "倾销选择"},
66
68
  "Pump settings": { "en": "Pump settings", "de": "Pumpeneinstellungen", "ru": "Настройки насоса", "pt": "Configurações da bomba", "nl": "Pomp instellingen", "fr": "Paramètres de la pompe", "it": "Impostazioni della pompa", "es": "Ajustes de la bomba", "pl": "Ustawienia pompy", "uk": "Налаштування насоса", "zh-cn": "泵设定"},
package/io-package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "sprinklecontrol",
4
- "version": "1.0.2",
4
+ "version": "1.0.4",
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.4": {
23
+ "en": "GitHub error message #274",
24
+ "de": "GitHub Fehlermeldung #274",
25
+ "ru": "Сообщение об ошибке GitHub #274",
26
+ "pt": "Mensagem de erro do GitHub # 274",
27
+ "nl": "GitHub foutmelding #274",
28
+ "fr": "Message d'erreur GitHub #274",
29
+ "it": "Messaggio di errore GitHub #274",
30
+ "es": "Mensaje de error GitHub #274",
31
+ "pl": "Komunikat błędu GitHub # 274",
32
+ "uk": "Повідомлення про помилку GitHub #274",
33
+ "zh-cn": "GitHub 错误消息 # 274"
34
+ },
35
+ "1.0.3": {
36
+ "en": "Pressure relief valve added after irrigation.",
37
+ "de": "Druckentlastungsventil nach Bewässerung hinzugefügt.",
38
+ "ru": "Клапан сброса давления добавляют после орошения.",
39
+ "pt": "Válvula de alívio de pressão adicionada após irrigação.",
40
+ "nl": "Overdrukklep toegevoegd na irrigatie.",
41
+ "fr": "Vanne de décompression ajoutée après irrigation.",
42
+ "it": "Valvola di pressione aggiunta dopo l'irrigazione.",
43
+ "es": "Válvula de alivio de presión añadido después del riego.",
44
+ "pl": "Ciśnienie zaworu nadmiarowego dodane po nawadnianiu.",
45
+ "uk": "Клапан для зняття тиску додається після поливу.",
46
+ "zh-cn": "灌溉后增加了减压阀."
47
+ },
22
48
  "1.0.2": {
23
49
  "en": "Added times for the irrigation ban",
24
50
  "de": "Zusätzliche Zeiten für das Bewässerungsverbot",
@@ -83,32 +109,6 @@
83
109
  "pl": "Zmiana wartości hysterezy cysterny na 20%",
84
110
  "uk": "Гістерез змінився на 20%",
85
111
  "zh-cn": "贮器的开关值改为20%"
86
- },
87
- "0.2.17": {
88
- "en": "Valve timing corrected",
89
- "de": "Ventilzeit korrigiert",
90
- "ru": "Время клапана скорректировано",
91
- "pt": "Regulação da válvula",
92
- "nl": "Gecorrigeerde kleptijd",
93
- "fr": "Réglage de la vanne",
94
- "it": "Valvola tempistica corretta",
95
- "es": "Tiempo de válvula corregido",
96
- "pl": "Skorygowany czas zaworu",
97
- "uk": "Терміни клапана, виправлені",
98
- "zh-cn": "阀门时间得到纠正"
99
- },
100
- "0.2.16": {
101
- "en": "issue #95 Pump lead time added",
102
- "de": "ausgabe #95 Pumpe Lieferzeit hinzugefügt",
103
- "ru": "#95 Время работы насоса добавлено",
104
- "pt": "número de edição #95 Tempo de lançamento da bomba adicionado",
105
- "nl": "nummer #95 Pump doorlooptijd toegevoegd",
106
- "fr": "numéro 95 Temps d'avance de la pompe ajouté",
107
- "it": "numero #95 Pump lead time aggiunto",
108
- "es": "#95 Tiempo de inicio de bomba añadido",
109
- "pl": "wydanie # 95 Dodany czas ołowiu pompy",
110
- "uk": "problem #95 Насос додано час",
111
- "zh-cn": "增加了泵前准备时间"
112
112
  }
113
113
  },
114
114
  "desc": {
@@ -170,6 +170,7 @@
170
170
  "triggerControlVoltage": "",
171
171
  "maximumParallelValves": "5",
172
172
  "switchingDistance": "0.5",
173
+ "pressureRelief": false,
173
174
  "pumpSelection": "mainPump",
174
175
  "triggerMainPump": "hm-rpc.0.MEQ1234567.1.STATE",
175
176
  "triggerMainPumpPower": "2000",
@@ -201,12 +202,12 @@
201
202
  "sensorWindSpeed": "",
202
203
  "sensorBrightness": "",
203
204
  "sensorRainfall": "",
204
- "switchingBehavior": "standard",
205
- "weatherForecastService": "dasWetter",
205
+ "switchingBehavior": "noResponse",
206
+ "weatherForecastService": "noWeatherData",
206
207
  "weatherForInstance": "",
207
208
  "pathRainForecast": "",
208
209
  "thresholdRain": "2",
209
- "notificationsType": "Telegram",
210
+ "notificationsType": "noNotification",
210
211
  "telegramInstance": "",
211
212
  "telegramNoticeType": "longTelegramNotice",
212
213
  "telegramUser": "",
package/lib/tools.js CHANGED
@@ -1,5 +1,17 @@
1
1
  'use strict';
2
-
2
+ /**
3
+ * tools.js
4
+ * Hier werden allgemeine Funktionen bereitgestellt, die in verschiedenen Modulen des Bewässerungsplaners verwendet werden können.
5
+ * Diese Funktionen umfassen:
6
+ * - laterThanTime: Überprüft, ob eine angegebene Zeit in der Zukunft liegt.
7
+ * - trend: Berechnet einen Zwischenwert basierend auf zwei bekannten Punkten.
8
+ * - findAsync: Eine asynchrone Version der Array.find-Methode, die mit Promises arbeitet.
9
+ * - idStateControl: Ermittelt die ID-Adresse für State, ON_TIME, WORKING, PROCESS eines Homematic-Schaltaktors basierend auf der ID des Geräts und dem konfigurierten Schaltverhalten.
10
+ * - formatTime: Formatiert einen Zeitstempel in ein bestimmtes Format und gibt zusätzliche Informationen wie die Kalenderwoche und den Wochentag zurück.
11
+ * - addTime: Addiert zwei Zeitwerte, die entweder im Format "HH:MM:SS" oder als Sekunden angegeben werden können, und gibt das Ergebnis im gleichen Format zurück.
12
+ *
13
+ * Diese Funktionen sind so gestaltet, dass sie flexibel und wiederverwendbar sind, um die Entwicklung des Bewässerungsplaners zu erleichtern.
14
+ */
3
15
  const tools = {
4
16
  /**
5
17
  * laterThanTime Funktion
@@ -82,7 +94,7 @@ const tools = {
82
94
  idON_TIME: null,
83
95
  idACK: id,
84
96
  maker: "standard"
85
- };
97
+ };
86
98
  }
87
99
 
88
100
  case "homematic": {
@@ -19,6 +19,12 @@ let adapter;
19
19
  */
20
20
  const threadList = [];
21
21
 
22
+ /**
23
+ * Ventil mit dem größten Durchfluss (pipeFlow) für die Steuerung des Druckentlastungsventils
24
+ * - wird in der Funktion updateList() ermittelt
25
+ */
26
+ const pressureReliefValve = {enable: false, name: '',wateringTime: 10, ac: {}, controller: {}, control: {idState: undefined, idON_TIME: undefined, idACK: undefined, maker: undefined}};
27
+
22
28
  /**
23
29
  * - bereit zum Boost (true: kein Boostventil aktive; false: BoostVentil aktive)
24
30
  */
@@ -69,7 +75,7 @@ let cisternPumpControl = {idState: undefined, idON_TIME: undefined, idACK: undef
69
75
  * - idState: Aktorerkennung "hm-rpc.0.MEQ1810129.1.STATE"
70
76
  * - controller: controlle von Zeiten und Abbruchsignalen
71
77
  */
72
- const controlVoltage ={enable: false, name: '24V',wateringTime: 0, ac: {}, controller: {}, control: {idState: undefined, idON_TIME: undefined, idACK: undefined, maker: undefined}};
78
+ const controlVoltage = {enable: false, name: '24V',wateringTime: 0, ac: {}, controller: {}, control: {idState: undefined, idON_TIME: undefined, idACK: undefined, maker: undefined}};
73
79
 
74
80
  /**
75
81
  * Schaltabstand in ms
@@ -514,6 +520,23 @@ const updateList = async () => {
514
520
  ? true
515
521
  : false;
516
522
 
523
+ /**
524
+ * Druckentlastungsventil Steuerung
525
+ * - Wenn die Bewässerung beendet wird, soll der Druck in den Leitungen durch kurzes Öffnen eines Druckentlastungsventils abgebaut werden,
526
+ * um die Lebensdauer des Systems zu erhöhen. Hierzu wird das Ventil mit dem Größten Durchfluss (pipeFlow) für 10 Sekunden angesteuert.
527
+ */
528
+ function findPressureReliefValve() {
529
+ return myConfig.config.reduce((max, item) => {
530
+ return (item.extBreak === false
531
+ && item.autoOn === true
532
+ && max.pipeFlow > item.pipeFlow
533
+ ) ? max : item;
534
+ }, myConfig.config[0]
535
+ );
536
+ }
537
+ // Implementation for pressure relief valve control
538
+
539
+
517
540
  consumption = await currentConsumption(true);
518
541
  if (consumption.pumpRequired === true) { // Pumpe erforderlich
519
542
 
@@ -686,6 +709,28 @@ const updateList = async () => {
686
709
  }
687
710
  }
688
711
 
712
+ if (adapter.config.pressureRelief === true // Druckentlastungsventil aktiviert
713
+ && adapter.config.pumpSelection !== 'noPump' // && Pumpe vorhanden
714
+ ) {
715
+ try {
716
+ const empty = await findPressureReliefValve();
717
+ if (empty) {
718
+ pressureReliefValve.name = empty.objectName;
719
+ pressureReliefValve.wateringTime = 10;
720
+ pressureReliefValve.pipeFlow = empty.pipeFlow;
721
+ pressureReliefValve.enable = false;
722
+ pressureReliefValve.control = empty.control;
723
+ adapter.log.info(`Pressure relief valve: ${pressureReliefValve.name} with pipeFlow ${pressureReliefValve.pipeFlow} l/h for 10s opened!`);
724
+ await setValve(pressureReliefValve, true);
725
+ await asyncTime.setTimeout(1000 * pressureReliefValve.wateringTime, undefined, undefined);
726
+ await setValve(pressureReliefValve, false);
727
+ await asyncTime.setTimeout(switchingDistanceMS, undefined, undefined);
728
+ }
729
+ } catch (error) {
730
+ adapter.log.error(`Error trigger pressure relief valve: ${error}`);
731
+ }
732
+ }
733
+
689
734
  // Spannungsversorgung (24V) ausschalten
690
735
  if(controlVoltage.enable === true) {
691
736
  try {
@@ -1472,8 +1517,8 @@ const valveControl = {
1472
1517
  */
1473
1518
  clearEntireList: async function () {
1474
1519
  try {
1475
- await setValve(controlVoltage, false);
1476
- await setValve(currentPumpUse, false);
1520
+ if (controlVoltage?.control?.idState) await setValve(controlVoltage, false);
1521
+ if (currentPumpUse?.control?.idState) await setValve(currentPumpUse, false);
1477
1522
  // let bValveFound = false; // Ventil gefunden
1478
1523
  for (let counter = threadList.length - 1; // Loop über das Array
1479
1524
  counter >= 0;
@@ -1562,5 +1607,6 @@ module.exports = {
1562
1607
  valveControl,
1563
1608
  controlVoltage,
1564
1609
  currentPumpUse,
1565
- threadList
1610
+ threadList,
1611
+ pressureReliefValve
1566
1612
  };
package/main.js CHANGED
@@ -9,14 +9,15 @@ const schedule = require('node-schedule');
9
9
  const SunCalc = require('suncalc');
10
10
 
11
11
  // Load your modules here, e.g.:
12
- const sendMessageText = require('./lib/sendMessageText.js'); // sendMessageText
13
- const valveControl = require('./lib/valveControl.js').valveControl; // Steuerung der einzelnen Ventile
14
- const controlVoltage = require('./lib/valveControl.js').controlVoltage; // state der Steuerspannung
15
- const currentPumpUse = require('./lib/valveControl.js').currentPumpUse; // state der Pumpen
16
- const threadList = require('./lib/valveControl.js').threadList; // Auflistung aller aktiver Sprenger-Kreise
17
- const myConfig = require('./lib/myConfig.js'); // myConfig Speichern und abrufen von Konfigurationsdaten der Ventile
18
- const evaporation = require('./lib/evaporation.js'); // Berechnung der Verdunstung, Ermittlung der täglichen Höchsttemperatur, Speicherung der aktuellen Werte von Temperatur, Luftfeuchtigkeit, Helligkeit, Windgeschwindigkeit und Regenmenge
19
- const tools = require('./lib/tools.js').tools; // tools => laden von Hilfsfunktionen
12
+ const sendMessageText = require('./lib/sendMessageText.js'); // sendMessageText
13
+ const valveControl = require('./lib/valveControl.js').valveControl; // Steuerung der einzelnen Ventile
14
+ const controlVoltage = require('./lib/valveControl.js').controlVoltage; // state der Steuerspannung
15
+ const currentPumpUse = require('./lib/valveControl.js').currentPumpUse; // state der Pumpen
16
+ const threadList = require('./lib/valveControl.js').threadList; // Auflistung aller aktiver Sprenger-Kreise
17
+ const pressureReliefValve = require('./lib/valveControl.js').pressureReliefValve; // state des Druckentlastungsventil
18
+ const myConfig = require('./lib/myConfig.js'); // myConfig Speichern und abrufen von Konfigurationsdaten der Ventile
19
+ const evaporation = require('./lib/evaporation.js'); // Berechnung der Verdunstung, Ermittlung der täglichen Höchsttemperatur, Speicherung der aktuellen Werte von Temperatur, Luftfeuchtigkeit, Helligkeit, Windgeschwindigkeit und Regenmenge
20
+ const tools = require('./lib/tools.js').tools; // tools => laden von Hilfsfunktionen
20
21
 
21
22
  /**
22
23
  * The adapter instance
@@ -331,6 +332,10 @@ function startAdapter(options) {
331
332
  found.controller.ackTrue(state);
332
333
  }
333
334
  }
335
+ // Druckentlastungsventil
336
+ if (id === pressureReliefValve.control.idACK && typeof pressureReliefValve.controller.ackTrue === 'function') {
337
+ pressureReliefValve.controller.ackTrue(state);
338
+ }
334
339
  // 24V Steuerspannung
335
340
  if (id === controlVoltage.control.idACK && typeof controlVoltage.controller.ackTrue === 'function') {
336
341
  controlVoltage.controller.ackTrue(state);
@@ -2187,10 +2192,8 @@ async function main() {
2187
2192
  weatherForecastTodayPfadStr = `${ adapter.config.weatherForInstance }.location_1.ForecastDaily.Day_1.Rain`;
2188
2193
  adapter.subscribeForeignStates(weatherForecastTodayPfadStr);
2189
2194
  adapter.subscribeForeignStates(`${ adapter.config.weatherForInstance }.location_1.ForecastDaily.Day_2.Rain`);
2190
- } else {
2191
- adapter.log.warn('There is no valid data record stored in the weather forecast, please correct it!');
2192
2195
  }
2193
-
2196
+
2194
2197
  // Request a notification from a third-party adapter => Fordern Sie eine Benachrichtigung von einem Drittanbieter-Adapter an
2195
2198
  if (adapter.config.publicHolidays === true && (`${ adapter.config.publicHolInstance }.heute.*`)) {
2196
2199
  adapter.subscribeForeignStates(`${ adapter.config.publicHolInstance }.heute.*`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.sprinklecontrol",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Control of several sprinklers depending on weather conditions and pump performance.",
5
5
  "author": {
6
6
  "name": "Dirk Peter",