Jährliche Archive: 2019

2 Beiträge

Kodi Heimkino mit Hue Lichtsteuerung über CinemaVision

Um zuhause ein wenig Kinoatmosphäre zu schaffen, setze ich Kodi auf dem Raspberry Pie mit dem Plugin CinemaVision ein. Mit dem Plugin kann man Sequenzen wie Kinowerbung und Trailer vor den  Hauptfilm erstellen.

Der eigentlich interessante Part ist aber, dass über die Actions in CinemaVision nahezu beliebige Kommandos ausgeführt werden. Ich nutze dieses Feature für die Steuerung der Beleuchtung. Ich setze zuhause Philips Hue ein.

Die Actions sind normale Textdateien. Actions bestehen aus einem Kommando z.B. das Aufrufen einer URL und nachfolgenden Parametern. Mehrere aufeinanderfolgende Befehle werden durch eine Leerzeile getrennt. Eine Kommentarzeile fängt mit # an.

Damit die Hue Lampen über das HTTP/JSon API gesteuert werden können, müsst ihr euch erst einen API Benutzer auf der Hue Bridge einrichten. Dies könnt ihr z.B. über die eingebaute Debug-Schnittstelle tun: http://<bridge-ip>/debug/clip.html – eine vollständige API Dokumentation gibt es hier (kostenloser Hue Developer Account benötigt).

Ich setze drei Actions in meiner CinemaVision Sequenz ein. Am Anfang wird für die Länge des Vorprogramms eine bestimmte Lichtszene, die ich in Philips Hue angelegt habe aktiviert. Danach werden die Farbigen Lampen in Colorloop Modus gesetzt und die Helligkeit langsam verringert.

http://<bridge-ip>/api/<userid>/groups/<groupid>/action
PUT:{ "scene": "<scene-id>"}

http://<bridge-ip>/api/<userid>/groups/<groupid>/action
PUT:{ "effect": "colorloop", "bri": 110, "transitiontime": 20 }

Nachfolgende Action läuft vor dem Hauptfilm und dimmt das Licht langsam komplett ab:

http://<bridge-ip>/api/<userid>/groups/<groupid>/action
PUT:{ "on": false, "transitiontime": 20 }

und am Ende des Hauptfilms werden die Lampen auf die vordefinierte Szene “Tropendämmerung” gesetzt.

http://<bridge-ip>/api/<userid>/groups/<groupid>/action
PUT: { "scene": "AsHe6xgTikjBhzd", "transitiontime": 20 }
  • <bridge-ip> muss durch die IP Adresse der Bridge ersetzt werden
  • <userid> muss durch die ID eures API Nutzers
  • <groupid> ist die ID der Lamepengruppe, die ihr steuern wollt
  • <sceneid> ist die ID der Szene, die für das Vorprogramm angelegt wurde

Die Actions müssen mit der Dateiendung .cvaction unter Actions im Content-Verzeichnis von CinameVisions abgelegt werden. Danach können Sie in dem Plugin in die Sequenz eingefügt werden.

 

Plankalkül Einführung Teil 1: Sprache, Zuweisungen

Der Plankalül ist eine der ersten Highlevel Programmiersprachen. Die Konzepte dieser Sprache wurden von Konrad Zuse zwischen 1942 und 1945 entworfen – aufgrund des Zweiten Weltkrieges gab es aber nie eine technische Umsetzung. Die Sprache ist aber trotzdem interessant, da sie schon viele Konzepte und Ideen enthält, die in allen modernen Programmiersprachen vorhanden sind.

Porgramme heißen in Plankalkül “Rechenplan”, Daten heißen “Angaben” und der Algorithmus wurde mit “Vorschrift” bezeichnet. Der Plankalkül umfasst unter anderem Zuweisungen, Funktionsaufrufe, bedingte Anweisungen, Schleifen, Gleitkommaarithmetik, Felder, zusammengesetzte Datentypen und andere besondere Merkmale wie zielgerichtete Ausführung.

Wir beginnen mit einer kurzen Einführung in den Syntax des Plankalkül, der nach heutigen Standards ungewöhnlich -weil zweidimensional –  ist:Obiges ist ein Beispiel für eine Zuweisung. Der Wert von Z0 wird hier Z1 zugewiesen. Das V steht für den Variablenindex. In der letzten Zeile können Angaben zur Struktur der Objektdaten angebeben werden.  1.n bedeutet eine Ganzzahl zwischen 1 und 2^n-1. In nachfolgendem Beispiel wird der Wert von Z1 um 1 erhöht und wieder als natürliche Zahl in z1 gespeichert.

Das obige Beispiel wäre in C einfach als

Z1++;

zu notieren :-).