NEWS
Schwimmer träge machen???
-
@paul53
also könnte ich das so realisieren ???<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="m)7Im6q=OM@`E$B^zJA8">Entpreller</variable> <variable type="undefined" id="timeout">timeout</variable> </variables> <block type="variables_set" id="cZx[D;c!8dg?hRD%Cg?C" x="-1638" y="-862"> <field name="VAR" id="m)7Im6q=OM@`E$B^zJA8" variabletype="">Entpreller</field> <value name="VALUE"> <block type="math_number" id="IEej!n.DBgjZpSIu?V6l"> <field name="NUM">0</field> </block> </value> <next> <block type="on" id="NpCJd9st%*${~aYJ98s_"> <field name="OID">sonoff.0.Aqua_Float.POWER3</field> <field name="CONDITION">gt</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="{6HESZ~.#;Tt=Qu7~LSG"> <value name="IF0"> <block type="logic_operation" id="I@jN(=SGo3[x{rE!}IGF" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="mjT6Z`Ol_zp?c%RdLO:`"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id=")@y(-D~Du-s~Al}sBS3x"> <field name="VAR" id="m)7Im6q=OM@`E$B^zJA8" variabletype="">Entpreller</field> </block> </value> <value name="B"> <block type="math_number" id="Bg|**1#RYqGr;wlEm;*s"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="S!Dj!NhgM6U+[TS1?VS$"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id=",D4B1|wSr6}o9K.nAxZR"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="ALsBR.mLXLdrn|9vvlCQ"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="j9bqc1L@RRUY0N`KI_CP"> <field name="VAR" id="m)7Im6q=OM@`E$B^zJA8" variabletype="">Entpreller</field> <value name="VALUE"> <block type="math_number" id="I/5qJ9],h_LPd_wcT!3J"> <field name="NUM">1</field> </block> </value> <next> <block type="control" id="VnjQxNIYwLDlo[I%P%ir"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Aqua_Control.POWER2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="4B!lWyTt6#V^uhJLbS2V"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_settimeout" id="ds(P.J-;H|$.}q4@${q7"> <field name="NAME">timeout</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="variables_set" id="|4xmLfQou}Qm,nl}:W?@"> <field name="VAR" id="m)7Im6q=OM@`E$B^zJA8" variabletype="">Entpreller</field> <value name="VALUE"> <block type="math_number" id="VkR;uUUm~0YKAg{R:vOk"> <field name="NUM">0</field> </block> </value> <next> <block type="control" id="`-{Ks@NkjVxcq_oMUiWO"> <mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Aqua_Control.POWER2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="_]ypttal!yH89J7?)A-e"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </xml>
var Entpreller, timeout; Entpreller = 0; on({id: "sonoff.0.Aqua_Float.POWER3"/*Vliesfilter_Normal*/, change: "gt"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (Entpreller == 0 && (obj.state ? obj.state.val : "") == true) { Entpreller = 1; setState("sonoff.0.Aqua_Control.POWER2"/*Vliesmotor*/, true); timeout = setTimeout(function () { Entpreller = 0; setState("sonoff.0.Aqua_Control.POWER2"/*Vliesmotor*/, false); }, 2000); } });
-
@Aphofis sagte:
also könnte ich das so realisieren ???
Soll der Vliesmotor wirklich schon nach 2 s wieder abschalten ?
-
@paul53
Naja er soll nur anspringen wenn der Schwimmer definitiv im true zustand ist und dann auch nur so lange bis der schwimmer auf false wechselt. Da durch Einströmendes Wasseer dieser Zustand schwer zu ermitteln ist, wäre so eine entprellung schon gut, damit der Motor nicht immer nur für ein paar millisekunden anspringt und im Enteffekt garnicht gedreht wird.
Vlies Schwimmer Video
Wenn die Server Qualität ausreicht ist vielleicht ein Video ganz hilfreich, damit man es sich besser vorstellen kann, was ich mit dem schwankendem Wasser meine. links der große Schwimmer ist für Vliesfilter Max und der kleine in der mitte ist der Schwimmer der den Vliesmotor betätigen soll. Der aber ständig angetippt wird durch das Wasser. -
@Aphofis sagte:
wenn der Schwimmer definitiv im true zustand ist und dann auch nur so lange bis der schwimmer auf false wechselt.
Dann würde ich erst schalten, wenn der Schwimmerschalter für eine bestimmte Zeit einen konstanten Wert hat, also so:
-
@FredF
Wenn auf "ist größer als letztes" getriggert wird, kann die Abfrage "und Wert = wahr" entfallen, denn sie ist bereits in der Triggerbedingung enthalten. -
@paul53
OK ich teste mal -
Das ja mal sehr simpel! aufgebaut
-
Wann wird dann der Motor eingeschaltet wenn schwimmer 2 sek. auf true steht und wann wird der Motor wieder abgeschaltet!?
-
@Aphofis sagte:
wann wird der Motor wieder abgeschaltet!?
Wenn der Schwimmer 2 s lang auf false stand.
-
@paul53 ok!
-
ist es vielleicht möglich diese beiden steuerungen zusammen zu führen ?
Damit der motor nur dreht wenn wirklich true ist und auch nicht mehr als 50 cm am Tagvar Restzeit, Vliesmotor_Kontrolle, Vliesmotor_Kontrolle; /** * Beschreibe diese Funktion … */ function Vliesmotor_Ein() { if (!Vliesmotor_Kontrolle && Restzeit > 0) { Vliesmotor_Kontrolle = setInterval(function () { if (Restzeit > 0 && getState("sonoff.0.Aqua_Float.POWER3").val) { Restzeit = (typeof Restzeit == 'number' ? Restzeit : 0) + -1; } else { setState("sonoff.0.Aqua_Control.POWER2"/*Vliesmotor*/, false); (function () {if (Vliesmotor_Kontrolle) {clearInterval(Vliesmotor_Kontrolle); Vliesmotor_Kontrolle = null;}})(); } }, 2000); setState("sonoff.0.Aqua_Control.POWER2"/*Vliesmotor*/, true); } } Restzeit = 25; Vliesmotor_Kontrolle = null; on({id: 'sonoff.0.Aqua_Float.POWER3', change: "gt"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Vliesmotor_Ein(); }); schedule("0 0 * * *", function () { Restzeit = 25; if (getState("sonoff.0.Aqua_Float.POWER3").val) { Vliesmotor_Ein(); } });
var timeout; on({id: "sonoff.0.Aqua_Float.POWER3"/*Vliesfilter_Normal*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); timeout = setTimeout(function () { setState("sonoff.0.Aqua_Control.POWER2"/*Vliesmotor*/, (obj.state ? obj.state.val : "")); }, 2000); });
-
@Aphofis sagte:
ist es vielleicht möglich diese beiden steuerungen zusammen zu führen ?
Ist es.
const idSchwimmer = 'sonoff.0.Aqua_Float.POWER3'; const idMotor = 'sonoff.0.Aqua_Control.POWER2'; var schwimmer = getState(idSchwimmer).val; var restzeit = 25; var entprell = null; var intervall = null; function Vliesmotor() { if(schwimmer) { if (!intervall && restzeit > 0) { setState(idMotor, true); intervall = setInterval(function () { if (restzeit > 0 && schwimmer) { restzeit--; } else { setState(idMotor, false); clearInterval(intervall); intervall = null; } }, 2000); } } else if(getState(idMotor).val) setState(idMotor, false); } Vliesmotor(); // Skriptstart on(idSchwimmer, function(dp) { if(entprell) clearTimeout(entprell); entprell = setTimeout(function() { schwimmer = dp.state.val; Vliesmotor(); }, 2000); }); schedule('0 0 * * *', function () { restzeit = 25; Vliesmotor(); });
-
@paul53
Magst du das in Blockly Blöcken hier rein packen???
Danke -
-
@paul53
Dankeschön -
Ist es so korrekt ???
var schwimmer, restzeit, Intervall, timeout, Intervall; /** * Beschreibe diese Funktion … */ function Vliesmotor() { if (schwimmer) { if (!Intervall && restzeit > 0) { setState("sonoff.0.Aqua_Control.POWER2"/*Vliesmotor*/, true); Intervall = setInterval(function () { if (restzeit > 0 && schwimmer) { Intervall = (typeof Intervall == 'number' ? Intervall : 0) - 1; } else { setState("sonoff.0.Aqua_Control.POWER2"/*Vliesmotor*/, false); (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})(); } }, 2000); } } else if (getState("sonoff.0.Aqua_Control.POWER2").val) { setState("sonoff.0.Aqua_Control.POWER2"/*Vliesmotor*/, false); } } schwimmer = getState("sonoff.0.Aqua_Float.POWER3").val; restzeit = 25; on({id: 'sonoff.0.Aqua_Float.POWER3', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); timeout = setTimeout(function () { schwimmer = (obj.state ? obj.state.val : ""); Vliesmotor(); }, 2000); }); schedule("0 0 * * *", function () { restzeit = 25; Vliesmotor(); }); Vliesmotor();
-
@Aphofis sagte:
Ist es so korrekt ???
Nicht ganz: Du hast zwei Variablen Intervall und zählst eine davon runter anstelle von restzeit (Zeile 12).
-
@paul53
also so ??? -
-
@paul53
Mann o Mann
ja fehler gefunden.
Sag mal würdest du mir vielleicht bei meiner PWM Steuerung mit den Strömungspumpen helfen!?
Ich hatte zwar mal zwischen Pin 1 und 3 am DIN 5 Pol kabel gemessen das an dem Controller hängt wo einer aktive Pumpe gesteuert wird nur gab es da keine Volt anzeige. normal was ich im Netz gefunden habe soll der Tunze Controller über Pin 1 und 3 die 0-8 Volt PWM Steuerung haben. Sprich um die Pumpen ohne den Multi Controller zu steuern.