NEWS
Javascript Adapter - Blockly Befehle
-
Hallo,
ich habe noch zwei Fragen zum Javascript-Adapter und im speziellen zu Blockly. Wirklich ein tolles Tool zum Erstellen von kleinen Scripten. Nur zwei Funktionen kriege ich nicht wirklich umgesetzt. Hab dazu leider auch nichts in der Doku gefunden. Vielleicht gehts ja auch gar nicht, will trotzdem mal nachfragen:
-
Kann man über Blockly Arrays (also mehrdimensionale Variablen) definieren und damit umgehen? Ich stelle mir ein Array (z.B. "array(5)") vor, welches man dann z.B. in einer for/next-Schleife mit Daten füllen kann.
-
Kann man aus einem script heraus ein anderes Script starten? ALso nicht auf aktiv oder inaktiv setzten sondern tatsächlich ausführen. In reiner Programmiersprache wäre der Befehl dazu glaube ich "runScript('scriptname')". In Blockly finde ich sowas irgendwie nicht…
Vielen Dank für jede Hilfe!
Beste Grüße!
-
-
- Kann man über Blockly Arrays (also mehrdimensionale Variablen) definieren und damit umgehen? `
Arrays nennen sich in Blockly Listen.@nathan1312:
- Kann man aus einem script heraus ein anderes Script starten? ALso nicht auf aktiv oder inaktiv setzten sondern tatsächlich ausführen. `
Nein.
- Kann man über Blockly Arrays (also mehrdimensionale Variablen) definieren und damit umgehen? `
-
> Arrays nennen sich in Blockly Listen.
Ah, ok! Ich hatte auch schon in die Richtung gedacht. Aber irgendwie war ich mir über die Umsetzung nicht ganz im Klaren. Werde ich dann nochmal ausprobieren. Danke!` > nathan1312 hat geschrieben:
- Kann man aus einem script heraus ein anderes Script starten? ALso nicht auf aktiv oder inaktiv setzten sondern tatsächlich ausführen.
Nein. `
Kurz und schmerzlos. :lol:Dann bleibt also nur das Script in Blockly anzulegen und danach in der Code-Ansicht manuell zu modifizieren…?
-
Dann bleibt also nur das Script in Blockly anzulegen und danach in der Code-Ansicht manuell zu modifizieren…? `
Ich kann nicht nachvollziehen, was Du erreichen willst (Beispiel ?). -
OK, ein Beispiel…
Ich habe zwei Scripte, beide recht komplex.
Nun möchte ich nachträglich erreichen, dass das zweite Script bei einer Bedingung ausgeführt wird, die durch das erste Script "errechnet" wird.
Gibt verschiedene Möglichkeiten:
-
Das komplette zweite Script an das erste ranhängen. --> Finde ich doof, da das Ganze dann sehr kompliziert wird. Außerdem habe ich noch Trigger für das zweite Script definiert, die mit dem ersten nichts zu tun haben.
-
Eine "Hilfsvariable" einführen, die vom ersten Script geschaltet wird und das zweite Script triggert. --> Möglich, aber keine sehr elegante Lösung.
-
Das zweite Script durch einen Befehl im ersten Script direkt ausführen lassen. --> Dies wäre meine favorisierte Wahl gewesen. Wenn's denn funktionieren würde.
Vielleicht gibt's ja noch eine weitere Möglichkeit, die mir noch nicht eingefallen ist.
-
-
Was spricht gegen 2) "Hilfs-Datenpunkt" ? Darin könnstest Du zusätzlich noch einen Wert vom 1. an das 2. Skript übergeben, falls sinnvoll.
-
Ich finde hilfedatenpunkte sind immer auch eine gewisse Fehlerquelle. Wenn die mal aus irgendeinem Grund im falschen Zustand sind (Neustart, etc.) dann kommts zu Fehlfunktionen. Und dann geht das Gesuche los.
Aber anscheinend gibt's keine andere Möglichkeit.
Danke für die Hilfe!
Gesendet von meinem SGP511 mit Tapatalk
-
> Arrays nennen sich in Blockly Listen.
Ah, ok! Ich hatte auch schon in die Richtung gedacht. Aber irgendwie war ich mir über die Umsetzung nicht ganz im Klaren. Werde ich dann nochmal ausprobieren. Danke!` > nathan1312 hat geschrieben:
- Kann man aus einem script heraus ein anderes Script starten? ALso nicht auf aktiv oder inaktiv setzten sondern tatsächlich ausführen.
Nein. `
Kurz und schmerzlos. :lol:Dann bleibt also nur das Script in Blockly anzulegen und danach in der Code-Ansicht manuell zu modifizieren…? `
Du kannst die variable "javascript.0.scriptEnabled.SkriptName" auf true setzen und Skript wird neu gestartet. -
> Du kannst die variable "javascript.0.scriptEnabled.SkriptName" auf true setzen und Skript wird neu gestartet.
Wenn ich im Script selber aber noch Trigger definiert habe, wird dieses aber doch dann nicht ausgeführt, oder?
-
Wenn ich im Script selber aber noch Trigger definiert habe, wird dieses aber doch dann nicht ausgeführt, oder? `
Doch, aber erst dann, wenn die Triggerbedingung (Zeitpunkt, Wertänderung, …) erfüllt ist. Bei einem angenommenen "runScript('scriptname')" wäre es genauso. -
Korrektur: Die Funktion https://github.com/ioBroker/ioBroker.javascript/blob/master/README.md#runscript stellt der Javascript-Adapter zur Verfügung (noch nicht allzu lange, weshalb ich der Meinung war, dass es nicht geht). Allerdings bleibt die Tatsache, dass Triggerbedingungen erst erfüllt sein müssen, um zugehörige Funktionen auszuführen.