NEWS
[gelöst] Zeitsteuerung in millisekunden
-
Hallo Scripter!!!
Vielleicht, kann mir jemand weiter helfen.
Ich würde gerne ein Gerät für millisekunden einschalten und das zu bestimmten Zeiten am Tag.
Natürlich wäre es Spitze, wenn ein Datenpunkt erzeugt wird in den der Wert eingetragen wird.
Folgendes habe ich vor:
ESP8266 mit Sonoff Tasmota geflashed, da klemmt ein 8 fach Relais dran an dem 8 Dosierpumpen hängen.
Ich möchte das eine dosierpumpe 6 mal am Tag für zb 1,6 sekunden pumpt und somit insgesamt 12 ml am tag pumpt. Der Wert wie viel ml und millisekunden muss im Zusammenhang stehen also eine Variable zb 1600 ms = 2 ml bzw 1,6 sek = 2 ml
damit ich später dann über VIS den wert wie viel ml dosiert werden soll eintragen kann und klasse wäre natürlich wenn man auch die zeit eintragen könnte und die dann auch in dem datenpunkt übernommen wird. Also auch in dem Blockly Script.
da sich die dosierungen je nach Wasserwerten ändern, muss ich diese Werte ändern!
Anfangs wäre es natürlich nicht schlimm wenn das ganze nur über Blockly läuft! Hauptsache ist das es überhaupt läuft.
Dazu muss dann aber im Script zb das täglich von 0:00-0:00 nicht mehr als dann eingetragen 12 ml max dosiert wird. Da sich dann wieder die Wasser werte ändern.
Doch wie man das bewerkstelligt, weiß ich nicht.P.S.
Ja das Netzteil wird noch fest angebracht und es sind nur zwei Pumpen (Motoren) eingebaut zum testen.
Ich bin für jede Hilfe dankbar. -
Ich bin jetzt nicht der Hardcore-Skripter, aber ich denke, die bessere Lösung wäre, wenn du den kritischen Teil mit der Dauer des Pumpens besser über eine Schaltung direkt an deinem Projekt steuerst und nur den Startbefehl dafür über das Netzwerk sendest. Ansonsten könnte es dir passieren, dass, je nach Netzwerkauslastung die Pumpen zu lange pumpen oder gar nicht ausgehen.
-
@Aphofis du musst das auf jedenfalls auf dem ESP ausführen, bei so kurzen Zeiten bekommst du ein Problem mit dem Timing.
-
@Jey-Cee
Ich hatte jetzt 3 Wochen lang zwei pumpen am laufen!
Pumpe 1 braucht 1600 ms für 2 ml
Pumpe 2 braucht 1520 ms für 2 ml
Hab die pumpen vorher Kalibriert also die Zeit genommen für 50 und 100 ml und es kommt perfekt hin.
getestet mit normalen Tages abläufen also 6 mal am Tag je 2 ml
sind 24 ml am Tag.
Hab jeden Tag im kommenden Meßbecher 50 ml eingefüllt und im endenden Meßbecher jeden Tag also nach 6 dosierungen geguckt und nach 3 Wochen waren definitiv 500 ml im endenden Meßbecher na klar etwas weniger durch Verdunstung
aber täglich waren es nie mehr oder weniger als 24 ml und es gab auch keine Störungen trotz das der Iobroker oder der Pi mal neu gestartet sind.
Ich denke es läuft sehr sauber nur wäre es natürlich top wenn man das zb mit einer übergreifenden regel im Blockly script definiert.
Das dann zb in 24 Std nur 12 ml je Pumpe also max 9600 ms das Relais gezogen sein darf.
In den Tasmota Einstellungen kann man zwar zeitpläne eintragen aber nicht wie lange an bis aus.
Alle 8 Pumpen Motoren laufen über ein ESP8266 also nur die Motoren
über eine 8fach Relais Karte. -
steuere gerät mit true
steuere gerät mit false mit zeitverzögerung.
that's it -
So das Gerät ist bis auf eine Dosierpumpe zusammengebaut und im Betrieb.
var clock, Dauer, Uhrzeit, schedule, Intervall; /** * Beschreibe diese Funktion … */ function L_C3_B6sung_1() { Dauer = parseFloat(getState("Aqua_Control.0.Triton.Lösung_1.Faktoren.Lösung_1_Faktor_3").val); setState("sonoff.0.Aqua_Dosierer.POWER1"/*Aqua_Dosierer_Pumpe_1*/, true); // Intervalldauer = Faktor Intervall = setInterval(function () { Dauer = (typeof Dauer == 'number' ? Dauer : 0) + -1; if (Dauer <= 0) { (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})(); setState("sonoff.0.Aqua_Dosierer.POWER1"/*Aqua_Dosierer_Pumpe_1*/, false); sendTo("telegram.0", "send", { text: (['Triton Lösung 1 ','\n',getState("Aqua_Control.0.Triton.Lösung_1.Faktoren.Lösung_1_Faktor_3").val,' ml dosiert'].join('')) }); } }, 806); } /** * Beschreibe diese Funktion … */ function setUhr(clock) { Uhrzeit = clock.split(':'); schedule = schedule((Uhrzeit[1]).trim() + ' ' + (Uhrzeit[0]).trim() + ' ' + '*'.trim() + ' ' + '*'.trim() + ' ' + '*'.trim(), function () { L_C3_B6sung_1(); }); } setUhr(getState("Aqua_Control.0.Triton.Lösung_1.Uhrzeiten.Lösung_1_Uhrzeit_1").val); on({id: 'Aqua_Control.0.Triton.Lösung_1.Uhrzeiten.Lösung_1_Uhrzeit_1', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; (function () {if (schedule) {clearSchedule(schedule); schedule = null;}})(); setUhr((obj.state ? obj.state.val : "")); });
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="snfLpaddd`4/)Uy^kLsW">clock</variable> <variable type="" id=")bAD/?%{s?q44~ZGe7{B">Dauer</variable> <variable type="" id="iQ`n%m6-[L_B242P|7rW">Uhrzeit</variable> <variable type="undefined" id="schedule">schedule</variable> <variable type="undefined" id="Intervall">Intervall</variable> </variables> <block type="procedures_callnoreturn" id="3a)9A+{U=BTerQFdk^7e" x="-3287" y="-1587"> <mutation name="setUhr"> <arg name="clock"></arg> </mutation> <value name="ARG0"> <block type="get_value" id="Rmv(=Tg+:6/}8B(?~nI#"> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.Triton.Lösung_1.Uhrzeiten.Lösung_1_Uhrzeit_1</field> </block> </value> <next> <block type="on_ext" id="X}o|@dWx#6!BiHho8e)o"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="dXPC7;GFYg(#~T78}@mB"> <field name="oid">Aqua_Control.0.Triton.Lösung_1.Uhrzeiten.Lösung_1_Uhrzeit_1</field> </shadow> </value> <statement name="STATEMENT"> <block type="schedule_clear" id="nt-N]NBg?,fY%.)hYJ4D"> <field name="NAME">schedule</field> <next> <block type="procedures_callnoreturn" id="yvhs4uL6uUxnW!c$UF/{"> <mutation name="setUhr"> <arg name="clock"></arg> </mutation> <value name="ARG0"> <block type="on_source" id="SfI,}teG@`dg#_g%Zp#:"> <field name="ATTR">state.val</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> <block type="procedures_defnoreturn" id="jE$gVVpa7!Xtx{X@H^Fd" x="-3287" y="-1312"> <field name="NAME">Lösung_1</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="variables_set" id="9kptcK|P^2:}bKZXyZ8f"> <field name="VAR" id=")bAD/?%{s?q44~ZGe7{B" variabletype="">Dauer</field> <value name="VALUE"> <block type="convert_tonumber" id="Tj/%:}sl8v})GfkG,zO:"> <value name="VALUE"> <block type="get_value" id=".,XzJi)h(f$9$~(`H$I!"> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.Triton.Lösung_1.Faktoren.Lösung_1_Faktor_3</field> </block> </value> </block> </value> <next> <block type="control" id="%}iPzHc5tUi.(P1_MvRo"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Aqua_Dosierer.POWER1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="SM.e~4#O=p?c/SXA|JX%"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="comment" id="KV;?nPX*TAluqR-qF9f+"> <field name="COMMENT">Intervalldauer = Faktor</field> <next> <block type="timeouts_setinterval" id="1+dIQ5^rJM?nkaI[6WN}"> <field name="NAME">Intervall</field> <field name="INTERVAL">806</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="math_change" id="!*zN$DgW0K=76_[.1*]X"> <field name="VAR" id=")bAD/?%{s?q44~ZGe7{B" variabletype="">Dauer</field> <value name="DELTA"> <shadow type="math_number" id="e_D7=bSd65:`]Q{qWSZD"> <field name="NUM">-1</field> </shadow> </value> <next> <block type="controls_if" id="=/[;A-M~WF?KXEx~W0z?"> <value name="IF0"> <block type="logic_compare" id=";qY,PC)CB~{1#4iVHaj,"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="2k;4KgTu$A3wF)@V`ulP"> <field name="VAR" id=")bAD/?%{s?q44~ZGe7{B" variabletype="">Dauer</field> </block> </value> <value name="B"> <block type="math_number" id="?bnhw6qVm`$}~NCKlw2P"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_clearinterval" id=";dz/hf`o4]4(2pDSH)I3"> <field name="NAME">Intervall</field> <next> <block type="control" id="SeaFI}%xNdyzRbLV,6HN"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Aqua_Dosierer.POWER1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="1_[)-;0}n;LMH}tCmhi:"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="telegram" id="N)tO@5NbhTtUeW(4MtBo"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="R8/w|SSi{cj7,4lDKwe["> <field name="TEXT">text</field> </shadow> <block type="text_join" id="Jm8OpAELrwceT@g35lf{"> <mutation items="4"></mutation> <value name="ADD0"> <block type="text" id="CM1{{J8!7VItB4D8j3B8"> <field name="TEXT">Triton Lösung 1 </field> </block> </value> <value name="ADD1"> <block type="text_newline" id="o]Q2(%iBw$/9I:?8IyZw"> <field name="Type">\n</field> </block> </value> <value name="ADD2"> <block type="get_value" id="f]$r3U;[8ohFZ.8I[asH"> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.Triton.Lösung_1.Faktoren.Lösung_1_Faktor_3</field> </block> </value> <value name="ADD3"> <block type="text" id="Jxd~DTQ,y3LUt8En2!}Y"> <field name="TEXT"> ml dosiert</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="procedures_defnoreturn" id="fK5kmsd)LwZ7|P2xa^9U" x="-3287" y="-762"> <mutation> <arg name="clock" varid="snfLpaddd`4/)Uy^kLsW"></arg> </mutation> <field name="NAME">setUhr</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="variables_set" id="aOx5`vU/=f;#)rmrW[|7"> <field name="VAR" id="iQ`n%m6-[L_B242P|7rW" variabletype="">Uhrzeit</field> <value name="VALUE"> <block type="lists_split" id="XnqDHu5JM{#WIs8~S,M-"> <mutation mode="SPLIT"></mutation> <field name="MODE">SPLIT</field> <value name="INPUT"> <block type="variables_get" id="4`T;i0Hg@f?=Gq^,J6.~"> <field name="VAR" id="snfLpaddd`4/)Uy^kLsW" variabletype="">clock</field> </block> </value> <value name="DELIM"> <shadow type="text" id="]v!xP8l3r?{D;(m_QyNL"> <field name="TEXT">:</field> </shadow> </value> </block> </value> <next> <block type="schedule_create" id="6x%+6G+PaD[w*{FuFm=K"> <field name="NAME">schedule</field> <value name="SCHEDULE"> <shadow type="field_cron" id="m4F75|F$}NA}2;e/avWa"> <field name="CRON">* * * * *</field> </shadow> <block type="cron_builder" id="q6(U2T{7uu}mYF)9QMKr"> <mutation seconds="false" as_line="false"></mutation> <field name="LINE">FALSE</field> <field name="WITH_SECONDS">FALSE</field> <value name="DOW"> <shadow type="text" id=")8oVcqHY5re?jv#0QsO8"> <field name="TEXT">*</field> </shadow> </value> <value name="MONTHS"> <shadow type="text" id="GfQ!DoE|TZTliq*)8,@j"> <field name="TEXT">*</field> </shadow> </value> <value name="DAYS"> <shadow type="text" id="S6hVuxIjcYJMlS^~:zE5"> <field name="TEXT">*</field> </shadow> </value> <value name="HOURS"> <shadow type="text" id="NP{*G*@dWEP9M9mNlZFF"> <field name="TEXT">*</field> </shadow> <block type="lists_getIndex" id="-0gZ}|H=8/}~St}d%rl;"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="8U#M]$`MHq(~A]~(v{2R"> <field name="VAR" id="iQ`n%m6-[L_B242P|7rW" variabletype="">Uhrzeit</field> </block> </value> <value name="AT"> <block type="math_number" id=")zFTxG~Gpp`eZw8r2,8w"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="MINUTES"> <shadow type="text" id="I(LCmtz/NJ%:Tvp,*;JL"> <field name="TEXT">*</field> </shadow> <block type="lists_getIndex" id="0([.HRKLsVPA.X:jwVI@"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="8#E0pY-UET(BcZH]~qB:"> <field name="VAR" id="iQ`n%m6-[L_B242P|7rW" variabletype="">Uhrzeit</field> </block> </value> <value name="AT"> <block type="math_number" id=";UF-jK:^cV#hui?GDL/V"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </value> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="/6qq{?/)+*vm:UnA$x,0"> <mutation name="Lösung_1"></mutation> </block> </statement> </block> </next> </block> </statement> </block> </xml>