NEWS
Test Adapter Sprinkle Control 0.2.x mit neuen Funktionen
-
@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.
-
Alles Gut, ich habe den Fehler selber gefunden, da ich in Sprinkle Control die Datenpunkte des Smartgardenadapters angegeben habe wollte natürlich der Sprinklecontrol immer ein true oder false schreiben was ja nicht geht, habe mir einen eigenen Datenpunkt als Boolean angelegt und lasse nun diesen schalten, und für jedes der 6 Ventile ein Blockly daß dann den smartgarden Befehl unterstützt, dann funktioniert es ohne Fehler.
-
@dirk-peter, das einzige was mir aufgefallen ist und wo ich eine Warnung bekomme ist das zu schnelle Schalten der Ventile über Smartgarden. Könntest du vielleicht die Schaltzeit der Ventile höher setzen so ca. 10 - 20 sekunden, (also 10000ms - 20000ms) wer weniger benötigt kann ja weniger einstellen. Ansonsten läuft dein Adapter toll, danke dafür.
-
-
@dirk-peter ja, das weiß ich, aber die 1000ms sind zu wenig, darum habe ich ja oben geschrieben ob man nicht die Zeit verlängern könnte, wenn nicht auch kein problem dann mach ich es über blockly.
Kann man vielleicht auch noch einen Punkt hinzufügen, der die gesamte Laufzeit der einzelnen Ventile und die Durchflussmenge abbilden kann, so hat man ja nur die letzte Woche und diese Woche wie ich gesehen habe.
-
@dirk-peter sagte in Test Adapter Sprinkle Control 0.2.x mit neuen Funktionen:
@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 PeterIch hab tatsächlich keinen Regensensor.
Kann ich nicht den Wert auch von das wetter beziehen? -
@createch2 sagte in Test Adapter Sprinkle Control 0.2.x mit neuen Funktionen:
Kann ich nicht den Wert auch von das wetter beziehen?
gelöscht
-
@dirk-peter
So wie es aussieht wird bei mir die Bodenfeuchte nicht korrekt berechnet. Auch nicht wenn ich einen eigenen Niederschlagszähler angebe.
Die Bodenfeuchte nimmt kontinuierlich ab, sollte aber nach dieser derzeitigen Beregnung 120% sein.
Mein Niederschlagszähler ist so gestrickt daß er einmal täglich (23:30 Uhr) um den Tagesniederschlag erhöht wird.Hat noch jemand eine Idee was ich falsch mache?