NEWS
true Abfrage alle 2 Sek.
-
@Asgothian
ok dan bastel ich das script mal in meine steuerung -
@Aphofis Viel Glück damit.
Noch ein Hinweis: Ich hab die Objekt ID's als Variablen nach oben geholt, so das du sie nur einmal anpassen musst. Und der Schedule ist auf Mitternacht jeden Tag eingestellt.
Nachtrag - es war noch ein Fehler drin, ist jetzt behoben.
A.
-
@Asgothian
Das sehr nett!
Können das das normale Blockly und das JavaScript gemeinsam laufen oder kann man das bestehende mit einbauen!?
Da über mein bisheriges Blockly Script die Osmose Steuerung läuft und wiederrum über das Magnet Ventil der Osmose Tages und GEsamtzähler. -
@Aphofis
Klar. Es ist egal wie die verschiedenen Scripte erstellt wurden. Du kannst Blockly, JS und Typescript scripte beliebig mischen.A.
Nachtrag: Ich empfehle sogar die scripte in einzelne logische Blöcke aufzuteilen und als einzelne Scripte laufen zu lassen. Dann kannst du einzelne Funktionen temporär abschalten und die Fehlersuche wird auch einfacher.
A. -
@Asgothian
Das stimmt!
Ich baue auch ungerne mega blocklys wo ich dann des späteren kaum noch überblick habe und mich erst lange ins script einlesen muss.
übernimmt denn dein script nun die algemeine osmose steuerung für das magnet ventil !? Da Ja der Osmose Zähler über das magnetventil läuft muss das normale blockly zur osmose steuerung doch eigentlich ausgeschaltet werden.!? -
Das ist die normale Blockly Steuerung für die Osmose
var value, status2; /** * Function um umsetzen von true / false nach offen / geschlossen */ function umsetzen(value, status2) { if (value == true) { status2 = ' aktiv'; } else { status2 = 'inaktiv'; } return status2; } on({id: "sonoff.0.Aqua_Float.POWER1"/*Osmose_Niveau*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("sonoff.0.Aqua_Float.POWER1").val == true) { setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, true); console.log(('Magnetventil ist ' + String(umsetzen(getState("sonoff.0.Aqua_Control.POWER1").val, status2)))); } else if (getState("sonoff.0.Aqua_Float.POWER1").val == false) { setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, false); console.log(('Magnetventil ist ' + String(umsetzen(getState("sonoff.0.Aqua_Control.POWER1").val, status2)))); } else if (getState("sonoff.0.Aqua_Float.POWER4").val == true) { setState("javascript.0.scriptEnabled.Automatik_Steuerung.Osmose_Niveau_Normal"/*scriptEnabled.Automatik_Steuerung.Osmose_Niveau_Normal*/, false); setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, false); } else if (getState("sonoff.0.Aqua_Float.POWER4").val == false) { setState("javascript.0.scriptEnabled.Automatik_Steuerung.Osmose_Niveau_Normal"/*scriptEnabled.Automatik_Steuerung.Osmose_Niveau_Normal*/, true); } });
-
@Aphofis
Die Frage kann ich dir nicht beantworten. Dafür kenne ich mich mit dem was du steuern willst einfach nicht genug aus. Prinzipiell können 2 Scripte die gleichen Objekte ansteuern, allerdings ist dann (in diesem Beispiel) nicht sichergestellt das die Pumpe wirklich nur 300 s läuft, diese Zeitabfrage gilt nur für die Zeit die durch den Schwimmer eingeschaltet ist.A.
-
@Asgothian
Das macht dann auch keinen Sinn beides laufen zu lassen.
Dann lasse ich nur das JavaScript laufen und werde beobachten und testen. Dann melde ich mich wie es läuft.
Vielen Dank -
Also was ich sagen kann Magnetvetil reagiert auf den Schwimmer und Osmose wird fleißig weter gezählt.
Das blockly zum steuern vom magnetventil hab ich abgeschaltet.
Kann man eine telegram nachricht einbauen wenn die 300 sek bzw 10 liter am tag erreicht sind !?
denn davon ist auch abhängig wann ich den Salzgehalt im Becken angleichen muss. -
@Aphofis
Das einfachste ist das du an der Stelle wo die Pumpe abgestellt wird weil die Zeit abgelaufen ist die Meldung mit einbaust.Du kannst auch im Schedule wo die Restzeit zurück gesetzt wird eine Nachricht absetzen wieviele Minuten die Pumpe am Vortag gelaufen ist (wenn Restzeit < 0 -> 5 Minuten, ansonsten (300 - Restzeit) / 60 Minuten). Wenn du dann den Zeitpunkt von Mitternacht auf sagen wir 10 Uhr Abends oder 8 Uhr morgens setzt, dann stoert das ggf. auch nicht so beim Schlafen
A.
-
-
@Aphofis
Das was ich dir geschrieben habe leider nicht - du musst im Blockly die Zeit fuer den Timeout fest vorgeben und kannst keine Variable dafür benutzen - zumindest konnte ich das nicht.Wenn diese Funktionalität existiert, dann schon.
-
@Asgothian
Kann ich jemanden im Forum Fragen, der deinen Javascript Code vllt umhechseln kann ins Blockly!? -
@Asgothian
Wenn das script per steuerung zb in der fütterungspause deaktiviert wir, bleibt der timer mit der gemessenen zahl bestehen? und läuft nach einschalten des scripts normal weiter ??? -
@Aphofis sagte in true Abfrage alle 2 Sek.:
@Asgothian
Wenn das script per steuerung zb in der fütterungspause deaktiviert wir, bleibt der timer mit der gemessenen zahl bestehen? und läuft nach einschalten des scripts normal weiter ???Wenn die Pumpe gerade eingeschaltet ist, und du dann das Script beendest dann wird die Pumpe nicht abgeschaltet, und bei einem Neustart wird die Variable neu mit 300 initialisiert.
Um das zu verhindern macht es meiner Meinung nach sinn einen Datenpunkt "Futtermodus" zu erstellen, und im Script einfach nur das Aktivieren der Pumpe zu unterbinden wenn der Futtermodus aktiviert wird, und nach Ende des Futtermodus wieder zum normalen Ablauf zurück zu kehren.
A.
-
Du kannst dir doch dein Telegram Blockly in JS anzeigen lassen und dann in das Script kopieren.
-
@Asgothian
Ich versuche das mir einer das JavaScript umbaut in Blockly dann kann ich damit mehr machen.
Kann leider kein Javascript programmieren.
Javascript Applets in Webseiten einbinden ist schon die Grenze.
ich kann den Code halbwechs verstehen aber Programmieren äh nein. Leider leider nicht. -
@Aphofis gib mir mal eine halbe stunde, dann kann ich dir den Blockly schicken. Der wird nicht so elegant werden, sollte aber trotzdem gehen.
-
@paul53
Nabend, ist es dir vielleicht möglich mir dieses Javascript was ich dankend von @Asgothian bekommen habe ins Blockly umzubauen !? Das wäre Super nett, da ich mit Blockly mehr anfangen kann.
Asche über mein Haupt. -
@Aphofis
Versuch mal das hier:Nicht so schön, aber da die Laufzeit des Timeout nicht als Variable definiert werden kann muss halt ein Umweg gewählt werden.