iobroker.sprinklecontrol 0.2.12 → 0.2.13
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 +42 -41
- package/admin/index_m.html +1 -1
- package/admin/index_m.js +1 -2
- package/admin/words.js +2 -2
- package/docs/de/img/E-Mail.jpg +0 -0
- package/docs/de/img/Extraeinstellungen.jpg +0 -0
- package/docs/de/img/Pumpeneinstellung.jpg +0 -0
- package/docs/de/img/Pushover.jpg +0 -0
- package/docs/de/img/Select_ID.jpg +0 -0
- package/docs/de/img/Telegram.jpg +0 -0
- package/docs/de/img/Ventil-Haupteinstellung.jpg +0 -0
- package/docs/de/img/Ventil-Pumpeneinstellung.jpg +0 -0
- package/docs/de/img/WhatsApp.jpg +0 -0
- package/docs/de/img/Zeiteinstellung.jpg +0 -0
- package/docs/de/img/addTime.jpg +0 -0
- package/docs/de/img/analog.jpg +0 -0
- package/docs/de/img/ber-verdunstung.jpg +0 -0
- package/docs/de/img/bew-einstellung.jpg +0 -0
- package/docs/de/img/bew-feste-tage.jpg +0 -0
- package/docs/de/img/bistabil.jpg +0 -0
- package/docs/de/img/bodenf-analog.jpg +0 -0
- package/docs/de/img/bodenf-bistabil.jpg +0 -0
- package/docs/de/img/calculation.jpg +0 -0
- package/docs/de/img/einschaltpunkt-giessen.jpg +0 -0
- package/docs/de/img/festeTage.jpg +0 -0
- package/docs/de/img/main.jpg +0 -0
- package/docs/de/img/main_tab.jpg +0 -0
- package/docs/de/img/max-bodenfeuchtigkeit.jpg +0 -0
- package/docs/de/img/verdunstDiagra.jpg +0 -0
- package/docs/de/img/zus-bew-einstellung.jpg +0 -0
- package/docs/de/sprinklecontrol.md +123 -55
- package/io-package.json +13 -1
- package/lib/tools.js +8 -1
- package/lib/valveControl.js +9 -10
- package/main.js +115 -51
- package/package.json +12 -9
- package/.commitmessage +0 -4
package/README.md
CHANGED
|
@@ -8,8 +8,6 @@
|
|
|
8
8
|
[](https://www.npmjs.com/package/iobroker.sprinklecontrol)
|
|
9
9
|
[](https://www.npmjs.com/package/iobroker.sprinklecontrol)
|
|
10
10
|
[](https://snyk.io/test/github/Dirk-Peter-md/ioBroker.sprinklecontrol)
|
|
11
|
-
[](https://travis-ci.com/Dirk-Peter-md/ioBroker.sprinklecontrol)
|
|
12
|
-
|
|
13
11
|
[](https://nodei.co/npm/iobroker.sprinklecontrol/)
|
|
14
12
|
|
|
15
13
|
|
|
@@ -33,78 +31,81 @@ Wetterabhängige automatische Steuerung der Gartenbewässerung
|
|
|
33
31
|
<!--
|
|
34
32
|
Placeholder for the next version (at the beginning of the line):
|
|
35
33
|
### **WORK IN PROGRESS**
|
|
36
|
-
-->
|
|
37
|
-
|
|
34
|
+
-->
|
|
35
|
+
### 0.2.13 (2022-09-06)
|
|
36
|
+
* (Dirk-Peter-md) various bugs fixed
|
|
37
|
+
* (Dirk-Peter-md) Preparing the stable release
|
|
38
|
+
|
|
38
39
|
### 0.2.12 (2022-07-17)
|
|
39
40
|
* (Dirk-Peter-md) fixDay(twoNd,threeRd) => postpone by one day
|
|
40
41
|
* (Dirk-Peter-md) Bug fixed => autoOn
|
|
41
|
-
* (Dirk-Peter-md) Additional post-watering => in case of high evaporation / switchable externally
|
|
42
|
-
|
|
42
|
+
* (Dirk-Peter-md) Additional post-watering => in case of high evaporation / switchable externally
|
|
43
|
+
|
|
43
44
|
### 0.2.11 (2022-05-22)
|
|
44
45
|
* (Dirk-Peter-md) Bug fixed => analog soil moisture sensor with negative characteristic
|
|
45
|
-
* (Dirk-Peter-md) Attention => maximum soil moisture in rain now in %
|
|
46
|
-
|
|
46
|
+
* (Dirk-Peter-md) Attention => maximum soil moisture in rain now in %
|
|
47
|
+
|
|
47
48
|
### 0.2.10 (2022-05-15)
|
|
48
49
|
* (Dirk-Peter-md) manual watering limited to a maximum of 100%
|
|
49
|
-
* (Dirk-Peter-md) Error whatsapp message fixed
|
|
50
|
-
|
|
50
|
+
* (Dirk-Peter-md) Error whatsapp message fixed
|
|
51
|
+
|
|
51
52
|
### 0.2.9 (2022-04-10)
|
|
52
|
-
* (Dirk-Peter-md) Bug-Initialisierungsroutine
|
|
53
|
-
|
|
53
|
+
* (Dirk-Peter-md) Bug-Initialisierungsroutine
|
|
54
|
+
|
|
54
55
|
### 0.2.8 (2022-03-20)
|
|
55
56
|
* (Dirk-Peter-md) Adaptation for js controller 4
|
|
56
|
-
* (Dirk-Peter-md) switched main.js to async
|
|
57
|
-
|
|
57
|
+
* (Dirk-Peter-md) switched main.js to async
|
|
58
|
+
|
|
58
59
|
### 0.2.7 (16.10.2021)
|
|
59
|
-
* (Dirk-Peter-md) zusätzliche Testnachrichten gelöscht, Readme aktualisiert
|
|
60
|
-
|
|
60
|
+
* (Dirk-Peter-md) zusätzliche Testnachrichten gelöscht, Readme aktualisiert
|
|
61
|
+
|
|
61
62
|
### 0.2.6 (03.10.2021)
|
|
62
|
-
* (Dirk-Peter-md) inGreenhouse in Bewässerungsverfahren "Calculation" hinzugefügt
|
|
63
|
-
|
|
63
|
+
* (Dirk-Peter-md) inGreenhouse in Bewässerungsverfahren "Calculation" hinzugefügt
|
|
64
|
+
|
|
64
65
|
### 0.2.5 (18.08.2021)
|
|
65
66
|
* (Dirk-Peter-md) Mehrfachverwendung von Bodenfeuchte-Sensoren
|
|
66
|
-
* (Dirk-Peter-md) Objekte mit \"def\": ... überarbeitet
|
|
67
|
-
|
|
67
|
+
* (Dirk-Peter-md) Objekte mit \"def\": ... überarbeitet
|
|
68
|
+
|
|
68
69
|
### 0.2.4 (16.08.2021)
|
|
69
70
|
* (Dirk-Peter-md) Triggerpunktanzeige hinzufügen
|
|
70
|
-
* (Dirk-Peter-md) Fehler in der Bodenfeuchteanalyse behoben
|
|
71
|
-
|
|
71
|
+
* (Dirk-Peter-md) Fehler in der Bodenfeuchteanalyse behoben
|
|
72
|
+
|
|
72
73
|
### 0.2.3 (15.08.2021)
|
|
73
74
|
* (Dirk-Peter-md) index_m-Fehler behoben
|
|
74
|
-
* (Dirk-Peter-md) timeExtension (FixDay, bistabil) Fehler behoben
|
|
75
|
-
|
|
75
|
+
* (Dirk-Peter-md) timeExtension (FixDay, bistabil) Fehler behoben
|
|
76
|
+
|
|
76
77
|
### 0.2.2 (27.07.2021)
|
|
77
78
|
* (Dirk-Peter-md) Fehler FixDay behoben
|
|
78
79
|
* (Dirk-Peter-md) Anzeige actualSoilMoisture überarbeitet
|
|
79
|
-
* (Dirk-Peter-md) Infomeldungen überarbeitet
|
|
80
|
-
|
|
80
|
+
* (Dirk-Peter-md) Infomeldungen überarbeitet
|
|
81
|
+
|
|
81
82
|
### 0.2.1 (13.07.2021)
|
|
82
83
|
* (Dirk-Peter-md) Start an festen Wochentagen (ohne Sensoren) hinzugefügt
|
|
83
|
-
* (Dirk-Peter-md) Fehler behoben
|
|
84
|
-
|
|
84
|
+
* (Dirk-Peter-md) Fehler behoben
|
|
85
|
+
|
|
85
86
|
### 0.2.0 (03.07.2021)
|
|
86
87
|
* (Dirk-Peter-md) Bodenfeuchte-Sensor hinzugefügt
|
|
87
|
-
* (Dirk-Peter-md) Schwellwert für Wettervorhersage hinzugefügt
|
|
88
|
-
|
|
88
|
+
* (Dirk-Peter-md) Schwellwert für Wettervorhersage hinzugefügt
|
|
89
|
+
|
|
89
90
|
### 0.1.7 (22.05.2021)
|
|
90
91
|
* (Dirk-Peter-md) Beschreibung in englischer Sprache hinzugefügt
|
|
91
|
-
* (Dirk-Peter-md) bereit für stable
|
|
92
|
-
|
|
92
|
+
* (Dirk-Peter-md) bereit für stable
|
|
93
|
+
|
|
93
94
|
### 0.1.5 (05.05.2021)
|
|
94
|
-
* (Dirk-Peter-md) Zurücksetzen der Regenmenge im 24-Stunden-Modus hinzugefügt
|
|
95
|
-
|
|
95
|
+
* (Dirk-Peter-md) Zurücksetzen der Regenmenge im 24-Stunden-Modus hinzugefügt
|
|
96
|
+
|
|
96
97
|
### 0.1.4 (21.04.2021)
|
|
97
|
-
* (Dirk-Peter-md) Fehler bei deaktivierter Wettervorhersage behoben
|
|
98
|
-
|
|
98
|
+
* (Dirk-Peter-md) Fehler bei deaktivierter Wettervorhersage behoben
|
|
99
|
+
|
|
99
100
|
### 0.1.2 (30.12.2020)
|
|
100
|
-
* (Dirk-Peter-md) Beschreibung von SprinkleControl überarbeitet
|
|
101
|
-
|
|
101
|
+
* (Dirk-Peter-md) Beschreibung von SprinkleControl überarbeitet
|
|
102
|
+
|
|
102
103
|
### 0.0.12 (10.10.2020)
|
|
103
104
|
* (Dirk-Peter-md) Bewässerung über eine 2. Pumpe (Zisterne mit Vorrangschaltung) in abhängigkeit vom Füllstand hinzugefügt.
|
|
104
105
|
|
|
105
106
|
|
|
106
|
-
*************************************************************************************************************************************
|
|
107
|
-
|
|
107
|
+
*************************************************************************************************************************************
|
|
108
|
+
|
|
108
109
|
## License
|
|
109
110
|
MIT License
|
|
110
111
|
|
|
@@ -126,4 +127,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
126
127
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
127
128
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
128
129
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
129
|
-
SOFTWARE.
|
|
130
|
+
SOFTWARE.
|
package/admin/index_m.html
CHANGED
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
<option value="withExternalSignal" class="translate">Start, with external signal</option>
|
|
241
241
|
</select>
|
|
242
242
|
<label for="selectAddStartTime" class="translate"></label>
|
|
243
|
-
<span class="translate">
|
|
243
|
+
<span class="translate">Starting conditions</span>
|
|
244
244
|
</div>
|
|
245
245
|
<div class="col s12 m4 l2 showGreaterETpCur input-field">
|
|
246
246
|
<input type="number" class="value" id="triggerAddStartTimeETpCur" min=0 max=10 placeholder="0-10.0" step="0.1" />
|
package/admin/index_m.js
CHANGED
|
@@ -28,8 +28,7 @@ function load(settings, onChange) {
|
|
|
28
28
|
.on('change', () => {
|
|
29
29
|
showHideSettings();
|
|
30
30
|
onChange(); // set listener to checkbox and call onChange if the value has changed => setze listener auf checkbox und rufe onChange auf, wenn sich der Wert geändert hat
|
|
31
|
-
})
|
|
32
|
-
;
|
|
31
|
+
});
|
|
33
32
|
} else {
|
|
34
33
|
$key.val(settings[id])
|
|
35
34
|
.on('change', () => onChange())
|
package/admin/words.js
CHANGED
|
@@ -34,7 +34,7 @@ systemDictionary = {
|
|
|
34
34
|
"No additional start time": {"en": "No additional start time", "de": "Keine zusätzliche Startzeit", "ru": "Нет дополнительного времени начала", "pt": "Não há tempo de início adicional", "nl": "Geen extra starttijd", "fr": "Pas de démarrage supplémentaire", "it": "Nessun ulteriore tempo di inizio", "es": "No hay tiempo de inicio adicional", "pl": "Czas nieoczekiwanie", "zh-cn": "没有增加开工时间"},
|
|
35
35
|
"Start at ETpCurrent greater than": {"en": "Start at ETpCurrent greater than", "de": "Start bei ETpCurrent größer als", "ru": "Начните в ETpCurrent больше, чем", "pt": "Comece no ETpCurrent maior do que", "nl": "Begin bij aankomst", "fr": "Commencez par ETpCurrent plus que", "it": "Iniziare a ETpCurrent più grande di", "es": "Empieza en ETpCurrent más grande que", "pl": "Zaczyna się w ETpCurrent większym niż w przypadku ETpCurrenta", "zh-cn": "从ETpCurrent的起,比照高得多"},
|
|
36
36
|
"Start, with external signal": {"en": "Start, with external signal", "de": "Start, mit externem Signal", "ru": "Начните, с внешним сигналом", "pt": "Iniciar, com sinal externo", "nl": "Begin met externe signaal", "fr": "Démarrer, avec signal externe", "it": "Avviare, con segnale esterno", "es": "Inicio, con señal externa", "pl": "Zaczynając od sygnału zewnętrznego", "zh-cn": "从外部信号开始"},
|
|
37
|
-
"
|
|
37
|
+
"Starting conditions": {"en": "Starting conditions", "de": "Startbedingungen", "ru": "Начало условий", "pt": "Condições de início", "nl": "Beginnende omstandigheden", "fr": "Conditions de démarrage", "it": "Condizioni di partenza", "es": "Condiciones de inicio", "pl": "Warunki startowe", "zh-cn": "启动条件"},
|
|
38
38
|
"Activation of additional watering under objects:": {"en": "Activation of additional watering under objects:", "de": "Aktivierung einer zusätzlichen Bewässerung unter Objekten:", "ru": "Активация дополнительного полива под объектами:", "pt": "Ativação de rega adicional sob objetos:", "nl": "Activatie van extra water onder objecten:", "fr": "Activation d'arrosage supplémentaire sous les objets:", "it": "Attivazione di ulteriori innaffiature sotto oggetti:", "es": "Activación de riego adicional bajo objetos:", "pl": "Aktywacja dodatkowej wody pod obiektami", "zh-cn": "目标下增加水的行为:"},
|
|
39
39
|
"Additional irrigation in case of high evaporation": {"en": "Additional irrigation in case of high evaporation", "de": "Zusätzliche Bewässerung bei hoher Verdunstung", "ru": "Дополнительное орошение в случае высокой испарения", "pt": "Irrigação adicional em caso de alta evaporação", "nl": "Additionele irrigatie in geval van hoge verdamping", "fr": "Irrigation supplémentaire en cas d'évaporation élevée", "it": "Irrigazione aggiuntiva in caso di elevata evaporazione", "es": "Riego adicional en caso de alta evaporación", "pl": "Dodatkowe irygacje w przypadku wysokich parowania", "zh-cn": "在高蒸气的情况下,更多的灌溉"},
|
|
40
40
|
"Additional watering time in min": {"en": "Additional watering time in min", "de": "Zusätzliche Bewässerungszeit in min", "ru": "Дополнительное время полива в мин", "pt": "Tempo adicional de rega em min", "nl": "Additionele watering tijd in", "fr": "Temps d'arrosage supplémentaire en min", "it": "Tempo di irrigazione supplementare in min", "es": "Tiempo de riego adicional en min", "pl": "Dodatkowy czas w wodzie", "zh-cn": "增水时间"},
|
|
@@ -44,7 +44,7 @@ systemDictionary = {
|
|
|
44
44
|
'different start time on weekends': {'en': 'different start time on weekends', 'de': 'andere Startzeit am Wochenende', 'ru': 'разное время начала по выходным', 'pt': 'horário de início diferente nos finais de semana', 'nl': 'verschillende starttijd in het weekend', 'fr': 'heure de début différente le week-end', 'it': 'orario di inizio diverso nei fine settimana', 'es': 'hora de inicio diferente los fines de semana', 'pl': 'inny czas rozpoczęcia w weekendy', 'zh-cn': '周末的开始时间不同'},
|
|
45
45
|
'Start time at the weekend': {'en': 'Start time at the weekend', 'de': 'Startzeit am Wochenende', 'ru': 'Время начала на выходных', 'pt': 'Hora de início no fim de semana', 'nl': 'Starttijd in het weekend', 'fr': 'Heure de départ le week-end', 'it': 'Ora di inizio nel fine settimana', 'es': 'Hora de inicio del fin de semana', 'pl': 'Rozpocznij czas w weekend', 'zh-cn': '周末开始时间'},
|
|
46
46
|
'Settings for the start time on public holidays': {'en': 'Settings for the start time on public holidays', 'de': 'Einstellungen für die Startzeit an Feiertagen', 'ru': 'Настройки времени начала в праздничные дни', 'pt': 'Configurações para o horário de início em feriados', 'nl': 'Instellingen voor de starttijd op feestdagen', 'fr': "Paramètres de l'heure de début les jours fériés", 'it': "Impostazioni per l'ora di inizio nei giorni festivi", 'es': 'Configuración de la hora de inicio en días festivos', 'pl': 'Ustawienia godziny rozpoczęcia w dni świąteczne', 'zh-cn': '公众假期开始时间的设置'},
|
|
47
|
-
'Start time of public holidays as on weekends': {'en': 'Start time of public holidays as on weekends', 'de': 'Startzeit
|
|
47
|
+
'Start time of public holidays as on weekends': {'en': 'Start time of public holidays as on weekends', 'de': 'Startzeit an Feiertagen wie am Wochenende', 'ru': 'Время начала государственных праздников, как в выходные дни', 'pt': 'Hora de início dos feriados, como nos finais de semana', 'nl': 'Starttijd van feestdagen zoals in het weekend', 'fr': 'Heure de début des jours fériés comme le week-end', 'it': 'Ora di inizio dei giorni festivi come nei fine settimana', 'es': 'Hora de inicio de los días festivos como los fines de semana.', 'pl': 'Rozpocznij dni ustawowo wolne od pracy jak w weekendy', 'zh-cn': '公众假期的开始时间为周末'},
|
|
48
48
|
'public holidays Instance': {'en': 'public holidays Instance', 'de': 'Feiertage Instanz', 'ru': 'государственные праздники', 'pt': 'feriados públicos Instância', 'nl': 'feestdagen exemplaar', 'fr': 'jours fériés Instance', 'it': 'istanza festiva', 'es': 'días festivos Instancia', 'pl': 'wystąpienie w święta państwowe', 'zh-cn': '公共假期实例'},
|
|
49
49
|
'Astro settings': {'en': 'Astro settings', 'de': 'Astro-Einstellungen', 'ru': 'Астро настройки', 'pt': 'Configurações do Astro', 'nl': 'Astro-instellingen', 'fr': 'Paramètres Astro', 'it': 'Impostazioni Astro', 'es': 'Configuraciones astro', 'pl': 'Ustawienia Astro', 'zh-cn': '天文设置'},
|
|
50
50
|
'latitude': {'en': 'latitude', 'de': 'Breite', 'ru': 'широта', 'pt': 'latitude', 'nl': 'breedtegraad', 'fr': 'latitude', 'it': 'latitudine', 'es': 'latitud', 'pl': 'szerokość', 'zh-cn': '纬度'},
|
package/docs/de/img/E-Mail.jpg
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/de/img/Pushover.jpg
CHANGED
|
Binary file
|
|
Binary file
|
package/docs/de/img/Telegram.jpg
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/de/img/WhatsApp.jpg
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/de/img/analog.jpg
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/de/img/bistabil.jpg
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/de/img/main.jpg
CHANGED
|
Binary file
|
package/docs/de/img/main_tab.jpg
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -12,23 +12,22 @@
|
|
|
12
12
|
* [3 Konfiguration](#3-konfiguration)
|
|
13
13
|
* [4 Haupteinstellungen - Startseite](#4-haupteinstellungen)
|
|
14
14
|
* [4.1 Aufbau der Tabelle](#41-aufbau-der-tabelle)
|
|
15
|
-
* [4.2
|
|
15
|
+
* [4.2 spezifische Konfiguration des jeweiligen Bewässerungskreises](#42-spezifische-konfiguration-des-jeweiligen-bewsserungskreises)
|
|
16
16
|
* [4.2.1 Haupteinstellungen des Ventils](#421-haupteinstellungen-des-ventils)
|
|
17
|
-
* [4.2.1.1 Bewässerungseinstellungen](#4211-
|
|
18
|
-
* [4.2.1.2 Einschaltpunkt zum Gießen](#4212-einschaltpunkt)
|
|
17
|
+
* [4.2.1.1 Bewässerungseinstellungen](#4211-bewsserungseinstellungen)
|
|
18
|
+
* [4.2.1.2 Einschaltpunkt zum Gießen](#4212-einschaltpunkt-zum-gieen)
|
|
19
19
|
* [Berechnung der Verdunstung](#einschaltpunkt-berechnung)
|
|
20
20
|
* [Bodenfeuchte-Sensor bistabil](#einschaltpunkt-bistabil)
|
|
21
|
-
* [Bodenfeuchte-Sensor analog](#einschaltpunkt-analog)
|
|
21
|
+
* [Bodenfeuchte-Sensor analog](#einschaltpunkt-analog)
|
|
22
22
|
* [Start an festen Wochentagen (ohne Sensoren)](#einschaltpunkt-feste-tage)
|
|
23
23
|
* [4.2.2 Pumpeneinstellungen des Ventils](#422-pumpeneinstellungen-des-ventils)
|
|
24
24
|
* [5 Pumpen-Einstellungen](#5-pumpen-einstellungen)
|
|
25
25
|
* [6 Zeit-Einstellungen](#6-zeit-einstellungen)
|
|
26
26
|
* [7 Zusätzliche-Einstellungen](#7-zustzliche-einstellungen)
|
|
27
|
-
* [7.1 Astro-Einstellungen](#71-astro-einstellungen)
|
|
28
|
-
* [7.2
|
|
29
|
-
* [7.3
|
|
30
|
-
* [7.4
|
|
31
|
-
* [7.5 Wettervorhersage](#75-wettervorhersage)
|
|
27
|
+
* [7.1 Astro-Einstellungen](#71-astro-einstellungen)
|
|
28
|
+
* [7.2 Zusätzliche Benachrichtigungseinstellung](#72-zustzliche-benachrichtigungseinstellungen)
|
|
29
|
+
* [7.3 Sensoren zur Berechnung der Verdunstung](#73-sensoren-zur-berechnung-der-verdunstung)
|
|
30
|
+
* [7.4 Wettervorhersage](#74-wettervorhersage)
|
|
32
31
|
* [8 Benachrichtigungen](#8-benachrichtigungen)
|
|
33
32
|
* [8.1 Telegram](#81-telegram)
|
|
34
33
|
* [8.2 Pushover](#82-pushover)
|
|
@@ -41,7 +40,6 @@
|
|
|
41
40
|
* [9.4 sprinkle](#94-sprinkle)
|
|
42
41
|
* [10 Was ist für die Zukunft geplant](#10-was-ist-fr-die-zukunft-geplant)
|
|
43
42
|
|
|
44
|
-
|
|
45
43
|
---
|
|
46
44
|
|
|
47
45
|
|
|
@@ -147,8 +145,8 @@ Nach Abschluss der ID-Auswahl ist der Adapter bereits betriebsbereit, aber noch
|
|
|
147
145
|
---
|
|
148
146
|
|
|
149
147
|
|
|
150
|
-
<a id="42-
|
|
151
|
-
## 4.2.
|
|
148
|
+
<a id="42-spezifische-konfiguration-des-jeweiligen-bewsserungskreises"></a>
|
|
149
|
+
## 4.2. spezifische Konfiguration des jeweiligen Bewässerungskreises
|
|
152
150
|
|
|
153
151
|
Diese Konfigurationsebene besteht aus zwei Reitern: [**Haupteinstellungen**](#421-haupteinstellungen-des-ventils) und [**Pumpeneinstellungen**](#422-pumpeneinstellungen-des-ventils)
|
|
154
152
|
|
|
@@ -163,9 +161,11 @@ Diese Konfigurationsebene besteht aus zwei Reitern: [**Haupteinstellungen**](#42
|
|
|
163
161
|
---
|
|
164
162
|
|
|
165
163
|
|
|
166
|
-
<a id="4211-
|
|
164
|
+
<a id="4211-bewsserungseinstellungen"></a>
|
|
167
165
|
#### 4.2.1.1 Bewässerungseinstellungen
|
|
168
166
|
|
|
167
|
+

|
|
168
|
+
|
|
169
169
|
* **Bewässerungszeit in min** – Einstellung der Zeit zum Bewässern in Minuten
|
|
170
170
|
> **Information** → Unter "Berechnung der Verdunstung“ und "Bodenfeuchte-Sensor analog“ wird die Bewässerungszeit verlängert je weiter der Trigger "niedrigster Prozentsatz der Bodenfeuchte“ unterschritten wurde.
|
|
171
171
|
> Bei **Start an festen Wochentagen (ohne Sensoren)** und **Bodenfeuchte-Sensor bistabil** erfolgt die Verlängerung proportional der extraterrestrische Strahlung ihrer Region.
|
|
@@ -178,48 +178,95 @@ Diese Konfigurationsebene besteht aus zwei Reitern: [**Haupteinstellungen**](#42
|
|
|
178
178
|
---
|
|
179
179
|
|
|
180
180
|
|
|
181
|
-
<a id="4212-einschaltpunkt"></a>
|
|
181
|
+
<a id="4212-einschaltpunkt-zum-gieen"></a>
|
|
182
182
|
#### 4.2.1.2 Einschaltpunkt zum Gießen
|
|
183
183
|
|
|
184
|
+

|
|
185
|
+
|
|
184
186
|
* Über **Methode zur Kontrolle der Bodenfeuchtigkeit** werden die verschiedenen Sensoren, zur Steuerung der Bewässerung und deren verhalten, festgelegt.
|
|
185
|
-
> **Information** → Über [**„Zusätzliche Einstellungen" → „Wettervorhersage"**](#
|
|
187
|
+
> **Information** → Über [**„Zusätzliche Einstellungen" → „Wettervorhersage"**](#74-wettervorhersage) kann der Startvorgang verschoben werden, wenn es Regen soll.
|
|
188
|
+
* zur Verfügung stehende Methoden:
|
|
189
|
+
* [Berechnung der Verdunstung](#einschaltpunkt-berechnung)
|
|
190
|
+
* [Bodenfeuchte-Sensor bistabil](#einschaltpunkt-bistabil)
|
|
191
|
+
* [Bodenfeuchte-Sensor analog](#einschaltpunkt-analog)
|
|
192
|
+
* [Start an festen Wochentagen (ohne Sensoren)](#einschaltpunkt-feste-tage)
|
|
193
|
+
* Drei Tage Rhythmus
|
|
194
|
+
* Jeden zweiten Tag
|
|
195
|
+
* An festen Wochentagen
|
|
186
196
|
|
|
187
197
|
---
|
|
188
198
|
|
|
199
|
+
|
|
189
200
|
<a id="einschaltpunkt-berechnung"></a>
|
|
190
|
-
|
|
201
|
+
#### **Berechnung der Verdunstung**
|
|
191
202
|
|
|
192
|
-

|
|
204
|
+
+ ***Zusätzliche Bewässerung bei hoher Verdunstung***
|
|
205
|
+
+ **Zusätzliche Bewässerungszeit in min** Diese Zeile wird unter ZEIT EINSTELLUNGEN => Zusätzliche Startzeit aktiviert und ist für Gebiete mit Sandigen Boden gedacht, wo **eine Wassergabe** pro Tag nicht ausreichen würde.
|
|
206
|
+
> **Tipp** -> maximale Bodenfeuchte nach der Bewässerung in (mm) <= 6; Bodenfeuchte = 100 % nach der Bewässerung = deaktiviert; Einschaltpunkt (Bodenfeuchte) der Bewässerungsventile in % >= 60
|
|
207
|
+
|
|
208
|
+
+ ***Einschaltpunkt zum Gießen***
|
|
209
|
+
+ **Methode zur Kontrolle der Bodenfeuchtigkeit** Hier wird die Art der Bewässerung ausgewählt, wie unter [4.2.1.2 Einschaltpunkt zum Gießen](#4212-einschaltpunkt-zum-gieen) beschrieben ist.
|
|
194
210
|
+ **Sensor im Gewächshaus** bei true (Auswahl) wird aktuelle Regenmenge und die Regenvorhersage nicht berücksichtigt
|
|
195
211
|
+ **Einschaltpunkt (Bodenfeuchte) der Bewässerungsventile in %** – Auslösetrigger: Wenn dieser Wert unterschritten wird, so beginnt zum Startzeitpunkt die Bewässerung.
|
|
196
|
-
+ **Bodenfeuchte = 100 % nach der Bewässerung**
|
|
197
|
-
|
|
198
|
-
***maximale Bodenfeuchtigkeit***
|
|
212
|
+
+ **Bodenfeuchte = 100 % nach der Bewässerung** Bei Aktivierung, wird die Bodenfeuchte nach der Bewässerung auf 100 % gesetzt. Dies kann passieren, wenn eine Begrenzung der Bewässerungszeit über die Aktivierung der **maximalen Bewässerungsverlängerung in %** erfolgt.
|
|
199
213
|
|
|
214
|
+
+ ***maximale Bodenfeuchtigkeit***
|
|
200
215
|
* **maximale Bodenfeuchte nach der Bewässerung in (mm)** – Max. Wassergehalt im Boden nach der Bewässerung.
|
|
201
216
|
> **Tipp** –> Rasengitter: 5; Blumenbeet: 10; Rasenfläche: 14
|
|
202
|
-
* **maximale Bodenfeuchte nach einem Regen in (
|
|
203
|
-
> **Tipp** –>
|
|
217
|
+
* **maximale Bodenfeuchte nach einem Regen in (%)** – Max. Wassergehalt im Boden nach einem kräftigen Regen. Die Prozentzahl bezieht sich auf die max. Bodenfeuchtigkeit nach der Bewässerung
|
|
218
|
+
> **Tipp** –> Je größer der Wert ist, um so länger wird nach einem kräftigen Regen nicht bewässert.
|
|
219
|
+
|
|
220
|
+
+ ***Funktionsweise Berechnung der Verdunstung***
|
|
221
|
+
|
|
222
|
+

|
|
223
|
+
Die aktuelle Verdunstung wird ständig mit dem eintreffen neuer Wetterdaten von der Bodenfeuchte abgezogen (blaue Linie). Wenn nun zum Einschaltpunkt der Bewässerung die aktuelle Bodenfeuchte (actualSoilMoisture) unter dem Einschaltpunkt (im Diagramm 50%) liegt, so wird das Ventil gestartet.
|
|
224
|
+
An der blauen Linie kann man auch die Zeitverlängerung gut erkennen. Wenn wir nun davon ausgehen, das die Bodenfeuchte bei 13,6 % lag, so ergibt sich eine Verlängerung der Bewässerung auf 104 min. Wenn wir nun eine so lange Bewässerung nicht wollen, so können wir unter Bewässerungseinstellungen => maximale Bewässerungsverlängerung in % das ganze begrenzen.
|
|
225
|
+
In unserem Fall auf 100%. Beim Bewässern würden wir also die rote Linie wieder hinauf fahren und mit etwas unter 63,6 % die Bewässerung beenden, da ja während des Bewässerns auch eine Verdunstung stattfindet. Da nach der Bewässerung wir aber wieder mit 100 % Bodenfeuchtigkeit starten sollten, sollte man in diesem Fall **Bodenfeuchte = 100 % nach der Bewässerung** aktivieren.
|
|
226
|
+
Eine Ausnahme bildet die zusätzliche Bewässerung!
|
|
227
|
+
|
|
228
|
+
+ ***Zusätzliche Bewässerung bei hoher Verdunstung***
|
|
229
|
+
|
|
230
|
+

|
|
231
|
+
Wenn unter [**ZEIT EINSTELLUNGEN => Zusätzliche Startzeit**](#6-zeit-einstellungen) aktiviert wurde, so wird diese Zeile eingeblendet.
|
|
232
|
+
Desweiteren müssen die ausgewählten Startbedingungen (ETpToday > x mm oder externe Freigabe) unter ZEIT EINSTELLUNGEN => Zusätzliche Startzeit erfüllt sein, damit die zusätzliche Startzeit aktive wird.
|
|
233
|
+
Sind diese Bedingungen erfüllt, so startet die zusätzliche Bewässerung zur angegebenen Zeit, wenn actualSoilMoisture in unserem Beispiel des oberen Diagramms unter 40 % ist. Hierbei läuft die Bewässerung bis der Einschaltpunkt (60 %) wieder erreicht wurde.
|
|
204
234
|
|
|
205
235
|
---
|
|
206
236
|
|
|
237
|
+
|
|
207
238
|
<a id="einschaltpunkt-bistabil"></a>
|
|
208
239
|
+ **Bodenfeuchte-Sensor bistabil**
|
|
209
240
|
|
|
210
241
|

|
|
211
242
|
|
|
243
|
+
+ **Zusätzliche Bewässerungszeit bei hoher Verdunstung**
|
|
244
|
+
|
|
245
|
+
Diese Zeile wird unter ZEIT EINSTELLUNGEN => Zusätzliche Startzeit aktiviert und ist für Gebiete mit Sandigen Boden gedacht, wo **eine Wassergabe** pro Tag nicht ausreichen würde.
|
|
246
|
+
+ Aktivierung einer zusätzlichen Bewässerung unter Objekten: sprinklecontrol. ... .control.addStartTimeSwitch Dies kann mittels externen Script erfolgen.
|
|
247
|
+
+ **Zusätzliche Bewässerungszeit in min** Zeit der zusätzlichen Bewässerung
|
|
248
|
+
> Achtung: Wenn diese Zeit zu lang ist, wird dieses Ventil am nächsten Tag nicht starten, da der Boden noch zu feucht ist. (keine Verdunstung in der Nacht)
|
|
249
|
+
|
|
212
250
|
+ **Einschaltpunkt zum Gießen (Bodenfeuchte-Sensor → bistabil true(Bewässerung ein), false(Bewässerung aus))**
|
|
213
251
|
|
|
214
|
-
|
|
215
|
-
|
|
252
|
+
+ **Bodenfeuchte-Sensor** Auswahl des Sensors über das PLUS-Zeichen
|
|
253
|
+
+ **Sensor im Gewächshaus** bei true (Auswahl) wird die Regenvorhersage nicht berücksichtigt
|
|
216
254
|
|
|
217
255
|
---
|
|
218
256
|
|
|
257
|
+
|
|
219
258
|
<a id="einschaltpunkt-analog"></a>
|
|
220
259
|
+ **Bodenfeuchte-Sensor analog**
|
|
221
260
|
|
|
222
261
|

|
|
262
|
+
|
|
263
|
+
+ **Zusätzliche Bewässerung bei hoher Verdunstung**
|
|
264
|
+
|
|
265
|
+
Diese Zeile wird unter ZEIT EINSTELLUNGEN => Zusätzliche Startzeit aktiviert und ist für Gebiete mit Sandigen Boden gedacht, wo **eine Wassergabe** pro Tag nicht ausreichen würde.
|
|
266
|
+
+ Aktivierung einer zusätzlichen Bewässerung unter Objekten: sprinklecontrol. ... .control.addStartTimeSwitch Dies kann mittels externen Script erfolgen.
|
|
267
|
+
+ **Zusätzliche Bewässerungszeit in min** => Bewässerungszeit der zusätzlichen Bewässerung in Minuten
|
|
268
|
+
+ **Einschaltpunkt (Bodenfeuchte) der zusätzlichen Bewässerungszeit** → Einschaltpunkt der Bewässerung in Prozent des analogen Bodenfeuchtesensors
|
|
269
|
+
> Achtung: Wenn die Bewässerungszeit zu lang ist, wird dieses Ventil am nächsten Tag nicht starten, da der Boden noch zu feucht ist. (keine Verdunstung in der Nacht)
|
|
223
270
|
|
|
224
271
|
**Einschaltpunkt zum Gießen (Berechnung der Verdunstung → analog interne Umrechnung in 0 - 100 %)**
|
|
225
272
|
+ **Methode zur Kontrolle der Bodenfeuchtigkeit** → Bodenfeuchte-Sensor analog
|
|
@@ -239,10 +286,13 @@ Diese Konfigurationsebene besteht aus zwei Reitern: [**Haupteinstellungen**](#42
|
|
|
239
286
|
|
|
240
287
|

|
|
241
288
|
**Auswahl der Bewässerungstage in der Woche**
|
|
289
|
+
+ **Sensor im Gewächshaus** → Bei Aktivierung wird durch eine Regenvorhersage die Bewässerung nicht um einen Tag verschoben.
|
|
242
290
|
+ **Drei Tage Rhythmus** → Der 1. Tag der Bewässerung ist der Folgetag, nach dem Speichern der Konfiguration, und dann jeden 3. Tag in Folge.
|
|
243
291
|
+ **Jeden zweiten Tag** → Der 1. Tag der Bewässerung ist der Folgetag, nach dem Speichern der Konfiguration, und dann jeden 2. Tag in Folge.
|
|
244
|
-
+ **An festen
|
|
245
|
-
> **Info** → Die Bewässerungsdauer wird verlängert siehe [Bewässerungseinstellungen](#4211-
|
|
292
|
+
+ **An festen Wochentagen** → Die Bewässerungstage werden individuell nach Wochentagen bestimmt.
|
|
293
|
+
> **Info** → Die Bewässerungsdauer wird verlängert siehe [Bewässerungseinstellungen](#4211-bewsserungseinstellungen)
|
|
294
|
+
>
|
|
295
|
+
> **Tipp** → Bei der Auswahl **Drei Tage Rhythmus** und **Jeden zweiten Tag** kann unter Objekte sprinkle.*.postponeByOneDay die Bewässerung um einen Tag weitergeschaltet werden.
|
|
246
296
|
|
|
247
297
|
---
|
|
248
298
|
|
|
@@ -268,7 +318,8 @@ Diese Konfigurationsebene besteht aus zwei Reitern: [**Haupteinstellungen**](#42
|
|
|
268
318
|
|
|
269
319
|
<a id="5-pumpen-einstellungen"></a>
|
|
270
320
|
# 5. Pumpen-Einstellungen
|
|
271
|
-
Hier werden die Einstellung der Hauptpumpe (Grundwasser), einer zweiten Pumpe (Zisterne) und der Spannungsversorgung der Regelkreise vorgenommen.
|
|
321
|
+
Hier werden die Einstellung der Hauptpumpe (z.B. Grundwasser), einer zweiten Pumpe (Zisterne) und der Spannungsversorgung der Regelkreise vorgenommen.
|
|
322
|
+
>Wenn das Schalten der Steuerspannung bzw. einer Pumpe bei Ihnen nicht vorgesehen ist, so lassen Sie dieses Feld einfach leer!
|
|
272
323
|
|
|
273
324
|

|
|
274
325
|
|
|
@@ -306,7 +357,7 @@ In diesem Abschnitt wird die Startzeiten von SprinkleControl festgelegt.
|
|
|
306
357
|
|
|
307
358
|

|
|
308
359
|
|
|
309
|
-
##
|
|
360
|
+
## Startzeit
|
|
310
361
|
* **Beginnen Sie mit einer festen Startzeit** – Bei dieser Auswahl startet die Bewässerung zu einer festgelegten, unter "Startzeit in der Woche" festgelegten Zeit.
|
|
311
362
|
* **Startzeit in der Woche** – Angabe der Startzeit in der Woche.
|
|
312
363
|
* **Startzeit bei Sonnenaufgang** – Wenn sie diese Option auswählen, so startet die Bewässerung bei Sonnenaufgang. Diese Zeit kann aber noch unter Zeitverschiebung variiert werden.
|
|
@@ -316,7 +367,19 @@ In diesem Abschnitt wird die Startzeiten von SprinkleControl festgelegt.
|
|
|
316
367
|
---
|
|
317
368
|
|
|
318
369
|
|
|
319
|
-
##
|
|
370
|
+
## Zusätzliche Startzeit
|
|
371
|
+
* **Startbedingungen**
|
|
372
|
+
* **Keine zusätzliche Startzeit** - zusätzlicher Start ist deaktiviert / ausgeschaltet
|
|
373
|
+
* **Start bei ETpCurrent größer als** - Startfreigabe über interne berechnung der Verdunstung (Sensoren "(z.B. Homematic HmIP-SWO-PL)" zur Berechnung der Verdunstung notwendig)
|
|
374
|
+
* **Start bei ETpCurrent größer als** - Eingabe der Verdunstung die zur Startzeit von *evaporation.ETpToday* erreicht sein muss.
|
|
375
|
+
* **Start, mit externem Signal** - Aktivierung einer zusätzlichen Bewässerung unter Objekten:
|
|
376
|
+
sprinklecontrol. ... .control.addStartTimeSwitch
|
|
377
|
+
>Tipp: Über *control.addStartTimeSwitch* können sie die Zusätzliche Startzeit über ein kleines Skript nach Ihren Wünschen steuern. z.B. beim überschreiten einer bestimmten Temperatur
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
## Wochenendstart
|
|
320
383
|
* **andere Startzeit am Wochenende** – Soll die Bewässerung am Wochenende zu einer anderen Zeit starten (um z. B. den Nachbarn nicht zu verärgern), so kann man es hier aktivieren.
|
|
321
384
|
* **Startzeit am Wochenende** – Startzeit für das Wochenende.
|
|
322
385
|
|
|
@@ -353,17 +416,8 @@ In den Extra-Einstellungen werden verschiedene Einstellungen eingegeben, die bei
|
|
|
353
416
|
---
|
|
354
417
|
|
|
355
418
|
|
|
356
|
-
<a id="72-
|
|
357
|
-
## 7.2
|
|
358
|
-
|
|
359
|
-
* **debuggen**
|
|
360
|
-
Durch Aktivierung werden im Log zusätzliche Informationen angezeigt, wodurch Fehler schneller ermittelt werden können.
|
|
361
|
-
|
|
362
|
-
---
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
<a id="73-zustzliche-benachrichtigungseinstellungen"></a>
|
|
366
|
-
## 7.3 Zusätzliche Benachrichtigungseinstellungen
|
|
419
|
+
<a id="72-zustzliche-benachrichtigungseinstellungen"></a>
|
|
420
|
+
## 7.2 Zusätzliche Benachrichtigungseinstellungen
|
|
367
421
|
|
|
368
422
|
* **Benachrichtigungen aktivieren / deaktivieren**
|
|
369
423
|
Einschalten des Reiters Benachrichtigungen. Hier werden dann die Einstellungen zur Kommunikation vorgenommen.
|
|
@@ -371,8 +425,8 @@ In den Extra-Einstellungen werden verschiedene Einstellungen eingegeben, die bei
|
|
|
371
425
|
---
|
|
372
426
|
|
|
373
427
|
|
|
374
|
-
<a id="
|
|
375
|
-
## 7.
|
|
428
|
+
<a id="73-sensoren-zur-berechnung-der-verdunstung"></a>
|
|
429
|
+
## 7.3. Sensoren zur Berechnung der Verdunstung
|
|
376
430
|
> **Achtung** → Das Program ist auf die Sensoren der Homematic HmIP-SWO-PL zur Berechnung der Verdunstung abgestimmt!
|
|
377
431
|
> > **Andere mir bekannte verwendete Wetterstationen** → Eurochron Funk-Wetterstation EFWS 2900 mit Sainlogic Adapter.
|
|
378
432
|
|
|
@@ -380,8 +434,8 @@ In den Extra-Einstellungen werden verschiedene Einstellungen eingegeben, die bei
|
|
|
380
434
|
|
|
381
435
|
Über die Sensoren wird die max. mögliche Verdunstung der pot. Evapotranspiration nach Penman ETp berechnet und zur Steuerung der Bewässerungsanlage genutzt.
|
|
382
436
|
Dies geschieht jedes Mal, wenn die Temperatur sich ändert.
|
|
383
|
-
> **Achtung** → Zur Berechnung
|
|
384
|
-
Diese müssen unbedingt für die Steuerung der Bewässerung über die „Berechnung der Verdunstung" verfügbar sein.
|
|
437
|
+
> **Achtung** → Zur Berechnung der Verdunstung werden die Sensoren der Temperatur, der Feuchtigkeit, der Windgeschwindigkeit und der Helligkeit herangezogen.
|
|
438
|
+
Diese müssen unbedingt für die Steuerung der Bewässerung über die Option „Berechnung der Verdunstung" verfügbar sein.
|
|
385
439
|
|
|
386
440
|
* **Temperatursensor** – Durch anklicken des (+) Symbols öffnet sich das Select-ID State Fenster. Hier können sie die ID des Luftsensors in °C auswählen.
|
|
387
441
|
* **Feuchtigkeitssensor** – Durch anklicken des (+) Symbols öffnet sich das Select-ID State Fenster. Hier können sie die ID des Feuchtigkeitssensors in % auswählen.
|
|
@@ -392,13 +446,22 @@ Diese müssen unbedingt für die Steuerung der Bewässerung über die „Berechn
|
|
|
392
446
|
---
|
|
393
447
|
|
|
394
448
|
|
|
395
|
-
<a id="
|
|
396
|
-
## 7.
|
|
449
|
+
<a id="74-wettervorhersage"></a>
|
|
450
|
+
## 7.4 Wettervorhersage
|
|
397
451
|
|
|
398
452
|
Beim Aktivieren des Feldes "Wettervorhersage verwenden", erscheint ein Auswahlfeld. In diesem muss die Instanz vom Adapter "Das Wetter" ausgewählt werden.
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
* **
|
|
453
|
+
|
|
454
|
+
* **Wettervorhersage verwenden**
|
|
455
|
+
* **Wettervorhersage-Dienst**
|
|
456
|
+
* **eigener Datenpunkt** → Steuerung mittels externen Signals (Script,Adapter)
|
|
457
|
+
* **Regenvorhersage - Pfad** → Über das + Zeichen können sie den Pfad zur Niederschlagsvorhersage eingeben.
|
|
458
|
+
* **Niederschlags-Schwellwert in mm** → Erst wenn dieser Wert von der Regenvorhersage überschritten wird, so wird dieser beim Start der Bewässerung berücksichtigt.
|
|
459
|
+
* **daswetter** → zugriff auf den Adapter "daswetter"
|
|
460
|
+
* **Wählen Sie die Wettervorhersageinstanz aus** → daswetter.0
|
|
461
|
+
* **Niederschlags-Schwellwert in mm** → Erst wenn dieser Wert von der Regenvorhersage überschritten wird, so wird dieser beim Start der Bewässerung berücksichtigt.
|
|
462
|
+
>info: Im Adapter "Das Wetter“ muss der "Pfad 2: XML-Datei mit 5-Tage-Wettervorhersage und detaillierten Informationen für alle 3 Stunden" ausgefüllt sein,
|
|
463
|
+
damit SprinkleControl auf das Objekt **„daswetter.0.NextDaysDetailed.Location_1.Day_1.rain_value"** zugreifen kann. Dieser Wert wird dann bei jedem Start im Automatikmodus zur Entscheidung einer Beregnung verwendet.
|
|
464
|
+
|
|
402
465
|
|
|
403
466
|
---
|
|
404
467
|
|
|
@@ -476,7 +539,7 @@ damit SprinkleControl auf das Objekt **„daswetter.0.NextDaysDetailed.Location_
|
|
|
476
539
|
* **Benachrichtigungsstil** Umfang des Benachrichtigungstextes
|
|
477
540
|
+ kurze Benachrichtigung → nur Startvorgänge
|
|
478
541
|
+ Lange Benachrichtigung → umfangreiche Benachrichtigungen
|
|
479
|
-
* **Warten auf den Versand (Sekunden)** warten bis zum Versand
|
|
542
|
+
* **Warten auf den Versand (Sekunden)** → warten bis zum Versand
|
|
480
543
|
* **Benachrichtigung nur bei Fehlern** – noch nicht in Benutzung
|
|
481
544
|
|
|
482
545
|
---
|
|
@@ -513,6 +576,7 @@ damit SprinkleControl auf das Objekt **„daswetter.0.NextDaysDetailed.Location_
|
|
|
513
576
|
<a id="91-control"></a>
|
|
514
577
|
## 9.1 control
|
|
515
578
|
* **Holiday** - Wenn Holiday auf true gesetzt wird, so wird die Bewässerung wie am Wochenende gestartet. Falls die Wochenendeinstellung aktiviert wurde. Die Verbindung mit einem Kalender wäre hier auch möglich.
|
|
579
|
+
* **addStartTimeSwitch** - Wird nur angezeigt, wenn unter Konfiguration, zusätzliche Startzeit, ein start mit externen Signal ausgewählt wurde.
|
|
516
580
|
* **autoOnOff** – Bei Einstellung "off“ ist der Automatikbetrieb der Bewässerungsanlage deaktiviert.
|
|
517
581
|
* **parallelOfMax** – z. B. (3 : 4) Drei Bewässerungskreise sind von vier möglichen aktive. (Dies ist nur eine Anzeige!)
|
|
518
582
|
* **restFlow** – Anzeige der noch möglichen Restfördermenge der Pumpe. (Dies ist nur eine Anzeige!)
|
|
@@ -534,8 +598,8 @@ Ich habe mich zur Berechnung der Verdunstung nach der Formel für die Berechnung
|
|
|
534
598
|
## 9.3 info
|
|
535
599
|
* **cisternState** – Anzeige vom Status der Zisterne und deren Zustände, wenn sie vorhanden ist.
|
|
536
600
|
* **nextAutoStart** – Anzeige des nächsten Starts der Bewässerungsanlage.
|
|
537
|
-
* **rainToday** –
|
|
538
|
-
* **rainTomorrow** – Niederschlagsmenge des morgigen Tages
|
|
601
|
+
* **rainToday** – Aktuelle Vorhersage für den Niederschlag des heutigen Tages, wenn es in der Konfiguration ausgewählt wurde.
|
|
602
|
+
* **rainTomorrow** – Niederschlagsmenge des morgigen Tages laut Vorhersage.
|
|
539
603
|
|
|
540
604
|
---
|
|
541
605
|
|
|
@@ -556,8 +620,9 @@ Ich habe mich zur Berechnung der Verdunstung nach der Formel für die Berechnung
|
|
|
556
620
|
* **Bodenfeuchte-Sensor analog** - Zustand des Sensors true/false
|
|
557
621
|
* **Bodenfeuchte-Sensor bistabil** – aktuelle virtuelle Bodenfeuchte in % (max. 100 % nach der Beregnung, >100 % nach einem kräftigen Regen) (hat mit der tatsächlichen nichts zu tun)
|
|
558
622
|
* **Start an festen Wochentagen (ohne Sensoren)** - Anzeige des nächsten Starttermins z. B. Mon, Thu, Wed
|
|
559
|
-
* **autoOn** - Automatik ein (Hier könnt ihr die automatische Bewässerung dieses Kreises ausschalten, z. B. bei einer Reparatur, wobei manuelles Bewässern jederzeit möglich ist.)
|
|
623
|
+
* **autoOn** - Automatik ein (Hier könnt ihr die automatische Bewässerung dieses Kreises ausschalten, z. B. bei einer Reparatur, wobei manuelles Bewässern jederzeit möglich ist.)
|
|
560
624
|
* **countdown** – Restzeit des Beregnungskreises
|
|
625
|
+
* **postponeByOneDay** - Wird nur angezeigt, wenn Start mit festen Tagen in 2 bzw 3-Tagesintervallen ausgewählt wurde und dient zum weiterschalten der einzelnen Starttage.
|
|
561
626
|
* **runningTime** – Laufzeit des Beregnungskreises
|
|
562
627
|
- wenn hier eine Zahl > 0 eingegeben wird, so startet der Beregnungskreises für die angegebene Zeit in Minuten
|
|
563
628
|
- bei eingabe einer 0 wird die Bewässerung des Beregnungskreises beendet
|
|
@@ -578,7 +643,10 @@ Ich habe mich zur Berechnung der Verdunstung nach der Formel für die Berechnung
|
|
|
578
643
|
|
|
579
644
|
<a id="10-was-ist-fr-die-zukunft-geplant"></a>
|
|
580
645
|
# 10 Was ist für die Zukunft geplant
|
|
581
|
-
+
|
|
646
|
+
+ Async. arbeiten des Adapters
|
|
647
|
+
+ Überwachen ob Ventile wirklich geschaltet haben, mit Fehlermeldung über Benachrichtigung
|
|
648
|
+
+ Zisterne als Einzelpumpe mit Bewässerungsunterbrechung bei Unterschreitung minimalniveau
|
|
649
|
+
+ Ventile nach der Bewässerung x Minuten lang spülen (Bei Zisterne / Grundwasser kombination und eisenhaltigem Wasser)
|
|
582
650
|
+ Die Visualisierung, die ich früher noch plante, werde ich nicht weiter verfolgen.
|
|
583
651
|
|
|
584
652
|
---
|
package/io-package.json
CHANGED
|
@@ -16,8 +16,20 @@
|
|
|
16
16
|
"authors": [
|
|
17
17
|
"Dirk Peter <dirk.peter@freenet.de>"
|
|
18
18
|
],
|
|
19
|
-
"version": "0.2.
|
|
19
|
+
"version": "0.2.13",
|
|
20
20
|
"news": {
|
|
21
|
+
"0.2.13": {
|
|
22
|
+
"en": "various bugs fixed; Preparing the stable release",
|
|
23
|
+
"de": "verschiedene Fehler behoben; Vorbereitung der stabilen Freigabe",
|
|
24
|
+
"ru": "исправлены различные баги; Подготовка стабильного релиза",
|
|
25
|
+
"pt": "vários bugs corrigidos; Preparando a liberação estável",
|
|
26
|
+
"nl": "diverse insecten gerepareerd. De stabiele vrijlating voorbereiden",
|
|
27
|
+
"fr": "divers bugs corrigés; Préparation de la libération stable",
|
|
28
|
+
"it": "vari bug fissi; Preparazione del rilascio stabile",
|
|
29
|
+
"es": "varios errores fijos; Preparación de la liberación estable",
|
|
30
|
+
"pl": "różne trąbki ustalono; Preparowanie stabilnego wydania",
|
|
31
|
+
"zh-cn": "(a) 固定地点; 准备稳定释放"
|
|
32
|
+
},
|
|
21
33
|
"0.2.12": {
|
|
22
34
|
"en": "fixDay(twoNd,threeRd) => postpone by one day; Bug fixed => autoOn; Additional post-watering => in case of high evaporation / switchable externally",
|
|
23
35
|
"de": "fixDay(twoNd,threeRd) => Verschiebung um einen Tag; Bug fix => autoOn; Zusätzliche Nachbewässerung => bei hoher Verdampfung / schaltbar extern",
|
package/lib/tools.js
CHANGED
|
@@ -53,7 +53,8 @@ function addTime(time1, time2){
|
|
|
53
53
|
* - 'dayNr': Tag des Jahres (Tagesnummer)
|
|
54
54
|
* - 'day': Wochentag
|
|
55
55
|
* - 'dd.mm. hh:mm': Rückgabe Datum und Zeit
|
|
56
|
-
*
|
|
56
|
+
* - 'past': true => Heute schon vorbei
|
|
57
|
+
* @returns {string|number|boolean}
|
|
57
58
|
*/
|
|
58
59
|
function formatTime(adapter, myDate, timeFormat) { // 'kW' 'dd.mm. hh:mm'
|
|
59
60
|
function zweiStellen (s) {
|
|
@@ -91,6 +92,12 @@ function formatTime(adapter, myDate, timeFormat) { // 'kW' 'dd.mm. hh:mm'
|
|
|
91
92
|
case 'dd.mm. hh:mm':
|
|
92
93
|
return tag + '.' + monat + ' ' + stunde + ':' + minute;
|
|
93
94
|
|
|
95
|
+
case 'past': // true → Heute schon vorbei
|
|
96
|
+
const cd = new Date();
|
|
97
|
+
const cStunde = zweiStellen(cd.getHours());
|
|
98
|
+
const cMinute = zweiStellen(cd.getMinutes());
|
|
99
|
+
return ((stunde > cStunde) || ((stunde === cStunde) && (minute > cMinute)));
|
|
100
|
+
|
|
94
101
|
default:
|
|
95
102
|
adapter.log.info('function formatTime: falsches Format angegeben');
|
|
96
103
|
break;
|
package/lib/valveControl.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
/*
|
|
3
|
-
info: log aufbau valveControl.js: #2.*
|
|
4
|
-
*/
|
|
5
2
|
|
|
6
3
|
const myConfig = require('./myConfig.js');
|
|
7
4
|
const addTime = require('./tools.js').addTime;
|
|
@@ -253,7 +250,7 @@ const switchTheValvesOffOn = async (threadList, parallel) => {
|
|
|
253
250
|
if (err) {
|
|
254
251
|
return err;
|
|
255
252
|
} else {
|
|
256
|
-
adapter.log.info(`Set (${myConfig.config[entry.sprinkleID].methodControlSM}) ID: ${entry.sprinkleName}, value: ${entry.enabled}, duration: ${addTime(entry.wateringTime,'')}`);
|
|
253
|
+
adapter.log.info(`Set Valve (${myConfig.config[entry.sprinkleID].methodControlSM}) ID: ${entry.sprinkleName}, value: ${entry.enabled}, duration: ${addTime(entry.wateringTime,'')}`);
|
|
257
254
|
}
|
|
258
255
|
});
|
|
259
256
|
entry.enabledState = entry.enabled;
|
|
@@ -335,6 +332,7 @@ function updateList () {
|
|
|
335
332
|
}
|
|
336
333
|
/* Intervall-Beregnung wenn angegeben (onOffTime > 0) */
|
|
337
334
|
if ((entry.onOffTime > 0) && !(entry.count % entry.onOffTime)) {
|
|
335
|
+
adapter.log.info(`Intervall-Beregnung, onOffTime: ${entry.onOffTime}, count: ${entry.count}, count % onOffTime: ${entry.count % entry.onOffTime}`);
|
|
338
336
|
entry.enabled = false;
|
|
339
337
|
entry.myBreak = true;
|
|
340
338
|
/* Zustand des Ventils im Thread < 0 > off, < 1 > wait, < 2 > on, <<< 3 >>> break, < 4 > Boost(on), < 5 > off(Boost) */
|
|
@@ -352,7 +350,7 @@ function updateList () {
|
|
|
352
350
|
ack: true
|
|
353
351
|
});
|
|
354
352
|
updateList();
|
|
355
|
-
},1000 * entry.onOffTime);
|
|
353
|
+
},1000 * (entry.onOffTime < 600 ? 600 : entry.onOffTime)); // 600 sek Pause (10 min)
|
|
356
354
|
}
|
|
357
355
|
} else { /* zeit abgelaufen => Ventil ausschalten */
|
|
358
356
|
/* Zustand des Ventils im Thread <<< 0 >>> off, < 1 > wait, < 2 > on, < 3 > break, < 4 > Boost(on), < 5 > off(Boost) */
|
|
@@ -380,7 +378,7 @@ function updateList () {
|
|
|
380
378
|
if (myConfig.config[entry.sprinkleID].booster) {
|
|
381
379
|
if (boostOn) {boostKill(entry.sprinkleID);}
|
|
382
380
|
boostReady = true;
|
|
383
|
-
adapter.log.debug(`ID: ${entry.sprinkleName}UpdateList Sprinkle Off: boostReady = ${boostReady}`);
|
|
381
|
+
adapter.log.debug(`ID: ${entry.sprinkleName} UpdateList Sprinkle Off: boostReady = ${boostReady}`);
|
|
384
382
|
}
|
|
385
383
|
/* Zeiten löschen */
|
|
386
384
|
clearInterval(entry.countdown);
|
|
@@ -421,7 +419,7 @@ function updateList () {
|
|
|
421
419
|
ack: true
|
|
422
420
|
});
|
|
423
421
|
// valveOnOff(entry, false, '#2.6 Set: wait, ID: ');
|
|
424
|
-
adapter.log.info(`Set ID: ${entry.sprinkleName} Pump delivery rate too low, wait! curFlow ${curFlow} parallel: ${parallel}`);
|
|
422
|
+
adapter.log.info(`Set Valve ID: ${entry.sprinkleName} Pump delivery rate too low, wait! curFlow ${curFlow} parallel: ${parallel}`);
|
|
425
423
|
}
|
|
426
424
|
}
|
|
427
425
|
}
|
|
@@ -763,7 +761,7 @@ const valveControl = {
|
|
|
763
761
|
entry.autoOn = res.auto; // auto: = true autostart; = false Handbetrieb
|
|
764
762
|
adapter.setState('sprinkle.' + sprinkleName + '.runningTime', {
|
|
765
763
|
val: addTime(res.wateringTime, ''),
|
|
766
|
-
ack:
|
|
764
|
+
ack: true
|
|
767
765
|
});
|
|
768
766
|
addDone = true; // Sprinkle found
|
|
769
767
|
adapter.log.debug(`update ID: ${entry.sprinkleName} new time: ${addTime(res.wateringTime, '')}`);
|
|
@@ -809,7 +807,7 @@ const valveControl = {
|
|
|
809
807
|
});
|
|
810
808
|
adapter.setState('sprinkle.' + sprinkleName + '.runningTime', {
|
|
811
809
|
val: addTime(res.wateringTime, ''),
|
|
812
|
-
ack:
|
|
810
|
+
ack: true
|
|
813
811
|
});
|
|
814
812
|
adapter.log.debug(`ID: ${sprinkleName} new order created: ${JSON.stringify(threadList[newThread.id])}`);
|
|
815
813
|
}
|
|
@@ -833,6 +831,7 @@ const valveControl = {
|
|
|
833
831
|
counter--) {
|
|
834
832
|
const entry = threadList[counter];
|
|
835
833
|
if (entry.enabledState) {
|
|
834
|
+
adapter.log.info(`Set Valve (SprinkleControl: off) ID: ${entry.sprinkleName}, value: false`);
|
|
836
835
|
adapter.setForeignState(entry.idState, {
|
|
837
836
|
val: false,
|
|
838
837
|
ack: true
|
|
@@ -868,8 +867,8 @@ const valveControl = {
|
|
|
868
867
|
clearTimeout(entry.times.boostTime2);
|
|
869
868
|
entry.times.boostTime2 = null;
|
|
870
869
|
}
|
|
871
|
-
threadList.pop(); // del last array
|
|
872
870
|
adapter.log.debug(`order deleted Stop all ID: ${entry.sprinkleName} ( rest orders: ${threadList.length} )`);
|
|
871
|
+
threadList.pop(); // del last array
|
|
873
872
|
}
|
|
874
873
|
updateList();
|
|
875
874
|
}, // End clearEntireList
|
package/main.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
|
|
3
|
-
info: log aufbau main.js: #0.*
|
|
4
|
-
*/
|
|
2
|
+
|
|
5
3
|
// Load your modules here, e.g.: => // Laden Sie Ihre Module hier, z.B.
|
|
6
4
|
// const fs = require("fs");
|
|
7
5
|
|
|
@@ -171,19 +169,30 @@ function startAdapter(options) {
|
|
|
171
169
|
adapter.log.debug(`state ${id} changed: ${state.val} (ack = ${state.ack})`);
|
|
172
170
|
|
|
173
171
|
// wenn (Holiday == true) ist, soll das Wochenendprogramm gefahren werden.
|
|
174
|
-
if (id === adapter.namespace + '.control.Holiday') {
|
|
172
|
+
if (id === adapter.namespace + '.control.Holiday' && state.ack === false) {
|
|
175
173
|
holidayStr = state.val;
|
|
174
|
+
adapter.setState(id, {
|
|
175
|
+
val: state.val,
|
|
176
|
+
ack: true
|
|
177
|
+
});
|
|
176
178
|
startTimeSprinkle();
|
|
177
179
|
}
|
|
178
180
|
// wenn (addStartTimeSwitch == true) wird die zusätzliche Bewässerung aktiviert
|
|
179
|
-
if (id === `${adapter.namespace}.control.addStartTimeSwitch`
|
|
180
|
-
&& typeof state.val === 'boolean') {
|
|
181
|
+
if (id === `${adapter.namespace}.control.addStartTimeSwitch` && typeof state.val === 'boolean' && state.ack === false) {
|
|
181
182
|
addStartTimeSwitch = state.val;
|
|
183
|
+
adapter.setState(id, {
|
|
184
|
+
val: state.val,
|
|
185
|
+
ack: true
|
|
186
|
+
});
|
|
182
187
|
}
|
|
183
188
|
// wenn (autoOnOff == false) so werden alle Sprenger nicht mehr automatisch gestartet.
|
|
184
|
-
if (id === adapter.namespace + '.control.autoOnOff') {
|
|
189
|
+
if ((id === adapter.namespace + '.control.autoOnOff') && (state.ack === false)) {
|
|
185
190
|
autoOnOffStr = state.val;
|
|
186
191
|
adapter.log.info(`startAdapter: control.autoOnOff: ${state.val}`);
|
|
192
|
+
adapter.setState(id, {
|
|
193
|
+
val: state.val,
|
|
194
|
+
ack: true
|
|
195
|
+
});
|
|
187
196
|
if (!state.val) {
|
|
188
197
|
valveControl.clearEntireList();
|
|
189
198
|
}
|
|
@@ -202,11 +211,15 @@ function startAdapter(options) {
|
|
|
202
211
|
sprinkleID: found.sprinkleID,
|
|
203
212
|
wateringTime: (state.val <= 0) ? state.val : Math.round(60 * state.val)
|
|
204
213
|
}]);
|
|
214
|
+
adapter.setState(id, {
|
|
215
|
+
val: state.val,
|
|
216
|
+
ack: true
|
|
217
|
+
});
|
|
205
218
|
}
|
|
206
219
|
}
|
|
207
220
|
}
|
|
208
221
|
}
|
|
209
|
-
// wenn in der config unter methodControlSM
|
|
222
|
+
// wenn in der config unter methodControlSM!== 'analog' oder 'bistable' eingegeben wurde, dann Bodenfeuchte-Sensor auslesen
|
|
210
223
|
if (myConfig.config) {
|
|
211
224
|
function filterByID(obj){
|
|
212
225
|
return (((obj.methodControlSM === 'analog') || (obj.methodControlSM === 'bistable')) && (obj.triggerSM === id));
|
|
@@ -227,25 +240,37 @@ function startAdapter(options) {
|
|
|
227
240
|
}
|
|
228
241
|
// wenn (...sprinkleName.autoOn == false[off]) so wird der aktuelle Sprenger [sprinkleName]
|
|
229
242
|
// bei false nicht automatisch gestartet
|
|
230
|
-
if (myConfig.config && (typeof state.val === 'boolean')) {
|
|
243
|
+
if (myConfig.config && (typeof state.val === 'boolean') && (state.ack === false)) {
|
|
231
244
|
const found = myConfig.config.find(d => d.autoOnID === id);
|
|
232
245
|
if (found && id === myConfig.config[found.sprinkleID].autoOnID) {
|
|
233
246
|
myConfig.config[found.sprinkleID].autoOn = state.val;
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
247
|
+
adapter.setState(id, { // Bestätigung
|
|
248
|
+
val: state.val,
|
|
249
|
+
ack: true
|
|
250
|
+
});
|
|
251
|
+
adapter.log.info(`set ${found.objectName}.autoOn = ${state.val}, id: ${id}`);
|
|
252
|
+
if (state.val === false) {
|
|
253
|
+
valveControl.addList(
|
|
254
|
+
[{
|
|
255
|
+
auto: false,
|
|
256
|
+
sprinkleID: found.sprinkleID,
|
|
257
|
+
wateringTime: 0
|
|
258
|
+
}]
|
|
259
|
+
);
|
|
260
|
+
}
|
|
240
261
|
}
|
|
241
262
|
}
|
|
242
263
|
|
|
243
264
|
// postponeByOneDay → um einen Tag verschieben bei fixDay (twoNd & threeRd)
|
|
244
265
|
let idSplit = id.split('.', 5);
|
|
245
|
-
if (idSplit[4] === `postponeByOneDay`) {
|
|
266
|
+
if (idSplit[4] === `postponeByOneDay` && state.ack === false) {
|
|
246
267
|
const found = myConfig.config.find(d => d.objectName === idSplit[3]);
|
|
247
268
|
if (found) {
|
|
248
269
|
myConfig.postponeByOneDay(found.sprinkleID).catch((e) => {adapter.log.warn(`postponeByOneDay: ${e}`)});
|
|
270
|
+
adapter.setState(id, {
|
|
271
|
+
val: false,
|
|
272
|
+
ack: true
|
|
273
|
+
});
|
|
249
274
|
}
|
|
250
275
|
}
|
|
251
276
|
|
|
@@ -377,11 +402,12 @@ function curNextFixDay (sprinkleID, returnOn) {
|
|
|
377
402
|
const weekDayArray = myConfig.config[sprinkleID].startFixDay;
|
|
378
403
|
const objPfad = 'sprinkle.' + myConfig.config[sprinkleID].objectName;
|
|
379
404
|
const weekday = ['Sun','Mon','Tue','Wed','Thur','Fri','Sat'];
|
|
405
|
+
let found = false;
|
|
380
406
|
let curDay = formatTime(adapter, '', 'day');
|
|
381
407
|
for ( let i=0; i<7; i++ ) {
|
|
382
|
-
curDay++;
|
|
383
408
|
if (curDay > 6) {curDay = curDay - 7;}
|
|
384
409
|
if (weekDayArray[curDay] === true) {
|
|
410
|
+
found = true;
|
|
385
411
|
if (returnOn) {
|
|
386
412
|
return weekday[curDay];
|
|
387
413
|
} else {
|
|
@@ -392,7 +418,9 @@ function curNextFixDay (sprinkleID, returnOn) {
|
|
|
392
418
|
}
|
|
393
419
|
break;
|
|
394
420
|
}
|
|
421
|
+
curDay++;
|
|
395
422
|
}
|
|
423
|
+
if (returnOn && found === false) {return 'off'}
|
|
396
424
|
}
|
|
397
425
|
|
|
398
426
|
//
|
|
@@ -417,7 +445,9 @@ function checkStates() {
|
|
|
417
445
|
* @param {ioBroker.State|null|undefined} state
|
|
418
446
|
*/
|
|
419
447
|
adapter.getState('control.autoOnOff', (err, state) => {
|
|
420
|
-
if (state && (
|
|
448
|
+
if (state && (typeof state.val === "boolean")) {
|
|
449
|
+
autoOnOffStr = state.val;
|
|
450
|
+
} else {
|
|
421
451
|
autoOnOffStr = true;
|
|
422
452
|
adapter.setState('control.autoOnOff', {
|
|
423
453
|
val: autoOnOffStr,
|
|
@@ -462,7 +492,7 @@ async function checkActualStates () {
|
|
|
462
492
|
* @private
|
|
463
493
|
*/
|
|
464
494
|
const _holiday = await adapter.getStateAsync('control.Holiday');
|
|
465
|
-
if (_holiday && _holiday.val) {
|
|
495
|
+
if (_holiday && _holiday.val && typeof _holiday.val === "boolean") {
|
|
466
496
|
holidayStr = _holiday.val;
|
|
467
497
|
}
|
|
468
498
|
|
|
@@ -472,7 +502,7 @@ async function checkActualStates () {
|
|
|
472
502
|
* @private
|
|
473
503
|
*/
|
|
474
504
|
const _autoOnOff = await adapter.getStateAsync('control.autoOnOff');
|
|
475
|
-
if (_autoOnOff && _autoOnOff.val) {
|
|
505
|
+
if (_autoOnOff && _autoOnOff.val && typeof _autoOnOff.val === "boolean") {
|
|
476
506
|
autoOnOffStr = _autoOnOff.val;
|
|
477
507
|
}
|
|
478
508
|
|
|
@@ -560,8 +590,9 @@ async function checkActualStates () {
|
|
|
560
590
|
const _autoOn = await adapter.getForeignStateAsync(
|
|
561
591
|
res.autoOnID
|
|
562
592
|
).catch((e) => adapter.log.warn(e));
|
|
563
|
-
if (typeof _autoOn.val === 'boolean') {
|
|
593
|
+
if (_autoOn && typeof _autoOn.val === 'boolean') {
|
|
564
594
|
res.autoOn = _autoOn.val;
|
|
595
|
+
if (_autoOn.val === false) {adapter.log.info(`get ${res.objectName}.autoOn = ${res.autoOn}`)}
|
|
565
596
|
}
|
|
566
597
|
}
|
|
567
598
|
}
|
|
@@ -662,10 +693,15 @@ function sunPos() {
|
|
|
662
693
|
}
|
|
663
694
|
|
|
664
695
|
function addStartTimeSprinkle() {
|
|
696
|
+
schedule.cancelJob('sprinkleAddStartTime');
|
|
665
697
|
if (adapter.config.selectAddStartTime === 'greaterETpCurrent' || adapter.config.selectAddStartTime === 'withExternalSignal') {
|
|
666
698
|
let addStartTimeSplit = adapter.config.addWateringStartTime.split(':');
|
|
667
699
|
const scheduleAddStartTime = schedule.scheduleJob('sprinkleAddStartTime', addStartTimeSplit[1] + ' ' + addStartTimeSplit[0] + ' * * *', function() {
|
|
668
|
-
|
|
700
|
+
// if (autoOnOff == false) => keine auto Start
|
|
701
|
+
if (!autoOnOffStr) {
|
|
702
|
+
schedule.cancelJob('sprinkleAddStartTime');
|
|
703
|
+
return;
|
|
704
|
+
}
|
|
669
705
|
if (((adapter.config.selectAddStartTime === 'greaterETpCurrent') && (adapter.config.triggerAddStartTimeETpCur < evaporation.getETpTodayNum()))
|
|
670
706
|
|| (adapter.config.selectAddStartTime === 'withExternalSignal' && addStartTimeSwitch)) {
|
|
671
707
|
let messageText = '';
|
|
@@ -692,13 +728,10 @@ function addStartTimeSprinkle() {
|
|
|
692
728
|
}
|
|
693
729
|
|
|
694
730
|
for(const res of result) {
|
|
695
|
-
adapter.log.debug(`${res.objectName}: ${res.autoOn}, ${res.addWateringTime}, ${resRain(res.inGreenhouse)} <= 0, if(${res.autoOn && (res.addWateringTime > 0) && (resRain(res.inGreenhouse) <= 0)})`);
|
|
696
731
|
if (res.autoOn // Ventil aktiv
|
|
697
732
|
&& (res.addWateringTime > 0) // zusätzliche Bewässerung aktiv time > 0
|
|
698
733
|
&& (resRain(res.inGreenhouse) <= 0)) { // keine Regenvorhersage
|
|
699
734
|
|
|
700
|
-
|
|
701
|
-
|
|
702
735
|
switch (res.methodControlSM) {
|
|
703
736
|
case 'bistable':
|
|
704
737
|
if (res.soilMoisture.bool) {
|
|
@@ -745,14 +778,21 @@ function addStartTimeSprinkle() {
|
|
|
745
778
|
}
|
|
746
779
|
break;
|
|
747
780
|
}
|
|
748
|
-
|
|
781
|
+
} else {
|
|
782
|
+
adapter.log.debug(`${res.objectName}: autoOn (${res.autoOn}) && addWateringTime (${res.addWateringTime} > 0) && resRain (${resRain(res.inGreenhouse)}) <= 0, if(${res.autoOn && (res.addWateringTime > 0) && (resRain(res.inGreenhouse) <= 0)})`);
|
|
749
783
|
}
|
|
750
784
|
}
|
|
751
|
-
|
|
752
|
-
sendMessageText.sendMessage(messageText);
|
|
753
|
-
}
|
|
785
|
+
valveControl.addList(memAddList);
|
|
754
786
|
}
|
|
787
|
+
if(!sendMessageText.onlySendError() && messageText.length > 0){
|
|
788
|
+
sendMessageText.sendMessage(messageText);
|
|
789
|
+
}
|
|
790
|
+
} else {
|
|
791
|
+
adapter.log.debug(`greaterETpCurrent: ${(adapter.config.selectAddStartTime === 'greaterETpCurrent')} & ${(adapter.config.triggerAddStartTimeETpCur < evaporation.getETpTodayNum())}, withExternalSignal; ${(adapter.config.selectAddStartTime === 'withExternalSignal')} & ${addStartTimeSwitch}`);
|
|
755
792
|
}
|
|
793
|
+
setTimeout(()=>{
|
|
794
|
+
schedule.cancelJob('sprinkleAddStartTime');
|
|
795
|
+
}, 200);
|
|
756
796
|
});
|
|
757
797
|
}
|
|
758
798
|
}
|
|
@@ -765,7 +805,7 @@ function startTimeSprinkle() {
|
|
|
765
805
|
|
|
766
806
|
schedule.cancelJob('sprinkleStartTime');
|
|
767
807
|
|
|
768
|
-
// if autoOnOff == false => keine auto Start
|
|
808
|
+
// if (autoOnOff == false) => keine auto Start
|
|
769
809
|
if (!autoOnOffStr) {
|
|
770
810
|
adapter.log.info(`Sprinkle: autoOnOff == Aus ( ${autoOnOffStr} )`);
|
|
771
811
|
adapter.setState('info.nextAutoStart', {
|
|
@@ -826,7 +866,7 @@ function startTimeSprinkle() {
|
|
|
826
866
|
break;
|
|
827
867
|
}
|
|
828
868
|
// Start am Wochenende →, wenn andere Zeiten verwendet werden soll
|
|
829
|
-
if((adapter.config.publicWeekend) && ((myWeekday
|
|
869
|
+
if((adapter.config.publicWeekend) && ((myWeekday === 6) || (myWeekday === 0))){
|
|
830
870
|
infoMessage = 'Start am Wochenende ';
|
|
831
871
|
newStartTime = adapter.config.weekEndLiving;
|
|
832
872
|
}
|
|
@@ -976,8 +1016,16 @@ function startTimeSprinkle() {
|
|
|
976
1016
|
} else if (adapter.config.weatherForecast){
|
|
977
1017
|
messageText += ' ' + '<i>' + 'Start verschoben, da heute ' + weatherForecastTodayNum + 'mm Niederschlag' + '</i> ' + '\n';
|
|
978
1018
|
adapter.log.info(`${res.objectName}: Start verschoben, da Regenvorhersage für Heute ${weatherForecastTodayNum} mm [ ${resRain(false)} > 0 ]`);
|
|
979
|
-
res.
|
|
980
|
-
|
|
1019
|
+
if ((res.startDay === 'threeRd') || (res.startDay === 'twoNd')) {
|
|
1020
|
+
let startDay = -1;
|
|
1021
|
+
res.startFixDay.forEach((item, index) => {if (item) {startDay = index}});
|
|
1022
|
+
if (startDay !== -1) {
|
|
1023
|
+
res.startFixDay[startDay] = false;
|
|
1024
|
+
res.startFixDay[(+ startDay + 1 > 6) ? (+ startDay-6) : (+ startDay+1)] = true;
|
|
1025
|
+
} else {
|
|
1026
|
+
adapter.log.warn(`${res.objectName}: no start day found`)
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
981
1029
|
}
|
|
982
1030
|
curNextFixDay(res.sprinkleID, false);
|
|
983
1031
|
break;
|
|
@@ -1000,7 +1048,7 @@ function startTimeSprinkle() {
|
|
|
1000
1048
|
} else if (adapter.config.weatherForecast) {
|
|
1001
1049
|
/* Bewässerung unterdrückt da ausreichende Regenvorhersage */
|
|
1002
1050
|
messageText += ' ' + '<i>' + 'Start verschoben, da heute ' + weatherForecastTodayNum + 'mm Niederschlag' + '</i> ' + '\n';
|
|
1003
|
-
adapter.log.info(`${res.objectName}: Start verschoben, da Regenvorhersage für Heute ${weatherForecastTodayNum} mm [ ${res.soilMoisture.val} (${resMoisture}) <= ${res.soilMoisture.triggersIrrigation} ]`);
|
|
1051
|
+
adapter.log.info(`${res.objectName}: Start verschoben, da Regenvorhersage für Heute ${weatherForecastTodayNum} mm [ ${res.soilMoisture.val.toFixed(1)} (${resMoisture.toFixed(1)}) <= ${res.soilMoisture.triggersIrrigation} ]`);
|
|
1004
1052
|
}
|
|
1005
1053
|
}
|
|
1006
1054
|
break;
|
|
@@ -1309,7 +1357,7 @@ async function createSprinklers() {
|
|
|
1309
1357
|
'def': true
|
|
1310
1358
|
},
|
|
1311
1359
|
'native': {},
|
|
1312
|
-
}).catch((e) => adapter.log.warn(`
|
|
1360
|
+
}).catch((e) => adapter.log.warn(`setObjectNotExistsAsync ${objectName}.autoOn ${e}`));
|
|
1313
1361
|
// Create Object for .actualSoilMoisture
|
|
1314
1362
|
const _actualSoilMoistureFind = await adapter.findForeignObjectAsync(`${adapter.namespace}.${objPfad}.actualSoilMoisture`, `${objMetConSM.common.type}`);
|
|
1315
1363
|
if (_actualSoilMoistureFind.id !== `${adapter.namespace}.${objPfad}.actualSoilMoisture` || _actualSoilMoistureFind.name !== nameMetConSM) {
|
|
@@ -1532,7 +1580,7 @@ async function createSprinklers() {
|
|
|
1532
1580
|
* false → Zweitage-modus (twoNd)
|
|
1533
1581
|
*/
|
|
1534
1582
|
async function setNewDay (threeRd) {
|
|
1535
|
-
const today = formatTime(adapter,'', 'day');
|
|
1583
|
+
const today = await formatTime(adapter,'', 'day');
|
|
1536
1584
|
/**
|
|
1537
1585
|
*
|
|
1538
1586
|
* @type {ioBroker.GetStatePromise} _actualSoilMoisture
|
|
@@ -1564,7 +1612,6 @@ async function createSprinklers() {
|
|
|
1564
1612
|
} else if (myConfig.config[j].startDay === 'twoNd') {
|
|
1565
1613
|
await setNewDay(false);
|
|
1566
1614
|
} else if (myConfig.config[j].startDay === 'fixDay') {
|
|
1567
|
-
adapter.log.info(`set Day (fixDay): ${myConfig.config[j].objectName}`);
|
|
1568
1615
|
curNextFixDay(myConfig.config[j].sprinkleID, false);
|
|
1569
1616
|
}
|
|
1570
1617
|
|
|
@@ -1636,27 +1683,44 @@ async function createSprinklers() {
|
|
|
1636
1683
|
if (fullRes.indexOf(resultID) === -1) {
|
|
1637
1684
|
try {
|
|
1638
1685
|
// object deleted
|
|
1686
|
+
/**
|
|
1687
|
+
* del when exist Object Async
|
|
1688
|
+
* @param id - the id of the object
|
|
1689
|
+
* @param type - common.type of the state
|
|
1690
|
+
* @returns {Promise<void>}
|
|
1691
|
+
*/
|
|
1692
|
+
const delWhenExistObjectAsync = async (id, type) => {
|
|
1693
|
+
const _find = await adapter.findForeignObjectAsync(`${id}`, `${type}`);
|
|
1694
|
+
if (_find && _find.id === `${id}`) {
|
|
1695
|
+
await adapter.delObjectAsync(`${id}`).catch((e) => adapter.log.warn(e)); // "sprinklecontrol.0.sprinkle.???.postponeByOneDay"
|
|
1696
|
+
}
|
|
1697
|
+
}
|
|
1698
|
+
|
|
1639
1699
|
Promise.all([
|
|
1640
1700
|
adapter.delObjectAsync(resID + '.actualSoilMoisture'), // "sprinklecontrol.0.sprinkle.???.actualSoilMoisture"
|
|
1641
1701
|
adapter.delObjectAsync(resID + '.triggerPoint'), // "sprinklecontrol.0.sprinkle.???.triggerPoint"
|
|
1642
1702
|
adapter.delObjectAsync(resID + '.sprinklerState'), // "sprinklecontrol.0.sprinkle.???.sprinklerState"
|
|
1643
|
-
adapter.delObjectAsync(resID + '.runningTime'), //
|
|
1644
|
-
|
|
1703
|
+
adapter.delObjectAsync(resID + '.runningTime'), // "sprinklecontrol.0.sprinkle.???.runningTime"
|
|
1704
|
+
delWhenExistObjectAsync(`${resID}.postponeByOneDay`, `boolean`), // "sprinklecontrol.0.sprinkle.???.postponeByOneDay" wenn vorhanden löschen
|
|
1705
|
+
adapter.delObjectAsync(resID + '.countdown'), // "sprinklecontrol.0.sprinkle.???.countdown"
|
|
1645
1706
|
adapter.delObjectAsync(resID + '.autoOn'), // "sprinklecontrol.0.sprinkle.???.autoOn"
|
|
1646
|
-
adapter.delObjectAsync(resID + '.history.lastOn'), //
|
|
1647
|
-
adapter.delObjectAsync(resID + '.history.lastConsumed'), //
|
|
1648
|
-
adapter.delObjectAsync(resID + '.history.lastRunningTime'), //
|
|
1649
|
-
adapter.delObjectAsync(resID + '.history.curCalWeekConsumed'), //
|
|
1650
|
-
adapter.delObjectAsync(resID + '.history.lastCalWeekConsumed'), //
|
|
1651
|
-
adapter.delObjectAsync(resID + '.history.curCalWeekRunningTime'), //
|
|
1652
|
-
adapter.delObjectAsync(resID + '.history.lastCalWeekRunningTime')
|
|
1707
|
+
adapter.delObjectAsync(resID + '.history.lastOn'), // "sprinklecontrol.0.sprinkle.???.history.lastOn"
|
|
1708
|
+
adapter.delObjectAsync(resID + '.history.lastConsumed'), // "sprinklecontrol.0.sprinkle.???.history.lastConsumed"
|
|
1709
|
+
adapter.delObjectAsync(resID + '.history.lastRunningTime'), // "sprinklecontrol.0.sprinkle.???.history.lastRunningTime"
|
|
1710
|
+
adapter.delObjectAsync(resID + '.history.curCalWeekConsumed'), // "sprinklecontrol.0.sprinkle.???.history.curCalWeekConsumed"
|
|
1711
|
+
adapter.delObjectAsync(resID + '.history.lastCalWeekConsumed'), // "sprinklecontrol.0.sprinkle.???.history.lastCalWeekConsumed"
|
|
1712
|
+
adapter.delObjectAsync(resID + '.history.curCalWeekRunningTime'), // "sprinklecontrol.0.sprinkle.???.history.curCalWeekRunningTime"
|
|
1713
|
+
adapter.delObjectAsync(resID + '.history.lastCalWeekRunningTime') // "sprinklecontrol.0.sprinkle.???.history.lastCalWeekRunningTime"
|
|
1714
|
+
]
|
|
1715
|
+
).then(async ()=>{
|
|
1653
1716
|
// History - Objekt(Ordner.history) löschen
|
|
1654
|
-
await adapter.delObjectAsync(resID + '.history')
|
|
1717
|
+
await adapter.delObjectAsync(resID + '.history');
|
|
1718
|
+
}).then(async ()=>{
|
|
1655
1719
|
// Objekt(Ordner) löschen
|
|
1656
|
-
await adapter.delObjectAsync(resID)
|
|
1657
|
-
|
|
1658
|
-
adapter.log.info(`sprinkleControl [${
|
|
1659
|
-
})
|
|
1720
|
+
await adapter.delObjectAsync(resID);
|
|
1721
|
+
}).then(()=>{
|
|
1722
|
+
adapter.log.info(`sprinkleControl [${resID}] was deleted`);
|
|
1723
|
+
});
|
|
1660
1724
|
} catch (e) {
|
|
1661
1725
|
adapter.log.warn(e);
|
|
1662
1726
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.sprinklecontrol",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.13",
|
|
4
4
|
"description": "Control of several sprinklers depending on weather conditions and pump performance.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Dirk Peter",
|
|
@@ -28,21 +28,21 @@
|
|
|
28
28
|
"@alcalzone/release-script": "^3.5.9",
|
|
29
29
|
"@alcalzone/release-script-plugin-iobroker": "^3.5.9",
|
|
30
30
|
"@alcalzone/release-script-plugin-license": "^3.5.9",
|
|
31
|
-
"@iobroker/testing": "^
|
|
32
|
-
"@types/chai": "^4.3.
|
|
31
|
+
"@iobroker/testing": "^4.1.0",
|
|
32
|
+
"@types/chai": "^4.3.3",
|
|
33
33
|
"@types/chai-as-promised": "^7.1.5",
|
|
34
34
|
"@types/gulp": "^4.0.9",
|
|
35
35
|
"@types/mocha": "^9.1.1",
|
|
36
|
-
"@types/node": "^18.
|
|
36
|
+
"@types/node": "^18.7.14",
|
|
37
37
|
"@types/node-schedule": "^2.1.0",
|
|
38
38
|
"@types/proxyquire": "^1.3.28",
|
|
39
|
-
"@types/sinon": "^10.0.
|
|
39
|
+
"@types/sinon": "^10.0.13",
|
|
40
40
|
"@types/sinon-chai": "^3.2.8",
|
|
41
41
|
"axios": "^0.27.2",
|
|
42
|
-
"chai": "^4.3.
|
|
42
|
+
"chai": "^4.3.6",
|
|
43
43
|
"chai-as-promised": "^7.1.1",
|
|
44
|
-
"eslint": "^8.
|
|
45
|
-
"gulp": "^
|
|
44
|
+
"eslint": "^8.23.0",
|
|
45
|
+
"gulp": "^3.9.1",
|
|
46
46
|
"mocha": "^10.0.0",
|
|
47
47
|
"proxyquire": "^2.1.3",
|
|
48
48
|
"sinon": "^14.0.0",
|
|
@@ -55,7 +55,10 @@
|
|
|
55
55
|
"test:package": "mocha test/package --exit",
|
|
56
56
|
"test:unit": "mocha test/unit --exit",
|
|
57
57
|
"test:integration": "mocha test/integration --exit",
|
|
58
|
-
"release": "release-script"
|
|
58
|
+
"release": "release-script patch --yes",
|
|
59
|
+
"release-test": "release-script patch -- --dry",
|
|
60
|
+
"release-minor": "release-script minor --yes",
|
|
61
|
+
"release-mojor": "release-script major --yes"
|
|
59
62
|
},
|
|
60
63
|
"bugs": {
|
|
61
64
|
"url": "https://github.com/Dirk-Peter-md/ioBroker.sprinklecontrol/issues"
|
package/.commitmessage
DELETED