In dem Beitrag Ambilight mit Boblight habe ich gezeigt, wie man ein Ambilight mit der Philips HUE Bridge erzeugen kann.

Heute habe ich mein System auf das neue EnigmaLight umgestellt und möchte euch zeigen, wie dies gelingt.

Sale
Philips Hue LivingColors LED Tischleuchte Bloom, Erweiterung für alle Hue Starter Sets, dimmbar,...
79 Bewertungen
Philips Hue LivingColors LED Tischleuchte Bloom, Erweiterung für alle Hue Starter Sets, dimmbar,...
  • Erweiterung für das Hue System - Die Philips Hue LivingColors LED Tischleuchte Bloom ist eine Erweiterungslampe. Zur Steuerung ist ein Hue Dimmschalter oder eine Hue Bridge notwendig. Diese sind nicht im Lieferumfang enthalten
  • Philips Hue Tischleuchte mit integriertem, energiesparenden LED-Modul. Ideal geeignet zur indirekten Beleuchtung großer Flächen
  • Wählen Sie eine aus 16 Millionen Farben in der Hue App und synchronisieren Sie Licht mit Musik und Filmen
Sale
Philips Hue Bridge, zentrales, intelligentes Steuerelement des Hue Systems
266 Bewertungen
Philips Hue Bridge, zentrales, intelligentes Steuerelement des Hue Systems
  • Philips Hue Bridge - Stellen Sie Ihr eigenes, persönliches Philips Hue System zusammen. Die Philips Hue Bridge bildet den Anfang und ist das zentrale, intelligente Steuerelement Ihres Philips Hue Systems
  • Zur Inbetriebnahme verbinden Sie die Philips Hue Bridge über das im Lieferumfang enthaltene LAN-Kabel mit Ihrem WLAN-Router. Nun müssen Sie nur noch die Philips Hue App herunterladen und die Steuerung Ihrer Hue LED-Lampen liegt in Ihren Händen
  • Mit Hilfe der Philips Hue App können Sie jetzt bis zu 50 Hue Lampen und Leuchten sowie bis zu 12 Hue Zubehörteile zu Ihrem System hinzufügen und individuell steuern

Letzte Aktualisierung am 17.11.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

Wer Boblight bereits installiert hat, sollte dies deinstallieren. Das gute ist, dass die Conf-Datei erhalten bleibt.

Da es EnigmaLight seit Ende 2015 nicht mehr gibt, könnt ihr die Datei hier laden:
enigma2-plugin-extensions-enigmalight_0.1r5-b12_all.ipk

enigma2-plugin-extensions-enigmalight_0.2-rc1_all.ipk (bisher noch nicht getestet)

Die Zip-Datei entpacken und in das TMP-Verzeichnis auf die Box kopieren und installieren.

Wer Boblight vorher installiert hatte, kann sich etwas Arbeit ersparen und die boblight.conf in enigmalight.conf umbenennen. Bitte noch darauf achten, dass bei jedem light das Attribut position gesetzt wurde.

Alle anderen legen die Datei wie folgt an:


[global]

[device]
name            ambilight
output          python /usr/dk/dkhue.py
channels        6
type            popen
interval        200000
debug           off

[color]
name	red
rgb		FF0000

[color]
name	green
rgb		00FF00

[color]
name	blue
rgb		0000FF

[light]
position      left
name          AL1
color         red     ambilight 1
color         green   ambilight 2
color         blue    ambilight 3
hscan         0 50
vscan         0 100

[light]
position      right
name          AL2
color         red     ambilight 4
color         green   ambilight 5
color         blue    ambilight 6
hscan         50 100
vscan         0 100

Hier noch einmal die dkhue.py für alle, die noch kein Boblight installiert haben. Diese Datei in den Ordner /usr/dk kopieren. Bitte noch Key und IP entsprechend setzen. Eine ausführlichere Anleitung findet ihr in dem alten Beitrag Ambilight mit Boblight.


import sys
import time 
import json
import math
import httplib
			
def popen():
	spidev = file('/usr/dk/aufruf.log', "wb")
	key = "DEIN KEY"
	ip = "IP-ADRESSE"
	url = '/api/' + key + '/lights/'
	lurl = url + '1/state'
	rurl = url + '2/state'

	while True:
		eingabe = sys.stdin.readline()

		if len(eingabe)>0:

			lr,lg,lb,rr,rg,rb,x = eingabe.split(' ')

			lr = float(lr)
			lg = float(lg)
			lb = float(lb)
			rr = float(rr)
			rg = float(rg)
			rb = float(rb)
			
			
			# Make red more vivid
			if lr > 0.04045:
				lr = float( math.pow((lr + 0.055) / (1.0 + 0.055), 2.4) )
			else:
				lr = float(lr / 12.92)

			if rr > 0.04045:
				rr = float( math.pow((rr + 0.055) / (1.0 + 0.055), 2.4))
			else:
				rr = float(rr / 12.92)


			# Make green more vivid
			if lg > 0.04045:
				lg = float( math.pow((lg + 0.055) / (1.0 + 0.055), 2.4) )
			else:
				lg = float(lr / 12.92)

			if rg > 0.04045:
				rg = float( math.pow((rg + 0.055) / (1.0 + 0.055), 2.4))
			else:
				rg = float(rg / 12.92)


			# Make blue more vivid
			if lb > 0.04045:
				lb = float( math.pow((lb + 0.055) / (1.0 + 0.055), 2.4) )
			else:
				lb = float(lb / 12.92)

			if rb > 0.04045:
				rb = float( math.pow((rb + 0.055) / (1.0 + 0.055), 2.4))
			else:
				rb = float(rb / 12.92)

			
			lxx = lr * 0.649926 + lg * 0.103455 + lb * 0.197109
			lyy = lr * 0.234327 + lg * 0.743075 + lb * 0.022598
			lzz = lr * 0.0000000 + lg * 0.053077 + lb * 1.035763
			lsum = lxx + lyy + lzz
			
			if lsum > 0:
				lx = lxx / lsum
				ly = lyy / lsum
			else:
				lx = 0
				ly = 0
			
			rxx = rr * 0.649926 + rg * 0.103455 + rb * 0.197109
			ryy = rr * 0.234327 + rg * 0.743075 + rb * 0.022598
			rzz = rr * 0.0000000 + rg * 0.053077 + rb * 1.035763
			rsum = rxx+ryy+rzz

			if rsum > 0:
				rx = rxx / rsum
				ry = ryy / rsum
			else:
				rx = 0
				ry = 0
			
			lparams = {'xy': [lx, ly], 'colormode': 'xy'}
			rparams = {'xy': [rx, ry], 'colormode': 'xy'}
			
			connection = httplib.HTTPConnection(ip, timeout=10)
			
			connection.request('PUT', lurl, json.dumps(lparams))
			response = connection.getresponse()
			
			connection.request('PUT', rurl, json.dumps(rparams))
			response = connection.getresponse()

			#data = response.read()

			connection.close()

   			#spidev.write("RGB left: " + str(lr*255) + ":" + str(lg*255) + ":" + str(lb*255) + "\n") 
			#spidev.write("RGB right: " + str(rr*255) + ":" + str(rg*255) + ":" + str(rb*255) + "\n") 
			
			#spidev.write("XY left: " + str(lx) + ":" + str(ly) + "\n")
			#spidev.write("XY right: " + str(rx) + ":" + str(ry) + "\n")

			#spidev.write("put: " + str(json.dumps(lparams)) + "\n")
			#spidev.write("data: " + str(data) + "\n")

			#spidev.write("-----------" + "\n")
			#spidev.flush()
	
		else:
			break
			
import time
time.sleep(7)
popen()