NEWS
Test Adapter Sprinkle Control 0.1.4 Latest
-
@dirk-peter
Danke, das hat geholfen. Habe die Definition der DPs jetzt vervollständigt und schon waren die Meldungen weg -
habe jetzt erst gesehen, daß es einen neuen thread dazu hier im forum gibt,
heute ist mir aufgefallen, daß die running time sofort geschrieben wird, das ist blöd, so wirft gardena einen fehler und es starten nur 2 kreise, ist es nicht möglich, dies gardena freundlich zu machen? Das heißt max 2 Ventile bei denen die Zeit geändert werden darf und wenn hier die Zeit abgelaufen ist wieder 2 Ventile usw.
So funktioniert der Adapter leider nicht für mich, da ich 6 Kreise besitze und jedesmal smartgarden meckert, ich wüßte momentan auch nicht wie man das ganze verzögern könnte. Hat hier jemand einen Lösungsansatz?
-
So, nach nochmaligem nachsehen fande ich heraus, daß @dirk-peter das ja wunderbar gelöst hat, mit den verschiedenen states beim sprinkler state. Deshalb habe ich mir nun ein Blockly geschrieben, das das ganze umwandelt zum Gardena irrigation Control.
Blockly als Bild:
Als Code:
<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="BisjXqcU.ezUl42vT#nF" x="88" y="-335"> <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="uy^cN7JTjAdiPxCwS1E]"> <field name="oid">sprinklecontrol.0.sprinkle.Balkon.sprinklerState</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="`O4@0c^c5a,j;#v0Sv5)"> <mutation elseif="2"></mutation> <value name="IF0"> <block type="logic_compare" id="ub(k6y+xeixNB/B{$50v"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="pw=oo1@s`qn!ylyPxQh*"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="V+%~fMn3EEGT(PLjKo_J"> <field name="NUM">2</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="o5${0Sa3cW65U9,ROofY"> <field name="VAR" id="jF|c=s]XBLV%X6ni9+z;">wert1</field> <value name="VALUE"> <block type="get_value" id="ATJN.=g^J}6#]uq$JwR;"> <field name="ATTR">val</field> <field name="OID">sprinklecontrol.0.sprinkle.Balkon.runningTime</field> </block> </value> <next> <block type="variables_set" id="#Wj(;vYf0Y=j/;Zw3He6"> <field name="VAR" id="6($94.I?*`5*kG5!(68d">minuten1</field> <value name="VALUE"> <block type="convert_tonumber" id="7opa@1;Vlg@UN`VML6Jm"> <value name="VALUE"> <block type="text_getSubstring" id="o7u_ctTn]]x}j5wNHwF4"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="hgUloRdL47]b-mF~!l}5"> <field name="VAR" id="jF|c=s]XBLV%X6ni9+z;">wert1</field> </block> </value> <value name="AT1"> <block type="math_number" id="ly!X~5Ied2?K1[n:?^KB"> <field name="NUM">1</field> </block> </value> <value name="AT2"> <block type="math_number" id=")ZewR6E5EhsRY$swSpEG"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="2_9@Bi,},~wQ9d#T_.k/"> <field name="VAR" id="jee7i18|WoYXQbzpQ6fC">sekunden1</field> <value name="VALUE"> <block type="convert_tonumber" id="!IR]#1j@VSJ;3b;Oaf)R"> <value name="VALUE"> <block type="text_getSubstring" id="U]~axS[@Dl#~q|7T]8%x"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="lFyY6TLXXYyj#c@]tRi:"> <field name="VAR" id="jF|c=s]XBLV%X6ni9+z;">wert1</field> </block> </value> <value name="AT1"> <block type="math_number" id="fuA/1Gj{W$cvl[/)#W4$"> <field name="NUM">4</field> </block> </value> <value name="AT2"> <block type="math_number" id="=`nZ1t%XSf[q;gz%{{]v"> <field name="NUM">5</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="Vj^Lk;Up4=yCMU0ga@Ac"> <field name="VAR" id="~]Hm+BsU1@)YEAtzxMkc">ventil1_zeit</field> <value name="VALUE"> <block type="text_join" id="fSofV{TDi^+@r$lV-gJg"> <mutation items="1"></mutation> <value name="ADD0"> <block type="math_arithmetic" id="9eTXPR#qGP;Op+~5KM?D"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="uFY@)Ea1d^Pf?2hJ%YOn"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="D`yRSAw*l|hT$VbDfi?E"> <field name="VAR" id="6($94.I?*`5*kG5!(68d">minuten1</field> </block> </value> <value name="B"> <shadow type="math_number" id="X-7awoneuwDMBV$x*0*A"> <field name="NUM">60</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="tadyZcS(!(1t59XcRGJn"> <field name="VAR" id="jee7i18|WoYXQbzpQ6fC">sekunden1</field> </block> </value> </block> </value> </block> </value> <next> <block type="control" id="a}t:3h?46BT81;]at?^m"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></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-3A1.duration_value</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"> <block type="text_join" id="p55Y0P!bOI4P}JW:Gq[*"> <mutation items="1"></mutation> <value name="ADD0"> <block type="variables_get" id="dnG:Pze_vdIyH4ym2T)9"> <field name="VAR" id="~]Hm+BsU1@)YEAtzxMkc">ventil1_zeit</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="@aHUtvs|1Jn`(B*QE0tw"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="2~c.Z)^y#4Gg:Kg:.,DO"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="_[,,-rqUqSnnBmV#)y(C"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="i6*6/eVw(pQo[,tOAW7l"> <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-3A1.duration_value</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="`i3yk%5gm4y$]h!cU)?p"> <field name="TEXT">STOP_UNTIL_NEXT_TASK</field> </block> </value> </block> </statement> <value name="IF2"> <block type="logic_compare" id="(T_Gj2NEJ|6ef*j!e5Ix"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="!=Nl@ETALBIu`$y~EN=J"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="@]cXov1oYs~Xy[iB)5C3"> <field name="NUM">3</field> </block> </value> </block> </value> <statement name="DO2"> <block type="control" id="5L2C#Fqw!-ooaft~@CL{"> <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-3A1.duration_value</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="QHUQk]tSO1s?`Jb?pX/7"> <field name="TEXT">STOP_UNTIL_NEXT_TASK</field> </block> </value> </block> </statement> </block> </statement> </block>
Natürlich muss dann für jedes Ventil extra ein Block geschrieben werden, ich denke mal wenn die Profis hier rüberschauen dass sie extreme Verbesserungen finden um das Blockly kleiner und vielleicht für alle Ventile machen können, aber Hauptsache es läuft jetzt.
Abgebildet wird,
State 0= Off Sprinkler aus
State 1= wait Sprinkler wartet auf das Einschalten (wegen Pumpenleistung) Wieviel Ventile gleichzeitig bedient werden dürfen (bei Gardena sind es max 2)
State 3= Break Bewässerungsintervall es wird dann einfach auf OFF gestellt und wenn die Beregnerzeit wieder aktiviert wird wird wieder eingeschaltet es steht dann allerdings die Original Zeit drin aber das wird ja aqm ende des Zykluses mit OFF beendet.Ich hoffe ich habe einigen Gardena Besitzern damit helfen können.
-
ich bekomme folg. Fehler im log angezeigt:
woran kann das liegen?sprinklecontrol.0 2023-08-24 00:00:13.802 error console.log.info is not a function sprinklecontrol.0 2023-08-24 00:00:13.801 error TypeError: console.log.info is not a function at AdapterClass.<anonymous> (/opt/iobroker/node_modules/iobroker.sprinklecontrol/main.js:339:37) at AdapterClass.emit (node:events:513:28) at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8466:53) at process.processImmediate (node:internal/timers:476:21) sprinklecontrol.0 2023-08-24 00:00:13.797 error uncaught exception: console.log.info is not a function
-
@gyle
sieht auf den ersten Blick nach einem Programmfehler aus.
js kenntconsole.log
und ioBroker stellt u.a.adapter.log.info
zur Verfügung.Natürlich kann hier was spezielle implementiert sein - hab den code nicht analysiert.
Mach ein Issue im adapter Repo auf -
kann das eventuell sein, daß der durchfluss und die zeit bei manuellem betrieb (5 min einschalten über die Vis von Sigi) nicht berechnet wird?
-
Hallo
Bin gerade Am Einstellen und Testen.
Da ist mir aufgefallen das zwischen Aktueller Bodenfeuchte (Zigbee Sensor) und in sprinkle-control die Werte nicht übereinstimmen.
werden die Werte nicht laufend aktualisiert?MFG
Matthias -
@flaterick
Hallo, unter Bodenfeuchtesensor hast du ja deinen Sensor eingetragen. Von diesem werden die Werte abonniert und bei jeder Änderung unter sprinklecontrol.0.sprinkle.*.actualSoilMoisture eingetragen. Ich kann dies zwar nicht mit einem Sensor testen, aber die Werte werden definitiv bei Wertänderung übernommen.
Meine Testkonfiguration:
analoger Sensor mit aktueller Version: sprinklecontrol 0.2.13
MfG Dirk Peter -
So hab etwas Getestet, und festgestellt das Zigbee etwas braucht um korrekte werte zu liefern. Da sich das Netzwerk mit der Zeit aufbaut.
Noch dazu kommt das bei deinen Werten der Korrektur Faktor schon mit einberechnet ist, was ich nicht bedacht habe.Danke für den Tollen Adapter
MFG Matthias -
@flaterick Danke für die Rückantwort und schön das er dir gefällt.
MfG Dirk Peter -
Guten Tag,
Ich habe mich jetzt auch endlich mal mit diesem Adapter beschäftigt und es sieht gar nicht so schlecht mit meiner Konfig aus.
Es sind soweit verfügbar alle Daten für die Berechnungen eingetragen und ich habe heute morgen auch schon meine erste Meldung erhalten.
Allerdings habe ich noch ein Problem.
Ich habe drei Kreise zur Bewässerung. in einem der Beete ist von GARDENA ein Sensor für Bodenfeuchte, und die Werte scheinen auch soweit korrekt zu sein.
Allerdings habe ich auch noch ein Gewächshaus, das bei Regen natürlich kein Wasser abbekommt. Allerdings habe ich nur noch einen Sensor für Temperatur und LUFTFEUCHTIGKEIT. Kann ich damit in irgendeiner Form die Bewässerung für das Zelt auslösen lassen?Mit freundlichen Grüßen
Marc -
@fenriswolf
Hallo,
in der Konfiguration unter Bewässerungskreis gibt es den Punkt Sensor im Gewächshaus. Mit diesem werden die Regenvorhersagewerte und der Niederschlagswert deaktiviert, wenn vorhanden.
Ansonsten kannst du ja die Bewässerung an festen Tagen auswählen, wenn du keine Wetterstation bzw. einen 2. Bodenfeuchtesensor besitzt.
MfG Dirk Peter -
Guten Tag, ich bin gerade dabei, den Adapter zu konfigurieren und erhalte bereits Benachrichtigungen über Telegram.
Insgesamt besteht mein System aus 8 Kreisen, wobei der Kreis 1 eine Tropfbewässerung ist, die momentan alle 2 Tage für zwei Minuten eingeschaltet wird. Der Adapter bietet mir jedoch nicht die Möglichkeit, die Ventile für weniger als 5 Minuten einzuschalten. Gibt es dafür einen Grund bzw. könnte man das anpassen?
-
@bastian-rüggen
Hallo Bastian,
gib einfach 2 für 2 Minuten in der Konfiguration des Adapters ein. Das Feld wird zwar rot, da alles unter 5 Minuten unüblich ist, aber es funktioniert.
MfG Dirk Peter -
@dirk-peter ah ok
ich bin davon ausgegangen das das es nicht funktioniert!
-
Ich bin gerade dabei meine Gartenberegnung aufzubauen. Es handelt sich um 3 Regner und ein Tropfschlauch. Mein Anliegen ist es die Beregnung vorerst manuell zu schalten. Einen passenden Schalter habe ich in den Datenpunkten nicht gefunden. Von daher würde ich gerne ein kleinen Blockly anlegen der die 3 Regner nach einander einschaltet und parallel dazu den Tropfschlauch laufen lässt.
Kann ich das so programmieren und umsetzen;
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id="elLl01R=iK2]c$3g`Myg" x="-37" y="62"> <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="S8@*(XUKAI[]zrn2)9b$"> <field name="oid">ID auswählen</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="w;Yp~j=oo,IN*J-pXp3@"> <value name="IF0"> <block type="logic_compare" id="Iim(HH@}uJnO_FH8nUH3"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="I]CQcv;[{xS%cNzqe$b{"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="r|si_%F%TlJ#xPditdZO"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="x+4DZTrU{o,`:pb37pe%"> <field name="COMMENT">Schaltet das Hauptventil ein und nach &#10;92' wieder aus</field> <next> <block type="update" id="JSK*MQTSX[Eioa.}uCkh"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">zigbee.0.f4b3b1fffe4ef575.state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="GkG{pIg90h2[]m9!A_Xc"> <field name="NUM">92</field> </block> </value> <next> <block type="comment" id="*D7WzbWf%_Ocv1WQUibA"> <field name="COMMENT">Schaltet die Tröpfchenberegnung für 90' ein</field> <next> <block type="update" id="w4Ms:F2tU_;M0qw{bnub"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">sprinklecontrol.0.sprinkle.Aktor_Tropfschlauch_Blumenbeet_STATE.runningTime</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_number" id="NHf=fUvYgM?m5v%?zpYt"> <field name="NUM">90</field> </block> </value> <next> <block type="comment" id="MaE,ECbz}kZKo|J;v)?4"> <field name="COMMENT">Schaltet nacheinander die Rasenberegnung&#10;für jeweils 30' ein</field> <next> <block type="update" id="K-CfLt(hdK4k82Ppgr]I"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">sprinklecontrol.0.sprinkle.Aktor_Regner_links_STATE.runningTime</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_number" id="Q.+8I/]d|Fu7C9@nSpT:"> <field name="NUM">30</field> </block> </value> <next> <block type="update" id="8X-$@PbRpHDmv?CF+}7H"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">sprinklecontrol.0.sprinkle.Aktor_Regner_Mitte_STATE.runningTime</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">30</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_number" id="H[;r~iHI:=O^!Dr[9~2."> <field name="NUM">30</field> </block> </value> <next> <block type="update" id="1g(-##I@(O3wrE:_J6-4"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">sprinklecontrol.0.sprinkle.Aktor_Regner_rechts_STATE.runningTime</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">60</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_number" id="qekIB$aPP?n[O^C)Un#m"> <field name="NUM">30</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </xml>
-
-
@claus1993 Hallo,
du kannst sie von Hand einschalten! Einfach unter runningTime auf 00:00 klicken und eine Zahl eingeben. Diese entspricht der Laufzeit in Minuten.
Starten kannst du sie aber auch über den JS Adapterawait setStateAsync('sprinklecontrol.0.sprinkle.Rasenfläche_am_Beet.runningTime',7,false); await setStateAsync('sprinklecontrol.0.sprinkle.Rasenfläche_Vorgarten.runningTime',3,false); await setStateAsync('sprinklecontrol.0.sprinkle.Rasenfläche_am_Haus.runningTime',20,false);
oder
setState('sprinklecontrol.0.sprinkle.Rasenfläche_am_Beet.runningTime',7,false); setState('sprinklecontrol.0.sprinkle.Rasenfläche_Vorgarten.runningTime',3,false); setState('sprinklecontrol.0.sprinkle.Rasenfläche_am_Haus.runningTime',7,false);
oder
über die App auf deinem Handy IOB Mobile für ioBroker.
Sieht bei mir so aus:
Hoffe es hilft dir weiter. -
@dirk-peter
also ich kann in einem Schritt bei alle einzelne Ventile eine Running Time setzen und der Adapter schalte dann die Ventile nach einander wie es im Adapter vorgegeben ist.Die Reihenfolge der Schaltung ergibt sich dann aus den Einstellungen im Adapter,
- Reihenfolge der Ventile in der Übersicht
- maximale Anzahl der Ventile die gleichzeitig geöffnet sein dürfen.
-
@claus1993 sagte in Test Adapter Sprinkle Control 0.1.4 Latest:
also ich kann in einem Schritt bei alle einzelne Ventile eine Running Time setzen und der Adapter schalte dann die Ventile nach einander wie es im Adapter vorgegeben ist.
Ja, so ist es.
- Reihenfolge der Ventile in der Übersicht
Nein, die Reihenfolge wird von der Verbrauchsmenge der Ventile bestimmt. Diese ist in der Konfiguration hinterlegt.
- maximale Anzahl der Ventile die gleichzeitig geöffnet sein dürfen.
Ja und Nein.
- maximale Anzahl der Ventile die gleichzeitig geöffnet sein dürfen.
- maximale Pumpenleistung der verwendeten Pumpe.
Wenn deine Ventile aber immer mit der gleichen Zeit gestartet werden sollen, so kannst du dies in der Konfiguration hinterlegen. Dann legst du den Schalter
sprinklecontrol.0.control.autoOnOff auf autoOnOff = off (damit wird der automatische Start unterdrückt) und startest ab der Version 0.2.19 deine gesamte Bewässerung mit dem Taster sprinklecontrol.0.control.autoStart autoStart = true, also per Hand.