Skip to content

Blockly-Abgleich, Farben und Funktionen ​

Aktionsfunktionen und bedingte Rückgaben seit 0.1.47 ​

Unter Funktionen kann eine Aktionsfunktion neben der Automation definiert werden. Einen gültigen Namen ohne Leerzeichen eingeben, über das Zahnrad bis zu acht unterschiedliche ASCII-Parameter hinzufügen und HA-Aktionen in den Körper einsetzen. Der passende Aufruf erscheint automatisch in derselben Kategorie; alle Argumente müssen angeschlossen werden. Parameter mit Variablenblöcken aus Variablen lesen, beispielsweise als Log-Nachricht, Pause oder Wert einer Variablenzuweisung.

Beim Export entsteht eine native HA-sequence. Jeder Aufruf erhält eigene interne Parameterbindungen; Argumente werden beim Aufruf ausgewertet. Verschachtelte Aufrufe bleiben möglich, Rekursion und leere Aktionskörper nicht. Gleichnamige HA-Variablen werden durch die Parameterbindung nicht überschrieben. Andere Variablenzuweisungen im Körper sind normale HA-Zuweisungen. Freie Jinja-/JSON-Textfelder bleiben im normalen HA-Kontext und werden nicht auf lokale Parameter umgeschrieben; dafür Variablenblöcke anschließen. Stop beendet weiterhin den gesamten HA-Lauf.

Der Wertblock Falls / gib zurück / sonst liefert den passenden Wert als Jinja-Ausdruck. Nur der ausgewählte Zweig wird ausgewertet; er kann an den Rückgabeeingang einer Wertfunktion oder an andere Werteingänge angeschlossen werden. Beide Wertzweige und die Bedingung sind erforderlich. Er ist kein vorzeitiges return aus einer Aktionsfolge.

JSON-Projekte bewahren Definitionen, Parameter, Aufrufe und Anordnung. YAML enthält aufgelöste Schritte bzw. Ausdrücke; ein YAML-Reimport rekonstruiert diese Schritte, nicht die ursprünglichen Funktionsdefinitionen. Blockbilder. Die folgenden Tabellen dokumentieren zusätzlich den historischen Vergleich von 0.1.15.

Stand 0.1.15, 10. Oktober 2026: 111 unterstützte Blocktypen. Drei Farbberechnungen und drei originale Blockly-Typen für Wertfunktionen/Parameter sind neu. Eine Funktionsdefinition ist neben der Automation erlaubt; andere unverbundene Blocks verhindern weiterhin den Export.

Quellen und Vorgehen ​

Verglichen wurden die bei uns installierten Standardblocks aus Blockly 13.3.0, die originale Blockly-Blockbibliothek sowie die ioBroker-Standardtoolbox und deren Blockly-Bridge. Die Links sind auf die geprüften Commits festgelegt.

Registriert, im Menü angeboten und bei uns exportierbar sind unterschiedliche Dinge. ioBroker lädt die Standardbibliothek vollständig. Ein dort registrierter Block muss nicht in seiner Standardtoolbox erscheinen. Die Bilder zeigen außerdem nicht zwangsläufig die aktuelle Toolbox. Textumkehr ist inzwischen im ioBroker-Menü enthalten; atan2 fehlt dort, ist aber durch den Bibliotheksimport grundsätzlich registriert. Das ist kein Nachweis, dass ioBroker atan2 nicht ausführen könnte.

Alle Standardkategorien ​

Kategorie / originale TypenioBroker-StandardmenüUGSo / HA und offene Varianten
Logik: controls_if, controls_ifelse, logic_compare, logic_operation, logic_negate, logic_boolean, logic_null, logic_ternaryEnthalten; weitere eigene UND/ODER-, Fall-, Bereichs- und ErsatzwertblocksVergleich, Gruppen, Falls/Sonst-wenn/Sonst, Wertauswahl, Bereich und Fallauswahl umgesetzt. Formvarianten werden durch eigene Blocks zusammengefasst.
Schleifen: controls_repeat, controls_repeat_ext, controls_whileUntil, controls_for, controls_forEachEnthalten, hauptsächlich Value-Variante der WiederholungszahlAnzahl/solange/bis/für jeden sowie ganzzahlige feste Zählgrenzen umgesetzt. Dynamische oder gebrochene Zählgrenzen offen.
Schleifensteuerung: controls_flow_statementsbreak / continueLokales break/continue offen. „Lauf stoppen“ beendet den gesamten HA-Lauf und ist kein Ersatz.
Mathematik: math_number, math_arithmetic, math_single, math_trig, math_constant, math_number_property, math_round, math_on_list, math_modulo, math_constrain, math_random_int, math_random_float, math_changeEnthalten; zusätzliche feste NachkommastellenEigene Rechen-, Statistik-, Rundungs-, Zufalls- und Variablenänderungsblocks. Offen: Primzahl, Standardabweichung, Modalwert mit allen Gleichständen und Unendlich. Keine vollständige Gleichheit aller Dropdown-Varianten behauptet.
Mathematik: math_atan2Nicht angeboten, Bibliothek registriertVierquadranten-Winkel bereits umgesetzt.
Text: text, text_join, text_append, text_length, text_isEmpty, text_indexOf, text_charAt, text_getSubstring, text_changeCase, text_trim, text_count, text_replace, text_reverseEnthalten; zusätzlich mehrzeiliger Text, Zeilenumbruch, enthält und ZahlenformatierungUmgesetzt einschließlich Textumkehr. Teiltext hat derzeit Grenzen vom Anfang; weitere Positionsvarianten und ioBroker-Zahlenformatierung offen.
Text: text_print, text_prompt, text_prompt_extNicht angebotenAusgabe über HA-Log-Aktion. Browser-Prompt wäre keine spätere HA-Eingabe und wird nicht als solche eingebaut.
Listen: lists_create_empty, lists_create_with, lists_repeat, lists_length, lists_isEmpty, lists_indexOf, lists_getIndex, lists_setIndex, lists_getSublist, lists_split, lists_sort, lists_reverseEnthalten; leere Liste als VarianteListe erstellen mit 0–100 Eingängen, Wiederholung, Suchen/Lesen/Setzen/Entfernen/Einfügen, Teilbereich, Teilen/Verbinden, Sortieren/Umkehren umgesetzt. Kombiniertes Lesen-und-Entfernen, weitere End-/Zufallspositionen offen.
Variablen: variables_get, variables_set, dynamische Typvarianten variables_get_dynamic, variables_set_dynamicDynamische Kategorie VARIABLE, keine VARIABLE_DYNAMIC-KategorieErstellen, Lesen, Setzen, Erhöhen umgesetzt. Typauswahl/typed-variable-modal bleibt vorgemerkt. Originaler Getter zusätzlich für Funktionsparameter.
Funktionen: procedures_defreturn, procedures_callreturn, procedures_defnoreturn, procedures_callnoreturn, procedures_ifreturnDynamische Kategorie PROCEDURENeu: originale Wertdefinition/Aufruf mit Parametern und Rückgabewert. Aktionen ohne Rückgabewert über vorhandenen HA-Script-Aufruf; keine lokalen Aktionsfunktionen oder frühes return.
Farbe: picker/random/rgb/blend aus field-colourAlle vier enthaltenJetzt Farbwähler plus Zufall, RGB und Mischung in eigener Kategorie; eigene HA-Generatoren statt JavaScript.

Interne Mutator-Hilfsblocks sind keine eigenständigen Anwenderblocks. Ältere Aliasformen werden über ihre entsprechende Funktion berücksichtigt. Bei ioBroker zusätzlich vorhandene Kategorien System, Aktionen, Sendto, Datum/Zeit, Konvertierung, Trigger, Timeouts und Objekt sind Erweiterungen der Script-Engine. Unsere bereits dokumentierten Gegenstücke stehen unter Datum/Zeit, Konvertierung, Timeouts/Objekt/Logik und Sammlungen. Fremde Adapter und nachinstallierte Drittplugins sind nicht Bestandteil dieses Standardvergleichs. Sendto/JSONata und benannte JavaScript-Timer werden nicht als native HA-Funktionen ausgegeben.

Farben verwenden ​

Unter Farbe stehen Farbauswahl, Zufallsfarbe, RGB-Prozentanteile und Mischung. Prozentwerte werden auf 0–100, der Mischanteil auf 0–1 begrenzt. Kanäle werden auf 0–255 umgerechnet und halbe positive Werte aufgerundet. Mischung 0 liefert Farbe 1, Mischung 1 Farbe 2; Rot/Blau mit 0,5 ergibt [128, 0, 128]. Keine Gamma-Korrektur.

Anders als die originalen JavaScript-Farbblocks liefern unsere berechneten Werte RGB-Listen für HA, keine Hextexte. Den Block an Licht → Farbe oder an eine Variablenzuweisung anschließen. Ein fester Farbwähler exportiert weiterhin eine native RGB-Liste; Berechnungen ein Template in data.rgb_color. Eine gespeicherte RGB-Variable kann ebenfalls angeschlossen werden. Es werden genau drei numerische Kanäle von 0–255 verlangt; Hextext zuerst bewusst umwandeln. Ungültige Werte führen zum Templatefehler.

Die Mischung wertet jeden direkt angeschlossenen Farbblock einmal aus. Veränderliche Zahlen-/Template-Eingänge, insbesondere der Mischanteil, vor Verwendung in einer Variablen speichern: generierte Typprüfungen oder mehrfach verwendete Funktionsparameter können Ausdrücke mehrfach auswerten. Zufall ist nicht kryptografisch. Die Generatoren nutzen die dokumentierten HA-Helfer zip, multiply und add. Die Funktionsreferenz gilt für aktuelles HA; auf älteren Installationen Verfügbarkeit prüfen.

Wertfunktionen verwenden ​

  1. Funktionen öffnen und einen Definitionsblock auf die Arbeitsfläche ziehen.
  2. Beispielsweise doppelt nennen; im originalen Zahnrad einen Parameter x hinzufügen.
  3. Als Rückgabewert Variable x × Zahl 2 anschließen. Parameter werden über Variablen-Getter gelesen.
  4. Kategorie erneut öffnen: Der Aufruf doppelt mit Eingang x steht dynamisch bereit. Zahl 21 anschließen und den Aufruf beispielsweise einer Variablen zuweisen.

Beim Export entsteht der entsprechende Jinja-Ausdruck mit dem Argument 21, keine JavaScript-/Python-Funktion. Bis zu acht unterschiedliche Parameter; Namen aus ASCII-Buchstaben, Ziffern und Unterstrich, beginnend mit Buchstabe oder Unterstrich. Verschachtelte Aufrufe sind innerhalb der allgemeinen Ausdruckstiefengrenze möglich. Rekursion, fehlende Argumente/Rückgabewerte, doppelte Namen und Aktionskörper verhindern den Export. Innerhalb einer Wertfunktion haben Parameter Vorrang vor gleichnamigen Automationsvariablen. Außerhalb gelten normale HA-Variablen und deren Gültigkeit. Rückgabewerte werden zur Laufzeit nicht allein durch die Blockly-Anschlussfarbe typisiert; in Bedingungen muss das Ergebnis Boolean sein.

JSON-Projekte erhalten Definitionen, Parameter und Aufrufe. YAML speichert die expandierte Bedeutung und öffnet diese später als Template; daraus werden keine Funktionsdefinitionen rekonstruiert. Der vorgemerkte Developer-Tools-Import für freie Block-/Template-Pakete bleibt eine separate Roadmap-Aufgabe.

Verifiziert: Projekt-/YAML-Rundlauf, Farbgrenzen, Jinja-Auswertung mit immutable Sandbox und nachgebildeten HA-Helfern, originaler Funktionsmutator, dynamisches Menü und Browser-Neuladen. Eine Ausführung in einer echten Home-Assistant-Installation steht noch aus.

Blockbilder und Einzelbeschreibungen · Originales field-colour · Eigene Blockly-Blöcke