NEWS
Test Adapter Sprinkle Control 0.2.x mit neuen Funktionen
-
Hallo Tester,
habe eben sprinkleControl 0.2.11 hochgeladen!Änderungen:
- (Dirk-Peter-md) Bug fixed => analog soil moisture sensor with negative characteristic
- es werden jetzt auch analoge Bodenfeuchtesensoren mit negativen Bodenfeuchte Koeffizienten unterstützt
- Die Bodenfeuchte wird jetzt auch in der Benachrichtigung (WhatsApp, Telegram) mit einer Stelle nach dem Komma angezeigt
- (Dirk-Peter-md) Attention => maximum soil moisture in rain now in %
- 100 % Bodenfeuchte werden jetzt auch nicht mehr beim Nachwässern überschritten
- Achtung ! ! ! den Wert maximale Bodenfeuchtigkeit nach dem Regen in (mm) ist jetzt in Prozent angegeben.
Bitte korrigiert eure Werte in der Konfiguration, wenn ihr Berechnung der Verdunstung in eurer Steuerung verwendet.
Der Standardwert ist 120 % (Bereich: 100 % - 200 %), mit diesem rechnet das Programm auch, wenn nichts angegeben wurde.
- Der Plausibilitätswert der Niederschlagsmenge wurde jetzt auf 20 erhöht
- es werden also nur Werte bis 20 mm Niederschlag für die Berechnung herangezogen
So und nun viel Spaß beim Testen, sollten noch Fehler auftreten, bitte Melden.
MfG Dirk Peter - (Dirk-Peter-md) Bug fixed => analog soil moisture sensor with negative characteristic
-
@dirk-peter
Ich habe den Adapter gerade upgedatet. Ich habe im Frühling meine Wetterstation gewechselt und setze jetzt eine Froggit ein. Dazu habe ich testweise einen Bodenfeuchtigkeitsmesser DP100 installiert.
Nun zu meiner Frage bzw. Problem:
Der DP100 ist zwischen 2 Beregungszonen installiert. Wenn die Beregnung startet, wird er von Zone 1 beregnet und meldet einen höheren Wert an. Durch diesen Wert startet aber Zone 2 nicht mehr.Ist es denkbar, dass die Feuchtigkeitswerte beim Start der Bewässerung "eingefroren" werden?
-
@martybr
Hallo,
dein Phänomen ist mir völlig unbekannt! Wenn deine Beregnung startet, so werden alle Kreise auf Anforderung zum sprengen getestet. Das heißt, das für alle Kreise bei denen eine Anforderung besteht, die Laufzeit berechnet wird und zwar zur gleichen Zeit. Die Abarbeitung erfolgt dann später. Da bei einem Bodenfeuchtesensor die 100% nie erreicht werden, schaltet dieser auch nicht vorzeitig ab.
Kurz gesagt, ein einfrieren des Feuchtigkeitswertes ist also nicht erforderlich!
MfG Dirk Peter -
@dirk-peter
Hallo Dirk Peter, dann teste ich das nochmal. Ich habe, wie vorher geschrieben, meine Wetterstation komplett getauscht. Ich melde mich in den nächsten Tagen zurück. -
hallo @dirk-peter,
ich verwende Deinen Adapter nun schon eine ganze Weile und es läuft soweit alles gut! Danke!
Ein Frage kam bei mir auf, seit ich letztes Wochenende meine Pumpe tauschen musste.
Kann man ausgewählte Bewässerungskreise gleichzeitig steuern? Anders gesagt, kann man sie in einer Art Gruppe schalten?Kurz zum Hintergrund: Meine neue Pumpe hat mehr Power als die alte und so kommt es, dass einige meiner Bewässerungskreise für die Tropfschläuche den Abschaltdruck der Pumpe erreichen und so die Pumpe "taktet". Wenn ich aber 2 oder 3 Kreise parallel öffne, läuft sie durch.
Ich hoffe ich habs halbwegs verständlich erläutert
Falls es im Adapter nicht möglich ist, werd ichs mal mit nem Skript versuchen...
Danke schonmal und Grüße...
-
@friesenjung
Hallo,
Die Antwort lautet jein!
Das bedeutet wenn die Verbrauchswerte von Bewässerungskreisen und Pumpe korrekt angegeben sind, dann kombiniert das Programm die Bewässerungskreise so, das die Pumpe immer maximal ausgelastet ist. Hierbei kann es aber vorkommen das am Ende ein Kreis mit geringem Durchfluss übrig bleiben kann.
Ich denke mal das du das meintest.
Ansonsten werden natürlich mehrere Bewässerungskreise auch parallel bedient. Abhängig vom Durchfluss (sprinklecontrol.0.control.restFlow) und der Begrenzung der Konfiguration (sprinklecontrol.0.control.parallelOfMax).
Das Bedeutet, wenn deine Bewässerungskreise zu 100 % parallel laufen sollen, so würde ich sie Hardwaremäßig parallel schalten.
Bei mir laufen die Tropfschlauch wie zum Anfang beschrieben. Aber meine Pumpe schaltet sich ja auch nicht ab bei der Entnahme, da sie genügend lang sind.
MfG Dirk Peter -
Moin @dirk-peter ,
der Adapter ist in Verbindung mit einer frisch (jetzt gut 3 Monate in Betrieb) verlegten Bewässerung sehr erfolgreich im Einsatz.
Vielen Dank für die Arbeit, die hier von allen reingesteckt wird!
Ich hätte da allerdings eine Anregung / Erweiterungsanfrage:
Auf dem Haus Dach befindet sich eine PV-Anlage (Solar Anlage) die tagsüber einen Batteriespeicher für die Nacht auflädt, die Bewässerung läuft immer um 3:20 um Verdunstung zu vermeiden.
Allerdings reicht die Pumpe nicht, aus um sämtliche Bewässerungskreise gleichzeitig laufen zu lassen, 2 getrennte Rasen Stücke und in Summe 4 Beet abschnitte. (jeweils ein Rasen Stück vor und hinter dem Haus, jeweils ein Beet, das um den Rasen geht, sowie ein Beet das am Haus liegt (da es hier nicht hin regnet, braucht dieses Täglich Wasser))
Da die beiden Rasen Stücke und 2 Beete immer nur jeden zweiten Tag bewässert werden sollen, ist dies so im Adapter eingestellt.
Aktuell läuft dann erst das eine Rasen Stück mit allen Beeten zusammen und im Anschluss daran das zweite Rasen Stück komplett alleine.
Dies ist leider in Verbindung mit dem PV Speicher etwas ungeschickt, da dann die Pumpe nur für das eine Rasen Stück läuft. Dies bedeutet das der Akku Speicher dann nur sehr knapp über die Nacht ausreicht.
Nun zu meiner Anregung bzw. Frage ob die von mir hierzu angedachte Lösung umsetzbar ist.
Wäre es möglich, eine Option mit der man quasi zwei 2 Tages Zyklen hat einzubauen?
Das per Auswahl immer bestimmte Bereiche sich „Abwechseln“.
In meinem Beispiel dann eben:
Tag 1: Rasen Vorne, Beete Vorne, sowie beide Beete am Haus Tag 2: Rasen Hinten, Beete Hinten, sowie beide Beete am Haus
Ich habe zwar schon eine Idee, wie man das ganze vom Adapter getrennt mit einem Skript umsetzten könnte, finde es aber eleganter das ganze unter einem Hut zu haben und vielleicht gibt es auch andere mit einem ähnlichen Anliegen.
Danke für den wirklich tollen Adapter.
Viele Grüße
Paul -
@zeptran
Hallo,
wenn ich dich richtig Verstehe, möchtest du nur, das der eine Kreis um einen Tag versetzt startet.
Der Adapter kann damit schon umgehen, nur man kann es nicht einstellen.
Du müsstest ihn also überlisten!
Hierzu gehst du unter Objekte sprinklecontrol.0.sprinkle. ? .actualSoilMoisture auf den Bleistift und unter Objektdaten => Common => "write" und schreibst dort "true" rein. Jetzt kannst du den Wert (Wochentag) von actualSoilMoisture von einem Kreis um einen Tag erhöhen.
Wenn du jetzt den Adapter unter Instanzen neu startest, sollte es das schon gewesen sein.
MfG Dirk Peter
Werde mir überlegen wie ich es am besten bei einen der nächsten Versionen umsetze. Wahrscheinlich so ähnlich, mal sehen. -
@dirk-peter
Hallo Dirk, hallo Hunter-Freunde,mit der SuFu habe ich keine Antwort auf meine Frage erhalten.
Welchen Wert stellt ihr beim Sprinklerverbrauch ein?
Ich habe mehrere MP Rotatoren im Einsatz. Mit der Milchmädchenrechnung, dass ein MP Rotator z.B. 1,40 Liter pro Minute, also 84 Liter pro Stunde benötigt, würde ich meinen kompletten Bewässerungsstrang ausrechnen.
Quelle:
https://novelta-shop.de/montage-anleitungen/mp-rotatoren-leistungen/In Summe komme ich dann auf circa 1.100 l/h. Das ist doch dann die Zahl, welche ich dort einzutragen haben, richtig?
Ich bin ein wenig Irritiert darüber, dass ich dem Adapter keine Größe der zu beregneten Fläche mitgeben muss. Macht es nicht einen gewaltigen Unterschied auf die Niederschlagsmenge, ob ich mit 1.100l/h nur 1m2 oder 100m2 bewässere?
-
@saschas
Hallo,In Summe komme ich dann auf circa 1.100 l/h. Das ist doch dann die Zahl, welche ich dort einzutragen haben, richtig?
richtig!
Ich bin ein wenig Irritiert darüber, dass ich dem Adapter keine Größe der zu beregneten Fläche mitgeben muss. Macht es nicht einen gewaltigen Unterschied auf die Niederschlagsmenge, ob ich mit 1.100l/h nur 1m2 oder 100m2 bewässere?
Die Wassermenge wird über die Zeit bestimmt. Ich brauche die Durchflussmenge für die Pumpe! Weil diese ja entscheidet, welche Kreise zusammen laufen können.
MfG Dirk Peter
-
Ich brauche die Durchflussmenge für die Pumpe! Weil diese ja entscheidet, welche Kreise zusammen laufen können.
Macht Sinn. Habe ich bei mir aber auch schon extra durch "Maximaler Parallelbetrieb der Ventile = 1 " vorgegeben.
Die Wassermenge wird über die Zeit bestimmt.
Wenn die Durchlussmenge der Ventile nicht in die Bewässerungsdauer eingeht, dann verstehe ich das noch nicht. Kannst du mir das bitte Erklären @dirk-peter.
Mit meinen Einstellungen habe ich in den letzten Zyklen festgestellt, dass die Bewässerungszeit jeweils deutlich über den 60min, eher bei 120 min lagen. Beim letzten Vorgang 1:44 Std. Das ist ja laut Vorgabe auch i.O., da < 200%.
Frage: Wie errechnet sich die Bewässerungsdauer? Und wo genau kommt in der Formel die Restriktion zur Variable "maximale Bodenfeuchtigkeit nach der Bewässerung in (mm)" vor?
Zum Start der Bewässerung lag der actualSoilMoisture bei 13.60 %.
Die Steigung von actualSoilMoisture ist nahezu konstant. Hast du da eine fixe Steigung hinterlegt?
Wenn ich jetzt rechne, dass die Hunter MP Rotatoren im Durchschnitt 10mm/h/m2 (bei quadratischer Kopf-zu-Kopf Anordnung) abgeben, dann habe ich nach 1:44 Std circa 17,5 Liter / m2 ausgebracht. Das ist schon ne ordentliche Portion Wasser. Insbesondere sind das dann mehr als die 8mm, welche ich vorgegeben habe.
So ganz klar ist mir die Berechnung noch nicht.
Ansonsten ist das ein affengeiler Adapter!!! Schon lange nicht mehr so was pragmatisches und nützliches gesehen! Großes Lob und vielen Dank für deine Mühe, insb. zu den physikalischen Formeln.
-
@saschas
Hallo,Habe ich bei mir aber auch schon extra durch "Maximaler Parallelbetrieb der Ventile = 1 " vorgegeben.
Der Adapter ist aber auch für kräftigere Pumpen entwickelt. Bei mir laufen z.B. bis zu 3 Kreise Parallel
Diese Zeichnung sollte alles erklären! Alle grau eingekreiste Werte stammen aus deiner Konfiguration und mit diesen kann man alles erklären und berechnen.
MfG Dirk Peter -
@dirk-peter Herzlichen Dank für dein Diagramm. Kleine Rückfragen habe ich noch.
Entsprechend die Parameter
immer
Bewässerungszeit in min = 50 % acutalSoilMoisture auf der (Y-Achse deiner Grafik)
Maximale Bewässerungsverlängerung in % = 0 % acutalSoilMoisture auf der (Y-Achse deiner Grafik)Wenn dem so ist, dann hätte ich verstanden, dass ich die zwei Parameter
- Maximale Bewässerungsverlängerung in %
- maximale Bodenfeuchtigkeit nach der Bewässerung in (mm)),
habe, welche mir die Steigung (dunkelblaue Linie) festlegen.
So ganz macht meine Annahme keinen Sinn.
Gedankenexperiment:
Wenn ich meinen Einstellungen Maximale Bewässerungsverlängerung in % = 100% (also keine Verlängerung erlaubt) setze, würde ich dann folgendes Bild erhalten? Meine Annahme habe ich mit rot eingetragen. -> Steigung wird steiler.
Oder unter der Annahme, dass Bewässerungszeit in min = 50 % acutalSoilMoisture auf der (Y-Achse deiner Grafik) gilt, sich zunächst das gleiche Bild ergibt mit Schnittpunkt (120,0), aber lediglich 60 Minuten bewässert wird. Dann würde ich errechnen, dass ich nach 60 Minuten Bewässerung bei acutalSoilMoisture = 63,44 % (=13,6 + 49,84) lande.
Herleitung: (100% - 13,6%) = 86,4%. => 86,4% in 140 Minuten => 0,83076% Pro Minute => In 60 Minuten 49,84% -
@saschas Hallo,
falsche Annahme! Die Gerade bleibt die gleiche, da ja immer noch runningTime = 60 min (≙ max. Bodenfeuchtigkeit = 8 mm) und Einschaltpunkt = 50 %. Die Bewässerungszeit wird nur auf 100 % begrenzt und der Bewässerungskreis fährt mit der braunen Gerade zurück auf 100 %.
MfG Dirk Peter -
ich habe eine frage zur pumpensteuerung:
meine "hauptpumpe" ist die in der Zisterne...
sehe ich es richtig, dass die hauptpumpe immer ausgeschaltet ist, wenn gerade keine bewässerung läuft?
Kann ich das auch verhindern? Hintergrund ist, dass ich auch Wassersteckdosen habe, auf denen immer druck anliegen soll (ohne ventile).
Müsste ich dann einfach die Angabe der Pumpe weglassen, oder wir löst man das?Danke
-
@dirk-peter Ich hab mit vielem gerechnet, aber das Bild ergibt in meinem Kopf am wenigsten Sinn. Sorry, dass ich da jetzt noch einmal nachfrage - ich will das unbedingt verstehen. Ich hoffe du kannst mir erneut helfen. Ich erkläre mich auch gerne bereit das anschließend Idiotensicher aufzuschreiben, dass wir das der Doku beifügen können.
Was mich an deinem letzten Bild irritiert ist die Aussage, dass man bei den 13,6% man innerhalb von 60 Minuten (braune Linie von dir) wieder bei den 100% (≙ max. Bodenfeuchtigkeit = 8 mm) ist. Wäre ich jetzt anstatt bei 13,6% bei 40% (rote durchgezogene Linie), dann folgt doch nach der gleichen Logik wieder, dass ich nach 60 Minuten (rote gestrichelte Linie) bei 100% (≙ max. Bodenfeuchtigkeit = 8 mm) bin.
Ich hätte erwartet, dass ich es aber doch von der runningTime einen Unterschied machen muss, ob ich bei 13,6% oder 40% (beides unterhalb des Schwellwertes von 50%) mit der Bewässerung beginne.Vielleicht hilft ein weiteres fiktives Beispiel:
Bewässerungszeit in min: 40
maximale Bewässerungsverlängerung in %: 300
Einschaltpunkt (Bodenfeuchtigkeit) des Bewässerungsventile in %: 60
maximale Bodenfeuchtigkeit nach der Bewässerung in (mm): 8Diese Größen kann ich in das Diagramm noch einzeichnen
Aber ab dann verstehe ich die Zusammenhänge nicht nicht mehr.
Nach deiner letzten Aussage, hatte ich jetzt verstanden, dass runningTime = 40 min (≙ max. Bodenfeuchtigkeit = 8 mm) und Einschaltpunkt = 60% maßgeblich für die Steigung sind.
Aus dem Bild würde ich dann schon einmal ablesen, dass der Bewässerungskreis niemals länger als 100 Minuten laufen muss um wieder auf 100% zu kommen?
Bei einer Feuchtigkeit im Boden von 20 % zum Start der Bewässerung würde ich dann eine runningTime von 80 Minuten erwarten?
-
@saschas Oh Sorry, da habe ich Mist erzählt!
Berechnung der Rücklauf Gerade:/** @type {number} */ newThread.soilMoisture15s = 15 * (myConfig.config[res.sprinkleID].soilMoisture.maxIrrigation - myConfig.config[res.sprinkleID].soilMoisture.triggersIrrigation) / (60 * myConfig.config[res.sprinkleID].wateringTime);
Da dies aber auf Dauer Quatsch ist und der Bewässerungskreis Täglich starten würde gibt es die Funktion Bodenfeuchtigkeit = 100% nach der Bewässerung, womit wir wieder bei 100% sind.
So das sollte es jetzt gewesen sein,
MfG Dirk Peter -
@dirk-peter Sowohl das Bildchen als auch die Funktion Bodenfeuchtigkeit = 100% nach der Bewässerung machen Sinn. Damit kann ich/man was anfangen. Ich schreibe das die Tage mal auf
Kannst du mir noch kurz beantworten, was in unserem Beispiel die Werte in der Formel wären:
maxIrrigation = 8mm
triggersIrrigation = 4mm
wateringTime = 60min-> soilMoisture15s = 15 * (8mm-4mm) / (60 * 60min) = 15 * 4 / 3600 mm/s = 60 / 3600 mm/15s
-> Alle 15 Sekunden steigt Bodenfeuchte um 0,016666667 mm.Das passt dann auch zu der Grafik: Anhand der Grafik (blaue Linie) errechne ich eine Steigung von (8-0) / 60* (120-0) = 8 / 7200 = 0,001111111 mm/s --> Also 0,016666667mm alle 15 Sekunden.
Yeah! Es macht einfach Spaß, wenn die Zahlen und Formeln aufgehen.
-
maxIrrigation = 8mm
maximale Bodenfeuchtigkeit nach der Bewässerung in (mm)
triggersIrrigation = 4mm
Einschaltpunkt (Bodenfeuchtigkeit) des Bewässerungsventils in % x maxIrrigation [8mm * 50% = 4mm]
wateringTime = 60min
Bewässerungszeit in min
MfG Dirk Peter
-
Hi,
ich habe 3 Ventile - davon habe ich Nr. 1 & 3 per option "autoOn" deaktiviert.
Dennoch startet die Bewässerung mit einem dieser Ventile (Bewässerung Garage:3.STATE).
Wo liegt das problem?{ "_id": "system.adapter.sprinklecontrol.0", "common": { "name": "sprinklecontrol", "version": "0.2.11", "title": "Sprinkle Control", "authors": [ "Dirk Peter <dirk.peter@freenet.de>" ], "keywords": [ "Sprinkle", "Irrigation", "Bewässerung", "Steuerung", "ioBroker" ], "docs": { "en": "docs/en/sprinklecontrol.md", "de": "docs/de/sprinklecontrol.md" }, "license": "MIT", "platform": "Javascript/Node.js", "main": "main.js", "icon": "sprinklecontrol.png", "enabled": true, "extIcon": "https://raw.githubusercontent.com/Dirk-Peter-md/ioBroker.sprinklecontrol/master/admin/sprinklecontrol.png", "readme": "https://github.com/Dirk-Peter-md/ioBroker.sprinklecontrol/blob/master/README.md", "loglevel": "info", "mode": "daemon", "type": "garden", "compact": true, "materialize": true, "messagebox": true, "stopBeforeUpdate": true, "connectionType": "local", "dataSource": "assumption", "dependencies": [ { "js-controller": ">=2.0.0" } ], "installedFrom": "iobroker.sprinklecontrol@0.2.11", "installedVersion": "0.2.11", "host": "iobroker" }, "native": { "triggerControlVoltage": "", "maximumParallelValves": 1, "switchingDistance": 500, "triggerMainPump": "hm-rpc.1.SEQ0343973.4.STATE", "triggerMainPumpPower": 750, "cisternSettings": false, "triggerCisternPump": "", "triggerCisternPumpPower": 1800, "actualValueLevel": "30", "triggerMinCisternLevel": 25, "wateringStartTime": "livingTime", "timeShift": 0, "weekLiving": "21:10", "publicWeekend": true, "weekEndLiving": "23:00", "publicHolidays": true, "publicHolInstance": "feiertage.0", "latitude": "50.22116135719122", "longitude": "8.683589310246877", "notificationEnabled": false, "sensorOutsideTemperature": "", "sensorOutsideHumidity": "", "sensorWindSpeed": "", "sensorBrightness": "", "sensorRainfall": "", "weatherForecast": false, "weatherForInstance": "", "thresholdRain": 2, "notificationsType": "Telegram", "telegramInstance": "", "telegramUser": null, "telegramNoticeType": "longTelegramNotice", "telegramWaitToSend": 0, "telegramSilentNotice": false, "telegramOnlyError": false, "whatsappInstance": "", "whatsappNoticeType": "longWhatsappNotice", "whatsappWaitToSend": 0, "whatsappOnlyError": false, "pushoverInstance": "", "pushoverNoticeType": "longPushoverNotice", "pushoverWaitToSend": 0, "pushoverDeviceID": "", "pushoverSound": "", "pushoverSilentNotice": false, "pushoverOnlyError": false, "emailReceiver": "xxx@xxx.com", "emailSender": "xxx@xxx.com", "emailInstance": "", "emailNoticeType": "longEmailNotice", "emailWaitToSend": 0, "emailOnlyError": false, "events": [ { "enabled": true, "sprinkleName": "Bewässerung Garage:1.STATE", "name": "hm-rpc.1.SEQ0343973.1.STATE", "triggerID": "", "wateringTime": "20", "wateringAdd": "130", "wateringInterval": "0", "maxSoilMoistureIrrigation": "8", "maxSoilMoistureRainPct": "120", "triggersIrrigation": "50", "pipeFlow": "1100", "booster": false, "endIrrigation": true, "methodControlSM": "fixDay", "inGreenhouse": false, "triggerSM": "", "analogZPct": "0", "analogOHPct": "100", "startDay": "fixDay", "sun": true, "mon": true, "tue": true, "wed": true, "thur": true, "fri": true, "sat": true }, { "enabled": true, "sprinkleName": "Rasen", "name": "hm-rpc.1.SEQ0343973.2.STATE", "triggerID": "", "wateringTime": "50", "wateringAdd": "130", "wateringInterval": "0", "maxSoilMoistureIrrigation": "8", "maxSoilMoistureRainPct": "120", "triggersIrrigation": "50", "pipeFlow": "370", "booster": false, "endIrrigation": false, "methodControlSM": "fixDay", "inGreenhouse": false, "triggerSM": "", "analogZPct": "0", "analogOHPct": "100", "startDay": "fixDay", "sun": true, "mon": true, "tue": true, "wed": true, "thur": true, "fri": true, "sat": true }, { "enabled": true, "sprinkleName": "Bewässerung Garage:3.STATE", "name": "hm-rpc.1.SEQ0343973.3.STATE", "triggerID": "", "wateringTime": "20", "wateringAdd": "130", "wateringInterval": "0", "maxSoilMoistureIrrigation": "8", "maxSoilMoistureRainPct": "120", "triggersIrrigation": "50", "pipeFlow": "700", "booster": false, "endIrrigation": true, "methodControlSM": "fixDay", "inGreenhouse": false, "triggerSM": "", "analogZPct": "0", "analogOHPct": "100", "startDay": "fixDay", "sun": true, "mon": true, "tue": true, "wed": true, "thur": true, "fri": true, "sat": true } ] } }