NEWS
Test Adapter Sprinkle Control 0.2.x mit neuen Funktionen
-
@dirk-peter
Ich bekomme den Adapter einfach nicht zum Laufen. Weder die Pumpe noch das Ventil werden angesteuert und der State verändert. Kann mir hier jemand helfen? Ich bekomme eine Benachrichtigung, dass die Bewässerung gestartet wird aber danach passiert leider nichts mehr. Ich verwende für die Pumpe eine Zigbee Steckdose und als Ventil ebenfalls ein Zigbee- Gerät.Anbei mal meine Konfiguration:
Vielen Dank schon mal vorab für die Unterstützung.
-
@jdilla Hallo,
bei Pumpeneinstellungen => maximale Pumpenleistung der Hauptpumpe in l/h hast du 2000 l/h eingegeben. Bei deinem Ventil Sprinklerverbrauch => Durchflussmenge in l/h aber 2300 l/h eingegeben. Da die Pumpe diese Leistung nicht zur Verfügung stellen kann, schaltet das Ventil auch nicht zu.
Sieh also zu das deine Hauptpumpe immer genug Leistung hat um den Sprenger zu bedienen. (maximale Pumpenleistung der Hauptpumpe in l/h >= Durchflussmenge in l/h)
Zum testen kannst du einfach unter runningTime eine 1 eingeben und die Sprenger starten sofort für 1 min. Mit 0 kannst du den Sprenger wieder ausschalten.
MfG Dirk Peter -
@dirk-peter Ist mir auch schon aufgefallen.... aber nun weiß ich, dass es ein Bug ist.... Hatte mich schon gewundert.
-
@schmakus Hallo,
falls du dich auf "die Pumpenleistung muss größer sein als die Ventilleistung" beziehst, so ist das meiner Meinung nach kein Bug! Es sollte aber auf jeden Fall eine Info unter Protokolle erscheinen, die einen auf den Eingabefehler hinweisen. -
@dirk-peter sagte in Test Adapter Sprinkle Control 0.2.x mit neuen Funktionen:
@schmakus Hallo,
falls du dich auf "die Pumpenleistung muss größer sein als die Ventilleistung" beziehst, so ist das meiner Meinung nach kein Bug! Es sollte aber auf jeden Fall eine Info unter Protokolle erscheinen, die einen auf den Eingabefehler hinweisen.Vergessen zu Zitieren. Ich bezog mich auf actualSoilMoisture.
-
@dirk-peter
Danke erstmal für den Adapter, läuft soweit problemlos. Siehst du eine Möglichkeit bei der Startzeit für die Bewässrung eine Option "Beenden Sie die Bewässerung mit einer festen Uhrzeit" ? Die Laufzeit und ggf. die Anzahl der Bewässerungskreise variiert ja.
Wann die Bewässerung startet ist mir relativ egal, das Ende der Bewässerung leider nicht. Bei mir wird es demnächst wieder (variable) Verbotszeiten zur Gartenbewässerung geben. -
@bommel_030 Hallo, schreibe dir am besten ein kleines Skript mit dem du den Hauptschalter sprinklecontrol.0.control.autoOnOff ausschaltest und dann wieder ein.
Hierdurch werden alle Bewässerungskreise gestoppt und die Bewässerung läuft am nächsten Tag wieder von vorne.
MfG Dirk Peter -
@dirk-peter
Danke für die Rückmeldung, aber dann unterbreche ich die Bewässerung ja nur. Mein Ziel ist es ja sie durchlaufen zu lassen aber so spät wie möglich zu starten. Werde mir dann einfach die maximal mögliche Laufzeit raussuchen und die Startzeit dementsprechend anpassen. -
@bommel_030 Nein mit autoOnOff würdest du alle anstehenden Bewässerungsaufträge löschen.
Was du suchst ist ein Break z.B. um 8:00 alle Aufträge unterbrechen und um 18:00 dann den Rest abarbeiten lassen.
Habe ich es so richtig verstanden.
MfG Dirk -
@dirk-peter
Eigentlich suchte ich eine Möglichkeit eine fixe Uhrzeit zu haben zu der die Bewässerung abgeschlossen ist.
Als Beispiel läuft an einem Tag nur die Bewässerung der Hecke für 1 h. Damit um 7 nichts mehr bewässert wird soll das ganze um 6 Uhr starten. Wenn am nächsten Tag der Rasen (je 3 Bereiche à 30 min, nicht parallel) bewässert wird müsste das ganze um 5:30 starten damit um 7 Feierabend ist.
Ich könnte jetzt ja auch als Startzeit 4 Uhr angeben, dann ist es in jedem möglichen Fall um 7 Uhr beendet. Damit hätte ich dann aber den Nacktschnecken 1,5 h erleichterte Bewegung verschafft
Daher der Ansatz, der Adapter weiß ja wie lange an dem Tag bewässert wird und startet dementsprechend. Aber wenn das nicht so leicht umzusetzen ist verschiebe ich die Startzeit halt nach vorne. Die Pumpe hängt eh gut 10m unter der Oberfläche, da stört das keinen. -
@bommel_030 Da die tatsächliche Bewässerungszeit erst zur Startzeit berechnet wird, ist dies leider nicht umsetzbar.
Dirk Peter -
@dirk-peter Hi, gibt es deinerseits einen plan wann du das umsetzen kannst? wäre wirklich klasse.
danke -
@gyle Hallo,
Du hast recht! actualSoilMoisture wird bei fixDay (Bewässerung an festen Tagen) nicht aktualisiert. Die Bewässerung erfolgt aber trotzdem!
Steht auf der To-do-Liste! Komme aber momentan nicht dazu! Muss erst meine privaten Projekte zu Ende führen.
MfG Dirk Peter -
Hallo Zusammen,
wir hatten jetzt drei Tage in Folge 11mm regen die durch sprinkle control erkannt worden sind (beregnung verzögert). Allerdings verblieb jeden Tag die Bodenfeuchte bei 1% und jetzt an Tag 4 ohne Regenforecast wird dann fleißig bewässert obwohl es eigentlich nicht sein muss.
Ist das Verhalten so normal?
Bin grad im Urlaub und kann die Settings nicht nachschauen. -
@createch2 Hallo,
ohne deine Konfiguration kann man da wenig zu sagen! Die Verzögerung findet über den Adapter "das Wetter" statt, aber nur für den aktuellen Tag. Soll deine Bewässerung für längere Zeit aussetzen, so geht das nur unter Bodenfeuchtesensoren (beste und teuerste Wahl) oder der Berechnung der Verdunstung. Ich glaube diese Variante hast du gewählt. Hier kannst du unter den Ventilen unter dem Punkt "maximale Bodenfeuchtigkeit nach dem Regen in (%)" einstellen wie feucht dein Boden werden kann, oder bessergesagt wie lange nach einem Starkregen nicht bewässert wird.
Das deine Bodenfeuchte aber bei 1% liegt ist sehr ungewöhnlich! Ich würde mal sprinklecontrol.0.evaporation.ETpToday aufzeichnen und schauen ob dort der Regen richtig erkannt wird. Es sollte so aussehen:
MfG Dirk Peter -
@dirk-peter
Tatsächlich habe ich die Bodenfeuchte über die Verdunstung berechnen lassen.
Soweit ich mich erinnere ist die Bodenfeuchte nach Bewässerung auf 120% gestellt.
Die 1% sind das Ergebniss einer manuell ausgesetzten Bewässerung für 1 Woche in der es permanent geregnet hat.Ist es also so dass der hinzugefügte Regen nicht mit einberechnet wird?
-
@createch2 Hallo,
der Regen wird über den Regensensor ermittelt. Du kannst es am Diagramm erkennen, wo am Tag die Kurve nach unten springt.
Es scheint das du entweder keinen Regensensor angegeben hast, oder du nur die aktuellen Regenwerte übermittelst. Du brauchst aber hier einen Zähler [Jahresregenmenge], wie bei HomeMatic üblich.
MfG Dirk Peter -
@dirk-peter hallo zusammen, bin nun endlich nach 2 monaten bauzeit und 300m Pipeline fertiggeworden mit meinem Bewässerungsprojekt.
Als Steuerung habe ich das smart irrigation set mit 1 sensor von Gardena, alles andere ist übrigens auch von Gardena.
4 mal MicroDrip mit verschiedenen Sprühern und Tropfern
3 mal OSG 140 ViereckregnerInsgesamt habe ich 6 Ventile verbaut, 1 Zisterne mit 9000 Liter die durch das Dach meines Hauses befüllt wird (wenns regnet, blockly ist geschrieben für den Literzuwachs in der Zisterne, da in der Zisterne leider nur 6 Schwimmer verbaut sind die einfach ja oder nein bringen, die Steuerung ist 25 Jahre alt da war noch nicht ans Smart Home zu denken, daher meine Berechnung)
In der Zisterne ist eine Schmutzwasserpumpe von EInhell seit 25 Jahren, mit 16000 Liter bei 1 1/2 Zoll ausgang ohne Gegendruck, sie bringt mir ca. 2500 Liter in der Stunde, wurde gemessen, dies wird dann auch berechnet, somit kann ich den Zisternenstand ausrechnen.)
Von der Zisterne geht es in ein Regenfass (hier sind Sensoren verbaut für Max und Min Stand) mit 310 Liter Fassungsvermögen, hier ist meine Gardena INox Tauchdruckpumpe verbaut, die auch mit dem micro drip system klarkommt, hier taktet sie.
Pumpe bringt 2000 Liter im meinen 6 Ventil Kreis, so nun bin ich auf SprinkleControl gestoßen, den Adapter finde ich super @dirk-peter, doch leider bekomme ich im smartgarden adapter immer einen "bad-request"
Folgendes Blockly habe ich geschrieben um den Eingang vom Sprinkle Conrol zum smartgarden System zu migrieren.
<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="]@p]bzXzt^a53,$/9qeg" x="63" y="64"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="+XkK4yBCp+YJUgUBcwm}"> <field name="oid">sprinklecontrol.0.sprinkle.Terrasse.runningTime</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="SNQu)hyW`uo%8EXE?FBC"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id=":(h*Wt98yu$T0(Y%sH(V"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="r_4!In@!CYKe3gfR/vqt"> <field name="ATTR">val</field> <field name="OID">sprinklecontrol.0.sprinkle.Terrasse.sprinklerState</field> </block> </value> <value name="B"> <block type="logic_boolean" id="n*Q%AjpbWwM+27;3*nk1"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="-12bMrbl5[?^!~k_3O5v"> <field name="VAR" id="r/ORZ)F8UgBp=(5T||xk">minuten</field> <value name="VALUE"> <block type="text_getSubstring" id="0(V6e|8;PLHwNLiZ`REl"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="tG}R)X.!P;N3qd]QhiF9"> <field name="ATTR">state.val</field> </block> </value> <value name="AT1"> <block type="math_number" id="8AILEP9m3tVh+N1hF80w"> <field name="NUM">1</field> </block> </value> <value name="AT2"> <block type="math_number" id="30{Wjx+,#-ZcQyBxTllV"> <field name="NUM">2</field> </block> </value> </block> </value> <next> <block type="variables_set" id="-r;IQ!6=2!b!!npaIw[!"> <field name="VAR" id="$z!6v$(Uq,|pxb8C43Ox">sekunden</field> <value name="VALUE"> <block type="text_getSubstring" id="@yV2pIt`(IdvRq~/qPS|"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="w5$XfS4$@fX9GZ:rvUP]"> <field name="ATTR">state.val</field> </block> </value> <value name="AT1"> <block type="math_number" id="DR!Td}-~,TVbol]]ym%^"> <field name="NUM">4</field> </block> </value> <value name="AT2"> <block type="math_number" id="gp3p*O8L|Rs5?C=2XJ$p"> <field name="NUM">5</field> </block> </value> </block> </value> <next> <block type="debug" id="gW8rJmPa=U4+KFRBR0aI"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="ZnY@kLD,F?+2`1J5p^}G"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="As)%mY-lhbDp%`a++EJk"> <field name="VAR" id="r/ORZ)F8UgBp=(5T||xk">minuten</field> </block> </value> <next> <block type="debug" id="EYE.F/$Ah]W|0S(=!M!g"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="XikVk9ns+:$@g@476-/F"> <field name="VAR" id="$z!6v$(Uq,|pxb8C43Ox">sekunden</field> </block> </value> <next> <block type="variables_set" id="|}|;,.JPz?nZv#f3abLS"> <field name="VAR" id="r/ORZ)F8UgBp=(5T||xk">minuten</field> <value name="VALUE"> <block type="convert_tonumber" id="pQm}GQac67%%JZj:KUjp"> <value name="VALUE"> <block type="variables_get" id="Ig6~K|q/vJgJWTp6:v}y"> <field name="VAR" id="r/ORZ)F8UgBp=(5T||xk">minuten</field> </block> </value> </block> </value> <next> <block type="variables_set" id="m)CVTohxlP$tW.A628jT"> <field name="VAR" id="$z!6v$(Uq,|pxb8C43Ox">sekunden</field> <value name="VALUE"> <block type="convert_tonumber" id="{H}e}{r1QK?#ob(d:G[%"> <value name="VALUE"> <block type="variables_get" id="os@hAr5jP[$K:?k)E*[9"> <field name="VAR" id="$z!6v$(Uq,|pxb8C43Ox">sekunden</field> </block> </value> </block> </value> <next> <block type="variables_set" id="H(kPjT3|_Tess*9,Qm]r"> <field name="VAR" id="tC|E*X0/D+]X}o#6L*:O">ventil2_zeit</field> <value name="VALUE"> <block type="math_arithmetic" id="~qKz~e}LW27.rO,^?Wr5"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="pZERVBG44/!DlJPsSJmv"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="5%nQoT1a/{f+X9enKr|q"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="]1yPdE_rsv(NKDcIZYHV"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="SJ46AO411$EnJFfk^D7h"> <field name="VAR" id="r/ORZ)F8UgBp=(5T||xk">minuten</field> </block> </value> <value name="B"> <shadow type="math_number" id="`|1KMKzt%::Y;KgO`H9q"> <field name="NUM">60</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="sn7e4%Q(Z1wyU{V{Gx]["> <field name="NUM">1</field> </shadow> <block type="variables_get" id="k|D.jvgJzWB4G@ij#m]j"> <field name="VAR" id="$z!6v$(Uq,|pxb8C43Ox">sekunden</field> </block> </value> </block> </value> <next> <block type="debug" id="B40ij{vB6~t31m!1Jz`%"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="{-C*9T:q4#iPMAR/YB}y"> <field name="VAR" id="tC|E*X0/D+]X}o#6L*:O">ventil2_zeit</field> </block> </value> <next> <block type="variables_set" id="N4fR6V%e5VC$V[-[8_xf"> <field name="VAR" id="tC|E*X0/D+]X}o#6L*:O">ventil2_zeit</field> <value name="VALUE"> <block type="text_join" id="5|x%8gS?19[o.pcRB~zD"> <mutation items="1"></mutation> <value name="ADD0"> <block type="variables_get" id="N?LRX,pZN[@@*ENaqz?n"> <field name="VAR" id="tC|E*X0/D+]X}o#6L*:O">ventil2_zeit</field> </block> </value> </block> </value> <next> <block type="debug" id="h:YYHK7wa#6)$7{3V~FB"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="%%G31K.MZdU+]bh)4yB^"> <field name="VAR" id="tC|E*X0/D+]X}o#6L*:O">ventil2_zeit</field> </block> </value> <next> <block type="control" id="[erh!7o]m+pM2]i+l).U"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">smartgarden.0.LOCATION_19bcd7f5-2D3b37-2D4d2a-2D86ff-2De71cdd35ac42.DEVICE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd.SERVICE_VALVE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd-3A2.duration_value</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="]@H#1%Q=[=4p{^+sV[f("> <field name="VAR" id="tC|E*X0/D+]X}o#6L*:O">ventil2_zeit</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <statement name="ELSE"> <block type="control" id="WaPHg.r11US,lf=xMU(("> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">smartgarden.0.LOCATION_19bcd7f5-2D3b37-2D4d2a-2D86ff-2De71cdd35ac42.DEVICE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd.SERVICE_VALVE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd-3A2.duration_value</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="_rXQ?ZHJc}I]bx$b8xk,"> <field name="TEXT">STOP_UNTIL_NEXT_TASK</field> </block> </value> </block> </statement> </block> </statement> </block>
Logeinträge nach Start
2023-08-11 15:50:00.257 - info: sprinklecontrol.0 (3133018) State value to set for "smartgarden.0.LOCATION_19bcd7f5-2D3b37-2D4d2a-2D86ff-2De71cdd35ac42.DEVICE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd.SERVICE_VALVE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd-3A2.duration_value" has to be type "string" but received type "boolean" 2023-08-11 15:50:00.259 - debug: sprinklecontrol.0 (3133018) state sprinklecontrol.0.control.parallelOfMax changed: 1 : 2 (ack = true) 2023-08-11 15:50:00.259 - debug: sprinklecontrol.0 (3133018) state sprinklecontrol.0.control.restFlow changed: 1700 (2000 Grundwasser) (ack = true) 2023-08-11 15:50:00.260 - info: sprinklecontrol.0 (3133018) Set Valve (calculation) ID: Terrasse, value: true, duration: 00:00 2023-08-11 15:50:00.503 - error: smartgarden.0 (1888) Error: request returned 400 Bad Request 2023-08-11 15:50:01.259 - info: sprinklecontrol.0 (3133018) State value to set for "smartgarden.0.LOCATION_19bcd7f5-2D3b37-2D4d2a-2D86ff-2De71cdd35ac42.DEVICE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd.SERVICE_VALVE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd-3A2.duration_value" has to be type "string" but received type "boolean" 2023-08-11 15:50:01.261 - debug: sprinklecontrol.0 (3133018) state sprinklecontrol.0.sprinkle.Terrasse.runningTime changed: 0 (ack = true) 2023-08-11 15:50:01.262 - debug: sprinklecontrol.0 (3133018) state sprinklecontrol.0.control.parallelOfMax changed: 0 : 2 (ack = true) 2023-08-11 15:50:01.263 - debug: sprinklecontrol.0 (3133018) state sprinklecontrol.0.control.restFlow changed: 2000 (2000 Grundwasser) (ack = true) 2023-08-11 15:50:01.263 - info: sprinklecontrol.0 (3133018) Set (calculation) ID: Terrasse, value: false 2023-08-11 15:50:01.459 - error: smartgarden.0 (1888) Error: request returned 400 Bad Request
Kann mir hier vielleicht jemand helfen? Danke
-
@babl
Kannst du mir deine Konfiguration zeigen!
Es ist eigenartig das deine Bewässerungszeit mit 0 s (duration: 00:00) angegeben ist.
MfG Dirk Peter -
@dirk-peter hi und guten morgen, das glaube ich ist nicht das problem, ich habe das unter objekte dann händisch beendet, darum duration 0sekunden, mein problem liegt eher mit dem smartgarden zusammen und dem bad request, im sprinkle control müsste ich halt die intervall bewässerungsdauer auf 0 setzen da es sonst nur probleme mit dem break und smartgarden gibt, aber mir wäre schon geholfen wenn ich ohne den bad request mal ein ventil vom smartgarden starten könnte, ich würde gerne den sprinkle control weiterverwenden, da das mit der verdunstung genial ist und ich nicht weitere sensoren erstmal kaufen müßte.