iobroker.sprinklecontrol 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -2
- package/admin/i18n/{de/translations.json → de.json} +5 -0
- package/admin/i18n/{en/translations.json → en.json} +6 -1
- package/admin/i18n/{es/translations.json → es.json} +5 -0
- package/admin/i18n/{fr/translations.json → fr.json} +5 -0
- package/admin/i18n/{it/translations.json → it.json} +5 -0
- package/admin/i18n/{nl/translations.json → nl.json} +5 -0
- package/admin/i18n/{pl/translations.json → pl.json} +5 -0
- package/admin/i18n/{pt/translations.json → pt.json} +5 -0
- package/admin/i18n/{ru/translations.json → ru.json} +5 -0
- package/admin/i18n/{uk/translations.json → uk.json} +5 -0
- package/admin/i18n/{zh-cn/translations.json → zh-cn.json} +5 -0
- package/admin/index_m.html +44 -12
- package/admin/index_m.js +0 -6
- package/admin/words.js +6 -1
- package/io-package.json +27 -29
- package/lib/evaporation.js +2 -2
- package/lib/myConfig.js +3 -1
- package/lib/sendMessageText.js +1 -1
- package/lib/valveControl.js +90 -43
- package/main.js +49 -17
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -33,6 +33,11 @@ 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.8 (2026-06-12)
|
|
37
|
+
* (Dirk-Peter-md) Fixed error in "Command without response"
|
|
38
|
+
* (Dirk-Peter-md) Water Pressure Control Revised
|
|
39
|
+
* (Dirk-Peter-md) ioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] completed
|
|
40
|
+
|
|
36
41
|
### 1.0.7 (2026-05-24)
|
|
37
42
|
* (Dirk-Peter-md) Added pressure monitoring.
|
|
38
43
|
|
|
@@ -48,5 +53,30 @@ Wetterabhängige automatische Steuerung der Gartenbewässerung
|
|
|
48
53
|
### 1.0.4 (2026-04-26)
|
|
49
54
|
* (Dirk-Peter-md) GitHub error message #274
|
|
50
55
|
|
|
51
|
-
###
|
|
52
|
-
|
|
56
|
+
### CHANGELOG_OLD
|
|
57
|
+
[CHANGELOG_OLD.md](CHANGELOG_OLD.md)
|
|
58
|
+
|
|
59
|
+
*************************************************************************************************************************************
|
|
60
|
+
|
|
61
|
+
## License
|
|
62
|
+
[MIT License](LICENSE)
|
|
63
|
+
|
|
64
|
+
Copyright (c) 2020-2026 Dirk-Peter-md <dirk.peter@freenet.de>
|
|
65
|
+
|
|
66
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
67
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
68
|
+
in the Software without restriction, including without limitation the rights
|
|
69
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
70
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
71
|
+
furnished to do so, subject to the following conditions:
|
|
72
|
+
|
|
73
|
+
The above copyright notice and this permission notice shall be included in all
|
|
74
|
+
copies or substantial portions of the Software.
|
|
75
|
+
|
|
76
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
77
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
78
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
79
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
80
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
81
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
82
|
+
SOFTWARE.
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"Extra Settings": "Zusätzliche Einstellungen",
|
|
34
34
|
"Flow amount in l/h": "Durchflussmenge in l/h",
|
|
35
35
|
"Friday": "Freitag",
|
|
36
|
+
"Holiday Adapter Instance": "Feiertagsadapterinstanz",
|
|
37
|
+
"Holiday settings": "Feiertagseinstellungen",
|
|
36
38
|
"Homematic [on_time]": "Homematic [on_time]",
|
|
37
39
|
"Humidity sensor": "Sensor für Luftfeuchtigkeit in %",
|
|
38
40
|
"If you don't use this procedure, you can leave these fields blank.": "Wenn Sie dieses Verfahren nicht verwenden, können Sie diese Felder leer lassen.",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
"Notifications": "Benachrichtigungen",
|
|
59
61
|
"Object-ID sprinkler": "Objekt-ID-Sprinkler",
|
|
60
62
|
"Ok": "OK",
|
|
63
|
+
"On public holidays, irrigation begins at the weekend start time.": "An Feiertagen beginnt die Bewässerung zur Startzeit am Wochenende.",
|
|
61
64
|
"Precipitation threshold in mm": "Niederschlags-Schwellwert in mm",
|
|
62
65
|
"Pressure relief in the lines before shutdown": "Druckentlastung der Leitungen vor der Abschaltung",
|
|
63
66
|
"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.",
|
|
@@ -139,6 +142,8 @@
|
|
|
139
142
|
"Watering time in min": "Bewässerungszeit in min",
|
|
140
143
|
"Weather forecast": "Wettervorhersage",
|
|
141
144
|
"Wednesday": "Mittwoch",
|
|
145
|
+
"Weekend Watering Start Time": "Startzeit der Wochenendbewässerung",
|
|
146
|
+
"Weekend settings": "Wochenendeinstellungen",
|
|
142
147
|
"Weekend start time": "Wochenendstart",
|
|
143
148
|
"WhatsApp": "WhatsApp",
|
|
144
149
|
"WhatsApp instance": "WhatsApp-Instanz",
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"Extra Settings": "Extra Settings",
|
|
34
34
|
"Flow amount in l/h": "Flow amount in l/h",
|
|
35
35
|
"Friday": "Friday",
|
|
36
|
+
"Holiday Adapter Instance": "Holiday Adapter Instance",
|
|
37
|
+
"Holiday settings": "",
|
|
36
38
|
"Homematic [on_time]": "Homematic [on_time]",
|
|
37
39
|
"Humidity sensor": "Sensor for humidity in %",
|
|
38
40
|
"If you don't use this procedure, you can leave these fields blank.": "If you don't use this procedure, you can leave these fields blank.",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
"Notifications": "Notifications",
|
|
59
61
|
"Object-ID sprinkler": "Object-ID sprinkler",
|
|
60
62
|
"Ok": "Ok",
|
|
63
|
+
"On public holidays, irrigation begins at the weekend start time.": "On public holidays, irrigation begins at the weekend start time.",
|
|
61
64
|
"Precipitation threshold in mm": "Precipitation threshold in mm",
|
|
62
65
|
"Pressure relief in the lines before shutdown": "Pressure relief in the lines before shutdown",
|
|
63
66
|
"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.",
|
|
@@ -104,7 +107,7 @@
|
|
|
104
107
|
"Start time at the weekend": "Start time at the weekend",
|
|
105
108
|
"Start time for irrigation": "Start time for irrigation",
|
|
106
109
|
"Start time in the week": "Start time in the week",
|
|
107
|
-
"Start time of public holidays as on weekends": "
|
|
110
|
+
"Start time of public holidays as on weekends": "",
|
|
108
111
|
"Start, when the daily high temperature exceeds": "Start, when the daily high temperature exceeds",
|
|
109
112
|
"Start, with external signal": "Start, with external signal",
|
|
110
113
|
"Starting conditions": "Starting conditions",
|
|
@@ -139,6 +142,8 @@
|
|
|
139
142
|
"Watering time in min": "Watering time in min ",
|
|
140
143
|
"Weather forecast": "Weather forecast",
|
|
141
144
|
"Wednesday": "Wednesday",
|
|
145
|
+
"Weekend Watering Start Time": "Weekend Watering Start Time",
|
|
146
|
+
"Weekend settings": "",
|
|
142
147
|
"Weekend start time": "Weekend start time",
|
|
143
148
|
"WhatsApp": "WhatsApp",
|
|
144
149
|
"WhatsApp instance": "WhatsApp instance",
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"Extra Settings": "Configuraciones extra",
|
|
34
34
|
"Flow amount in l/h": "Cantidad de flujo en l/h",
|
|
35
35
|
"Friday": "viernes",
|
|
36
|
+
"Holiday Adapter Instance": "Instancia de adaptador de vacaciones",
|
|
37
|
+
"Holiday settings": "Configuración de vacaciones",
|
|
36
38
|
"Homematic [on_time]": "Homemático [on_time]",
|
|
37
39
|
"Humidity sensor": "Sensor de humedad en%",
|
|
38
40
|
"If you don't use this procedure, you can leave these fields blank.": "Si no utiliza este procedimiento, puede dejar estos campos en blanco.",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
"Notifications": "Notificaciones",
|
|
59
61
|
"Object-ID sprinkler": "Aspersor de ID de objeto",
|
|
60
62
|
"Ok": "Okay",
|
|
63
|
+
"On public holidays, irrigation begins at the weekend start time.": "Los días festivos, el riego comienza a la hora de inicio del fin de semana.",
|
|
61
64
|
"Precipitation threshold in mm": "Umbral de precipitación en mm",
|
|
62
65
|
"Pressure relief in the lines before shutdown": "Alivio de presión en las líneas antes de la parada.",
|
|
63
66
|
"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.",
|
|
@@ -139,6 +142,8 @@
|
|
|
139
142
|
"Watering time in min": "Tiempo de riego en min",
|
|
140
143
|
"Weather forecast": "Pronóstico del tiempo",
|
|
141
144
|
"Wednesday": "miércoles",
|
|
145
|
+
"Weekend Watering Start Time": "Hora de inicio del riego del fin de semana",
|
|
146
|
+
"Weekend settings": "Configuraciones de fin de semana",
|
|
142
147
|
"Weekend start time": "Hora de inicio de fin de semana",
|
|
143
148
|
"WhatsApp": "WhatsApp",
|
|
144
149
|
"WhatsApp instance": "Instancia de WhatsApp",
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"Extra Settings": "Paramètres supplémentaires",
|
|
34
34
|
"Flow amount in l/h": "Débit en l/h",
|
|
35
35
|
"Friday": "Vendredi",
|
|
36
|
+
"Holiday Adapter Instance": "Instance d’adaptateur de vacances",
|
|
37
|
+
"Holiday settings": "Paramètres de vacances",
|
|
36
38
|
"Homematic [on_time]": "Homématique [on_time]",
|
|
37
39
|
"Humidity sensor": "Capteur d'humidité en%'",
|
|
38
40
|
"If you don't use this procedure, you can leave these fields blank.": "Si vous n'utilisez pas cette procédure, vous pouvez laisser ces champs vides.",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
"Notifications": "Notifications",
|
|
59
61
|
"Object-ID sprinkler": "Arroseur ID objet",
|
|
60
62
|
"Ok": "D'accord",
|
|
63
|
+
"On public holidays, irrigation begins at the weekend start time.": "Les jours fériés, l'arrosage commence à l'heure de début du week-end.",
|
|
61
64
|
"Precipitation threshold in mm": "Seuil de précipitation en mm",
|
|
62
65
|
"Pressure relief in the lines before shutdown": "Décompression dans les conduites avant l'arrêt",
|
|
63
66
|
"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.",
|
|
@@ -139,6 +142,8 @@
|
|
|
139
142
|
"Watering time in min": "Temps d'arrosage en min",
|
|
140
143
|
"Weather forecast": "Prévisions météorologiques",
|
|
141
144
|
"Wednesday": "Mercredi",
|
|
145
|
+
"Weekend Watering Start Time": "Heure de début de l’arrosage le week-end",
|
|
146
|
+
"Weekend settings": "Paramètres du week-end",
|
|
142
147
|
"Weekend start time": "Weekend start time",
|
|
143
148
|
"WhatsApp": "WhatsApp",
|
|
144
149
|
"WhatsApp instance": "Instance WhatsApp",
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"Extra Settings": "Impostazioni extra",
|
|
34
34
|
"Flow amount in l/h": "Quantità di flusso in l/h",
|
|
35
35
|
"Friday": "Venerdì",
|
|
36
|
+
"Holiday Adapter Instance": "Istanza dell'adattatore festivo",
|
|
37
|
+
"Holiday settings": "Impostazioni delle vacanze",
|
|
36
38
|
"Homematic [on_time]": "Homematic [on_time]",
|
|
37
39
|
"Humidity sensor": "Sensore di umidità in%",
|
|
38
40
|
"If you don't use this procedure, you can leave these fields blank.": "Se non utilizzi questa procedura, puoi lasciare questi campi vuoti.",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
"Notifications": "Notifiche",
|
|
59
61
|
"Object-ID sprinkler": "Irrigatore ID oggetto",
|
|
60
62
|
"Ok": "Ok",
|
|
63
|
+
"On public holidays, irrigation begins at the weekend start time.": "Nei giorni festivi l'irrigazione inizia all'orario di inizio del fine settimana.",
|
|
61
64
|
"Precipitation threshold in mm": "Soglia di precipitazione in mm",
|
|
62
65
|
"Pressure relief in the lines before shutdown": "Depressurizzazione nelle linee prima dell'arresto",
|
|
63
66
|
"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.",
|
|
@@ -139,6 +142,8 @@
|
|
|
139
142
|
"Watering time in min": "Tempo di irrigazione in min",
|
|
140
143
|
"Weather forecast": "Previsioni del tempo",
|
|
141
144
|
"Wednesday": "mercoledì",
|
|
145
|
+
"Weekend Watering Start Time": "Orario di inizio irrigazione del fine settimana",
|
|
146
|
+
"Weekend settings": "Impostazioni del fine settimana",
|
|
142
147
|
"Weekend start time": "Tempo di inizio weekend",
|
|
143
148
|
"WhatsApp": "WhatsApp",
|
|
144
149
|
"WhatsApp instance": "Istanza WhatsApp",
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"Extra Settings": "Extra instellingen",
|
|
34
34
|
"Flow amount in l/h": "Debiet in l/u",
|
|
35
35
|
"Friday": "vrijdag",
|
|
36
|
+
"Holiday Adapter Instance": "Vakantie-adapterinstantie",
|
|
37
|
+
"Holiday settings": "Vakantie-instellingen",
|
|
36
38
|
"Homematic [on_time]": "Homematic [on_time]",
|
|
37
39
|
"Humidity sensor": "Sensor voor vochtigheid in%",
|
|
38
40
|
"If you don't use this procedure, you can leave these fields blank.": "Als u deze procedure niet gebruikt, kunt u deze velden leeg laten.",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
"Notifications": "Meldingen",
|
|
59
61
|
"Object-ID sprinkler": "Object-ID sproeier",
|
|
60
62
|
"Ok": "OK",
|
|
63
|
+
"On public holidays, irrigation begins at the weekend start time.": "Op feestdagen begint de irrigatie op de starttijd in het weekend.",
|
|
61
64
|
"Precipitation threshold in mm": "Neerslagdrempel in mm",
|
|
62
65
|
"Pressure relief in the lines before shutdown": "Drukontlasting in de leidingen vóór uitschakeling",
|
|
63
66
|
"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.",
|
|
@@ -139,6 +142,8 @@
|
|
|
139
142
|
"Watering time in min": "Bewateringstijd in min",
|
|
140
143
|
"Weather forecast": "Weervoorspelling",
|
|
141
144
|
"Wednesday": "woensdag",
|
|
145
|
+
"Weekend Watering Start Time": "Begintijd bewatering weekend",
|
|
146
|
+
"Weekend settings": "Weekendinstellingen",
|
|
142
147
|
"Weekend start time": "Weekend begint de tijd",
|
|
143
148
|
"WhatsApp": "WhatsApp",
|
|
144
149
|
"WhatsApp instance": "WhatsApp-instantie",
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"Extra Settings": "Dodatkowe ustawienia",
|
|
34
34
|
"Flow amount in l/h": "Przepływ w l/h",
|
|
35
35
|
"Friday": "piątek",
|
|
36
|
+
"Holiday Adapter Instance": "Instancja adaptera wakacyjnego",
|
|
37
|
+
"Holiday settings": "Ustawienia wakacyjne",
|
|
36
38
|
"Homematic [on_time]": "Homematic [on_time]",
|
|
37
39
|
"Humidity sensor": "Czujnik wilgotności w%",
|
|
38
40
|
"If you don't use this procedure, you can leave these fields blank.": "Jeśli nie korzystasz z tej procedury, możesz pozostawić te pola puste.",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
"Notifications": "Powiadomienia",
|
|
59
61
|
"Object-ID sprinkler": "Zraszacz ID obiektów",
|
|
60
62
|
"Ok": "Dobrze",
|
|
63
|
+
"On public holidays, irrigation begins at the weekend start time.": "W święta państwowe nawadnianie rozpoczyna się w weekend.",
|
|
61
64
|
"Precipitation threshold in mm": "Próg opadów w mm",
|
|
62
65
|
"Pressure relief in the lines before shutdown": "Redukcja ciśnienia w przewodach przed wyłączeniem",
|
|
63
66
|
"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.",
|
|
@@ -139,6 +142,8 @@
|
|
|
139
142
|
"Watering time in min": "Czas podlewania w min",
|
|
140
143
|
"Weather forecast": "Prognoza pogody",
|
|
141
144
|
"Wednesday": "środa",
|
|
145
|
+
"Weekend Watering Start Time": "Weekendowy czas rozpoczęcia nawadniania",
|
|
146
|
+
"Weekend settings": "Ustawienia weekendowe",
|
|
142
147
|
"Weekend start time": "Tydzień rozpoczyna się czas",
|
|
143
148
|
"WhatsApp": "WhatsApp",
|
|
144
149
|
"WhatsApp instance": "Instancja WhatsApp",
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"Extra Settings": "Configurações extras",
|
|
34
34
|
"Flow amount in l/h": "Quantidade de fluxo em l/h",
|
|
35
35
|
"Friday": "sexta-feira",
|
|
36
|
+
"Holiday Adapter Instance": "Instância do adaptador de férias",
|
|
37
|
+
"Holiday settings": "Configurações de feriado",
|
|
36
38
|
"Homematic [on_time]": "Homemático [on_time]",
|
|
37
39
|
"Humidity sensor": "Sensor de umidade em%",
|
|
38
40
|
"If you don't use this procedure, you can leave these fields blank.": "Se não usar este procedimento, você pode deixar esses campos em branco.",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
"Notifications": "Notificações",
|
|
59
61
|
"Object-ID sprinkler": "Aspersor de identificação de objeto",
|
|
60
62
|
"Ok": "Está bem",
|
|
63
|
+
"On public holidays, irrigation begins at the weekend start time.": "Nos feriados, a irrigação começa no horário de início do fim de semana.",
|
|
61
64
|
"Precipitation threshold in mm": "Limiar de precipitação em mm",
|
|
62
65
|
"Pressure relief in the lines before shutdown": "Alívio de pressão nas linhas antes do desligamento",
|
|
63
66
|
"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.",
|
|
@@ -139,6 +142,8 @@
|
|
|
139
142
|
"Watering time in min": "Tempo de rega em min",
|
|
140
143
|
"Weather forecast": "Previsão do tempo",
|
|
141
144
|
"Wednesday": "quarta-feira",
|
|
145
|
+
"Weekend Watering Start Time": "Hora de início da rega no fim de semana",
|
|
146
|
+
"Weekend settings": "Configurações de fim de semana",
|
|
142
147
|
"Weekend start time": "Hora de início do fim de semana",
|
|
143
148
|
"WhatsApp": "Whatsapp",
|
|
144
149
|
"WhatsApp instance": "Instância WhatsApp",
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"Extra Settings": "Дополнительные настройки",
|
|
34
34
|
"Flow amount in l/h": "Объем потока в л/ч",
|
|
35
35
|
"Friday": "Пятница",
|
|
36
|
+
"Holiday Adapter Instance": "Экземпляр праздничного адаптера",
|
|
37
|
+
"Holiday settings": "Настройки праздника",
|
|
36
38
|
"Homematic [on_time]": "Домашнее [on_time]",
|
|
37
39
|
"Humidity sensor": "Датчик влажности в%",
|
|
38
40
|
"If you don't use this procedure, you can leave these fields blank.": "Если вы не используете эту процедуру, вы можете оставить эти поля пустыми.",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
"Notifications": "Уведомления",
|
|
59
61
|
"Object-ID sprinkler": "Спринклер с идентификатором объекта",
|
|
60
62
|
"Ok": "Хорошо",
|
|
63
|
+
"On public holidays, irrigation begins at the weekend start time.": "В праздничные дни полив начинается в выходные дни.",
|
|
61
64
|
"Precipitation threshold in mm": "Порог осадков в мм",
|
|
62
65
|
"Pressure relief in the lines before shutdown": "Сброс давления в линиях перед остановом",
|
|
63
66
|
"Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "Сброс давления! Включает самый большой водопотребитель на 10 секунд после выключения насоса.",
|
|
@@ -139,6 +142,8 @@
|
|
|
139
142
|
"Watering time in min": "Время полива в мин.",
|
|
140
143
|
"Weather forecast": "Прогноз погоды",
|
|
141
144
|
"Wednesday": "среда",
|
|
145
|
+
"Weekend Watering Start Time": "Время начала полива на выходных",
|
|
146
|
+
"Weekend settings": "Настройки выходного дня",
|
|
142
147
|
"Weekend start time": "Время начала выходных",
|
|
143
148
|
"WhatsApp": "WhatsApp",
|
|
144
149
|
"WhatsApp instance": "Экземпляр WhatsApp",
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"Extra Settings": "Додаткові налаштування",
|
|
34
34
|
"Flow amount in l/h": "Витрата в л/год",
|
|
35
35
|
"Friday": "П'ятниця",
|
|
36
|
+
"Holiday Adapter Instance": "Екземпляр Holiday Adapter",
|
|
37
|
+
"Holiday settings": "Параметри відпустки",
|
|
36
38
|
"Homematic [on_time]": "Homematic [on_time]",
|
|
37
39
|
"Humidity sensor": "Датчик вологості в %",
|
|
38
40
|
"If you don't use this procedure, you can leave these fields blank.": "Якщо ви не використовуєте цю процедуру, ви можете залишити ці поля порожніми.",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
"Notifications": "Сповіщення",
|
|
59
61
|
"Object-ID sprinkler": "Спринклер Object-ID",
|
|
60
62
|
"Ok": "добре",
|
|
63
|
+
"On public holidays, irrigation begins at the weekend start time.": "У святкові дні полив починається у вихідний день.",
|
|
61
64
|
"Precipitation threshold in mm": "Поріг опадів в мм",
|
|
62
65
|
"Pressure relief in the lines before shutdown": "Скидання тиску в лініях перед відключенням",
|
|
63
66
|
"Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "Зняття тиску! Вмикає найбільшого споживача води на 10 секунд після вимкнення насоса.",
|
|
@@ -139,6 +142,8 @@
|
|
|
139
142
|
"Watering time in min": "Час поливу в хв",
|
|
140
143
|
"Weather forecast": "Прогноз погоди",
|
|
141
144
|
"Wednesday": "Середа",
|
|
145
|
+
"Weekend Watering Start Time": "Час початку поливу на вихідних",
|
|
146
|
+
"Weekend settings": "Налаштування вихідного дня",
|
|
142
147
|
"Weekend start time": "Час початку вихідних",
|
|
143
148
|
"WhatsApp": "WhatsApp",
|
|
144
149
|
"WhatsApp instance": "Екземпляр WhatsApp",
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"Extra Settings": "额外设定",
|
|
34
34
|
"Flow amount in l/h": "流量(升/小时)",
|
|
35
35
|
"Friday": "星期五",
|
|
36
|
+
"Holiday Adapter Instance": "假日适配器实例",
|
|
37
|
+
"Holiday settings": "节假日设置",
|
|
36
38
|
"Homematic [on_time]": "家庭自制 [on_time]",
|
|
37
39
|
"Humidity sensor": "湿度传感器%",
|
|
38
40
|
"If you don't use this procedure, you can leave these fields blank.": "如果您不使用此过程,您可以将这些字段留空。",
|
|
@@ -58,6 +60,7 @@
|
|
|
58
60
|
"Notifications": "通知事项",
|
|
59
61
|
"Object-ID sprinkler": "对象ID洒水器",
|
|
60
62
|
"Ok": "好",
|
|
63
|
+
"On public holidays, irrigation begins at the weekend start time.": "在公共假期,灌溉从周末开始时间开始。",
|
|
61
64
|
"Precipitation threshold in mm": "以毫米为单位的降水阈值",
|
|
62
65
|
"Pressure relief in the lines before shutdown": "停机前管线压力释放",
|
|
63
66
|
"Pressure relief! Switches on the largest water consumer for 10 seconds after the pump has been switched off.": "压力缓解!泵关闭后,打开最大耗水量 10 秒。",
|
|
@@ -139,6 +142,8 @@
|
|
|
139
142
|
"Watering time in min": "浇水时间(分钟)",
|
|
140
143
|
"Weather forecast": "天气预报",
|
|
141
144
|
"Wednesday": "周三",
|
|
145
|
+
"Weekend Watering Start Time": "周末浇水开始时间",
|
|
146
|
+
"Weekend settings": "周末设置",
|
|
142
147
|
"Weekend start time": "周末开始时间",
|
|
143
148
|
"WhatsApp": "WhatsApp的",
|
|
144
149
|
"WhatsApp instance": "WhatsApp实例",
|
package/admin/index_m.html
CHANGED
|
@@ -256,21 +256,11 @@
|
|
|
256
256
|
<input type="checkbox" class="value" id="publicWeekend" />
|
|
257
257
|
<span for="publicWeekend" class="translate">different start time on weekends</span>
|
|
258
258
|
</div>
|
|
259
|
-
<div class="input-field col s12 m4 l2 publicWeek">
|
|
260
|
-
<input type="text" class="timepicker value" id="weekEndLiving" />
|
|
261
|
-
<label for="weekEndLiving" class="translate"></label>
|
|
262
|
-
<span class="translate">Start time at the weekend</span>
|
|
263
|
-
</div>
|
|
264
259
|
</div>
|
|
265
260
|
<div class="row">
|
|
266
|
-
<div class="input-field col s12 m12 l12
|
|
261
|
+
<div class="input-field col s12 m12 l12">
|
|
267
262
|
<input type="checkbox" class="value" id="publicHolidays" />
|
|
268
|
-
<span for="publicHolidays" class="translate">
|
|
269
|
-
</div>
|
|
270
|
-
<div class="input-field col s12 m4 l2 publicHol">
|
|
271
|
-
<select id="publicHolInstance" class="value"></select>
|
|
272
|
-
<label for="publicHolInstance" class="translate"></label>
|
|
273
|
-
<span class="translate">public holidays Instance</span>
|
|
263
|
+
<span for="publicHolidays" class="translate">On public holidays, irrigation begins at the weekend start time.</span>
|
|
274
264
|
</div>
|
|
275
265
|
</div>
|
|
276
266
|
</div>
|
|
@@ -288,8 +278,50 @@
|
|
|
288
278
|
<span class="translate">Second start time</span>
|
|
289
279
|
</div>
|
|
290
280
|
</div>
|
|
281
|
+
<div class="row">
|
|
282
|
+
<div class="input-field col s12 m12 l12">
|
|
283
|
+
<input type="checkbox" class="value" id="publicWeekend2" />
|
|
284
|
+
<span for="publicWeekend2" class="translate">different start time on weekends</span>
|
|
285
|
+
</div>
|
|
286
|
+
</div>
|
|
287
|
+
<div class="row">
|
|
288
|
+
<div class="input-field col s12 m12 l12">
|
|
289
|
+
<input type="checkbox" class="value" id="publicHolidays2" />
|
|
290
|
+
<span for="publicHolidays" class="translate">On public holidays, irrigation begins at the weekend start time.</span>
|
|
291
|
+
</div>
|
|
292
|
+
</div>
|
|
291
293
|
</div>
|
|
292
294
|
</li>
|
|
295
|
+
<!-- Weekend Settings -->
|
|
296
|
+
<li>
|
|
297
|
+
<div class="collapsible-header">
|
|
298
|
+
<i class="material-icons">expand_more</i><h6 class="translate">Weekend Watering Start Time</h6>
|
|
299
|
+
</div>
|
|
300
|
+
<div class="collapsible-body">
|
|
301
|
+
<div class="row">
|
|
302
|
+
<div class="input-field col s12 m4 l2">
|
|
303
|
+
<input type="text" class="timepicker value" id="weekEndLiving" />
|
|
304
|
+
<label for="weekEndLiving" class="translate"></label>
|
|
305
|
+
<span class="translate">Start time at the weekend</span>
|
|
306
|
+
</div>
|
|
307
|
+
</div>
|
|
308
|
+
</div>
|
|
309
|
+
</li>
|
|
310
|
+
<!-- Holiday Settings -->
|
|
311
|
+
<li>
|
|
312
|
+
<div class="collapsible-header">
|
|
313
|
+
<i class="material-icons">expand_more</i><h6 class="translate">Holiday Adapter Instance</h6>
|
|
314
|
+
</div>
|
|
315
|
+
<div class="collapsible-body">
|
|
316
|
+
<div class="row">
|
|
317
|
+
<div class="input-field col s12 m4 l2">
|
|
318
|
+
<select id="publicHolInstance" class="value"></select>
|
|
319
|
+
<label for="publicHolInstance" class="translate"></label>
|
|
320
|
+
<span class="translate">public holidays Instance</span>
|
|
321
|
+
</div>
|
|
322
|
+
</div>
|
|
323
|
+
</div>
|
|
324
|
+
</li>
|
|
293
325
|
<!-- Additional start time -->
|
|
294
326
|
<li>
|
|
295
327
|
<div class="collapsible-header">
|
package/admin/index_m.js
CHANGED
|
@@ -592,12 +592,6 @@ function showHideSettings() {
|
|
|
592
592
|
$('.publicWeekHol').hide();
|
|
593
593
|
}
|
|
594
594
|
|
|
595
|
-
if ($('#publicHolidays').prop('checked') && mPublicWeekend) {
|
|
596
|
-
$('.publicHol').show();
|
|
597
|
-
} else {
|
|
598
|
-
$('.publicHol').hide();
|
|
599
|
-
}
|
|
600
|
-
|
|
601
595
|
// individuelle Wettervorhersage
|
|
602
596
|
$('#weatherForecastService').on('change', function () {
|
|
603
597
|
if ($(this).val() === 'noWeatherData') {
|
package/admin/words.js
CHANGED
|
@@ -42,6 +42,8 @@ systemDictionary = {
|
|
|
42
42
|
"Extra Settings": { "en": "Extra Settings", "de": "Zusätzliche Einstellungen", "ru": "Дополнительные настройки", "pt": "Configurações extras", "nl": "Extra instellingen", "fr": "Paramètres supplémentaires", "it": "Impostazioni extra", "es": "Configuraciones extra", "pl": "Dodatkowe ustawienia", "uk": "Додаткові налаштування", "zh-cn": "额外设定"},
|
|
43
43
|
"Flow amount in l/h": { "en": "Flow amount in l/h", "de": "Durchflussmenge in l/h", "ru": "Объем потока в л/ч", "pt": "Quantidade de fluxo em l/h", "nl": "Debiet in l/u", "fr": "Débit en l/h", "it": "Quantità di flusso in l/h", "es": "Cantidad de flujo en l/h", "pl": "Przepływ w l/h", "uk": "Витрата в л/год", "zh-cn": "流量(升/小时)"},
|
|
44
44
|
"Friday": { "en": "Friday", "de": "Freitag", "ru": "Пятница", "pt": "sexta-feira", "nl": "vrijdag", "fr": "Vendredi", "it": "Venerdì", "es": "viernes", "pl": "piątek", "uk": "П'ятниця", "zh-cn": "星期五"},
|
|
45
|
+
"Holiday Adapter Instance": { "en": "Holiday Adapter Instance", "de": "Feiertagsadapterinstanz", "ru": "Экземпляр праздничного адаптера", "pt": "Instância do adaptador de férias", "nl": "Vakantie-adapterinstantie", "fr": "Instance d’adaptateur de vacances", "it": "Istanza dell'adattatore festivo", "es": "Instancia de adaptador de vacaciones", "pl": "Instancja adaptera wakacyjnego", "uk": "Екземпляр Holiday Adapter", "zh-cn": "假日适配器实例"},
|
|
46
|
+
"Holiday settings": { "en": "", "de": "Feiertagseinstellungen", "ru": "Настройки праздника", "pt": "Configurações de feriado", "nl": "Vakantie-instellingen", "fr": "Paramètres de vacances", "it": "Impostazioni delle vacanze", "es": "Configuración de vacaciones", "pl": "Ustawienia wakacyjne", "uk": "Параметри відпустки", "zh-cn": "节假日设置"},
|
|
45
47
|
"Homematic [on_time]": { "en": "Homematic [on_time]", "de": "Homematic [on_time]", "ru": "Домашнее [on_time]", "pt": "Homemático [on_time]", "nl": "Homematic [on_time]", "fr": "Homématique [on_time]", "it": "Homematic [on_time]", "es": "Homemático [on_time]", "pl": "Homematic [on_time]", "uk": "Homematic [on_time]", "zh-cn": "家庭自制 [on_time]"},
|
|
46
48
|
"Humidity sensor": { "en": "Sensor for humidity in %", "de": "Sensor für Luftfeuchtigkeit in %", "ru": "Датчик влажности в%", "pt": "Sensor de umidade em%", "nl": "Sensor voor vochtigheid in%", "fr": "Capteur d'humidité en%'", "it": "Sensore di umidità in%", "es": "Sensor de humedad en%", "pl": "Czujnik wilgotności w%", "uk": "Датчик вологості в %", "zh-cn": "湿度传感器%"},
|
|
47
49
|
"If you don't use this procedure, you can leave these fields blank.": {"en": "If you don't use this procedure, you can leave these fields blank.", "de": "Wenn Sie dieses Verfahren nicht verwenden, können Sie diese Felder leer lassen.", "ru": "Если вы не используете эту процедуру, вы можете оставить эти поля пустыми.", "pt": "Se não usar este procedimento, você pode deixar esses campos em branco.", "nl": "Als u deze procedure niet gebruikt, kunt u deze velden leeg laten.", "fr": "Si vous n'utilisez pas cette procédure, vous pouvez laisser ces champs vides.", "it": "Se non utilizzi questa procedura, puoi lasciare questi campi vuoti.", "es": "Si no utiliza este procedimiento, puede dejar estos campos en blanco.", "pl": "Jeśli nie korzystasz z tej procedury, możesz pozostawić te pola puste.", "uk": "Якщо ви не використовуєте цю процедуру, ви можете залишити ці поля порожніми.", "zh-cn": "如果您不使用此过程,您可以将这些字段留空。"},
|
|
@@ -67,6 +69,7 @@ systemDictionary = {
|
|
|
67
69
|
"Notifications": { "en": "Notifications", "de": "Benachrichtigungen", "ru": "Уведомления", "pt": "Notificações", "nl": "Meldingen", "fr": "Notifications", "it": "Notifiche", "es": "Notificaciones", "pl": "Powiadomienia", "uk": "Сповіщення", "zh-cn": "通知事项"},
|
|
68
70
|
"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洒水器"},
|
|
69
71
|
"Ok": { "en": "Ok", "de": "OK", "ru": "Хорошо", "pt": "Está bem", "nl": "OK", "fr": "D'accord", "it": "Ok", "es": "Okay", "pl": "Dobrze", "uk": "добре", "zh-cn": "好"},
|
|
72
|
+
"On public holidays, irrigation begins at the weekend start time.": {"en": "On public holidays, irrigation begins at the weekend start time.", "de": "An Feiertagen beginnt die Bewässerung zur Startzeit am Wochenende.", "ru": "В праздничные дни полив начинается в выходные дни.", "pt": "Nos feriados, a irrigação começa no horário de início do fim de semana.", "nl": "Op feestdagen begint de irrigatie op de starttijd in het weekend.", "fr": "Les jours fériés, l'arrosage commence à l'heure de début du week-end.", "it": "Nei giorni festivi l'irrigazione inizia all'orario di inizio del fine settimana.", "es": "Los días festivos, el riego comienza a la hora de inicio del fin de semana.", "pl": "W święta państwowe nawadnianie rozpoczyna się w weekend.", "uk": "У святкові дні полив починається у вихідний день.", "zh-cn": "在公共假期,灌溉从周末开始时间开始。"},
|
|
70
73
|
"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": "以毫米为单位的降水阈值"},
|
|
71
74
|
"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": "停机前管线压力释放"},
|
|
72
75
|
"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 秒。"},
|
|
@@ -113,7 +116,7 @@ systemDictionary = {
|
|
|
113
116
|
"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", "uk": "Час початку у вихідні", "zh-cn": "周末开始时间"},
|
|
114
117
|
"Start time for irrigation": { "en": "Start time for irrigation", "de": "Startzeit für die Bewässerung", "ru": "Время начала полива", "pt": "Hora de início da irrigação", "nl": "Starttijd voor irrigatie", "fr": "Heure de début de l'irrigation", "it": "Ora di inizio per l'irrigazione", "es": "Hora de inicio de riego", "pl": "Czas rozpoczęcia nawadniania", "uk": "Час початку поливу", "zh-cn": "灌溉开始时间"},
|
|
115
118
|
"Start time in the week": { "en": "Start time in the week", "de": "Startzeit in der Woche", "ru": "Время начала недели", "pt": "Hora de início da semana", "nl": "Starttijd in de week", "fr": "Heure de début dans la semaine", "it": "Ora di inizio della settimana", "es": "Hora de inicio en la semana", "pl": "Rozpocznij godzinę w tygodniu", "uk": "Час початку на тижні", "zh-cn": "一周的开始时间"},
|
|
116
|
-
"Start time of public holidays as on weekends": { "en": "
|
|
119
|
+
"Start time of public holidays as on weekends": { "en": "", "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", "uk": "Час початку святкових днів як у вихідні дні", "zh-cn": "公众假期的开始时间为周末"},
|
|
117
120
|
"Start, when the daily high temperature exceeds": {"en": "Start, when the daily high temperature exceeds", "de": "Start, wenn die Tageshöchsttemperatur überschritten wird", "ru": "Старт, когда дневная высокая температура превысит", "pt": "Comece, quando a alta temperatura diária exceder", "nl": "Begin wanneer de dagelijkse hoge temperatuur hoger wordt", "fr": "Commencez lorsque la température élevée quotidienne dépasse", "it": "Iniziare quando la temperatura elevata giornaliera supera", "es": "Inicio, cuando la temperatura máxima diaria supere", "pl": "Rozpocznij, gdy przekroczona zostanie dobowa wysoka temperatura", "uk": "Почати, коли добова температура перевищить", "zh-cn": "当日最高气温超过"},
|
|
118
121
|
"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", "uk": "Пуск, із зовнішнім сигналом", "zh-cn": "从外部信号开始"},
|
|
119
122
|
"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", "uk": "Стартові умови", "zh-cn": "启动条件"},
|
|
@@ -148,6 +151,8 @@ systemDictionary = {
|
|
|
148
151
|
"Watering time in min": { "en": "Watering time in min ", "de": "Bewässerungszeit in min", "ru": "Время полива в мин.", "pt": "Tempo de rega em min", "nl": "Bewateringstijd in min", "fr": "Temps d'arrosage en min", "it": "Tempo di irrigazione in min", "es": "Tiempo de riego en min", "pl": "Czas podlewania w min", "uk": "Час поливу в хв", "zh-cn": "浇水时间(分钟)"},
|
|
149
152
|
"Weather forecast": { "en": "Weather forecast", "de": "Wettervorhersage", "ru": "Прогноз погоды", "pt": "Previsão do tempo", "nl": "Weervoorspelling", "fr": "Prévisions météorologiques", "it": "Previsioni del tempo", "es": "Pronóstico del tiempo", "pl": "Prognoza pogody", "uk": "Прогноз погоди", "zh-cn": "天气预报"},
|
|
150
153
|
"Wednesday": { "en": "Wednesday", "de": "Mittwoch", "ru": "среда", "pt": "quarta-feira", "nl": "woensdag", "fr": "Mercredi", "it": "mercoledì", "es": "miércoles", "pl": "środa", "uk": "Середа", "zh-cn": "周三"},
|
|
154
|
+
"Weekend Watering Start Time": { "en": "Weekend Watering Start Time", "de": "Startzeit der Wochenendbewässerung", "ru": "Время начала полива на выходных", "pt": "Hora de início da rega no fim de semana", "nl": "Begintijd bewatering weekend", "fr": "Heure de début de l’arrosage le week-end", "it": "Orario di inizio irrigazione del fine settimana", "es": "Hora de inicio del riego del fin de semana", "pl": "Weekendowy czas rozpoczęcia nawadniania", "uk": "Час початку поливу на вихідних", "zh-cn": "周末浇水开始时间"},
|
|
155
|
+
"Weekend settings": { "en": "", "de": "Wochenendeinstellungen", "ru": "Настройки выходного дня", "pt": "Configurações de fim de semana", "nl": "Weekendinstellingen", "fr": "Paramètres du week-end", "it": "Impostazioni del fine settimana", "es": "Configuraciones de fin de semana", "pl": "Ustawienia weekendowe", "uk": "Налаштування вихідного дня", "zh-cn": "周末设置"},
|
|
151
156
|
"Weekend start time": { "en": "Weekend start time", "de": "Wochenendstart", "ru": "Время начала выходных", "pt": "Hora de início do fim de semana", "nl": "Weekend begint de tijd", "fr": "Weekend start time", "it": "Tempo di inizio weekend", "es": "Hora de inicio de fin de semana", "pl": "Tydzień rozpoczyna się czas", "uk": "Час початку вихідних", "zh-cn": "周末开始时间"},
|
|
152
157
|
"WhatsApp": { "en": "WhatsApp", "de": "WhatsApp", "ru": "WhatsApp", "pt": "Whatsapp", "nl": "WhatsApp", "fr": "WhatsApp", "it": "WhatsApp", "es": "WhatsApp", "pl": "WhatsApp", "uk": "WhatsApp", "zh-cn": "WhatsApp的"},
|
|
153
158
|
"WhatsApp instance": { "en": "WhatsApp instance", "de": "WhatsApp-Instanz", "ru": "Экземпляр WhatsApp", "pt": "Instância WhatsApp", "nl": "WhatsApp-instantie", "fr": "Instance WhatsApp", "it": "Istanza WhatsApp", "es": "Instancia de WhatsApp", "pl": "Instancja WhatsApp", "uk": "Екземпляр WhatsApp", "zh-cn": "WhatsApp实例"},
|
package/io-package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "sprinklecontrol",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.8",
|
|
5
5
|
"titleLang": {
|
|
6
6
|
"en": "Sprinkler Control",
|
|
7
7
|
"de": "Sprinklersteuerung",
|
|
@@ -19,6 +19,19 @@
|
|
|
19
19
|
"Dirk Peter <dirk.peter@freenet.de>"
|
|
20
20
|
],
|
|
21
21
|
"news": {
|
|
22
|
+
"1.0.8": {
|
|
23
|
+
"en": "Fixed error in \"Command without response\"\nWater Pressure Control Revised\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] completed",
|
|
24
|
+
"de": "Fehler behoben in \"Befehl ohne Antwort\"\nWasserdruckregelung überarbeitet\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] abgeschlossen",
|
|
25
|
+
"ru": "Исправленная ошибка в «Команда без ответа»\nКонтроль давления воды пересмотрен\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022]",
|
|
26
|
+
"pt": "Erro corrigido em \"Comando sem resposta\"\nControlo da pressão da água revisto\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] concluído",
|
|
27
|
+
"nl": "Vaste fout in \"Command zonder respons\"\nWaterdrukregeling herzien\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] voltooid",
|
|
28
|
+
"fr": "Erreur corrigée dans \"Commande sans réponse\"\nContrôle de la pression d'eau révisé\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] complété",
|
|
29
|
+
"it": "Errore fisso in \"Comando senza risposta\"\nControllo della pressione dell'acqua\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] completato",
|
|
30
|
+
"es": "Error fijo en \"Command sin respuesta\"\nControl de la presión del agua revisado\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] completado",
|
|
31
|
+
"pl": "Naprawiono błąd w \"Polecenie bez odpowiedzi\"\nRegulacja ciśnienia wody\njoBroker- Bot [E6004], [W1127], [W1133], [W1134], [S6022] zakończone",
|
|
32
|
+
"uk": "Виправлена помилка в \"Command без відповіді\"\nКонтроль тиску води\nioBroker-Bot [E6004], [W1127], [W1134], [S6022] завершено",
|
|
33
|
+
"zh-cn": "\"无回复命令\"中的固定错误\n水压控制修订\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] 完成"
|
|
34
|
+
},
|
|
22
35
|
"1.0.7": {
|
|
23
36
|
"en": "Added pressure monitoring.",
|
|
24
37
|
"de": "Drucküberwachung hinzugefügt.",
|
|
@@ -96,19 +109,6 @@
|
|
|
96
109
|
"pl": "Dodano czasy zakazu nawadniania",
|
|
97
110
|
"uk": "Додані часи для поливу заборони",
|
|
98
111
|
"zh-cn": "灌溉禁令增加的时间"
|
|
99
|
-
},
|
|
100
|
-
"1.0.1": {
|
|
101
|
-
"en": "Add Homematic ON_TIME\nAdapter configuration revised\nioBroker-Bot [E4041], [E4043] completed",
|
|
102
|
-
"de": "Homematic ON TIME hinzufügen\nAdapterkonfiguration überarbeitet\nioBroker-Bot [E4041], [E4043] abgeschlossen",
|
|
103
|
-
"ru": "Добавить Homematic on time\nПересмотренная конфигурация адаптера\nioBroker-Bot [E4041], [E4043]",
|
|
104
|
-
"pt": "Adicionar tempo de on metragem homemática\nA configuração do adaptador foi revista\nioBroker-Bot [E4041], [E4043] completado",
|
|
105
|
-
"nl": "Homematisch ON TIME toevoegen\nAdapterconfiguratie herzien\nioBroker-Bot [E4041], [E4043] voltooid",
|
|
106
|
-
"fr": "Ajouter Homematic ON TIME\nConfiguration de l'adaptateur révisée\nioBroker-Bot [E4041], [E4043] terminé",
|
|
107
|
-
"it": "Aggiungi Homematic ON TIME\nConfigurazione adattatore revisionata\nioBroker-Bot [E4041], [E4043] completato",
|
|
108
|
-
"es": "Añadir Homematic ON TIME\nAjuste revisado de la configuración del adaptador\nioBroker-Bot [E4041], [E4043] completado",
|
|
109
|
-
"pl": "Dodaj homematic on _ time\nZmieniona konfiguracja adaptera\njoBroker- Bot [E4041], [E4043] ukończone",
|
|
110
|
-
"uk": "Додати Homematic ON TIME\nПереглянуто налаштування адаптера\nioBroker-Bot [E4041], [E4043] завершено",
|
|
111
|
-
"zh-cn": "添加自定义 ON TIME\n修改适应器配置\nioBroker-Bot [E4041], [E4043] 完成"
|
|
112
112
|
}
|
|
113
113
|
},
|
|
114
114
|
"desc": {
|
|
@@ -193,8 +193,10 @@
|
|
|
193
193
|
"startOfInterruption": "10:00",
|
|
194
194
|
"endOfInterruption": "18:00",
|
|
195
195
|
"publicWeekend": true,
|
|
196
|
+
"publicWeekend2": true,
|
|
196
197
|
"weekEndLiving": "07:30",
|
|
197
198
|
"publicHolidays": false,
|
|
199
|
+
"publicHolidays2": false,
|
|
198
200
|
"publicHolInstance": "",
|
|
199
201
|
"latitude": "",
|
|
200
202
|
"longitude": "",
|
|
@@ -297,7 +299,7 @@
|
|
|
297
299
|
"_id": "evaporation.ETpCurrent",
|
|
298
300
|
"type": "state",
|
|
299
301
|
"common": {
|
|
300
|
-
"role": "
|
|
302
|
+
"role": "value",
|
|
301
303
|
"name": "Calculation of the current pot. Evapotranspiration",
|
|
302
304
|
"desc": {
|
|
303
305
|
"en": "Calculation of the current pot. Evapotranspiration",
|
|
@@ -324,7 +326,7 @@
|
|
|
324
326
|
"_id": "evaporation.ETpToday",
|
|
325
327
|
"type": "state",
|
|
326
328
|
"common": {
|
|
327
|
-
"role": "
|
|
329
|
+
"role": "value",
|
|
328
330
|
"name": "today's pot. Evapotranspiration",
|
|
329
331
|
"desc": {
|
|
330
332
|
"en": "today's pot. Evapotranspiration",
|
|
@@ -351,7 +353,7 @@
|
|
|
351
353
|
"_id": "evaporation.ETpYesterday",
|
|
352
354
|
"type": "state",
|
|
353
355
|
"common": {
|
|
354
|
-
"role": "
|
|
356
|
+
"role": "value",
|
|
355
357
|
"name": "yesterday's pot. Evapotranspiration",
|
|
356
358
|
"desc": {
|
|
357
359
|
"en": "yesterday's pot. Evapotranspiration",
|
|
@@ -378,7 +380,7 @@
|
|
|
378
380
|
"_id": "evaporation.dailyHighTemp",
|
|
379
381
|
"type": "state",
|
|
380
382
|
"common": {
|
|
381
|
-
"role": "
|
|
383
|
+
"role": "value",
|
|
382
384
|
"name": "Daily High Temperature",
|
|
383
385
|
"desc": {
|
|
384
386
|
"en": "Daily high temperature",
|
|
@@ -468,10 +470,6 @@
|
|
|
468
470
|
"zh-cn": "自动或手动控制喷头"
|
|
469
471
|
},
|
|
470
472
|
"type": "boolean",
|
|
471
|
-
"states": {
|
|
472
|
-
"false": "off",
|
|
473
|
-
"true": "Auto"
|
|
474
|
-
},
|
|
475
473
|
"read": true,
|
|
476
474
|
"write": true,
|
|
477
475
|
"def": true
|
|
@@ -498,7 +496,7 @@
|
|
|
498
496
|
"zh-cn": "立即启动灌溉过程"
|
|
499
497
|
},
|
|
500
498
|
"type": "boolean",
|
|
501
|
-
"read":
|
|
499
|
+
"read": false,
|
|
502
500
|
"write": true,
|
|
503
501
|
"def": false
|
|
504
502
|
},
|
|
@@ -508,7 +506,7 @@
|
|
|
508
506
|
"_id": "control.parallelOfMax",
|
|
509
507
|
"type": "state",
|
|
510
508
|
"common": {
|
|
511
|
-
"role": "
|
|
509
|
+
"role": "text",
|
|
512
510
|
"name": "parallel of max Sprinklers",
|
|
513
511
|
"desc": {
|
|
514
512
|
"en": "Number of sprinklers that are currently running in parallel",
|
|
@@ -534,7 +532,7 @@
|
|
|
534
532
|
"_id": "control.restFlow",
|
|
535
533
|
"type": "state",
|
|
536
534
|
"common": {
|
|
537
|
-
"role": "
|
|
535
|
+
"role": "text",
|
|
538
536
|
"name": "rest Flow of Pump",
|
|
539
537
|
"desc": {
|
|
540
538
|
"en": "Rest flow of the pump in l/h",
|
|
@@ -581,7 +579,7 @@
|
|
|
581
579
|
"_id": "info.nextAutoStart",
|
|
582
580
|
"type": "state",
|
|
583
581
|
"common": {
|
|
584
|
-
"role": "
|
|
582
|
+
"role": "text",
|
|
585
583
|
"name": "Next automatic start of the sprinklers",
|
|
586
584
|
"desc": {
|
|
587
585
|
"en": "Next automatic start of the sprinklers",
|
|
@@ -607,7 +605,7 @@
|
|
|
607
605
|
"_id": "info.rainToday",
|
|
608
606
|
"type": "state",
|
|
609
607
|
"common": {
|
|
610
|
-
"role": "
|
|
608
|
+
"role": "value",
|
|
611
609
|
"name": "Amount of rain today",
|
|
612
610
|
"desc": {
|
|
613
611
|
"en": "Amount of rain today",
|
|
@@ -634,7 +632,7 @@
|
|
|
634
632
|
"_id": "info.rainTomorrow",
|
|
635
633
|
"type": "state",
|
|
636
634
|
"common": {
|
|
637
|
-
"role": "
|
|
635
|
+
"role": "value",
|
|
638
636
|
"name": "Amount of rain tomorrow",
|
|
639
637
|
"desc": {
|
|
640
638
|
"en": "Amount of rain tomorrow",
|
|
@@ -661,7 +659,7 @@
|
|
|
661
659
|
"_id": "info.cisternState",
|
|
662
660
|
"type": "state",
|
|
663
661
|
"common": {
|
|
664
|
-
"role": "
|
|
662
|
+
"role": "text",
|
|
665
663
|
"name": "State of the cistern",
|
|
666
664
|
"desc": {
|
|
667
665
|
"en": "State of the cistern",
|
package/lib/evaporation.js
CHANGED
|
@@ -374,7 +374,7 @@ const evaporation = {
|
|
|
374
374
|
adapter.log.debug(`${curTemperature.val}°C | ${curHumidity.val}% | ${curIllumination.val} | ${curWindSpeed.val}km/h | ts: ${curTime} - lastChangeEvaPor: ${lastChangeEvaPor} = timeDifference: ${timeDifference}`);
|
|
375
375
|
|
|
376
376
|
if (timeDifference) {
|
|
377
|
-
setTimeout(() => {
|
|
377
|
+
adapter.setTimeout(() => {
|
|
378
378
|
calcEvaporation(timeDifference);
|
|
379
379
|
}, 100);
|
|
380
380
|
}
|
|
@@ -447,7 +447,7 @@ const evaporation = {
|
|
|
447
447
|
*/
|
|
448
448
|
setNewDay () {
|
|
449
449
|
extraTerStr();
|
|
450
|
-
setTimeout(() => {
|
|
450
|
+
adapter.setTimeout(() => {
|
|
451
451
|
adapter.setState('evaporation.ETpYesterday', {
|
|
452
452
|
val: Math.round(ETpTodayNum * 10000) / 10000,
|
|
453
453
|
ack: true
|
package/lib/myConfig.js
CHANGED
|
@@ -138,7 +138,9 @@ const myConfig = {
|
|
|
138
138
|
|
|
139
139
|
/* Abonnieren der Statusänderungen des Objekts (reagieren auf Änderung des 'Ventils'
|
|
140
140
|
der einzelnen Bewässerungskreise zur Fehlerkontrolle bzw. Verbrauchsermittlung) */
|
|
141
|
-
|
|
141
|
+
if (newEntry?.control?.idACK !== null) {
|
|
142
|
+
adapter.subscribeForeignStates(newEntry.control.idACK);
|
|
143
|
+
}
|
|
142
144
|
|
|
143
145
|
// @ts-ignore
|
|
144
146
|
myConfig.config.push(newEntry);
|
package/lib/sendMessageText.js
CHANGED
package/lib/valveControl.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
const asyncTime = require('timers/promises');
|
|
4
|
+
const asyncTime = require('node:timers/promises');
|
|
5
5
|
// import {setTimeout} from 'timers/promises';
|
|
6
6
|
|
|
7
7
|
const myConfig = require('./myConfig.js');
|
|
@@ -55,6 +55,7 @@ let boostReady = true,
|
|
|
55
55
|
fillLevelCistern = 0,
|
|
56
56
|
/**
|
|
57
57
|
* Zeitliche Bewässerungseinschränkung EIN/AUS
|
|
58
|
+
* z.B. Behördenvorgabe, Sommerhitze + Trockenheit, usw.
|
|
58
59
|
*/
|
|
59
60
|
timeBasedRestrictionEn = false;
|
|
60
61
|
|
|
@@ -68,6 +69,7 @@ const updateListMarker = {
|
|
|
68
69
|
/**
|
|
69
70
|
* aktive Pumpendaten
|
|
70
71
|
* - enable: Pumpe ein/ausgeschaltet
|
|
72
|
+
* - pumpSwitching: Umschaltung aktive, während der Umschaltung von Zysterne auf Hauptpumpe bei aktiver Pumpe
|
|
71
73
|
* - name: Bezeichnung der Pumpe
|
|
72
74
|
* - idState: Objektname des State
|
|
73
75
|
* - id: ID des States unter Objecte im ioBroker info.cisternPump || info.mainPump
|
|
@@ -82,7 +84,9 @@ const updateListMarker = {
|
|
|
82
84
|
*/
|
|
83
85
|
|
|
84
86
|
const currentPumpUse = {
|
|
85
|
-
enable: false,
|
|
87
|
+
enable: false,
|
|
88
|
+
pumpSwitching: false,
|
|
89
|
+
pumpReplacement: false,
|
|
86
90
|
name: '',
|
|
87
91
|
wateringTime: 0,
|
|
88
92
|
id: '',
|
|
@@ -134,9 +138,37 @@ const controlVoltage = {
|
|
|
134
138
|
maker: undefined
|
|
135
139
|
}
|
|
136
140
|
};
|
|
137
|
-
|
|
141
|
+
/**
|
|
142
|
+
* Sensor Druck
|
|
143
|
+
* - enable: Sensor vorhanden
|
|
144
|
+
* - active: true = Sensor aktiv, false = Sensor inaktiv
|
|
145
|
+
* - setActive(true/false): Funktion zum setzen des Sensorstatus aktiv/inaktiv
|
|
146
|
+
* - inadequatePressure: true = Nicht ausreichender Druck, false = ausreichender Druck
|
|
147
|
+
* - name: Bezeichnung Sensor Druck
|
|
148
|
+
* - value: aktueller Wert des Sensors
|
|
149
|
+
* - state: aktueller Zustand des Sensors
|
|
150
|
+
* - ac: AbortController für die Überwachung der Sensoraktivität
|
|
151
|
+
*/
|
|
138
152
|
const sensorPressure = {
|
|
139
|
-
|
|
153
|
+
enable: false,
|
|
154
|
+
active: false,
|
|
155
|
+
setActive: async(val) => {
|
|
156
|
+
try {
|
|
157
|
+
sensorPressure.active = val;
|
|
158
|
+
if (val === true && sensorPressure.enable) {
|
|
159
|
+
await valveControl.setSensorPressure(sensorPressure.value);
|
|
160
|
+
} else {
|
|
161
|
+
if (sensorPressure?.ac !== null) {
|
|
162
|
+
await sensorPressure.ac.abort(); // AbortController zurücksetzen
|
|
163
|
+
sensorPressure.ac = null;
|
|
164
|
+
sensorPressure.inadequatePressure = false; // Drucksensor deaktiviert -> Druckverhältnisse wieder in Ordnung
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
} catch (error) {
|
|
168
|
+
adapter.log.error(`Error setting sensor pressure active ${val}: ${error}`);
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
inadequatePressure: false,
|
|
140
172
|
name: 'Sensor Pressure',
|
|
141
173
|
value: 0,
|
|
142
174
|
state: 0,
|
|
@@ -338,14 +370,14 @@ const delList = async (killList) => {
|
|
|
338
370
|
*/
|
|
339
371
|
const currentConsumption = async (write) => {
|
|
340
372
|
try {
|
|
341
|
-
let curFlow = currentPumpUse.intBreak ? 0 : currentPumpUse.pumpPower, /* adapter.config.triggerMainPumpPower; */
|
|
373
|
+
let curFlow = (currentPumpUse.intBreak || sensorPressure.inadequatePressure) ? 0 : currentPumpUse.pumpPower, /* adapter.config.triggerMainPumpPower; */
|
|
342
374
|
/** aktuelle Anzahl der eingeschalteten Ventile */
|
|
343
375
|
parallel = 0,
|
|
344
376
|
pumpRequired = false;
|
|
345
377
|
adapter.log.debug(`currentConsumption curFlow: ${curFlow}, ${currentPumpUse.intBreak} => ${currentPumpUse.intBreak ? 0 : currentPumpUse.pumpPower}`);
|
|
346
|
-
if (!currentPumpUse.intBreak
|
|
347
|
-
|
|
348
|
-
) {
|
|
378
|
+
//if (!currentPumpUse.intBreak
|
|
379
|
+
// && !sensorPressure.inadequatePressure
|
|
380
|
+
//) {
|
|
349
381
|
// ermitteln von curPipe und der Anzahl der parallelen Stränge
|
|
350
382
|
for (const entry of threadList){
|
|
351
383
|
if (entry.state === 'wait') pumpRequired = true; // state => wait
|
|
@@ -358,7 +390,7 @@ const currentConsumption = async (write) => {
|
|
|
358
390
|
pumpRequired = true;
|
|
359
391
|
}
|
|
360
392
|
}
|
|
361
|
-
}
|
|
393
|
+
//}
|
|
362
394
|
// bei write schreiben der aktuellen Förderleistung der Pumpe und der Anzahl der parallelen Stränge
|
|
363
395
|
if (write || currentPumpUse.intBreak) {
|
|
364
396
|
adapter.setStateAsync('control.parallelOfMax', {
|
|
@@ -677,6 +709,7 @@ const updateList = async () => {
|
|
|
677
709
|
});
|
|
678
710
|
await asyncTime.setTimeout(currentPumpUse.leadTime, undefined, undefined);
|
|
679
711
|
}
|
|
712
|
+
await sensorPressure.setActive(true); // Sensor Druck aktivieren, damit die Drucküberwachung startet
|
|
680
713
|
}
|
|
681
714
|
} catch (error) {
|
|
682
715
|
adapter.log.error(`Error trigger current Pump [${currentPumpUse.control.idState}]: ${error}`);
|
|
@@ -701,7 +734,7 @@ const updateList = async () => {
|
|
|
701
734
|
consumption = await currentConsumption(true);
|
|
702
735
|
clearInterval(entry.countdown); // Zähler für Countdown, Verbrauchsmengen, usw. löschen
|
|
703
736
|
entry.countdown = null;
|
|
704
|
-
adapter.log.
|
|
737
|
+
adapter.log.warn(`Set Valve ID: ${entry.name} Pump delivery rate too low, wait! curFlow ${consumption.curFlow} parallel: ${consumption.parallel}`);
|
|
705
738
|
await asyncTime.setTimeout(300, undefined, {signal: entry.ac.acUpdateListPuOff.signal});
|
|
706
739
|
}
|
|
707
740
|
}else{
|
|
@@ -796,6 +829,10 @@ const updateList = async () => {
|
|
|
796
829
|
|
|
797
830
|
// Pumpe ausschalten
|
|
798
831
|
if (currentPumpUse.enable === true) {
|
|
832
|
+
await sensorPressure.setActive(false).catch((error) => { // Sensor Druck deaktivieren, da keine Bewässerung mehr aktiv ist
|
|
833
|
+
adapter.log.error(`Error setting sensor pressure active false: ${error}`);
|
|
834
|
+
});
|
|
835
|
+
|
|
799
836
|
try {
|
|
800
837
|
const _currentPumpUse = await setValve(currentPumpUse, false);
|
|
801
838
|
if (_currentPumpUse === currentPumpUse.control.idState) {
|
|
@@ -806,7 +843,7 @@ const updateList = async () => {
|
|
|
806
843
|
}
|
|
807
844
|
await asyncTime.setTimeout(switchingDistanceMS, undefined, undefined);
|
|
808
845
|
} catch (error) {
|
|
809
|
-
adapter.log.error(`Error trigger current Pump [${currentPumpUse.idState}]: ${error}`);
|
|
846
|
+
adapter.log.error(`Error trigger current Pump [${ currentPumpUse.control.idState }]: ${error}`);
|
|
810
847
|
}
|
|
811
848
|
|
|
812
849
|
// Druckentlastungsventil ansteuern wenn in Konfiguration aktiv
|
|
@@ -934,6 +971,8 @@ const setActualPump = async () => {
|
|
|
934
971
|
/* Bewässerungspumpen aktiv */
|
|
935
972
|
if ((fillLevelCistern < parseFloat(adapter.config.triggerMinCisternLevel)) && (currentPumpUse.pumpCistern === true)) {
|
|
936
973
|
/* (Zisterne unter Minimum) && (ZisternenPumpe läuft) */
|
|
974
|
+
currentPumpUse.pumpSwitching = true;
|
|
975
|
+
sensorPressure.setActive(false); // Sensor Druck deaktivieren, da die Hauptpumpe ausgeschaltet wird und somit kein Druck mehr in den Leitungen ist
|
|
937
976
|
const _setValveCisternPumpOff = await setValve(currentPumpUse, false); // Pumpe Zisterne Aus
|
|
938
977
|
if (_setValveCisternPumpOff === currentPumpUse.control.idState) {
|
|
939
978
|
await adapter.setStateAsync(currentPumpUse.id, { // set State cisternPump === false
|
|
@@ -950,7 +989,7 @@ const setActualPump = async () => {
|
|
|
950
989
|
currentPumpUse.pumpPower = parseInt(adapter.config.triggerMainPumpPower);
|
|
951
990
|
/* Hauptpumpe Ein */
|
|
952
991
|
const _setValveMainPumpOn = await setValve(currentPumpUse, true);
|
|
953
|
-
if (_setValveMainPumpOn === currentPumpUse.idState) {
|
|
992
|
+
if (_setValveMainPumpOn === currentPumpUse.control.idState) {
|
|
954
993
|
await adapter.setStateAsync(currentPumpUse.id, { // set State cisternPump === false
|
|
955
994
|
val: currentPumpUse.enable,
|
|
956
995
|
ack: true
|
|
@@ -962,6 +1001,8 @@ const setActualPump = async () => {
|
|
|
962
1001
|
if(!sendMessageText.onlySendError()){
|
|
963
1002
|
sendMessageText.sendMessage('Pump change (cistern empty) Cistern pump off => main pump on');
|
|
964
1003
|
}
|
|
1004
|
+
currentPumpUse.pumpSwitching = false;
|
|
1005
|
+
sensorPressure.setActive(true); // Sensor Druck aktivieren, da die Hauptpumpe eingeschaltet wird und somit wieder Druck in den Leitungen ist
|
|
965
1006
|
updateList(); // Wasserverbrauch an Pumpenleistung anpassen
|
|
966
1007
|
}
|
|
967
1008
|
} else {
|
|
@@ -1406,13 +1447,12 @@ const valveControl = {
|
|
|
1406
1447
|
) {
|
|
1407
1448
|
const _sensorPressure = await adapter.getForeignStateAsync(adapter.config.sensorPressure);
|
|
1408
1449
|
if (_sensorPressure) {
|
|
1450
|
+
sensorPressure.enable = true;
|
|
1451
|
+
sensorPressure.active = false;
|
|
1409
1452
|
adapter.subscribeForeignStates(adapter.config.sensorPressure);
|
|
1410
1453
|
const _waterPressure = await adapter.getObjectAsync(`info.waterPressure`);
|
|
1411
1454
|
if (_waterPressure) {
|
|
1412
|
-
|
|
1413
|
-
val: `${ _sensorPressure.val }`,
|
|
1414
|
-
ack: true
|
|
1415
|
-
});
|
|
1455
|
+
sensorPressure.value = _sensorPressure.val;
|
|
1416
1456
|
} else {
|
|
1417
1457
|
await adapter.setObjectNotExistsAsync(`info.waterPressure`, {
|
|
1418
1458
|
type: 'state',
|
|
@@ -1440,15 +1480,16 @@ const valveControl = {
|
|
|
1440
1480
|
},
|
|
1441
1481
|
native: {},
|
|
1442
1482
|
});
|
|
1443
|
-
await adapter.setStateAsync(`info.waterPressure`, {
|
|
1444
|
-
val: `${ _sensorPressure.val }`,
|
|
1445
|
-
ack: true
|
|
1446
|
-
});
|
|
1447
1483
|
}
|
|
1484
|
+
await adapter.setStateAsync(`info.waterPressure`, {
|
|
1485
|
+
val: `Initial ( ${ sensorPressure.value } bar )`,
|
|
1486
|
+
ack: true
|
|
1487
|
+
});
|
|
1448
1488
|
} else {
|
|
1449
1489
|
adapter.log.warn(`The configured pressure sensor "${ adapter.config.sensorPressure }" could not be found. Please check the configuration of the pressure sensor!`);
|
|
1450
1490
|
}
|
|
1451
1491
|
} else {
|
|
1492
|
+
// Wenn kein Drucksensor konfiguriert ist, wird das Objekt info.waterPressure gelöscht, damit keine falschen Werte angezeigt werden
|
|
1452
1493
|
const _waterPressure = await adapter.getObjectAsync(`info.waterPressure`);
|
|
1453
1494
|
if (_waterPressure) await adapter.delObjectAsync(`info.waterPressure`);
|
|
1454
1495
|
}
|
|
@@ -1794,48 +1835,54 @@ const valveControl = {
|
|
|
1794
1835
|
setSensorPressure: async function (pressure) {
|
|
1795
1836
|
let alteredPressure = false; // Veränderter Druck => updateList starten um Verbrauch anzupassen / Ventile ausschalten
|
|
1796
1837
|
let reviews = '';
|
|
1838
|
+
|
|
1797
1839
|
try {
|
|
1798
1840
|
sensorPressure.value = parseFloat(pressure).toFixed(1);
|
|
1799
|
-
if (
|
|
1841
|
+
if (sensorPressure.active === true && adapter.config.minimumPressure > pressure) {
|
|
1800
1842
|
if (sensorPressure.ac === null) {
|
|
1801
1843
|
sensorPressure.ac = new AbortController();
|
|
1802
1844
|
await asyncTime.setTimeout(60000, undefined, { signal: sensorPressure.ac.signal }); // max. 60s warten und Drucksensorwert erneut prüfen, bevor die Pumpe ausgeschaltet wird
|
|
1803
1845
|
const _currentPressure = await adapter.getForeignStateAsync(adapter.config.sensorPressure);
|
|
1804
|
-
if (_currentPressure?.val
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
if
|
|
1810
|
-
|
|
1811
|
-
|
|
1846
|
+
if (_currentPressure?.val){
|
|
1847
|
+
if(typeof _currentPressure.val === 'number') {
|
|
1848
|
+
sensorPressure.value = parseFloat(_currentPressure.val).toFixed(1);
|
|
1849
|
+
}else if(typeof _currentPressure.val === 'string') {
|
|
1850
|
+
sensorPressure.value = parseFloat(_currentPressure.val).toFixed(1);
|
|
1851
|
+
}else if(typeof _currentPressure.val === 'boolean') {
|
|
1852
|
+
(_currentPressure.val === true) ? sensorPressure.value = 100 : sensorPressure.value = 0;
|
|
1853
|
+
}else{
|
|
1854
|
+
throw new Error(`setSensorPressure => Wrong value: ${ _currentPressure.val }, Type: ${ typeof _currentPressure.val }`);
|
|
1812
1855
|
}
|
|
1813
|
-
sensorPressure.
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1856
|
+
if (sensorPressure.active === true
|
|
1857
|
+
&& adapter.config.minimumPressure > sensorPressure.value
|
|
1858
|
+
) {
|
|
1859
|
+
reviews = 'Not Okay'
|
|
1860
|
+
if (sensorPressure.inadequatePressure === false) {
|
|
1861
|
+
alteredPressure = true;
|
|
1862
|
+
sensorPressure.inadequatePressure = true;
|
|
1863
|
+
}
|
|
1864
|
+
adapter.log.warn(`Pressure sensor value ${ sensorPressure.value } bar is below the minimum pressure ${ adapter.config.minimumPressure } bar. The pump will be turned off to prevent damage. Please check the pressure sensor and the configuration of the minimum pressure!`);
|
|
1865
|
+
if (adapter.config.notificationEnabled) {
|
|
1866
|
+
sendMessageText.sendMessage(`Pressure sensor value ${ sensorPressure.value } bar is below the minimum pressure ${ adapter.config.minimumPressure } bar. The pump will be turned off to prevent damage. Please check the pressure sensor and the configuration of the minimum pressure!`);
|
|
1867
|
+
}
|
|
1868
|
+
} else {
|
|
1869
|
+
reviews = 'Okay';
|
|
1817
1870
|
}
|
|
1818
|
-
sensorPressure.ac.abort(); // setTimeout abbrechen, da die Pumpe bereits ausgeschaltet wird
|
|
1819
|
-
sensorPressure.ac = null; // AbortController zurücksetzen
|
|
1820
|
-
} else if (_currentPressure?.val) {
|
|
1821
|
-
reviews = 'Okay';
|
|
1822
1871
|
}
|
|
1823
1872
|
sensorPressure.ac = null; // AbortController zurücksetzen
|
|
1824
1873
|
} else {
|
|
1825
|
-
reviews = 'I don\'t know';
|
|
1874
|
+
reviews = 'I don\'t know'; // Ich weiß nicht
|
|
1826
1875
|
}
|
|
1827
|
-
} else
|
|
1876
|
+
} else {
|
|
1828
1877
|
reviews = 'Okay'
|
|
1829
1878
|
if (sensorPressure?.ac !== null) {
|
|
1830
1879
|
await sensorPressure.ac.abort(); // AbortController zurücksetzen
|
|
1831
1880
|
sensorPressure.ac = null;
|
|
1832
1881
|
}
|
|
1833
|
-
} else {
|
|
1834
|
-
reviews = 'Okay'
|
|
1835
1882
|
}
|
|
1836
1883
|
} catch (error) {
|
|
1837
1884
|
if (error.name === 'AbortError') {
|
|
1838
|
-
adapter.log.debug(`setSensorPressure(${
|
|
1885
|
+
adapter.log.debug(`setSensorPressure(${ sensorPressure.value}): The shutdown process was aborted because the operating pressure was restored.`);
|
|
1839
1886
|
if (sensorPressure?.ac !== null) {
|
|
1840
1887
|
sensorPressure.ac.abort(); // AbortController zurücksetzen
|
|
1841
1888
|
sensorPressure.ac = null;
|
|
@@ -1845,7 +1892,7 @@ const valveControl = {
|
|
|
1845
1892
|
await adapter.setStateAsync(`info.waterPressure`, {
|
|
1846
1893
|
val: `${ reviews } ( ${ sensorPressure.value } bar )`,
|
|
1847
1894
|
ack: true
|
|
1848
|
-
});
|
|
1895
|
+
});
|
|
1849
1896
|
if (alteredPressure) updateList();
|
|
1850
1897
|
}
|
|
1851
1898
|
}
|
package/main.js
CHANGED
|
@@ -321,7 +321,7 @@ function startAdapter(options) {
|
|
|
321
321
|
const _extBreak = await valveControl.extBreak(_found.sprinkleID, state.val).catch((e) => {
|
|
322
322
|
adapter.log.warn(`main.extBreak: ${e}`);
|
|
323
323
|
});
|
|
324
|
-
if (_extBreak?.name) adapter.log.info(`
|
|
324
|
+
if (_extBreak?.name) adapter.log.info(`extBreak: ${_extBreak.name}, ${_extBreak.val ? 'on' : 'off'}`);
|
|
325
325
|
if (_extBreak?.val === false) {
|
|
326
326
|
/* Zustand des Ventils im Thread < 0 > off, < 1 > wait, < 2 > on, < 3 > break, < 4 > Boost(on), < 5 > off(Boost), < 6 > Cistern empty, <<< 7 >>> extBreak */
|
|
327
327
|
adapter.setState(`sprinkle.${_found.objectName}.sprinklerState`, {
|
|
@@ -375,7 +375,7 @@ function startAdapter(options) {
|
|
|
375
375
|
currentPumpUse.controller.ackTrue(state);
|
|
376
376
|
}
|
|
377
377
|
// The state was deleted
|
|
378
|
-
adapter.log.debug(`state ${id} deleted`);
|
|
378
|
+
// adapter.log.debug(`state ${id} deleted`);
|
|
379
379
|
}
|
|
380
380
|
}
|
|
381
381
|
} catch (e) {
|
|
@@ -573,7 +573,7 @@ async function checkStates() {
|
|
|
573
573
|
|
|
574
574
|
/* control.autoOnOff */
|
|
575
575
|
const _autoOnOff = await adapter.getStateAsync('control.autoOnOff');
|
|
576
|
-
if (
|
|
576
|
+
if (typeof _autoOnOff.val === 'boolean') {
|
|
577
577
|
autoOnOffStr = _autoOnOff.val;
|
|
578
578
|
} else {
|
|
579
579
|
autoOnOffStr = true;
|
|
@@ -799,7 +799,7 @@ const calcPos = schedule.scheduleJob('calcPosTimer', '5 0 * * *', function() {
|
|
|
799
799
|
evaporation.setNewDay();
|
|
800
800
|
|
|
801
801
|
// Startzeit Festlegen → verzögert wegen Daten von SunCalc
|
|
802
|
-
setTimeout(() => {
|
|
802
|
+
adapter.setTimeout(() => {
|
|
803
803
|
startTimeSprinkle();
|
|
804
804
|
secondStartTimeSprinkle();
|
|
805
805
|
if (adapter.config.enableTimeBasedRestriction === true) {
|
|
@@ -959,7 +959,7 @@ function addStartTimeSprinkle() {
|
|
|
959
959
|
// @ts-ignore
|
|
960
960
|
adapter.log.debug(`greaterETpCurrent: ${(adapter.config.selectAddStartTime === 'greaterETpCurrent')} & ${(adapter.config.triggerAddStartTimeETpCur < evaporation.getETpTodayNum())}, withExternalSignal; ${(adapter.config.selectAddStartTime === 'withExternalSignal')} & ${addStartTimeSwitch}`);
|
|
961
961
|
}
|
|
962
|
-
setTimeout(()=>{
|
|
962
|
+
adapter.setTimeout(()=>{
|
|
963
963
|
schedule.cancelJob('sprinkleAddStartTime');
|
|
964
964
|
}, 200);
|
|
965
965
|
});
|
|
@@ -1080,8 +1080,8 @@ function startTimeSprinkle() {
|
|
|
1080
1080
|
|
|
1081
1081
|
const scheduleStartTime = schedule.scheduleJob('sprinkleStartTime', `${ startTimeSplit[1] } ${ startTimeSplit[0] } * * *`, function() {
|
|
1082
1082
|
startOfIrrigation("firstStartTime");
|
|
1083
|
-
setTimeout (() => {
|
|
1084
|
-
setTimeout(()=>{
|
|
1083
|
+
adapter.setTimeout (() => {
|
|
1084
|
+
adapter.setTimeout(()=>{
|
|
1085
1085
|
nextStartTime();
|
|
1086
1086
|
}, 800);
|
|
1087
1087
|
schedule.cancelJob('sprinkleStartTime');
|
|
@@ -1089,6 +1089,32 @@ function startTimeSprinkle() {
|
|
|
1089
1089
|
});
|
|
1090
1090
|
}
|
|
1091
1091
|
|
|
1092
|
+
/**
|
|
1093
|
+
* Start of irrigation
|
|
1094
|
+
* - selectStartTime: firstStartTime | autoStart
|
|
1095
|
+
* firstStartTime → Startvorgang durch StartTimeSprinkle
|
|
1096
|
+
* autoStart → Startvorgang durch addStartTimeSprinkle
|
|
1097
|
+
* - Zisterne leer → Abbruch
|
|
1098
|
+
* - Filter enabled → Prüfung der Filterkriterien für alle Sprenger, die aktiviert sind (autoOn == true) und zusätzliche Bewässerung aktiviert haben (addWateringTime > 0)
|
|
1099
|
+
* - Test Bodenfeuchte → Prüfung der Bodenfeuchte für die Sprenger, die die automatische Bewässerung aktiviert haben (autoOn == true) und zusätzliche Bewässerung aktiviert haben (addWateringTime > 0)
|
|
1100
|
+
* - bistable: Bodenfeuchte-Sensor mit 2-Punkt-Regler true und false → Wenn true, dann Startvorgang
|
|
1101
|
+
* - analog: Bodenfeuchte-Sensor im Wertebereich von 0 bis 100% → Prozentuale Bodenfeuchte zu gering → Startvorgang
|
|
1102
|
+
* - fixDay: Start an festen Tagen ohne Sensoren → Bewässerungstag erreicht → Startvorgang
|
|
1103
|
+
* - calculation: Berechnung Bodenfeuchte auf Basis von ETpToday und dailyHighTemp → Prozentuale Bodenfeuchte zu gering → Startvorgang
|
|
1104
|
+
* - Wenn in der Config Regenvorhersage aktiviert: Startvorgang abbrechen, wenn der Regen den eingegebenen Schwellwert überschreitet.
|
|
1105
|
+
* - Start der Bewässerung
|
|
1106
|
+
* - Berechnung der Bewässerungszeit
|
|
1107
|
+
* - Start der Bewässerung über valveControl.addList(memAddList)
|
|
1108
|
+
* - Message über startende Bewässerung mit Angabe der Bewässerungszeit
|
|
1109
|
+
* - Log über startende Bewässerung mit Angabe der Bewässerungszeit
|
|
1110
|
+
* - Wenn extBreak == true → Startvorgang abbrechen und extBreak || START => Message und Log
|
|
1111
|
+
* - Wenn in der Config Regenvorhersage aktiviert: Startvorgang abbrechen, wenn der Regen den eingegebenen Schwellwert überschreitet.
|
|
1112
|
+
* - Wenn autoOnOff == false → keine auto Start
|
|
1113
|
+
* - Wenn Zisterne leer → keine zusätzliche Bewässerung möglich
|
|
1114
|
+
* - Wenn in der Config Regenvorhersage aktiviert: Startvorgang abbrechen, wenn der Regen den eingegebenen Schwellwert überschreitet.
|
|
1115
|
+
*
|
|
1116
|
+
* @param {string} selectStartTime - firstStartTime | autoStart
|
|
1117
|
+
*/
|
|
1092
1118
|
const startOfIrrigation = async (selectStartTime) => {
|
|
1093
1119
|
let messageText = '';
|
|
1094
1120
|
|
|
@@ -1257,21 +1283,27 @@ const startOfIrrigation = async (selectStartTime) => {
|
|
|
1257
1283
|
function secondStartTimeSprinkle() {
|
|
1258
1284
|
schedule.cancelJob('sprinkleSecondStartTime');
|
|
1259
1285
|
|
|
1260
|
-
|
|
1286
|
+
// if (autoOnOff == false) => keine auto Start
|
|
1261
1287
|
if (!autoOnOffStr) {
|
|
1262
|
-
adapter.log.info(`Sprinkle: autoOnOff === Aus ( ${autoOnOffStr} )`);
|
|
1263
|
-
adapter.setState('info.nextAutoStart', {
|
|
1264
|
-
val: 'autoOnOff = off(0)',
|
|
1265
|
-
ack: true
|
|
1266
|
-
});
|
|
1267
1288
|
return;
|
|
1268
1289
|
}
|
|
1269
|
-
|
|
1270
|
-
|
|
1290
|
+
const curTime = new Date();
|
|
1291
|
+
let myWeekday = curTime.getDay(); // 0 = Sonntag, 1 = Montag, ..., 6 = Samstag
|
|
1292
|
+
let secondStartTime = adapter.config.secondStartTime;
|
|
1293
|
+
|
|
1294
|
+
// Start am Wochenende, an Feiertagen oder Urlaub →, wenn Zeiten des Wochenendes verwendet werden soll
|
|
1295
|
+
if((adapter.config.publicWeekend2 && ((myWeekday === 6) || (myWeekday === 0))) // Start am Wochenende
|
|
1296
|
+
|| (adapter.config.publicHolidays2 && ((myWeekday === 6) || (myWeekday === 0)) // heute Feiertag
|
|
1297
|
+
|| (holidayStr === true)) // Urlaub
|
|
1298
|
+
){
|
|
1299
|
+
secondStartTime = adapter.config.weekEndLiving;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
const secondStartTimeSplit = secondStartTime.split(':');
|
|
1271
1303
|
// @ts-ignore
|
|
1272
1304
|
const scheduleSecondStartTime = schedule.scheduleJob('sprinkleSecondStartTime', `${ secondStartTimeSplit[1] } ${ secondStartTimeSplit[0] } * * *`, function() {
|
|
1273
1305
|
startOfIrrigation("secondStartTime");
|
|
1274
|
-
setTimeout(()=>{
|
|
1306
|
+
adapter.setTimeout(()=>{
|
|
1275
1307
|
schedule.cancelJob('sprinkleSecondStartTime');
|
|
1276
1308
|
}, 200);
|
|
1277
1309
|
});
|
|
@@ -2297,7 +2329,7 @@ async function main() {
|
|
|
2297
2329
|
|
|
2298
2330
|
await checkActualStates().catch((e) => adapter.log.warn(`checkActualStates: ${e}`));
|
|
2299
2331
|
// @ts-ignore
|
|
2300
|
-
timer = setTimeout(() => {
|
|
2332
|
+
timer = adapter.setTimeout(() => {
|
|
2301
2333
|
startTimeSprinkle();
|
|
2302
2334
|
secondStartTimeSprinkle();
|
|
2303
2335
|
addStartTimeSprinkle();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.sprinklecontrol",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "Control of several sprinklers depending on weather conditions and pump performance.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Dirk Peter",
|
|
@@ -29,18 +29,20 @@
|
|
|
29
29
|
"node": ">= 22"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@iobroker/adapter-core": "^3.
|
|
32
|
+
"@iobroker/adapter-core": "^3.4.1",
|
|
33
33
|
"node-schedule": "^2.1.1",
|
|
34
34
|
"suncalc": "^1.9.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@alcalzone/release-script": "^5.2.
|
|
37
|
+
"@alcalzone/release-script": "^5.2.1",
|
|
38
38
|
"@alcalzone/release-script-plugin-iobroker": "^5.2.0",
|
|
39
39
|
"@alcalzone/release-script-plugin-license": "^5.2.0",
|
|
40
40
|
"@alcalzone/release-script-plugin-manual-review": "^5.2.0",
|
|
41
41
|
"@iobroker/adapter-dev": "^1.5.0",
|
|
42
42
|
"@iobroker/eslint-config": "^2.3.4",
|
|
43
|
-
"@iobroker/testing": "^5.2.2"
|
|
43
|
+
"@iobroker/testing": "^5.2.2",
|
|
44
|
+
"@tsconfig/node22": "^22.0.5",
|
|
45
|
+
"@types/node": "^22.19.19"
|
|
44
46
|
},
|
|
45
47
|
"main": "main.js",
|
|
46
48
|
"files": [
|