NEWS
[gelöst] Osmose Wasser Aktuell & Max Verbrauch
-
@Aphofis
Javascript-Code, Zeile 1: Es gibt 2 Variablen mit dem Bezeichner Magnetventil_Kontrolle ! -
@paul53
und was mache ich da jetzt!?
falsche Variable gelöschtvar Restzeit, Magnetventil_Kontrolle, timeout; /** * Beschreibe diese Funktion … */ function Magnetventil_Ein() { if (!Magnetventil_Kontrolle && Restzeit > 0) { Magnetventil_Kontrolle = setInterval(function () { if (Restzeit > 0 && getState("sonoff.0.Aqua_Float.POWER1").val) { Restzeit = (typeof Restzeit == 'number' ? Restzeit : 0) + -1; } else { setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, false); (function () {if (Magnetventil_Kontrolle) {clearInterval(Magnetventil_Kontrolle); Magnetventil_Kontrolle = null;}})(); sendTo("telegram.0", "send", { text: ('Magnetventil ist eingeschaltet') }); } }, 2000); setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, true); timeout = setTimeout(function () { sendTo("telegram.0", "send", { text: ('Magnetventil ist ausgeschaltet') }); }, 4000); (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); } } Restzeit = 150; Magnetventil_Kontrolle = null; on({id: 'sonoff.0.Aqua_Float.POWER1', change: "gt"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Magnetventil_Ein(); }); schedule("0 0 * * *", function () { Restzeit = 150; if (getState("sonoff.0.Aqua_Float.POWER1").val) { Magnetventil_Ein(); } });
-
-
@paul53
Ja habe ich mir auch gedacht. Nur wie die zweite Variable entstanden ist keine Ahnung.
vllt tomatos on my eyes
Normal erstelle ich eine Variable nur einmal -
@Aphofis sagte:
Normal erstelle ich eine Variable nur einmal
Timer-Variablen dürfen gar nicht manuell erstellt werden ! Problem ist, dass sie erst sichtbar sind, wenn man eine andere Variable in das Fenster zieht und danach die Timer-Variable selektiert. Der Timer muss ebenfalls schon im Editorfenster vorhanden sein. Issue auf Github existiert bereits.
-
@paul53
Verstehe ich nicht wie du das meinst -
@Aphofis
Wenn ein Timer erstellt wurde, sieht man die Variable timeout nicht.
Erst wenn man eine andere Variable (dummy) erstellt hat, kann man z.B. setze dummy auf in das Fenster ziehen und anschließend timeout selektieren.
Das Problem: Da man die Variable timeout zum in das Fenster ziehen nicht zur Auswahl hat, ist man geneigt, eine weitere Variable timeout zu erstellen.
-
@paul53
Cool Danke für die ausführliche Erklärung! Ich werde in Zukunft aufpassen -
@paul53
Also mit der steuerung beim Vlies stimmt was nicht es soll ja nicht mehr als 50 cm laufen laut Zähler sollen heute 180 cm gelaufen sein.
Wie kann das sein!? -
@Aphofis sagte:
mit der steuerung beim Vlies stimmt was nicht es soll ja nicht mehr als 50 cm laufen laut Zähler sollen heute 180 cm gelaufen sein.
Im Skript ist keine Begrenzung vorgesehen, sondern nur eine Erfassung. Der Faktor Zeit --> cm stimmt ?
-
@paul53
2x25 ist doch die begrenzung oder nicht !?var schwimmer, restzeit, timeout, Intervall, 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) { restzeit = (typeof restzeit == 'number' ? restzeit : 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();
-
Dieses Skript meinst Du.
@Aphofis sagte:
2x25 ist doch die begrenzung oder nicht !?
Ja, wären nicht zwei Variablen Intervall vorhanden (s.o.), würde es sicherlich auch funktionieren.
-
@paul53
Das kann doch nicht wahr sein!
Ich sollte öffters mal ins Javascript rein gucken.
also ohne worte -
@paul53
So sollte es korrekt sein!!!var schwimmer, restzeit, 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) { restzeit = (typeof restzeit == 'number' ? restzeit : 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();