iobroker.sprinklecontrol 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/io-package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "sprinklecontrol",
4
- "version": "1.0.7",
4
+ "version": "1.0.9",
5
5
  "titleLang": {
6
6
  "en": "Sprinkler Control",
7
7
  "de": "Sprinklersteuerung",
@@ -19,6 +19,32 @@
19
19
  "Dirk Peter <dirk.peter@freenet.de>"
20
20
  ],
21
21
  "news": {
22
+ "1.0.9": {
23
+ "en": "Fixed error reading the soil moisture sensor",
24
+ "de": "Fehler beim Auslesen des Bodenfeuchtigkeitssensors behoben",
25
+ "ru": "Исправлена ошибка считывания показаний датчика влажности почвы.",
26
+ "pt": "Erro corrigido na leitura do sensor de umidade do solo",
27
+ "nl": "Fout bij het uitlezen van de bodemvochtigheidssensor gecorrigeerd.",
28
+ "fr": "Correction d'une erreur de lecture du capteur d'humidité du sol",
29
+ "it": "Risolto l'errore di lettura del sensore di umidità del suolo",
30
+ "es": "Se corrigió un error en la lectura del sensor de humedad del suelo.",
31
+ "pl": "Naprawiono błąd odczytu czujnika wilgotności gleby",
32
+ "uk": "Виправлена помилка зчитування даних датчика вологості ґрунту",
33
+ "zh-cn": "修复了读取土壤湿度传感器的错误"
34
+ },
35
+ "1.0.8": {
36
+ "en": "Fixed error in \"Command without response\"\nWater Pressure Control Revised\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] completed",
37
+ "de": "Fehler behoben in \"Befehl ohne Antwort\"\nWasserdruckregelung überarbeitet\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] abgeschlossen",
38
+ "ru": "Исправленная ошибка в «Команда без ответа»\nКонтроль давления воды пересмотрен\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022]",
39
+ "pt": "Erro corrigido em \"Comando sem resposta\"\nControlo da pressão da água revisto\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] concluído",
40
+ "nl": "Vaste fout in \"Command zonder respons\"\nWaterdrukregeling herzien\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] voltooid",
41
+ "fr": "Erreur corrigée dans \"Commande sans réponse\"\nContrôle de la pression d'eau révisé\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] complété",
42
+ "it": "Errore fisso in \"Comando senza risposta\"\nControllo della pressione dell'acqua\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] completato",
43
+ "es": "Error fijo en \"Command sin respuesta\"\nControl de la presión del agua revisado\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] completado",
44
+ "pl": "Naprawiono błąd w \"Polecenie bez odpowiedzi\"\nRegulacja ciśnienia wody\njoBroker- Bot [E6004], [W1127], [W1133], [W1134], [S6022] zakończone",
45
+ "uk": "Виправлена помилка в \"Command без відповіді\"\nКонтроль тиску води\nioBroker-Bot [E6004], [W1127], [W1134], [S6022] завершено",
46
+ "zh-cn": "\"无回复命令\"中的固定错误\n水压控制修订\nioBroker-Bot [E6004], [W1127], [W1133], [W1134], [S6022] 完成"
47
+ },
22
48
  "1.0.7": {
23
49
  "en": "Added pressure monitoring.",
24
50
  "de": "Drucküberwachung hinzugefügt.",
@@ -83,32 +109,6 @@
83
109
  "pl": "Ciśnienie zaworu nadmiarowego dodane po nawadnianiu.",
84
110
  "uk": "Клапан для зняття тиску додається після поливу.",
85
111
  "zh-cn": "灌溉后增加了减压阀."
86
- },
87
- "1.0.2": {
88
- "en": "Added times for the irrigation ban",
89
- "de": "Zusätzliche Zeiten für das Bewässerungsverbot",
90
- "ru": "Добавлено время для запрета ирригации",
91
- "pt": "Tempos adicionais para a proibição da irrigação",
92
- "nl": "Toegevoegde tijden voor het irrigatieverbod",
93
- "fr": "Ajout de temps pour l'interdiction d'irrigation",
94
- "it": "Aggiunti i tempi per il divieto di irrigazione",
95
- "es": "Tiempos adicionales para la prohibición de riego",
96
- "pl": "Dodano czasy zakazu nawadniania",
97
- "uk": "Додані часи для поливу заборони",
98
- "zh-cn": "灌溉禁令增加的时间"
99
- },
100
- "1.0.1": {
101
- "en": "Add Homematic ON_TIME\nAdapter configuration revised\nioBroker-Bot [E4041], [E4043] completed",
102
- "de": "Homematic ON TIME hinzufügen\nAdapterkonfiguration überarbeitet\nioBroker-Bot [E4041], [E4043] abgeschlossen",
103
- "ru": "Добавить Homematic on time\nПересмотренная конфигурация адаптера\nioBroker-Bot [E4041], [E4043]",
104
- "pt": "Adicionar tempo de on metragem homemática\nA configuração do adaptador foi revista\nioBroker-Bot [E4041], [E4043] completado",
105
- "nl": "Homematisch ON TIME toevoegen\nAdapterconfiguratie herzien\nioBroker-Bot [E4041], [E4043] voltooid",
106
- "fr": "Ajouter Homematic ON TIME\nConfiguration de l'adaptateur révisée\nioBroker-Bot [E4041], [E4043] terminé",
107
- "it": "Aggiungi Homematic ON TIME\nConfigurazione adattatore revisionata\nioBroker-Bot [E4041], [E4043] completato",
108
- "es": "Añadir Homematic ON TIME\nAjuste revisado de la configuración del adaptador\nioBroker-Bot [E4041], [E4043] completado",
109
- "pl": "Dodaj homematic on _ time\nZmieniona konfiguracja adaptera\njoBroker- Bot [E4041], [E4043] ukończone",
110
- "uk": "Додати Homematic ON TIME\nПереглянуто налаштування адаптера\nioBroker-Bot [E4041], [E4043] завершено",
111
- "zh-cn": "添加自定义 ON TIME\n修改适应器配置\nioBroker-Bot [E4041], [E4043] 完成"
112
112
  }
113
113
  },
114
114
  "desc": {
@@ -193,8 +193,10 @@
193
193
  "startOfInterruption": "10:00",
194
194
  "endOfInterruption": "18:00",
195
195
  "publicWeekend": true,
196
+ "publicWeekend2": true,
196
197
  "weekEndLiving": "07:30",
197
198
  "publicHolidays": false,
199
+ "publicHolidays2": false,
198
200
  "publicHolInstance": "",
199
201
  "latitude": "",
200
202
  "longitude": "",
@@ -297,7 +299,7 @@
297
299
  "_id": "evaporation.ETpCurrent",
298
300
  "type": "state",
299
301
  "common": {
300
- "role": "indicator",
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": "indicator",
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": "indicator",
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": "indicator",
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": true,
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": "indicator",
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": "indicator",
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": "indicator",
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": "indicator",
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": "indicator",
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": "indicator",
662
+ "role": "text",
665
663
  "name": "State of the cistern",
666
664
  "desc": {
667
665
  "en": "State of the cistern",
@@ -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
- adapter.subscribeForeignStates(newEntry.control.idACK);
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);
@@ -87,7 +87,7 @@ const sendMessageText = {
87
87
 
88
88
  let sendMessage = message;
89
89
 
90
- setTimeout(function () {
90
+ adapter.setTimeout(function () {
91
91
  switch (ObjMessage.notificationsType) {
92
92
  case 'Telegram':
93
93
  if (ObjMessage.enabled &&
@@ -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
- inadequatePressure: false, // true = Nicht ausreichender Druck, false = ausreichender Druck
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
- && !sensorPressure.inadequatePressure
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.info(`Set Valve ID: ${entry.name} Pump delivery rate too low, wait! curFlow ${consumption.curFlow} parallel: ${consumption.parallel}`);
737
+ adapter.log.warn(`Set Valve ID: ${entry.name} Pump delivery rate too low, wait! curFlow ${consumption.curFlow} parallel: ${consumption.parallel}`);
705
738
  await asyncTime.setTimeout(300, undefined, {signal: entry.ac.acUpdateListPuOff.signal});
706
739
  }
707
740
  }else{
@@ -796,6 +829,10 @@ const updateList = async () => {
796
829
 
797
830
  // Pumpe ausschalten
798
831
  if (currentPumpUse.enable === true) {
832
+ await sensorPressure.setActive(false).catch((error) => { // Sensor Druck deaktivieren, da keine Bewässerung mehr aktiv ist
833
+ adapter.log.error(`Error setting sensor pressure active false: ${error}`);
834
+ });
835
+
799
836
  try {
800
837
  const _currentPumpUse = await setValve(currentPumpUse, false);
801
838
  if (_currentPumpUse === currentPumpUse.control.idState) {
@@ -806,7 +843,7 @@ const updateList = async () => {
806
843
  }
807
844
  await asyncTime.setTimeout(switchingDistanceMS, undefined, undefined);
808
845
  } catch (error) {
809
- adapter.log.error(`Error trigger current Pump [${currentPumpUse.idState}]: ${error}`);
846
+ adapter.log.error(`Error trigger current Pump [${ currentPumpUse.control.idState }]: ${error}`);
810
847
  }
811
848
 
812
849
  // Druckentlastungsventil ansteuern wenn in Konfiguration aktiv
@@ -923,7 +960,7 @@ const setActualPump = async () => {
923
960
  }
924
961
  /* Info aktualisieren */
925
962
  await adapter.setStateAsync('info.cisternState', {
926
- val: `${ (currentPumpUse.intBreak === true) ? 'Cistern empty: ' : 'Cistern filled: ' } ${ fillLevelCistern } % (${ adapter.config.triggerMinCisternLevel } %)`,
963
+ val: `${ (currentPumpUse.intBreak === true) ? `Cistern empty: ${ fillLevelCistern } % (${ adapter.config.triggerOnCisternLevel } %)` : `Cistern filled: ${ fillLevelCistern } % (${ adapter.config.triggerMinCisternLevel } %)` }`,
927
964
  ack: true
928
965
  });
929
966
  break;
@@ -934,6 +971,8 @@ const setActualPump = async () => {
934
971
  /* Bewässerungspumpen aktiv */
935
972
  if ((fillLevelCistern < parseFloat(adapter.config.triggerMinCisternLevel)) && (currentPumpUse.pumpCistern === true)) {
936
973
  /* (Zisterne unter Minimum) && (ZisternenPumpe läuft) */
974
+ currentPumpUse.pumpSwitching = true;
975
+ sensorPressure.setActive(false); // Sensor Druck deaktivieren, da die Hauptpumpe ausgeschaltet wird und somit kein Druck mehr in den Leitungen ist
937
976
  const _setValveCisternPumpOff = await setValve(currentPumpUse, false); // Pumpe Zisterne Aus
938
977
  if (_setValveCisternPumpOff === currentPumpUse.control.idState) {
939
978
  await adapter.setStateAsync(currentPumpUse.id, { // set State cisternPump === false
@@ -950,7 +989,7 @@ const setActualPump = async () => {
950
989
  currentPumpUse.pumpPower = parseInt(adapter.config.triggerMainPumpPower);
951
990
  /* Hauptpumpe Ein */
952
991
  const _setValveMainPumpOn = await setValve(currentPumpUse, true);
953
- if (_setValveMainPumpOn === currentPumpUse.idState) {
992
+ if (_setValveMainPumpOn === currentPumpUse.control.idState) {
954
993
  await adapter.setStateAsync(currentPumpUse.id, { // set State cisternPump === false
955
994
  val: currentPumpUse.enable,
956
995
  ack: true
@@ -962,6 +1001,8 @@ const setActualPump = async () => {
962
1001
  if(!sendMessageText.onlySendError()){
963
1002
  sendMessageText.sendMessage('Pump change (cistern empty) Cistern pump off => main pump on');
964
1003
  }
1004
+ currentPumpUse.pumpSwitching = false;
1005
+ sensorPressure.setActive(true); // Sensor Druck aktivieren, da die Hauptpumpe eingeschaltet wird und somit wieder Druck in den Leitungen ist
965
1006
  updateList(); // Wasserverbrauch an Pumpenleistung anpassen
966
1007
  }
967
1008
  } else {
@@ -996,7 +1037,7 @@ const setActualPump = async () => {
996
1037
  }
997
1038
  /* Info aktualisieren */
998
1039
  await adapter.setStateAsync('info.cisternState', {
999
- val: `${ (currentPumpUse.pumpCistern === false) ? 'Cistern empty: ' : 'Cistern filled: ' } ${ fillLevelCistern } % (${ adapter.config.triggerMinCisternLevel } %)`,
1040
+ val: `${ (currentPumpUse.pumpCistern === false) ? `Cistern empty: ${ fillLevelCistern } % (${ adapter.config.triggerOnCisternLevel } %)` : `Cistern filled: ${ fillLevelCistern } % (${ adapter.config.triggerMinCisternLevel } %)` }`,
1000
1041
  ack: true
1001
1042
  });
1002
1043
  break;
@@ -1406,13 +1447,12 @@ const valveControl = {
1406
1447
  ) {
1407
1448
  const _sensorPressure = await adapter.getForeignStateAsync(adapter.config.sensorPressure);
1408
1449
  if (_sensorPressure) {
1450
+ sensorPressure.enable = true;
1451
+ sensorPressure.active = false;
1409
1452
  adapter.subscribeForeignStates(adapter.config.sensorPressure);
1410
1453
  const _waterPressure = await adapter.getObjectAsync(`info.waterPressure`);
1411
1454
  if (_waterPressure) {
1412
- await adapter.setStateAsync(`info.waterPressure`, {
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 (currentPumpUse.enable === true && adapter.config.minimumPressure > pressure) {
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
- && currentPumpUse.enable === true
1806
- && adapter.config.minimumPressure > parseFloat(_currentPressure.val)
1807
- ) {
1808
- reviews = 'Not Okay'
1809
- if (sensorPressure.inadequatePressure === false) {
1810
- alteredPressure = true;
1811
- sensorPressure.inadequatePressure = true;
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.value = parseFloat(_currentPressure.val).toFixed(1);
1814
- adapter.log.warn(`Pressure sensor value ${ pressure } 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!`);
1815
- if (adapter.config.notificationEnabled) {
1816
- sendMessageText.sendMessage(`Pressure sensor value ${ pressure } 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!`);
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 if (currentPumpUse.enable === false || adapter.config.minimumPressure <= pressure) {
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(${pressure}): The shutdown process was aborted because the operating pressure was restored.`);
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
  }