@Aidan
Da meine Ventile aktuell ausgebaut sind und Winterschlaf halten, hier ein theoretisches Beispiel, wie ich es bei Wiederinbetriebnahme mit meinen Ventilen (4 x Gardena über den Gardena Adapter ) lösen will.
Aktuell fehlen nur noch die "echten Ventile" im Blockly, die muß ich dann noch einfügen. Zum probieren habe ich mal eine Steckdose (Kaminlampe) eingebaut, damit hat es funktioniert. Ich nutze kein VIS, aber iQontrol, von daher sollte es auch mit VIS möglich sein. Über den Schieberegler bin ich von der Bewässerungslaufzeit flexibel.
Beispiel mit Lampe
Blockly Restlaufzeit noch ohne Ventilschaltung
<xml xmlns="http://www.w3.org/1999/xhtml">
<variables>
<variable type="undefined" id="vorn_links">vorn_links</variable>
<variable type="undefined" id="vorn_rechts">vorn_rechts</variable>
<variable type="undefined" id="seite">seite</variable>
<variable type="undefined" id="hinten">hinten</variable>
</variables>
<block type="procedures_defcustomnoreturn" id="eZsGA^2r{c%G,YpuLp]K" x="38" y="-113">
<mutation statements="false"></mutation>
<field name="NAME">Datenpunkte_erstellen</field>
<field name="SCRIPT">Ly9EYXRlbnB1bmt0IFJlc3RsYXVmemVpdCB2b3JuIGxpbmtzIGVyc3RlbGxlbgpjcmVhdGVTdGF0ZSgiRWlnZW5lX0RhdGVucHVua3RlLjExR2FyZGVuYS5CZXdhZXNzZXJ1bmcuMDFSZXN0bGF1ZnplaXRfdm9ybl9saW5rcyIsJzAnLCB7CiAgICBuYW1lOiAnMDFSZXN0bGF1ZnplaXQgdm9ybiBsaW5rcycsIAogICAgInVuaXQiOiAnTWludXRlbicsCiAgICAicm9sZSI6ICJsZXZlbCIsCiAgICAidHlwZSI6ICJudW1iZXIiLAogICAgInJlYWQiOiB0cnVlLAogICAgIndyaXRlIjogdHJ1ZSwKICAgICJtaW4iOiAwLAogICAgIm1heCI6IDEwMCwKICAgICJzbWFydE5hbWUiOiB7CiAgICAiZGUiOiAiQmV3w6Rzc2VydW5nIHZvcm4gbGlua3MiLAogICAgInNtYXJ0VHlwZSI6ICJMSUdIVCIsCiAgICAgICJieU9OIjogInN0b3JlZCIKfQp9KTsKCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgovL0RhdGVucHVua3QgUmVzdGxhdWZ6ZWl0IHZvcm4gcmVjaHRzIGVyc3RlbGxlbgpjcmVhdGVTdGF0ZSgiRWlnZW5lX0RhdGVucHVua3RlLjExR2FyZGVuYS5CZXdhZXNzZXJ1bmcuMDJSZXN0bGF1ZnplaXRfdm9ybl9yZWNodHMiLCcwJywgewogICAgbmFtZTogJzAyUmVzdGxhdWZ6ZWl0IHZvcm4gcmVjaHRzJywKICAgICJ1bml0IjogJ01pbnV0ZW4nLCAKICAgICJyb2xlIjogImxldmVsIiwKICAgICJ0eXBlIjogIm51bWJlciIsCiAgICAicmVhZCI6IHRydWUsCiAgICAid3JpdGUiOiB0cnVlLAogICAgIm1pbiI6IDAsCiAgICAibWF4IjogMTAwLAogICAgInNtYXJ0TmFtZSI6IHsKICAgICJkZSI6ICJCZXfDpHNzZXJ1bmcgdm9ybiByZWNodHMiLAogICAgInNtYXJ0VHlwZSI6ICJMSUdIVCIsCiAgICAgICJieU9OIjogInN0b3JlZCIKfQp9KTsKLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi8vRGF0ZW5wdW5rdCBSZXN0bGF1ZnplaXQgc2VpdGUgZXJzdGVsbGVuCmNyZWF0ZVN0YXRlKCJFaWdlbmVfRGF0ZW5wdW5rdGUuMTFHYXJkZW5hLkJld2Flc3NlcnVuZy4wM1Jlc3RsYXVmemVpdF9zZWl0ZSIsJzAnLCB7CiAgICBuYW1lOiAnMDNSZXN0bGF1ZnplaXQgc2VpdGUnLCAKICAgICJ1bml0IjogJ01pbnV0ZW4nLAogICAgInJvbGUiOiAibGV2ZWwiLAogICAgInR5cGUiOiAibnVtYmVyIiwKICAgICJyZWFkIjogdHJ1ZSwKICAgICJ3cml0ZSI6IHRydWUsCiAgICAibWluIjogMCwKICAgICJtYXgiOiAxMDAsCiAgICAic21hcnROYW1lIjogewogICAgImRlIjogIkJld8Okc3NlcnVuZyBzZWl0ZSIsCiAgICAic21hcnRUeXBlIjogIkxJR0hUIiwKICAgICAgImJ5T04iOiAic3RvcmVkIgp9Cn0pOwoKLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi8vRGF0ZW5wdW5rdCBSZXN0bGF1ZnplaXQgaGludGVuIGVyc3RlbGxlbgpjcmVhdGVTdGF0ZSgiRWlnZW5lX0RhdGVucHVua3RlLjExR2FyZGVuYS5CZXdhZXNzZXJ1bmcuMDRSZXN0bGF1ZnplaXRfaGludGVuIiwnMCcsIHsKICAgIG5hbWU6ICcwNFJlc3RsYXVmemVpdCBoaW50ZW4nLCAKICAgICJ1bml0IjogJ01pbnV0ZW4nLAogICAgInJvbGUiOiAibGV2ZWwiLAogICAgInR5cGUiOiAibnVtYmVyIiwKICAgICJyZWFkIjogdHJ1ZSwKICAgICJ3cml0ZSI6IHRydWUsCiAgICAibWluIjogMCwKICAgICJtYXgiOiAxMDAsCiAgICAic21hcnROYW1lIjogewogICAgImRlIjogIkJld8Okc3NlcnVuZyBoaW50ZW4iLAogICAgInNtYXJ0VHlwZSI6ICJMSUdIVCIsCiAgICAgICJieU9OIjogInN0b3JlZCIKfQp9KTsK</field>
<comment pinned="false" h="80" w="160">Datenpunkte erstellen</comment>
</block>
<block type="procedures_callcustomnoreturn" id="5Har+P[]9D2wa@;{`[=0" x="37" y="-63">
<mutation name="Datenpunkte_erstellen"></mutation>
<next>
<block type="on_ext" id="5/ptqACnYz31iOb-NbIW">
<mutation items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="WI]u4z@Dd;-@XNhr9^P_">
<field name="oid">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.01Restlaufzeit_vorn_links</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="2*@?}Ok8QqU52Qn2@`b!">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_compare" id="1[j|p(UE~h1DBn`5wJ7:">
<field name="OP">GT</field>
<value name="A">
<block type="get_value" id=",~`!us}{rO~uL:vb+.GT">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.01Restlaufzeit_vorn_links</field>
</block>
</value>
<value name="B">
<block type="math_number" id="cT_00-(:L^`+n7QY[iOy">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="timeouts_clearinterval" id="0#?|oZ2(djTEa5M`bis(">
<field name="NAME">vorn_links</field>
<next>
<block type="timeouts_setinterval" id="N~zH%wP-T4gSXPps3Z%+">
<field name="NAME">vorn_links</field>
<field name="INTERVAL">1</field>
<field name="UNIT">min</field>
<statement name="STATEMENT">
<block type="update" id="),nr)4;Lmn{BaM1NuYAW" inline="false">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.01Restlaufzeit_vorn_links</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_arithmetic" id="/R!`2TR~+**Vn)~Pc./7">
<field name="OP">MINUS</field>
<value name="A">
<shadow type="math_number" id="^!a,FZ33ph(GV#[e(EeR">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="B{.+NFC?uo|C@Y`/Zk2m">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.01Restlaufzeit_vorn_links</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="nh~,0m2g(HED8,CKti}b">
<field name="NUM">1</field>
</shadow>
<block type="math_number" id="^$v650r5yvYe!AWepgec">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="$L7^;}qtFM59DJmS.uAd">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="I1i?@9)BIUx(Piq1o_lC">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.01Restlaufzeit_vorn_links</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Qj+@a$rXruUrJoEDis@q">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="timeouts_clearinterval" id="hcE9(0dj(]g(S!62e={@">
<field name="NAME">vorn_links</field>
</block>
</statement>
</block>
</statement>
<next>
<block type="on_ext" id="yV7O,iTMgnS6WY)DszOR" collapsed="true">
<mutation items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="7DeV9B{3erWGW?%;A/[o">
<field name="oid">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.02Restlaufzeit_vorn_rechts</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="{]O#~b~1y#^t?#v7ITeV">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_compare" id="r6u|0a#mY)z;VvY%^j]v">
<field name="OP">GT</field>
<value name="A">
<block type="get_value" id="?5E$8fXw-7`WjmTY%|jj">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.02Restlaufzeit_vorn_rechts</field>
</block>
</value>
<value name="B">
<block type="math_number" id="HBWpVH90Kr7?9.V~tGFy">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="timeouts_clearinterval" id="u}b~a6RynBSedAtAlKdb">
<field name="NAME">vorn_rechts</field>
<next>
<block type="timeouts_setinterval" id="uXl[`oHMRYzNh8yz7c6X">
<field name="NAME">vorn_rechts</field>
<field name="INTERVAL">1</field>
<field name="UNIT">min</field>
<statement name="STATEMENT">
<block type="update" id="^8.?F`PkGbu;))ffNniu" inline="false">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.02Restlaufzeit_vorn_rechts</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_arithmetic" id="{E@kR!g;WJJlz+xzE=;)">
<field name="OP">MINUS</field>
<value name="A">
<shadow type="math_number" id="^!a,FZ33ph(GV#[e(EeR">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="adD7nI2@tpul$(BD`p~}">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.02Restlaufzeit_vorn_rechts</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="nh~,0m2g(HED8,CKti}b">
<field name="NUM">1</field>
</shadow>
<block type="math_number" id="xF)01v_HxKf|kB];32B?">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="K1^A4Ch;$`K^~D4(6cji">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="g5C#@1ZUCLO^q,8zESti">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.02Restlaufzeit_vorn_rechts</field>
</block>
</value>
<value name="B">
<block type="math_number" id=".nzWs{7)`nYK#fkK*%z~">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="timeouts_clearinterval" id="+?.x0!(gNEV1h*PJb#gZ">
<field name="NAME">vorn_rechts</field>
</block>
</statement>
</block>
</statement>
<next>
<block type="on_ext" id="|2_C=%-L|T{M^aaj]/1*" collapsed="true">
<mutation items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="o.XJOb5EKJ|mC?yM!IY9">
<field name="oid">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.03Restlaufzeit_seite</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="rZDMN!Ch4^vts2RCP7xW">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_compare" id="zin{pERQR!xve%Si1fqp">
<field name="OP">GT</field>
<value name="A">
<block type="get_value" id="9vyKWVk5Ffj:QyJxn;i.">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.03Restlaufzeit_seite</field>
</block>
</value>
<value name="B">
<block type="math_number" id="H`9;U`C,KNJ9uT1H9]Bf">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="timeouts_clearinterval" id="S8qm!UDsnYYx?~#zZ}Q2">
<field name="NAME">seite</field>
<next>
<block type="timeouts_setinterval" id="[=ZoL##yP[H-,p=h,sKf">
<field name="NAME">seite</field>
<field name="INTERVAL">1</field>
<field name="UNIT">min</field>
<statement name="STATEMENT">
<block type="update" id="%TV/06yhHpyMmsPu*(5w" inline="false">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.03Restlaufzeit_seite</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_arithmetic" id="kA.m3FB0AkCmidhSb()M">
<field name="OP">MINUS</field>
<value name="A">
<shadow type="math_number" id="^!a,FZ33ph(GV#[e(EeR">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="u~tQ9/XJ@l%+ck~gI;;p">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.03Restlaufzeit_seite</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="nh~,0m2g(HED8,CKti}b">
<field name="NUM">1</field>
</shadow>
<block type="math_number" id="x?oxO8JLeXIyp=gb]|_!">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="RwrPZ/zUQNN`Sx~Z;m:d">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="A.aFso1W+@#/ITn^N_{h">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.03Restlaufzeit_seite</field>
</block>
</value>
<value name="B">
<block type="math_number" id="VC5,eTPUe).E%DBpy]+q">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="timeouts_clearinterval" id="Yh!PpN)zW,?lU4UIHhoO">
<field name="NAME">seite</field>
</block>
</statement>
</block>
</statement>
<next>
<block type="on_ext" id="P+`W9S,LcsfDur5CEa)x" collapsed="true">
<mutation items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="Uz}Dv~6[O4mK].dLm!w[">
<field name="oid">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.04Restlaufzeit_hinten</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="P1M`?98GL2Oz3R:^Jrug">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_compare" id="bk~|OQ;v!J/iU0P=GMAg">
<field name="OP">GT</field>
<value name="A">
<block type="get_value" id="6lI[S?BUA+7).3A7;UF-">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.04Restlaufzeit_hinten</field>
</block>
</value>
<value name="B">
<block type="math_number" id="v$JF9zv{[6tgGfVc$YA0">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="timeouts_clearinterval" id="Um0%bUH*ddA@D`YT5G}J">
<field name="NAME">hinten</field>
<next>
<block type="timeouts_setinterval" id="[]ZfY/y~?[eL$fXt$6]^">
<field name="NAME">hinten</field>
<field name="INTERVAL">1</field>
<field name="UNIT">min</field>
<statement name="STATEMENT">
<block type="update" id="p:Sb;|$v]XLKc?]}(:+I" inline="false">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.04Restlaufzeit_hinten</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="math_arithmetic" id="h3_xZ/~#?/(wvJqdOS)I">
<field name="OP">MINUS</field>
<value name="A">
<shadow type="math_number" id="^!a,FZ33ph(GV#[e(EeR">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="VgTBr?x(*n=ff+2W[RC`">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.04Restlaufzeit_hinten</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="nh~,0m2g(HED8,CKti}b">
<field name="NUM">1</field>
</shadow>
<block type="math_number" id="1i/raxF_@ze*TBjI?$.@">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="YG+ug3_@*qJ6aP`YPVLl">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="kkyhtu]v?7~+)~IA1yPd">
<field name="ATTR">val</field>
<field name="OID">javascript.0.Eigene_Datenpunkte.11Gardena.Bewaesserung.04Restlaufzeit_hinten</field>
</block>
</value>
<value name="B">
<block type="math_number" id="0R~[//jAu:jY;gtL85;3">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="timeouts_clearinterval" id="ed03Rhn(4wM+]sdNS3US">
<field name="NAME">hinten</field>
</block>
</statement>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</xml>
Edit: Die Datenpunkte werden in diesem Blockly mit der Rolle level und min 0 max 100 erstellt, sowie die Datenpunkte in iot werden als Licht deklariert. Dann ist auch die Bedienung per Sprache mit Alexa gut möglich.
Beispiel bei level von 0-100
Alexa, Bewässerung hinten auf 30 Prozent (ergibt dann 30 Minuten) Über diesen Weg wären dann max 100 Minuten möglich.
An und aus geht dann auch.
EDIT2: Ich habe das Blockly oben jetzt aktualisiert.