NEWS
Zeitschalter Ein / Aus Zeitvorgabe via VIS
-
Hallo,
ich möchte einen Aktor für X Sekunden ein- und dann wieder für Y Sekunden ausschalten.
Da ich das mit den Blockly Schleifen und Timeouts als Anfänger noch etwas auf Kriegsfuss stehe habe ich zunächst erst mal mit der Einschaltzeit angefangen, die ich in einen datenpunkt eingeben kann.
Ich gebe z.B. "10" als Wert ein , dann läuft das skript 10 Sekunden und stoppt dann.Nun möchte ich, dass direkt ein weiterer Timer startet, der die Ausschaltzeit darstellt.
Nach Ablauf der Ausschaltzeit soll die Ausführung wieder von vorne beginnen.
Das soll so lange laufen bis ich per Vis wieder einen Datenpunkt "Heizer_aktiv"auf "false" setze.
ich scheitere schon am hintereinander kleben der Timer, die werden wohl gleichzeitig abgearbeitet -
@Aiouh
Vorschlag:
Die beiden Datenpunkte enthalten die Einschaltdauer und Ausschaltdauer in s.Alternative ohne Intervall:
-
@paul53 Wow, danke, da werde ich mich mal reindenken
-
@paul53
Der Timer läuft los wenn ich den Datenpunkt zusatzheizer_aktiv auf true setze. Danke!Nun wollte ich eine weitere Bedingung hinzufügen:
Der Timer soll nur dann anlaufen wenn mein EV Schütz zugleich aus ist. Der EV Schütz hat Priorität. Beides zugleich geht nicht.
So wie ich es gemacht habe klappt es zwar dass der timer nicht anläuft, wenn der Schütz bereits aktiv ist und ich dann den zusatzheizer_aktiv auf true setze.
Wenn der EV Schütz aber nach ein paar Minuten ausgeht, läuft mein Timer trotzdem nicht los.Nachtrag: Der Timer läuft ewig in der Schleife, auch wenn ich meinen zusatzheizer_aktiv auf false setze. Ich muss glaube ich doch mal die Grundlagen genauer lesen...
-
@Aiouh sagte:
Wenn der EV Schütz aber nach ein paar Minuten ausgeht, läuft mein Timer trotzdem nicht los.
Der EV Schütz muss triggern, wenn dessen Ausschalten eine Reaktion bewirken soll.
-
@paul53 Ich habe mir erst mal in der Testumgebung ein script gebastelt, da es am live system doch um einige kW Leistung geht die geschaltet werden sollen, oder eben auch mal besser nicht geschaltet werden dürfen...
Meine Zusatzheizung soll nur dann, mit deinem Timer , geschaltet werden wenn:
- Der Timer an sich aktiviert ist
- Der Verbrauch im Beispiel nicht höher 2kw liegt
- Der Schütz für mein EV (aktor_prio) nicht eingeschaltet ist.
Im Test mit dummy datenpunkten scheint das so zu funktionieren, nun hätte ich doch gerne noch die Beurteilung des/der Experten
-
@Aiouh sagte:
nun hätte ich doch gerne noch die Beurteilung
Bei mehreren Triggern kann man nicht Wert abfragen: Die Abfrage muss raus und "stop zyklische Ausführung Intervall" muss zusammen mit dem Ausschalten ganz unten passieren.
Als 2. Trigger muss sicherlich "test_aktor_prio" verwendet werden.
Das erste Einschalten fehlt.
Die Debug-Ausgaben verwirren eher, da sie den vorherigen Wert ausgeben, denn "steuere" arbeitet asynchron (ist noch nicht fertig, wenn der Wert eingelesen wird).
-
@paul53 Vielen Dank, wieder was gelernt, irgenwann begreif ich das (hoffentlich)
-
@paul53 ...musste den Fred ausgraben weil ich wieder eine ähnliche Aufgabenstellung habe und wieder nicht weiterkomme.
Ich möchte ein Ventil "X" Minuten einschalten dann "Y" Minuten Pause und das Ganze "Z" mal wiederholen.
Für den ersten Teil wollte ich das obige Script nutzen.Für die Wiederholungen hab ich ein Muster gebastelt, das an sich funktioniert.
Nur die Kombination der beiden, also das "x mal ausführen" krieg ich nicht hin.
Ich dachte ich kann "einfach" das obige script anstelle des "debug output n" einsetzen. Aber egal welche der "Execution Blöcke" ich einsetze, es werden Teile des obigen scripts gleich 5 mal hintereinander ausgeführt.12:42:28.209 info javascript.0 (13807) Start javascript script.js.test.timertest 12:42:28.235 info javascript.0 (13807) script.js.test.timertest: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 12:42:35.251 info javascript.0 (13807) script.js.test.timertest: timeout1 12:42:35.267 info javascript.0 (13807) script.js.test.timertest: timeout1 12:42:35.270 info javascript.0 (13807) script.js.test.timertest: timeout1 12:42:35.277 info javascript.0 (13807) script.js.test.timertest: timeout1 12:42:35.283 info javascript.0 (13807) script.js.test.timertest: timeout1 12:42:39.265 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:39.270 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:39.272 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:39.283 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:39.285 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:40.267 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:40.272 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:40.282 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:40.285 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:40.286 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:43.265 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:43.270 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:43.271 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:43.282 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:43.286 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:44.267 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:44.291 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:44.295 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:44.297 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:44.298 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:47.267 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:47.273 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:47.299 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:47.323 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:47.324 info javascript.0 (13807) script.js.test.timertest: cycle time 12:42:48.270 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:48.298 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:48.304 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:48.324 info javascript.0 (13807) script.js.test.timertest: timeout2 12:42:48.325 info javascript.0 (13807) script.js.test.timertest: timeout2
Ich hoffe wieder auf Hilfe, denn begriffen hab ich das noch immer noch nicht ganz
-
@aiouh sagte: das "x mal ausführen" krieg ich nicht hin.
Man muss innerhalb des Zyklus eine Variable hoch oder runter zählen und bei Erreichen des Zielwertes den Zyklus beenden (Intervall stoppen).
Beispiel ohne Intervall mit Funktion: -
@paul53 vielen Dank, ich war mittlerweile auf dem richtigen Weg, aber an das Stoppen des Intervall hatte ich nicht gedacht. Das hat mir jetzt viel Zeit gespart
-
@paul53 Das script wird ja durch setzen des "automatik-ein" auf "1" gestartet und läuft durch. So war der Plan. Nun möchte ich "automatik-ein" nach Ablauf des scripts automatisch wieder auf "0" setzen.
Spricht was gegen die folgende Lösung ? Funktionieren tut sie zumindest
-
@aiouh sagte; Spricht was gegen die folgende Lösung ?
Ein "else" anstelle des Vergleichs mit 0 hätte genügt.
-
@paul53 Danke !