Baugruppen
Baugruppen sind fertig zusammengesetzte Elemente, die schon an ihre Werte gebunden sind. Du musst kein Topic kennen: Der Reiter Prebuilt der Palette zeigt, was die Geräte auf deinem Broker anbieten, mit ihren eigenen Namen, und eine Baugruppe bindet sich selbst daran.
Die Einträge kommen von Geräten, die sich im Discovery-Format von Home Assistant anmelden, etwa Zigbee2MQTT, ESPHome, Tasmota, Shelly mit Skript oder OpenMQTTGateway. Sie legen für jedes Ding eine Beschreibung auf den Broker, unter einem Präfix, meist homeassistant. Der Designer liest dort nur mit und schickt selbst nichts. Welches Präfix er liest, stellst du beim Broker unter Discovery prefix ein. Ohne Broker gibt es keine Baugruppen.
Manche Absender beschreiben ein Gerät zusätzlich als Ganzes, in einem eigenen Format von Schaltli unter schaltli/blocks. Dann steht unter Prebuilt diese eine fertige Baugruppe, und die einzelnen Einträge, die sie ersetzt, fallen weg. Mehr dazu unter Teile je nach Betrieb.
Auf einem Pekaway-System kündigt die VanPi-Brücke die Dinge deines Vans an, unter dem Gerät «VanPi».

So geht's
- Klick in der Palette auf den Reiter Prebuilt. Der Designer liest, was angekündigt ist, und zeigt jedes Ding als Zeile mit seinem Icon und seinem eigenen Namen, in einer Gruppe pro Gerät, alphabetisch. Home Assistant nennt den Fühler «Cabin Temperature» des Geräts «van-sensors» «van-sensors Cabin Temperature», die Zeile nur «Cabin Temperature». Was zu keinem Gerät gehört, steht zuletzt unter «Other». Im Suchfeld findest du ein Ding über seinen Namen oder den seines Geräts. Unten steht, wie viele Dinge von wie vielen Geräten da sind. Hört der Designer mit, ist also Listening unten in der Statusleiste eingeschaltet, erscheint ein Gerät, das sich neu ankündigt, gleich in der Liste, und eines, das seine Ankündigung zurücknimmt, verschwindet. Ist Listening aus, liest der Designer beim Öffnen des Reiters einmal nach, und Refresh unten liest noch einmal.
- Zieh die Zeile auf den Screen, oder klick sie an und dann auf den Screen, wie ein Werkzeug. Hast du sie angeklickt, kannst du sie danach auch noch ziehen, siehe Ein Objekt setzen. Du kannst die Baugruppe auch in eine Tabelle tragen, siehe In einer Tabelle. Esc oder ein zweiter Klick auf dieselbe Zeile brechen ab.
Gefragt wird nichts. Die Baugruppe kommt in ihrer ersten Form, die dein Gerät darstellen kann, siehe die Spalte Look unten, mit allen Teilen und allen Abschnitten. Was du nicht brauchst, löschst du danach auf dem Screen.
Als Icon nimmt der Designer, was das Gerät in seiner Ankündigung nennt. Nennt es keines, sucht er eines zum Namen. Er holt die Icons, sobald der Reiter die Zeile zeigt. Ist eines beim Klick noch unterwegs, wartet die Baugruppe kurz darauf, bevor sie am Mauszeiger hängt. Das Icon kommt einmal in die Assets des Projekts, auch wenn du die Baugruppe mehrmals einfügst. Ist der Icon-Dienst nicht erreichbar, kommt die Baugruppe ohne Icon auf den Screen. Ein anderes Icon wählst du danach in den Eigenschaften des Icons.
Die Beschriftung ist der Name des Dings als fester Text, in der Grösse XL, siehe Schriftgrössen. Auf Geräten, die ihre Grösse noch nicht in Millimetern angeben, wählt der Designer die Schrift passend zur Grösse des Screens.
Was entsteht
| angekündigt als | auf dem Screen | Look |
|---|---|---|
Schalter (switch) | der Name und daneben zwei Knöpfe «Aus» und «An», oder mit den Wörtern des Geräts, wenn es nicht ein und aus meldet | – |
Zustand (binary_sensor) | der Name und daneben der gemeldete Zustand als Text | – |
Messwert (sensor) | der Name und der Wert mit seiner Einheit; bei Prozent und Batterie auch als Balken oder Ring | Number, bei Prozent Bar und Gauge |
Text (sensor ohne Zahl) | der Name und daneben der gemeldete Text, etwa eine ID oder eine Version | – |
Zahl (number) | der Name und darunter ein Regler im Bereich und in den Schritten des Geräts | Slider, Dial |
Auswahl (select) | der Name und daneben ein Knopf je Möglichkeit | Buttons |
Taste (button) | ein Button mit dem Namen, der beim Antippen die Nachricht des Geräts schickt | – |
Szene (scene) | wie eine Taste: ein Button mit dem Namen, der beim Antippen die Szene einschaltet | – |
Text (text) | der Name und daneben ein Text field, das den gemeldeten Text zeigt und einen neuen schickt; mit einem pattern oder einer eigenen Befehlsvorlage nur der gemeldete Text | – |
Uhrzeit (time) | der Name und daneben ein Time field in Schritten von 5 Minuten; mit einer eigenen Befehlsvorlage nur die gemeldete Zeit als Text | – |
Ereignis (event) | der Name und daneben die Art des letzten Ereignisses, etwa «press» oder «hold» | – |
Abdeckung (cover) | der Name mit dem gemeldeten Zustand, darunter je ein Button «Open», «Stop» und «Close» und ein Regler für die Position, wenn das Gerät sie setzen lässt | Slider, Dial für die Position |
Ventil (valve) | wie eine Abdeckung: der Name mit dem Zustand und die Buttons «Open» und «Close», «Stop» nur, wenn das Gerät es kann; meldet das Ventil eine Position, statt des Zustands ein Regler | Slider, Dial für die Position |
Ein Sensor gilt wie in Home Assistant nur dann als Zahl, wenn seine Ankündigung eine Einheit, eine Messart (state_class) oder eine Geräteklasse nennt, die etwas misst, etwa Temperatur oder Spannung. Sonst zeigt die Baugruppe den Wert als Text.
Viele Geräte geben in ihrer Ankündigung Vorlagen mit, nach denen Home Assistant Befehle zusammensetzt oder Zustände ausliest, etwa Shelly für seine RPC-Aufrufe. Wo das Ergebnis feststeht, rechnet der Designer solche Vorlagen beim Einlesen selbst aus: für die beiden Zustände eines Schalters, für einen Button und für jede Wahl einer Auswahl. Das Gerät bekommt dann die fertigen Nachrichten. Leitet eine Vorlage einen Zustand aus einem Feld ab, etwa «ein, wenn output wahr ist», löst der Designer sie rückwärts auf, und das Gerät liest das Feld selbst. Rundet eine Vorlage einen Wert auf Nachkommastellen, übernimmt die Baugruppe das als Zahlenformat. Rechnet eine Vorlage eine Zahl linear um, etwa von m/s in km/h (* 3.6) oder von Millisekunden in Sekunden (/ 1000), bringt die Baugruppe ein Combined topic als skalierte Zahl mit, und das Gerät rechnet selbst. Steckt eine Vorlage die Zahl eines Sliders in einen Befehl, etwa {"interval":{{value*1000}}} oder einen RPC-Aufruf von Shelly, bekommt der Slider ein passendes Send as.
Was der Designer nicht setzen kann, ist eine graue Zeile. Fährst du mit der Maus darüber, steht der Grund da, etwa «Not supported: the value template: the function states()». Das sind Geräte, deren Ankündigung Werte anders als mit den Grundrechenarten umrechnet, mehrere Werte verknüpft oder Funktionen braucht, die nur Home Assistant kennt. Solche Werte bindest du von Hand, siehe Topics. Grau ist eine Zeile auch, wenn dein Gerät die Objekte der Baugruppe nicht darstellen kann.
Von den Formen in der Spalte Look nimmt der Designer die erste, die dein Gerät darstellen kann. Die Form Number zeigt den Wert als Chip in einem Text.
Jede Baugruppe ist eine Karte, auch eine aus einem einzigen Teil wie ein Licht: oben das Icon und der Name, darunter das Bedienelement. Wie die Karte aussieht und wie breit sie wird, steht unter Mehrere Teile. Willst du nur ein Objekt darin ändern, doppelklickst du hinein oder wählst es in der Objektliste. Das Gerät bekommt die Objekte einzeln.
Alles Weitere, Farben, Grösse, die Beschriftung, änderst du danach in den Eigenschaften wie bei jedem anderen Objekt.
Mehrere Teile
Lichter, Lüfter, Klimageräte, Boiler und Luftentfeuchter bestehen aus mehreren Teilen. Ein Lüfter hat etwa einen Schalter (Power), Voreinstellungen (Preset), eine Geschwindigkeit (Speed), eine Drehrichtung (Direction) und das Schwenken (Oscillation), in dieser Reihenfolge, vom Groben zum Detail. Der Designer setzt immer alle Teile, jeden in seiner ersten Form, die Geschwindigkeit etwa als Slider.
Auch eine Abdeckung hat mehrere Teile, etwa eine Markise, eine Dachluke oder ein Rollo: den Zustand (State), einen Button je zum Öffnen, Anhalten und Schliessen (Open, Stop, Close), die Position und die Neigung der Lamellen (Tilt). Weil jede Bewegung ihr eigener Button ist, kannst du einen weglassen oder grösser machen als die anderen. Kann das Gerät eine Bewegung nicht, etwa ein Tor, das nicht anhält, fehlt ihr Button. Den Zustand zeigt die Baugruppe so, wie ihn das Gerät meldet, etwa «open» oder «closing». Die Position zeigt der Regler in Prozent, wie bei der Helligkeit eines Lichts.
Ein Ventil, etwa für Frisch- oder Grauwasser, setzt der Designer gleich zusammen. «Stop» bekommt es nur, wenn das Gerät dafür eine Nachricht nennt. Meldet ein Ventil statt «open» und «closed» seine Position, fällt der Zustand weg und ein Regler kommt dazu. «Open» und «Close» stellen es dann ganz auf und ganz zu.
Ein Boiler (water_heater) hat die Teile eines Klimageräts, nur weniger: die Betriebsart (Mode), die Solltemperatur (Target temperature), die gemessene Temperatur (Current temperature) und den Schalter (Power). Nennt er keinen Temperaturbereich, reicht der Regler von 43.3 bis 60 °C, in Fahrenheit von 110 bis 140, wie in Home Assistant.
Ein Schloss (lock), etwa eine Zentralverriegelung, zeigt seinen Zustand und darunter die Knöpfe «Lock» und «Unlock». Kann es auch öffnen, kommt ein Button «Open» dazu. Verlangt ein Schloss einen Code, zeigt die Baugruppe nur den Zustand. Home Assistant prüft den Code, bevor es den Befehl schickt, ein Knopf auf dem Screen könnte das nicht.
Eine Alarmanlage (alarm_control_panel) zeigt ihren Zustand in Worten, etwa «Armed away» statt armed_away. Darunter steht ein Knopf für jede Art, sie scharf zu schalten, die sie anbietet (Home, Away, Night, Vacation, Bypass), dazu «Disarm» und, wenn sie es kann, «Trigger». Verlangt sie einen Code, kommt ein Text field «Code» mit verdecktem Text dazu. Es schreibt auf ein Local topic, der Code bleibt also auf dem Gerät. Die Knöpfe setzen ihn in ihren Befehl, schicken nur, wenn er stimmt, und leeren das Feld danach. Nennt die Ankündigung einen festen Code, prüft ihn das Gerät selbst, wie es Home Assistant täte. Bei REMOTE_CODE prüft die Anlage, und jeder Code geht hinaus, der nicht leer ist. Besteht der Code nur aus Ziffern, öffnet das Feld die Tastatur bei den Ziffern.
Ein Luftbefeuchter oder -entfeuchter (humidifier) ist gebaut wie ein Lüfter: der Schalter (Power), die Betriebsarten (Mode), die gewünschte Feuchte (Target humidity) als Regler und die gemessene (Current humidity) als Balken, beide in Prozent.
Eine Sirene (siren) hat einen Schalter (Power). Kennt sie mehrere Töne, kommt je Ton ein Knopf dazu (Tone), der sie mit diesem Ton einschaltet. Wie Home Assistant schickt die Baugruppe dabei JSON, etwa {"state":"ON"}, ausser die Ankündigung verlangt den Wert allein.
Ein Update (update) zeigt die installierte Version (Installed version) und die neueste (Latest version). Kann sich das Gerät selbst aktualisieren, kommt ein Button «Install» dazu.
Eine Baugruppe ist eine Karte. Oben steht ihr Name, mit dem Icon davor, falls du eines gewählt hast, angedockt mit Dock Top. Darunter stehen die Teile in einer Tabelle, einer unter dem anderen, über die ganze Breite der Karte. Die Teile füllen ihre Spalte und enden an derselben Kante. Die Karte ist so hoch, wie Name und Teile es brauchen. Breit ist sie die Hälfte des Screens, so dass zwei nebeneinander passen. Brauchen die Teile mehr, wird sie so breit wie nötig, höchstens aber der Screen mit einem schmalen Rand. Auf dem 4" ist ein Licht also eine halbe Breite und die Heizung fast die ganze, auf einem Tablet sind beide halb so breit wie der Screen. Reicht auch das nicht, schreibt die Baugruppe ihre Knopfreihen eine oder zwei Grössen kleiner. Was dann noch übersteht, schneidet die Karte an ihrem Rand ab. Bedienelemente tragen keine eigene Beschriftung: Ein Schalter sagt «An» oder «Aus», Knöpfe zeigen ihre Wörter, ein Regler seinen Wert. Die Helligkeit eines Lichts zeigt er wie Home Assistant in Prozent, gleich auf welcher Skala das Licht sie meldet. Willst du den Wert so, wie er ankommt, stellst du beim Regler Show value auf Value. Was nur angezeigt wird, steht dagegen mit seinem Namen da, etwa «Spannung 13.3 V». Eine Zahl allein sagt nicht, was sie ist. Auf einem Gerät mit Grössen XS bis L kommen die Bedienelemente in der Grösse M, ausser die Beschreibung will für einen Teil eine andere, etwa XS für eine Taste wie «Nullen». So ist dieselbe Baugruppe überall gleich gross.
Eine Baugruppe kommt wie jede Karte: ohne Taste frei, wo du sie loslässt, oder in die leere Zelle oder Card unter dem Mauszeiger. Mit Alt rastet sie an den Rand einer Tabelle oder neben ein anderes Objekt, und sie füllt dort ihre Zelle. So baust du aus Baugruppen ein Raster aus Karten, siehe Card. Baugruppen, die schon auf einem Screen liegen, bleiben, wie sie sind.
Brauchst du einen Teil nicht, etwa den Schalter eines Dimmers, der auch mit dem Regler auf 0 aus ist, löschst du ihn auf dem Screen. Den Teil in der Objektliste wählen, Entf.
Teile je nach Betrieb
Bei manchen Geräten zählt je nach Betriebsart ein anderer Regler. Ein Dachlüfter im Automatikbetrieb hält eine Temperatur, von Hand läuft er mit einer festen Stufe, und ausgeschaltet gibt es nichts einzustellen. Das Discovery-Format von Home Assistant kann das nicht ausdrücken. Ein Absender, der sein Gerät kennt, kann es aber in seiner eigenen Beschreibung sagen. Die VanPi-Brücke tut das für den MaxxFan und die Heizung.
Aus so einer Beschreibung setzt der Designer die Teile, die nur in einer Betriebsart gelten, in einen Switcher mit einem Panel pro Betriebsart. Auf dem Screen steht dann immer nur der Regler, der gerade gilt, und in einer Betriebsart ohne Regler steht dort nichts. Der Switcher steht in einer Zelle und ist so hoch wie sein höchstes Panel, darum rückt beim Wechsel der Betriebsart nichts darunter nach. Die übrigen Teile, etwa die Wahl der Betriebsart, stehen wie gewohnt untereinander. Die Knöpfe tragen die Wörter, die der Absender dafür vorsieht, etwa «Aus», «Hand» und «Auto» statt off, fan_only und auto, und wo er eines nennt, ein Icon.
Eine Baugruppe kann mehrere Switcher haben, je einen für jedes Topic, nach dem sich Teile richten. Bei der Heizung zeigt einer den Regler der Betriebsart, ein zweiter die Laufzeit, solange der Timer an ist.
Meldet der Absender zu einem Regler auch den gemessenen Wert, zeigt die Füllung diesen Istwert und der Griff den Sollwert. Bei der Heizung füllt sich der Bogen bis zur Raumtemperatur, und der Griff steht auf der Zieltemperatur. Im Eigenschaften-Panel ist der Istwert das Topic und der Sollwert das Setpoint topic.
In der Vorschau wechselt der Regler mit der Betriebsart, und du kannst ihn dort auch ziehen. Am Knob legst du den Drehring auf den Switcher, dann stellt er immer den Regler, der gerade zu sehen ist, siehe Einen Regler stellen.
Abschnitte
Eine eigene Beschreibung kann ihre Teile in Abschnitte gliedern, etwa bei der Heizung in «Laufzeit» und «Verbrauch». Der Designer setzt alle Abschnitte, also die ganze Baugruppe. Was du auf dem Screen nicht willst, löschst du dort wie jeden Teil.
Ein Teil kann auch ein Text sein, der so erscheint, wie er auf dem Broker liegt, etwa «2.100 l seit 05.12.2024 18:00h». Er bekommt die ganze Breite seiner Zeile.
Zwei Spalten
Eine Baugruppe mit vielen Teilen wird untereinander schnell höher als der Screen. Eine eigene Beschreibung kann ihre Teile deshalb auf zwei Spalten verteilen. Teile ohne Spalte gehen dann über beide Spalten, die übrigen stehen in zwei Spalten nebeneinander, jede von oben nach unten. Hat eine Seite weniger Teile, reicht ihr letzter Teil über die übrigen Zeilen der anderen. Mehrere solche Abschnitte mit zwei Spalten kann sie untereinander setzen. Eine Taste in der zweiten Spalte nimmt nur so viel Platz, wie sie braucht. Einen Text kann die Beschreibung klein setzen, in Standard, und für einen Schalter die Form Switch statt der Knöpfe wählen. Stehen in einer solchen Zeile auf beiden Seiten Dials, stehen sie unten auf derselben Linie.
Die Heizung der VanPi-Brücke hat zuoberst klein ihren Zustand, darunter die Betriebsart über die ganze Breite. Dann stehen nebeneinander der Regler der Betriebsart und der Timer, zuunterst der Verbrauch mit «Nullen» daneben. So passt sie auf einen Screen von 800 × 480. Auf dem 4" mit 480 × 480 stehen die Wörter der Betriebsart kleiner, damit die vier nebeneinander Platz haben.
Ein Dial in einer Baugruppe kommt etwa sechs Schriftzeilen gross, auf dem 4.3B rund 140 px. Seinen Durchmesser änderst du danach unter Frame › Diameter, seine Spalte richtet sich danach.
In einer Tabelle
Eine Baugruppe kommt als Karte in eine Tabelle, siehe Mehrere Teile. Trägst du sie mit Alt so unter eine andere Karte, dass ihr oberer Rand knapp unter deren unterem liegt, rasten die beiden zu einer Tabelle zusammen, und jede füllt ihre Zelle. Lässt du sie dagegen mit dem Mauszeiger über einer anderen Karte los, kommt sie in diese Karte hinein. Ein Knopf wie «Restart» trägt seinen Namen selbst. Seine Karte hat darum keinen Namen oben, nur den Knopf.
Was im Projekt landet
Neben den Objekten trägt der Designer die Topics ein, die die Baugruppe braucht. Du findest sie unter Settings › Topics:
- das Topic, aus dem er liest. Liegt der Wert in einer JSON-Nachricht, etwa
{"state":"ON"}, ist es ein JSON-Topic mit dem Feld als Subtopic, - das Topic, an das er seine Befehle schickt.
Als Beispielwert bekommt jedes Topic, was der Designer bis zum Klick auf die Zeile vom Broker gehört hat. Die Vorschau zeigt so von Anfang an etwas, das nach deiner Anlage aussieht. Hat der Broker nichts gemeldet, bekommt das Topic keinen Beispielwert, und die Baugruppe zeigt keinen Wert, wie das Gerät vor der ersten Nachricht. Einen Wert, den niemand geschickt hat, setzt der Designer nicht ein. Ein Topic, das schon im Projekt steht, lässt der Designer, wie es ist, auch wenn du seine Beispiele selbst eingetragen hast.