Zurück zur Wissensdatenbank
Python-Automatisierung/7 Min. Lesezeit/

Arise Python Commander

Arise Python Commander macht aus jedem Python-Skript ein Stream-Deck-Bedienelement, das zurückmeldet. Fünf Actions decken Einmal-Läufe, das Mappen von Ausgaben auf Bilder, zeitgesteuerte Loops, Live-Streaming auf eine Taste oder die Neo-Info-Leiste und Tasten ab, die das Skript selbst malt. Für Stream Script schreibt der Property Inspector den kompletten Prompt für deinen KI-Agenten.

Von Arise Create

  • Fünf Actions, ein Plugin
  • Live auf Tasten und der Neo-Info-Leiste
  • Ein Agent kann das Skript schreiben
Ein Stream Deck Neo mit acht laufenden Python-Skripten, jede Taste zeigt ihre Live-Ausgabe, auf der Info-Leiste läuft ein Build

Was es tut

Arise Python Commander ist das Plugin für alles, wofür es kein Plugin gibt. Statt einer festen Funktion gibst du einer Taste ein Python-Skript, und die Taste zeigt, was das Skript ausgibt: einen Wert, einen Fortschrittsbalken, ein Bild, das du einer Ausgabe zugeordnet hast, oder einen Frame, den das Skript selbst gezeichnet hat. Alle Tasten sprechen dieselbe visuelle Sprache: Skriptname, letzter Wert und Zustand (bereit, live, fertig, Warnung, Fehler, gestoppt) lesen sich auf dem ganzen Deck gleich.

Den Zustand leitet das Plugin aus der Ausgabe ab. Eine Zeile mit Wörtern wie "error" oder "failed" färbt die Taste rot, "warning" gelb, und ein voller Fortschrittsbalken gilt als fertig. Ein Skript muss also nichts über Stream Deck wissen, um brauchbares Feedback zu geben.

Die fünf Actions

Wähle die Action danach, was dein Skript tut.

  • Run PY-Script: führt eine Python-Datei pro Tastendruck einmal aus und zeigt das Ergebnis auf der Taste. Bis zu zwei Ausgabewerte lassen sich auf eigene Bilder mappen, sodass "true" oder "false" die ganze Tastenfläche wechseln kann.
  • Multi State PY-Script: wie Run PY-Script, mappt aber bis zu fünf exakte Ausgabewerte auf fünf Bilder. Gib einen der Werte aus, und die Taste springt um. Gebaut für Status-Dashboards und Umschalter.
  • Loop Script: führt eine Python-Datei nach einem Zeitplan aus, den du im Inspector wählst, von alle paar Sekunden bis zu einem eigenen Intervall, und aktualisiert die Taste nach jedem Lauf. Gebaut für Polling, Health-Checks, Zeitstempel und Live-Anzeigen.
  • Stream Script: startet ein langlaufendes Skript und zeigt jede Zeile live, sobald sie ausgegeben wird. Fortschrittszeilen werden als Balken oder Ring gezeichnet. Diese Action läuft auch auf der Info-Leiste eines Stream Deck Neo, und sie ist die, die ein KI-Agent für dich schreiben kann.
  • Script Canvas: führt ein dauerhaft laufendes Skript aus, das die Taste mit eigenen Bildern malt, ein Frame pro ausgegebener Zeile, und dem Skript Tastendrücke meldet. Gebaut für alles, was kein festes Layout zeigen kann.

Einrichtung

  1. 1Installiere Arise Python Commander aus dem Elgato Marketplace. Voraussetzung ist Stream Deck 7.6 oder neuer.
  2. 2Ziehe eine Action auf eine Taste. Stream Script lässt sich auch auf die Info-Leiste eines Stream Deck Neo legen.
  3. 3Trage im Property Inspector unter "Path to Script" den vollständigen Pfad zu deinem Skript ein (zum Beispiel C:\Users\du\scripts\status.py). Bei Stream Script und Script Canvas kannst du den Skripttext auch direkt einfügen, dann braucht es keine Datei.
  4. 4Mappe optional Ausgaben auf Bilder: bis zu fünf Werte bei Multi State PY-Script, zwei bei Run PY-Script und Loop Script, über die Felder "Match value" und "Image for value".
  5. 5Wähle bei Loop Script einen Zeitplan oder trage eigene Sekunden ein.
  6. 6Drück die Taste. Ein Stream Script auf der Info-Leiste startet von allein, sobald es sichtbar ist.

Python, Interpreter und virtuelle Umgebungen

Diese Einstellungen liegen bei jeder Action unter "Advanced runtime options", nicht in einer globalen Einstellung. Verschiedene Tasten können also in verschiedenen Python-Umgebungen laufen.

  • Python interpreter: "Auto detect" probiert python, python3 und py der Reihe nach. Wähle einen explizit, oder nimm "Custom path" und trag den vollständigen Pfad zu einer ausführbaren Datei ein.
  • Use virtual environment: anhaken und den Pfad zum Umgebungsordner eintragen (zum Beispiel C:\projekt\.venv). Das Plugin startet das Skript mit dem Interpreter dieser Umgebung, ihre Pakete sind also verfügbar.
  • Drittanbieter-Module gibt es nur, wenn sie für den Interpreter installiert sind, den die Action nutzt. "No module named ..." heißt fast immer: falscher Interpreter oder fehlende virtuelle Umgebung auf dieser Taste.
Ein Stream Script streamt Live-Fortschritt auf die Info-Leiste des Stream Deck Neo, ohne Tastendruck

Stream Script: was dein Skript ausgibt

Ein Stream Script läuft weiter und gibt immer dann eine Zeile aus, wenn sich die Taste ändern soll. Das Plugin zeichnet nach jeder vollständigen Zeile neu. Der Vertrag ist kurz, aber streng.

  • Immer flushen: print("...", flush=True). Python puffert die Ausgabe, wenn es nicht in ein Terminal schreibt. Ohne Flush erreicht keine Zeile das Plugin, und die Taste bleibt leer.
  • Eine Aktualisierung pro Zeile, und kurz halten. Eine Taste zeigt ein paar Wörter, die Neo-Info-Leiste eine Zeile.
  • Weiterlaufen. Beendet sich das Skript von selbst, zeigt die Taste "done" (ohne Ausgabe) oder "ended" (mit Ausgabe); auf einer Taste startet ein Druck es neu.
  • stderr sauber halten. Alles, was auf stderr landet, versetzt die Taste in den Fehlerzustand. Schreib Diagnosen stattdessen in eine Logdatei.
  • Reiner Text wird zum Wert der Taste: ok, 23,5 Grad, 3 neu.
  • Fortschrittszeilen steuern einen Balken: progress:42|Downloading, progress=42 oder 75% | Uploading. Der Prozentwert wird auf 0 bis 100 begrenzt, das Label daneben angezeigt.
  • Eine Zeile, die exakt Match value 1 oder 2 entspricht, blendet das gemappte Bild ein.
  • Eine Zeile, die ein Bild ist, eine data:image/...-URI, rohes <svg>-Markup oder JSON wie {"image": "..."}, malt die ganze Fläche bis zum Rand: 144x144 auf einer Taste, 232x50 auf der Neo-Info-Leiste.
  • Hinweise stehen vor der Nutzlast, jeder mit Semikolon: layout=radial; wählt bei Display layout "Auto detect" das Layout für diese Aktualisierung, color=#ff8800; oder color=orange; färbt sie um. Auf der Info-Leiste füllt ein Verlauf wie color=0:#ff0000,1:#0000ff; den Balken.

Display-Layouts

Die Einstellung Display layout entscheidet, wie eine Fortschrittszeile gezeichnet wird. Auto detect folgt layout=-Hinweisen in der Ausgabe, die anderen erzwingen ein Aussehen.

  • Text only: der Wert als reiner Text, auch bei Fortschrittszeilen.
  • Progress bar: ein Balken in voller Breite unter dem Wert.
  • Compact bar: ein schmalerer Balken, der Platz für das Label lässt.
  • Radial: ein Ring um den Prozentwert.
  • Bar + mapped final icon: ein Balken, solange es läuft, dann dein gemapptes Bild bei 100 %.

Die Info-Leiste des Stream Deck Neo

Die Info-Leiste des Neo ist ein 232x50 Pixel großer Streifen, der sich nicht drücken lässt. Ein Stream Script dort startet von allein, sobald es konfiguriert und sichtbar ist, startet bei jeder Einstellungsänderung neu und stoppt, wenn es den Bildschirm verlässt. Fortschrittszeilen steuern den Balken des Streifens, alle anderen Zeilen erscheinen als Wert, ein Bild muss exakt 232x50 sein, um ihn zu füllen.

Weil es keinen Tastendruck zum Wiederholen gibt, scheitert der Streifen still: Ein Skript, das nicht korrekt ausgibt, zeigt gar nichts. Starte ein neues Skript zuerst im Terminal und prüfe, dass es zeilenweise ausgibt.

Script Canvas: ein Python-Skript malt eine Taste und die Info-Leiste mit eigenen Bild-Frames

Script Canvas: mal die Taste selbst

Ein Script-Canvas-Skript besitzt die ganze Taste. Jede ausgegebene Zeile ist ein Frame: eine data:image/...-URI, rohes <svg>-Markup oder JSON wie {"image": "...", "title": "..."}. Ein SVG braucht explizite width und height; hat es nur eine viewBox, ergänzt das Plugin sie, im Zweifel als 144x144.

Tastendrücke bekommt das Skript als zeilenweises JSON auf der Standardeingabe, als {"event": "keyDown"}, damit ein Canvas reagieren kann statt nur zu animieren. Das Lesen ist optional; stdin blockiert, also lies es in einem Hintergrund-Thread und gib die Frames weiter aus der Hauptschleife aus.

Beschreibe, was eine Taste zeigen soll, und das Plugin schreibt den ganzen Prompt für einen KI-Agenten

Lass einen KI-Agenten das Skript schreiben

Bei Stream Script musst du nichts selbst schreiben. Der Property Inspector der Action hat einen Abschnitt "Ask an AI agent to build this", der aus einem Satz einen kompletten Prompt für deinen Agenten macht, und dem Agenten einen Weg gibt, das fertige Skript direkt auf die Taste zu liefern.

  1. 1Öffne die Einstellungen der Stream-Script-Action und klappe "Ask an AI agent to build this" auf.
  2. 2Beschreibe unter Description, was die Taste zeigen soll, zum Beispiel "the temperature outside, blue when it's below freezing".
  3. 3Das Feld Prompt füllt sich von selbst: Skript-Vertrag, die genaue Fläche, auf der die Taste liegt, samt Pixelgröße, und die Lieferschritte. Deinen Push-Token enthält es nie, du kannst es also überall einfügen.
  4. 4Drück Copy prompt und füg den Prompt in deinen Agenten ein.
  5. 5Der Agent schreibt das Skript, prüft, dass es korrekt ausgibt, und liefert es über einen lokalen Link auf diese Taste, den nur ein Prozess auf deinem eigenen Rechner autorisieren kann. Das Skript wird auf der Taste selbst gespeichert und läuft weiter, auch wenn die temporäre Datei des Agenten weg ist.

Voraussetzungen

  • Stream Deck 7.6 oder neuer
  • Windows 10 oder neuer, oder macOS 13 oder neuer
  • Python 3 installiert und im System-PATH, oder über einen eigenen Interpreter-Pfad erreichbar
  • Jedes Stream Deck mit Tasten; die Info-Leiste braucht ein Stream Deck Neo

Fehlerbehebung

  • Die Taste aktualisiert nie oder bleibt leer: Das Skript flusht nicht. Ergänze flush=True bei jedem print oder rufe danach sys.stdout.flush() auf.
  • Die Taste zeigt einen Fehler, obwohl das Skript funktioniert: Es wurde etwas auf stderr geschrieben, auch eine harmlose Warnung zählt. Schreib Diagnosen stattdessen in eine Datei.
  • Ein gemapptes Bild erscheint nie: Der ausgegebene Wert muss dem Match value exakt entsprechen, inklusive Groß- und Kleinschreibung und ohne zusätzliche Leerzeichen.
  • Ein Stream Script zeigt sofort "done" oder "ended": Das Skript hat sich beendet. Es muss weiterlaufen, meist in einer Schleife mit kurzem Sleep.
  • Ein inline eingefügtes Skript findet seine Dateien oder Imports nicht: Inline-Skripte laufen aus einer temporären Datei, relative Pfade, Nachbarmodule und __file__ lösen sich also nicht auf. Nutze absolute Pfade oder verweise auf eine Skriptdatei.
  • Falsche Python-Version oder "No module named ...": Setze bei dieser Action unter Advanced runtime options den Interpreter oder die virtuelle Umgebung.
  • Es erscheint kein Fortschrittsbalken: Die Zeile muss wie progress:42|label oder 42% | label aussehen, und Display layout darf nicht auf Text only stehen.
  • Die Neo-Info-Leiste zeigt nichts: Der Streifen scheitert still. Starte das Skript im Terminal und prüfe, dass es ausgibt; bei Bild-Frames müssen diese exakt 232x50 sein.
Im Elgato Marketplace ansehen

Produkte ansehen

Setup-Anleitung, Aktionsreferenz und Fehlerbehebung für Arise Python Commander: bring jedes Python-Skript mit Live-Ausgabe auf eine Stream-Deck-Taste oder die Info-Leiste eines Stream Deck Neo, oder lass einen KI-Agenten das Skript schreiben.