NEWS
Osmose Dosierung }}} Problem {{{
-
Ich habe ein Riesen Problem, seid mehreren Tagen dosiert mein Magnetventil nicht mehr.
Wenn ich den Schwimmer einmal kurz von hand betätige praktisch ins auf den Zustand 0 bringe
wird für 1-2 sek dosiert aber nicht mehr so lange bis der schwimmer false ist.
Hier ist mein aktuelles Script erstellt von Paul53.
Die Osmose Freigabe steht auf true und Restzeit ist auch vorhanden.
Mechanisch habe ich den Schwimmer getestet er ist abfallend im true und oben auf false.
Was ist hier falsch!?const idRestzeit = '0_userdata.0.Aqua_Control.0.Osmose_System.Osmose.Restzeit'; const text_ein = ['Filter Max unterschritten, Skimmer & Osmose','\n','wurden wieder eingeschaltet'].join(''); const text_aus = ['Filter Max erreicht, Skimmer & Osmose','\n','wurden abgeschaltet'].join(''); createState(idRestzeit, 500, {type: 'number', unit: 's'}); var Osmosefreigabe = !getState('sonoff.0.Aqua_Float.POWER4').val; var Schwimmer = getState("sonoff.0.Aqua_Float.POWER1").val; var Restzeit, timeout_aus, timeout_ein, Magnetventil_Kontrolle; function Magnetventil_Ein() { if (!Magnetventil_Kontrolle && Restzeit > 0 && Osmosefreigabe) { Magnetventil_Kontrolle = setInterval(function () { if (Restzeit > 0 && Schwimmer && Osmosefreigabe) { Restzeit--; setState(idRestzeit, 2 * Restzeit, true); } else { setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, false); clearInterval(Magnetventil_Kontrolle); Magnetventil_Kontrolle = null; } }, 2000); setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, true); } } // Skripstart setTimeout(function() { Restzeit = getState(idRestzeit).val / 2; if(Schwimmer && Osmosefreigabe) Magnetventil_Ein(); else setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, false); }, 200); var entprell = null; on({id: 'sonoff.0.Aqua_Float.POWER1', change: "ne"}, function (obj) { log('Schwimmer: ' + obj.state.val) if(entprell) { clearTimeout(entprell); entprell = null; } entprell = setTimeout(function() { Schwimmer = obj.state.val; if(Schwimmer) Magnetventil_Ein(); else setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, false); }, 2000); // 2 s }); schedule("0 0 * * *", function () { Restzeit = 250; setState(idRestzeit, 500, true); if(Schwimmer) Magnetventil_Ein(); }); on({id: 'sonoff.0.Aqua_Float.POWER4', change: "ne"}, function (obj) { if (obj.state.val) { timeout_aus = setTimeout(function () { Osmosefreigabe = false; setState("sonoff.0.Aqua_Power.POWER3"/*Aqua_Power_Skimmer*/, false); setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, false); }, 5000); if (timeout_ein) { clearTimeout(timeout_ein); timeout_ein = null; } } else { timeout_ein = setTimeout(function () { Osmosefreigabe = true; if(Schwimmer) Magnetventil_Ein(); setStateDelayed("sonoff.0.Aqua_Power.POWER3"/*Aqua_Power_Skimmer*/, true, 10000); }, 10000); if (timeout_aus) { clearTimeout(timeout_aus); timeout_aus = null; } } }); on({id: 'sonoff.0.Aqua_Power.POWER3', change: "ne"}, function (obj) { var txt; if (obj.state.val) txt = text_ein; else txt = text_aus; sendTo("telegram.4", "send", { text: txt }); log(txt); });
Vielleicht kannst du @paul53 auch mal drüber gucken. Du kennst deine Scripte am besten.
Es ist echt dringend, da ich jeden Tag um die 8 Liter nachkippen muss und dadurch der Salzgehalt im Becken täglich drastisch schwankt.Danke im Vorraus
-
@aphofis sagte: seid mehreren Tagen dosiert mein Magnetventil nicht mehr.
Wenn es vor einigen Tagen noch funktioniert hat und das Skript seitdem nicht verändert wurde, kann sich nur das Verhalten der Hardware verändert haben. Füge ein paar Logs ein, um zu sehen, was passiert.
-
@paul53
Wie soll ich denn Logs einfügen ich habe von JavaScript null Ahnung -
@aphofis
Der Schwimmer liefert schon ein Log. Passt das Verhalten?
Dann sollte auch noch "POWER4" geloggt werden.on({id: 'sonoff.0.Aqua_Float.POWER4', change: "ne"}, function (obj) { log('POWER4: ' + obj.state.val);
-
@paul53
ist es so korrektschedule("0 0 * * *", function () { Restzeit = 250; setState(idRestzeit, 500, true); if(Schwimmer) Magnetventil_Ein(); }); on({id: 'sonoff.0.Aqua_Float.POWER4', change: "ne"}, function (obj) { log('POWER4: ' + obj.state.val); if (obj.state.val) { timeout_aus = setTimeout(function () { Osmosefreigabe = false; setState("sonoff.0.Aqua_Power.POWER3"/*Aqua_Power_Skimmer*/, false); setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, false); }, 5000);
-
@aphofis sagte: ist es so korrekt
Ja.
-
@paul53
Finde ich die Log dann ganz normal in den Logs ?
Ich glaube das läuft nicht mehr seid dem ich den Aktuellen JS-Controller Stable aktualisiert hatte -
@aphofis sagte: Finde ich die Log dann ganz normal in den Logs ?
Ja, und unterhalb des Skripts im Editor.
-
@paul53
Weder im Script noch in der System Log wird etwas angezeigt.
Der schwimmer ist true und es wird nichts dosiert. -
@aphofis sagte: Weder im Script noch in der System Log wird etwas angezeigt.
Dann wird offenbar nicht getriggert und es scheint somit ein grundsätzliches Problem zu sein, das nicht nur das eine Skript betrifft.
-
@paul53
nur wo kann das problem liegen?
Wenn ich den Schwimmer manuell ins false bringe wird dieser auch im sonoff adapter unter dem Gerät als false angezeigt nur die steuerung triggert nicht und aktiviert das Magnetventil -
@aphofis
Dann erstelle mal ein Testskript, das nur feststellt, ob der Schwimmer triggert, wenn er betätigt wird:on('sonoff.0.Aqua_Float.POWER1', function(dp) { log('Test Schwimmer: ' + dp.state.val) });
-
@paul53 sagte in Osmose Dosierung }}} Problem {{{:
on('sonoff.0.Aqua_Float.POWER1', function(dp) {
Der Schwimmer triggert
Nur was mir aufgefallen ist laut deines scripts wo soll da der Datenpunkt Osmosefreigabe liegen !?
Wenn der schwimmer unten ruht steht er auf true weil wasserstand zu niedrig, wenn ich denn dann ziehe also ins false bringe dosiert das Magnetventil für 0,5-1 sek und stoppt das macht das dann 2 mal beim manuellen betätigen danach ist schluss -
@aphofis sagte: wo soll da der Datenpunkt Osmosefreigabe liegen !?
var Osmosefreigabe = !getState('sonoff.0.Aqua_Float.POWER4').val;
-
@paul53
OK Filter Niveau Max steht auf false ist unten auch richtig so.
Habe die ESPs und Relais Karte manuell getestet mit gebrückten Schwimmer anschlüßen bei allen relevanten Geräten kommen auch 12 Volt an also Relais karte funktioniert und Schaltzustände der ESPs sind auch korrekt. -
@paul53
oder ist es ein Problem wie du mal sagtest, dasconst idRestzeit = '0_userdata.0.Aqua_Control.0.Osmose_System.Osmose.Restzeit';
nicht im Javascript ordner liegt !?
-
@aphofis sagte: ist es ein Problem wie du mal sagtest, das
const idRestzeit = '0_userdata.0.Aqua_Control.0.Osmose_System.Osmose.Restzeit';
nicht im Javascript ordner liegt !?
Nein.
Überwache mal den Magnetventil-Datenpunkt in einem Prüfskript:
on({id: 'sonoff.0.Aqua_Control.POWER1'}, function(dp) { log('Magnetventil: ' + dp.state.val + ', Ack: ' + dp.state.ack + ', Quelle: ' + dp.state.from); });
-
@paul53
wenn ich den schwimmer ziehe kommt nur das
oder soll ich das magnetventil manuel per ESP schalten !? -
@aphofis
Wenn der Schwimmer nach ca. 1 s wieder auf false zurück geht, wird das Magnetventil nicht aktiviert, da erst die Entprellzeit von 2 s vergehen muss. -
@paul53
was heisst das jetzt im klartext!?Ich teste morgen mal das magnetventil ob das einen defekt hat.
Bei Meerwasser weiss man nie! Das Magnet Ventil ist zwar in einem Kunststoff gehäuse eingebaut aber Seeluft mit Salz kommt ja in der Technik in jede Ritze.