Zum Hauptinhalt springen

Architektur und SDK-Karte

Die Entscheidung, die zählt

Entscheide zuerst, ob du ein Stream Deck App-Plugin oder einen direkten Hardware-Controller baust. Die Sprachwahl ergibt sich aus dieser Entscheidung.

1. Die Schichten​

Stream Deck hardware
|
| HID protocol
|
Official Stream Deck desktop app
|
| plugin WebSocket and SDK abstractions
|
Plugin runtime
|
+-- Node.js SDK plugin code
+-- Native console plugin code
+-- Property inspector HTML UI

Python-Werkzeuge zur Direktsteuerung sitzen üblicherweise unterhalb der Stream Deck Desktop-App und sprechen über HID mit dem Gerät. Offizielle Plugins sitzen oberhalb der Desktop-App und empfangen Events von Stream Deck.

2. Die Runtime wählen​

RuntimeAm besten fĂĽrVorteileKompromisse
TypeScript / JavaScript mit @elgato/streamdeckNormale Plugins, Marketplace, schnelle IterationOffizieller Weg, CLI-Scaffold, Hot Reload, Property Inspectors, PackagingNode-Runtime, SDK-Lebenszyklus folgt Elgatos Anforderungen
Python mit streamdeckLokale Automatisierungsstationen, Lab-Dashboards, eigene FrontendsDirekte Gerätesteuerung, exzellentes Scripting, einfacher OS/API-KlebstoffNicht das normale Stream Deck Plugin-Packaging-Modell; kann mit dem Zugriff der offiziellen App kollidieren
C#/.NET mit StreamDeckToolkitNative-artige Plugins, Windows-Integrationen, bestehender .NET-CodeStarke Typisierung, native App-Muster, .NET-ÖkosystemCommunity-Toolkit, ältere Template-Basis, mehr manuelle SDK-Abstimmung
Rohes WebSocket-Native-PluginC++, Go, Rust, eigene RuntimesMaximale Runtime-FreiheitFortgeschrittener Weg, mehr Protokollarbeit, mehr Packaging-Komplexität

3. JavaScript oder TypeScript​

Nutze standardmäßig TypeScript. Das offizielle Scaffold ist TypeScript-freundlich, das SDK bietet typisierte Events, und Action-Einstellungen profitieren von echten Typen.

Nutze reines JavaScript nur, wenn:

  • das Plugin winzig ist,
  • das Team keine TypeScript-Build-Schritte will,
  • du ein altes Plugin anpasst,
  • Typsicherheit die zusätzliche Projektzeremonie nicht wert ist.

Für neue Plugins gewinnt TypeScript meist, weil Stream Deck Actions schnell ereignisgesteuert werden: Tasten-Events, Dial-Events, Einstellungen, Geräte-Events, UI-Nachrichten und Lifecycle-Hooks.

4. Python​

Python ist das richtige Werkzeug, wenn du das Stream Deck zu einem physischen Dashboard fĂĽr deinen eigenen Prozess machen willst:

  • Hausautomatisierung,
  • Observability-Panels,
  • interne Betriebs-Konsolen,
  • Testaufbauten,
  • Medien-/Kontrollräume,
  • kioskartige lokale Workflows,
  • Hardware-Experimente.

Der zentrale Unterschied: Direkte Python-Steuerung besitzt das Rendering. Du zeichnest Bilder, setzt Helligkeit, registrierst Callbacks und entscheidest über jeden Zustandsübergang. Das ist mächtig, aber es ist nicht dasselbe Nutzererlebnis wie das Installieren eines Stream Deck App-Plugins.

5. .NET und native Plugins​

C# ergibt Sinn, wenn das Plugin natürlicherweise in eine .NET-Umgebung gehört:

  • Windows-APIs,
  • bestehende C#-Bibliotheken,
  • Enterprise-Desktop-Integrationen,
  • lokale Dienste, die bereits in .NET geschrieben sind,
  • stark typisierte native App-Workflows.

Elgatos aktuelle offizielle Doku empfiehlt das Node.js SDK fĂĽr die meisten Plugin-Autoren und beschreibt rohe WebSocket-Plugins als fortgeschritten. Behandle C# als bewusste Entscheidung, nicht als schnellsten Standard.

6. Marketplace-Bereitschaft​

FrageOffizielles TS-PluginPython HID-AppC# Native-Plugin
Läuft in der Stream Deck AppJaNein, nicht standardmäßigJa, wenn als Plugin umgesetzt
Nutzt manifest.jsonJaNeinJa
Property-Inspector-UnterstĂĽtzungJaNein, es sei denn, du baust deine eigene UIJa, ĂĽber Plugin-UI
Als .streamDeckPlugin verpacktJaNeinJa
Am besten für MarketplaceJaNeinMöglich, aber schwergewichtiger
Am besten fĂĽr rein lokale AutomatisierungGutExzellentGut

7. Praktische Empfehlung​

Starte mit TypeScript, auĂźer die Produktanforderung sagt etwas anderes.

Wechsle zu Python, wenn das Projekt eigentlich kein Plugin ist, sondern eine eigene Controller-Anwendung, die das Deck als Hardware nutzen soll.

Wechsle zu C# oder einer anderen nativen Runtime nur, wenn das Plugin nativen Code oder framework-spezifische Integrationen wiederverwenden muss, die über Node.js schlechter wären.