NEWS
Script nur kurz / einmal ausführen?
-
Hallo,
ich baue mir gerade ein Blockly Script, was im heatingControl meine Temperatur Profile setzen soll.
Nun ist es aber ja so, das dieses Script nicht immer laufen muss, sondern nur einmal kurz und wenn es durch ist sollte es wieder stoppen.
Wie macht man so was? -
@exmerci
vielleicht kannst Du kurz witere Details erklären, wieso, weshalb warum?
Wenn Du bspw. einen Trigger hast auf den ein Script reagiert, dann wird das Script sowieso nur bei "Bedarf" ausgelöst. So ein Trigger kann zum Beispiel eine bestimmte Uhrzeit sein, die dann nur 1 x am Tag zutrifft -
@exmerci
Skripte laufen immer und werden 'getriggert'. -
Gestartet werden soll das Script durch einen Button.
Ich drücke auf demn Button, Script wird abgearbeitet, dann aber nicht mehr benötigt.
Also ich drücke den Button Profil1 und das Script zu Profil1 wird gestartet.
Jetzt habe ich noch ein Profil2. Ich drücke den Button Profil2 und das Script zu Profil 2 wird gestartet.
Aber das Script von Profil1 läuft ja dann noch. Würden die beiden Scripte dann nicht dauern gegeneinander laufen?
Ich verstehe die Vorgehensweise noch nicht ganz.
Ich kenne das nur von Phyton oder aus der Bash. Man hat in Script. Das startet man und durch den Exit Code am Ende ist es fertig und wird beendet. Wenn man es wieder braucht startet man es wieder.
Aber hier laufen die Scripte ja die ganze Zeit. -
@exmerci
und was genau führt das Script aus, dass es nicht unmittelbar nach dem Start fertig durchlaufen ist Sondern ununterbrochen weiter aktionen ausführt? -
Ich glaube ich bin vielleicht auf dem Holzweg.
Wenn ich ein Script baue, das ich über einen Button starten will, läuft das auch, wenn es im Scripe Bereich, wo man es erstellt, auf Pause steht? -
@exmerci
Bitte zum Grundverständnis:
Laufen ist nicht LaufenDie mehrfach gestellte Frage, was du genau machen willst, bzw. das Skriopt nach abarbeiten NICHT mehr machen soll bitte beantworten, denn:
Das Skript ist bei js immer aktiv
Ein Trigger löst es aus (in deinem Fall der Button)
Das Skript wird abgearbeitet und wartet in einer ruhigen dunklen Ecke auf en nächsten Knopfdruck.Da muss nichts gestoppt werden, außer du hast eine unsaubere Schleife programmiert
-
@Homoran sagte in Script nur kurz / einmal ausführen?:
Die mehrfach gestellte Frage, was du genau machen willst, bzw. das Skriopt nach abarbeiten NICHT mehr machen soll bitte beantworten, denn
Wieso. Ich habe doch oben geschrieben was es machen soll.
ich baue mir gerade ein Blockly Script, was im heatingControl meine Temperatur Profile setzen soll.
Und was es nicht machen soll, ist wenn ich das Script für Profil2 sozusagen starte, die Werte von Script 2 wieder überschreiben, weil es ja noch läuft (nach meinem Vertändniss).
Ist wohl so, das ich das mit dem triggern nicht verstehe, da ich keine JS Erfahrung habe.
Wie triggere ich den das Script. Indem ich einfach einen Button in VIS baue und das Script dort eintrage? -
@exmerci sagte in Script nur kurz / einmal ausführen?:
Ist wohl so, das ich das mit dem triggern nicht verstehe, da ich keine JS Erfahrung habe.
Wahrscheinlich.
Der Trigger (eigene Gruppe von Blöcken) "startet" (korrekt= löst aus) das Skript.
Danach schläft es und macht nichts mehr, bis es wieder getriggert wird.
(Außer es läuft eine falsche Endlosschleife)@exmerci sagte in Script nur kurz / einmal ausführen?:
Wie triggere ich den das Script.
Das ist unterschiedlich. In deinem Fall wohl über einen selbst angelegten Datenpunkt.
Je nach Wunsch wäre das ein boolscher Zustand, der durch das Button-Widget kurz auf true gesetzt wird oder ein Dantenpunkt vom Typ number in das du "1" oder "2" für das gewünschte Programm einträgst und darauf wird dann getriggert -
Eventuell auch ne Möglichkeit ? Den DP javascript.0.scriptEnabled vom Script auf true und verzögert wieder auf false setzen via toggle Button ?
Nur so ne Idee von mir ....
-
@harrym sagte in Script nur kurz / einmal ausführen?:
Nur so ne Idee von mir ....
soll man aber nicht machen
-
@Homoran OK. Dann war's ne blöde Idee
-
Ich hatte jetzt mal so etwas gebaut. Aber irgendwie geht das nicht.
Zugehörige Objekte:
-
@exmerci sagte in Script nur kurz / einmal ausführen?:
Aber irgendwie geht das nicht.
Die Zahlen bitte als Mathematik-Block nehmen.
unwahr = falsch bitte las Logikblock
steuere durch aktualisiere-Block ersetzen -
@exmerci
mache aus "normal" mal einen "button" (ausser der kann auch "false" sein)
Du darfst "string" (Textbausteine) auch nur für "string" Inhalte verwenden und nicht für Zahlen oder "true/false" Werte -
Ok. Ich versuche es. Muss jetzt erst noch mal ein bisschen arbeiten.
Melde mich wieder ob ich es hinbekommen habe oder nicht. -
@Homoran sagte in Script nur kurz / einmal ausführen?:
Die Zahlen bitte als Mathematik-Block nehmen.
Wenn ich das mache, kann ich keine Zahlen wie 12:00 eingeben für die Uhrzeit.
-
@exmerci sagte:
keine Zahlen wie 12:00 eingeben für die Uhrzeit.
12:00 ist keine Zahl, sondern ein String. Die target temperature sollte eine Zahl sein.
-
Obwohl es zu funktionieren scheint, wird folgender Fehler angezeigt.
Was habe ich noch falsch gemacht?
-
@exmerci sagte in Script nur kurz / einmal ausführen?:
Was habe ich noch falsch gemacht?
Was steht in Zeile 11 des erzeugten Javascript-Codes (Button blockly/JS rechts oben) ?