NEWS
Mehrere Scripte in einem?
-
Hallo zusammen,
Ich sehe hier im Forums immer wieder Scripte, in denen mehrere Programme in einem Blockly stehen (z. Bsp. Das Bild unten). Ist das nur für die Screenshots für's Forums so aufbereitet oder kann man das tatsächlich so machen? Bisher mache ich immer für jede Kleinigkeit ein eigenes Script. Wenn das so geht, gibt es irgendwelche Bedingungen oder kann man hunderte Scripte zusammenpacken?
-
@uhu01 das wie in deinem screen gezeigt sind ja in dem Sinn nicht mehrere scripte, sondern eins, bestehend aus mehreren Bausteinen die ineinander zusammen gehören. Es können natürlich mehrere Trigger in einem Script vorhanden sein.
@uhu01 sagte in Mehrere Scripte in einem?:
Wenn das so geht, gibt es irgendwelche Bedingungen oder kann man hunderte Scripte zusammenpacken?
natürlich kannst du mehrere Dinge in ein Script packen, es sollte aber auch "zusammengehören".
desweiteren, wenn du das Script stoppst, beendest du halt alles, was in dem Script läuft.
Trigger in Trigger geht nicht, das ist eine Bedingung -
@uhu01 sagte in Mehrere Scripte in einem?:
Bisher mache ich immer für jede Kleinigkeit ein eigenes Script. Wenn das so geht, gibt es irgendwelche Bedingungen oder kann man hunderte Scripte zusammenpacken?
Ich denke der Frage liegt ein Missverständnis zu Grunde. Per Definition ist der Inhalt den du in einem Blockly hast ein Skript. In dem Skript in deinem Beispiel sind in diesem einen Skript zwei von einander vollständig unabhängige Abläufe definiert.
Ein Skript kann beliebig viele voneinander unabhängige Abläufe enthalten. Dabei ist erst einmal nicht relevant ob die unabhängigen Abläufe im Blockly optisch voneinander getrennt oder einfach hintereinander weg verkettet sind.Es ist auch zulässig Blöcke die eigentlich verkettet werden sollen (wie die beiden Trigger Bausteine in Deinem Beispiel) unverkettet nebeneinander darzustellen.
Allerdings ist in dieser Situation die Reihenfolge der Ausführung aus dem Blockly nicht zu erkennen, weswegen davon eigentlich abgeraten wird.Ansonsten stellt sich die Frage der Übersichtlichkeit. Ein einzelnes Blockly mit sehr vielen Blöcken kann schnell unübersichtlich werden - wieder unabhängig davon ob die darin definierten Abläufe voneinander getrennt dargestellt werden oder nicht.
Es macht also Sinn die Abläufe nach Gruppen zusammengefasst in Skripte zu stecken.
An Regeln gibt es eigentlich nur 3:
- Variablen die in einem Blockly definiert sind sind per Definition im gesamten Skript verfügbar, nicht nur in dem Ablauf für den sie definiert wurden.
- Die Funktionen "Ausführen Timeout" und "Ausführen Intervall" nutzen globale (im gesamten Skript eindeutige Variablen um einen Zugriff auf das Intervall / den Timeout zu erhalten. Es ist wichtig darauf zu achten das diese Variablen eindeutig sind, ansonsten kann es passieren das Timeouts oder Intervalle mehrfach laufen und nicht beendet werden können.
- Es macht (in 99% der Fälle) keinen Sinn mehrere Trigger ineinander zu schachteln. Das gilt sowohl für die Trigger nach dem Muster "Falls Objekt" als auch für jegliche Art von "Zeit" oder "Cron" trigger.
-
@asgothian
Wenn ich hier mal ranhängen darf. Ich habe in jedem Raum eine Zigbee-Lampe und einen Shelly Switch. Jetzt habe ich pro Raum ein Blockly-Skript das nicht mehr macht als wenn Lichtschalter an, dann Lampe an, wenn Schalter aus, dann Lampe aus.
Wenn ich deine Antwort richtig verstehe ist es kein Problem statt für jeden Raum ein einzelnes Skript ein großes "Lichtskript" zu erstellen. Da stehen dann quasi die Blocklyabläufe hintereinander weg.
Nachteil hierbei ist dann nur, dass ich einzelne Räume nicht einfach deaktivieren kann (halt nur auskommentieren), habe dann aber der (für mich) besseren Übersicht nur ein Lichtskript.
Von der "Performance" her ist das beides dann gleichwertig? -
@bommel_030 Ja.
-
@bommel_030 Das war auch genau mein GeDanke!
-
@asgothian
Danke für die ausführliche Erklärung!Aber da ich dem Braten noch nicht ganz traue: Sowas kann ich also problemlos machen?
-
@uhu01 sagte in Mehrere Scripte in einem?:
Sowas kann ich also problemlos machen?
wenn sich hinter den gleichen Bezeichnern etwas verschiedenes verbirgt, ja!
-
@homoran
Ok Danke! (und ja. Sind die 4 Eingänge eines Shelly i4)