NEWS
Blockly Skript in anderem Skript aufrufen
-
Hallo,
ich bin ganz neu bei ioBroker. Aktuell nutze ich Homey, aber überlege zu wechseln und bastle daher gerade ein wenig, um mal zu sehen, wie es so funktioniert. Soweit bin ich doch recht begeistert. Habe jetzt aber mal eine Frage, also bitte nicht direkt steinigen, wenn das hier schon zig Mal erklärt wurde.
Ich möchte ein Blockly Skript in einem anderen Skript aufrufen. Will in einem Skript eine Art Szene bauen und diese dann z.B. über einen Schalter oder über die Zeit aufrufen. Ja, ich weiß, es gibt einen Adapter dafür, jedoch bin ich damit bisher nicht zurecht gekommen. Habe irgendwo gelesen, dass man Skripte in einem anderen direkt aufrufen kann, dies aber nicht machen soll.
Habe nun folgendes:
-
Szenenskript:
-
Aufrufskript:
Es funktioniert. Aber macht das auch Sinn? Kann oder sollte ich das verändern/verbessern? Will es gerne direkt ordentlich lernen und nicht erst, wenn ich 10 Szenen erstellt habe.
Danke schon mal.
LG Johannes
-
-
Der Datenpunkt Szene_WZ_an wird erst auf Wahr springen sobald auch Sonnenuntergang Anfang erreicht wird. Wieso willst du denn dafür nochmal ein seperates Blockly erstellen?
Dazu musst du auch noch dran denken, Der Datenpunkt sollte zum Sonnenaufgang wieder auf false gesetzt werden. -
@4-Real sagte:
Der Datenpunkt sollte zum Sonnenaufgang wieder auf false gesetzt werden.
Weshalb ? Er triggert nicht auf Änderung, sondern auf wahr.
-
@paul53 sagte in Blockly Skript in anderem Skript aufrufen:
@4-Real sagte:
Der Datenpunkt sollte zum Sonnenaufgang wieder auf false gesetzt werden.
Weshalb ? Er triggert nicht auf Änderung, sondern auf wahr.
Deshalb ja.. sonst hat er doch meines Erachtens egal zu welcher Tageszeit die Szene auf wahr, oder nicht? Oder vertue ich mich da? -
@4-Real said in Blockly Skript in anderem Skript aufrufen:
Danke schon mal.
Der Datenpunkt Szene_WZ_an wird erst auf Wahr springen sobald auch Sonnenuntergang Anfang erreicht wird. Wieso willst du denn dafür nochmal ein seperates Blockly erstellen?
Möchte das separat halten, weil ich das Szenenskript dann auch noch für andere Dinge nutzen kann. z.B. Sonnenaufgang, Nach Hause kommen etc.
Dazu musst du auch noch dran denken, Der Datenpunkt sollte zum Sonnenaufgang wieder auf false gesetzt werden.
Mache ich das nicht in der letzten Zeile im Szenenskript? Klar, nicht zum Sonnenaufgang... aber doch direkt nachdem alles ausgeführt wurde.
-
@johannes1702 sagte in Blockly Skript in anderem Skript aufrufen:
@4-Real said in Blockly Skript in anderem Skript aufrufen:
Danke schon mal.
Der Datenpunkt Szene_WZ_an wird erst auf Wahr springen sobald auch Sonnenuntergang Anfang erreicht wird. Wieso willst du denn dafür nochmal ein seperates Blockly erstellen?
Möchte das separat halten, weil ich das Szenenskript dann auch noch für andere Dinge nutzen kann. z.B. Sonnenaufgang, Nach Hause kommen etc.
Dazu musst du auch noch dran denken, Der Datenpunkt sollte zum Sonnenaufgang wieder auf false gesetzt werden.
Mache ich das nicht in der letzten Zeile im Szenenskript? Klar, nicht zum Sonnenaufgang... aber doch direkt nachdem alles ausgeführt wurde.
Au Sorry.. Jau, hab ich gar nicht gesehen.. stimmt du machst das ja wieder auf False... Alles klar! Mein Fehler!!
-
Will aber trotzdem nochmal fragen, ob ich das doch ggf. anders lösen sollte?
-
@johannes1702 sagte:
aber doch direkt nachdem alles ausgeführt wurde.
Nein, nur einmal beim Start des Skriptes, da außerhalb des Triggers ausgeführt.
@4-Real sagte in Blockly Skript in anderem Skript aufrufen:
Oder vertue ich mich da?
Ja, der Trigger reagiert nur auf eine Zustandsänderung - in dem Fall auf Aktualisierung des Zeitstempels.
-
@johannes1702 sagte:
Kann oder sollte ich das verändern/verbessern?
Ja,
- Für eigene Datenpunkte sollte man anstelle von "steuere" besser "aktualisiere" verwenden.
- Ein Datenpunkt der mittels Select-ID zugewiesen werden kann, muss nicht erst erzeugt werden. Wenn man einen Datenpunkt per Blockly erzeugt, sollte auch immer Common im JSON-Format übergeben werden, mindestens der Datenpunkt-Typ: {"type":"boolean"}.
- Trigger sollten immer im Hauptprogramm platziert werden, nicht in der Callback-Funktion der Datenpunkt-Erzeugung.
- Da sicherlich weitere Szenen erstellt werden sollen, ist es sinnvoll, "Szene" als Ordner im Objektbaum zu verwenden, also mit einem Punkt in der ID: "Szene.WZ_an".
-
@paul53 said in Blockly Skript in anderem Skript aufrufen:
Ein Datenpunkt der mittels Select-ID zugewiesen werden kann, muss nicht erst erzeugt werden. Wenn man einen Datenpunkt per Blockly erzeugt, sollte auch immer Common im JSON-Format übergeben werden, mindestens der Datenpunkt-Typ: {"type":"boolean"}.
Das verstehe ich leider nicht Die anderen Punkte konnte ich umsetzen. Kannst du das nochmal anders erklären?
-
@johannes1702 sagte:
Kannst du das nochmal anders erklären?
Du hast den Datenpunkt mit dem Namen "Szene_WZ_an" an den Trigger und die "steuere"-Blöcke zugewiesen. Das geht in Blockly so nur, wenn der Datenpunkt bereits existiert.
-
Heißt, ich kann das hier weglassen?
-
-
Ok, verstanden Vorher dann aber natürlich im Objektbaum entsprechend (mit boolean) anlegen?!