Hallo @contributors ![]()
Ich füge gerade eine neue Tabelle zum Datenmodell hinzu und würde gerne eure Meinung hören, um sicherzustellen, dass es gut zu den Anforderungen passt, bevor ich weitergehe.
Kontext
In einigen Integrationen müssen wir die von einer bestimmten Funktion unterstützten Werte speichern.
Einfaches Beispiel: Eine Klimaanlage mit einem „Betriebsmodus“.
- Einige Modelle unterstützen: Warm / Kalt / Auto
- Andere nur Kalt
Aktuell modellieren wir dieses Konzept der „Gerätefähigkeit“ nicht wirklich, was langsam zu Problemen führt.
Wir sehen das bereits bei Szenen / Zigbee2MQTT: Für Tasten wird eine recht große Liste möglicher Aktionen angezeigt (mehrere Dutzend), obwohl ein bestimmtes Gerät nur einen kleinen Teil davon unterstützt. Ergebnis: Unklare UX und Fehlerrisiko für den Benutzer.
Vorschlag
Ich schlage vor, eine Tabelle hinzuzufügen:
t_device_feature_supported_option:
- `id` UUID PK
- `device_feature_id` UUID FK → `t_device_feature`
- `value` INTEGER NOT NULL
- `label` STRING NOT NULL
- `sort_order` INTEGER NOT NULL DEFAULT 0
Sie würde es ermöglichen, für eine bestimmte Gerätefunktion die Liste der tatsächlich unterstützten Optionen zu speichern.
Der Label wird ein Wert in Englisch sein, der dann in den Übersetzungen übersetzt wird.
Falls der Label nicht existiert, wird als Fallback der Label auf Englisch angezeigt.
Auf der API-Ebene würde das in etwa so aussehen:
Warum jetzt?
Ich sehe diesen Bedarf immer häufiger, insbesondere:
- mit Matter, wo einige Geräte (Roboterstaubsauger, Klimaanlagen) Cluster mit einer dynamischen Liste möglicher Optionen exponieren
- mit Zigbee2MQTT, wo einige Funktionen (insbesondere Tasten / Aktionen) in der Anzahl der möglichen Optionen explodieren
Wir bewegen uns eindeutig auf ein Modell zu, bei dem wir uns nicht mehr mit einer globalen Liste von Optionen pro Funktion begnügen können.
Was denkt ihr? Seht ihr Fälle, in denen dieses Modell nicht funktionieren würde?
Danke für euer Feedback ![]()


