Philips Hue Leuchten mit Enigmalight steuern

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Hallo, hier meine hue.py

      Spoiler anzeigen
      import sys
      import os
      import time
      import json
      import httplib
      from rgb_xy import Converter
      from rgb_xy import GamutC # or GamutB, GamutC (you must look for the type of your lamps)
      counter = 12


      def popen():
      converter = Converter(GamutC)
      spidev = file( os.getcwd()+'/aufruf.log', "wb")
      key = "mnNKSCuTXDmUUcHZFmUBZKQwjec0l5SZbl6WKNmI"
      ip = "192.168.2.59"
      url = '/api/' + key + '/lights/'
      lurl = url + '1/state' # die 1 ersetzen mit der Nummer deiner Leuchte

      MINIMAL_VALUE=0.000000000

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

      if len(eingabe)>0:
      global counter
      counter += 1

      try:
      lr,lg,lb,x = eingabe.split(' ')
      except ValueError:
      spidev.write("Not enough input parameter, do you have the same amount of lights (channels) in your enigmalight config?")
      spidev.flush()
      raise

      lr = (float(lr))*255
      lg = (float(lg))*255
      lb = (float(lb))*255


      lll = calcLuminance(lr,lg,lb)

      if (counter>=13):
      connection = httplib.HTTPConnection(ip, timeout=10)

      lparams = {'xy': converter.rgb_to_xy(lr,lg,lb), 'colormode': 'xy', 'bri': int(lll), 'on': True}
      connection.request('PUT', lurl, json.dumps(lparams))
      response = connection.getresponse()

      connection.close()
      counter=0
      else:
      os.system("curl -d '{\"on\":false}' -X PUT 192.168.2.59/api/mnNKSCuTXDmUUcHZFmUBZKQwjec0l5SZbl6WKNmI/groups/0/action")
      break


      def calcLuminance(r,g,b):
      LUM_VALUE=5
      luminance=1
      if (r + g + b > 1):
      luminance= r + g + b + LUM_VALUE
      if (luminance>=255):
      luminance=254

      return luminance

      import time
      time.sleep(1)
      popen()

      Liegt es vielleicht daran, dass ich eine Solo 2 habe?

      Gruß + Dank
      Dateien
      • IMG_0796.jpg

        (1,34 MB, 132 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von hgdo ()

    • Folgendes mal einstellen:

      Speed 100
      Autospeed 0
      brightness 1.0- 2.0
      min brightness 0.0
      max brightness 1.0
      saturation 0.8
      min saturation 0.0
      max saturation 1.0
      gamma 1.8


      dann kannste noch in der hue.py einstellen (falls obiges nicht hilft):


      def calcLuminance(r,g,b):
      LUM_VALUE=40

      Dein EL scheint nicht aktuell zu sein, sonst wäre es ins Deutsche übersetzt.
      Ich kann aber nur bei EL ARM helfen, habe keine mipsel Box mehr!

      Gr hm

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von holymoly_EL ()

    • Ok. Probier ich gleich mal aus. Bin mir nicht sicher ob er wirklich funktioniert. Evtl. liegt es am unterschiedlichen CPU.
      Aber trotzdem vorerst danke!

      Hab jetzt die Einstellungen so vorgenommen, wie du geschrieben hast. Hat leider nicht funktioniert. Wenn ich unter Tuning "Show sample Picture" ändere passt sich die Farbe vom Bildschirm dem der LEDs prima an. Gehe ich raus aus Tuning wechselt das LED auf weiß und bleibt so.
      Naja, anscheinend will das Ganze bei mir nicht.
      Trotzdem vielen Dank für die Hilfe!
    • Liegt wohl am umgebauten EL hier - keine Ahnung!
      Kannst ja mal die alte original EL mipsel Version testen, dort sollte das "popen" device auch schon gelaufen sein!
      Dateien
      Gr hm
    • Update wurde am 09.02. gemacht, leider keine Verbesserung!
      Vielleicht könnte man noch etwas am Code verbessern, da ich meine, dass die Leuchten über die App ein wenig schneller reagieren.
      Selbst wenn, wäre es als TV-Ambilight immer noch zu lahm. Da muss es einfach auf den Punkt kommen!
      Gr hm
    • Hallo,

      ich habe eigentlich alles wie in der Anleitung was im ersten Beitrag steht gemacht. Leider bekomme ich es nicht zum Laufen.

      Ich wollte meine philips lightstrip plus damit ansteuern. ...

      Spoiler anzeigen

      19:51:41 [D] > __common__::rmFile() > Delete old log file /tmp/enigmalight_gui.log
      19:51:41 [D] > __common__::checkSymbolic()
      19:51:42 [D] > __init__::Prepare()
      19:51:42 [D] > __common__::getBoxInformation()
      19:51:42 [D] > __common__::getBoxArch()
      19:51:42 [D] > __common__::getBoxArch() > unknown
      19:51:42 [D] > __common__::getBoxInformation() > ('VuPlus', 'uno4k', '7252s', 'ARM', 'unknown')
      19:51:42 [D] > __init__::localeInit()
      19:51:42 [D] > __init__::registerSkinParamsInstance()
      19:51:42 [D] > __common__::getXmlContent()
      19:51:42 [D] > __common__::checkXmlFile()
      19:51:42 [D] > __common__::loadEnigmalightSkin() > Load Skin: /usr/lib/enigma2/python/Plugins/Extensions/EnigmaLight/skins/default/skin-fullhd.xml
      19:51:42 [D] > __common__::registerEnigmalightFonts()
      19:51:42 [D] > EL_HttpServer::HttpdStart()
      19:51:42 [D] > EL_HttpServer::buildRootTree()
      19:51:42 [D] RootController::__init__
      19:51:42 [D] WebController::__init__
      19:51:42 [D] AjaxController::__init__
      19:51:42 [D] ApiController::__init__
      19:51:42 [D] > EL_HttpServer::HttpdStart() -> Enigmalight Webremote started on port: 1414
      19:51:42 [D] > EL_HttpServer::BJregisterService()
      19:52:40 [D] > plugin::sessionstart()
      19:52:40 [D] EL_Screen_MainMenu::__init__ > Menu Opened succesfull..
      19:52:40 [D] > __common__::checkSymbolic()
      19:52:40 [D] EL_Screen_MainMenu::finishLayout > Finisch layout....
      19:52:40 [D] EL_Screen_MainMenu::refreshMenu
      19:52:40 [D] Controller::sendAll
      19:52:40 [D] Controller::writeSettings
      19:52:40 [D] Controller::writeAdjust
      19:52:40 [D] EL_Screen_MainMenu::finishLayout > Layout Finisched!
      19:52:46 [D] EL_Screen_MainMenu::okbuttonClick
      19:52:46 [D] EL_Screen_MainMenu::okbuttonClick > Selected item EL_Screen_Settings
      19:52:46 [D] EL_Screen_Settings::__init__ > Settings Opened succesfull..
      19:52:46 [D] EL_Screen_Settings::createSetup
      19:52:46 [D] EL_Screen_Settings::__init__ > Finisch layout...
      19:52:46 [D] EL_Screen_Settings::finishLayout > Layout finisched..
      19:53:01 [D] EL_Screen_Settings::keyRight
      19:53:01 [D] Controller::changeValue
      19:53:01 [D] EL_Screen_Settings::createSetup
      19:53:01 [D] EL_Screen_Settings::createSetup
      19:53:10 [D] EL_Screen_Settings::keyRight
      19:53:10 [D] Controller::changeValue
      19:53:10 [D] EL_Screen_Settings::createSetup
      19:53:10 [D] EL_Screen_Settings::createSetup
      19:53:12 [D] EL_Screen_Settings::keyLeft
      19:53:12 [D] Controller::changeValue
      19:53:12 [D] EL_Screen_Settings::createSetup
      19:53:12 [D] EL_Screen_Settings::createSetup
      19:53:16 [D] EL_Screen_Settings::keyRight
      19:53:16 [D] Controller::changeValue
      19:53:16 [D] EL_Screen_Settings::createSetup
      19:53:16 [D] EL_Screen_Settings::createSetup
      19:53:18 [D] EL_Screen_Settings::keyLeft
      19:53:18 [D] Controller::changeValue
      19:53:18 [D] EL_Screen_Settings::createSetup
      19:53:18 [D] EL_Screen_Settings::createSetup
      19:53:22 [D] EL_Screen_Settings::keyRight
      19:53:22 [D] Controller::changeValue
      19:53:22 [D] EL_Screen_Settings::createSetup
      19:53:22 [D] EL_Screen_Settings::createSetup
      19:53:23 [D] EL_Screen_Settings::keyLeft
      19:53:23 [D] Controller::changeValue
      19:53:23 [D] EL_Screen_Settings::createSetup
      19:53:23 [D] EL_Screen_Settings::createSetup
      19:53:26 [D] EL_Screen_Settings::keyRight
      19:53:26 [D] Controller::changeValue
      19:53:26 [D] EL_Screen_Settings::createSetup
      19:53:26 [D] EL_Screen_Settings::createSetup
      19:53:27 [D] EL_Screen_Settings::keyLeft
      19:53:27 [D] Controller::changeValue
      19:53:27 [D] EL_Screen_Settings::createSetup
      19:53:27 [D] EL_Screen_Settings::createSetup
      19:53:32 [D] EL_Screen_Settings::keyRight
      19:53:32 [D] Controller::changeValue
      19:53:32 [D] EL_Screen_Settings::createSetup
      19:53:32 [D] EL_Screen_Settings::createSetup
      19:53:34 [D] EL_Screen_Settings::keyLeft
      19:53:34 [D] Controller::changeValue
      19:53:34 [D] EL_Screen_Settings::createSetup
      19:53:34 [D] EL_Screen_Settings::createSetup
      19:53:40 [D] EL_Screen_Settings::keySave
      19:53:40 [D] EL_Screen_MainMenu::refreshMenu
      19:53:40 [D] Controller::sendAll
      19:53:40 [D] Controller::writeSettings
      19:53:40 [D] Controller::writeAdjust
      19:53:44 [D] EL_Screen_MainMenu::keyGreen
      19:53:44 [D] Controller::ToggleDynamic
      19:53:44 [D] Controller::Control > Control: c:start v:dynamic
      19:53:44 [D] Controller::checkIfRunningFinisched
      19:53:44 [D] Controller::checkIfRunningFinisched > control[command] = start
      19:53:44 [D] Controller::checkIfRunningFinisched > control[value] = dynamic
      19:53:44 [D] Controller::checkIfRunningFinisched > control[startcommand] = enigmalight -m 0 -f -c /etc/enigmalight.conf &
      19:53:44 [D] Controller::checkIfRunningFinisched > callback = None
      19:53:44 [D] Controller::checkIfRunningFinisched > pid = 1729
      19:53:44 [D] Controller::checkIfRunningFinisched > [/usr/bin/enigmalight] already running with pid 1729
      19:53:44 [D] Controller::DoControl
      19:53:44 [D] Controller::controlMode
      19:53:44 [D] > __common__::showMessage()
      19:53:44 [D] Controller::sendAll
      19:53:45 [D] Controller::writeSettings
      19:53:45 [D] Controller::writeAdjust
      19:53:59 [D] EL_Screen_MainMenu::keyRed
      19:53:59 [D] Controller::ToggleDynamic
      19:53:59 [D] Controller::Control > Control: c:control v:stop
      19:53:59 [D] Controller::checkIfRunningFinisched
      19:53:59 [D] Controller::checkIfRunningFinisched > control[command] = control
      19:53:59 [D] Controller::checkIfRunningFinisched > control[value] = stop
      19:53:59 [D] Controller::checkIfRunningFinisched > control[startcommand] = enigmalight -m 0 -f -c /etc/enigmalight.conf &
      19:53:59 [D] Controller::checkIfRunningFinisched > callback = None
      19:53:59 [D] Controller::checkIfRunningFinisched > pid = 1729
      19:53:59 [D] Controller::checkIfRunningFinisched > [/usr/bin/enigmalight] already running with pid 1729
      19:53:59 [D] Controller::DoControl
      19:53:59 [D] > __common__::showMessage()
      19:54:07 [D] EL_Screen_MainMenu::keyGreen
      19:54:07 [D] Controller::ToggleDynamic
      19:54:07 [D] Controller::Control > Control: c:start v:dynamic
      19:54:07 [D] Controller::checkIfRunningFinisched
      19:54:07 [D] Controller::checkIfRunningFinisched > control[command] = start
      19:54:07 [D] Controller::checkIfRunningFinisched > control[value] = dynamic
      19:54:07 [D] Controller::checkIfRunningFinisched > control[startcommand] = enigmalight -m 0 -f -c /etc/enigmalight.conf &
      19:54:07 [D] Controller::checkIfRunningFinisched > callback = None
      19:54:07 [D] Controller::checkIfRunningFinisched > pid = None
      19:54:07 [D] Controller::checkIfRunningFinisched > [/usr/bin/enigmalight] not running, Starting..
      19:54:07 [D] Controller::DoControl
      19:54:08 [D] Controller::controlMode
      19:54:08 [D] > __common__::showMessage()
      19:54:08 [D] Controller::sendAll
      19:54:09 [D] Controller::writeSettings
      19:54:09 [D] Controller::writeAdjust
      19:54:12 [D] EL_Screen_MainMenu::keyYellow
      19:54:12 [D] Controller::ToggleMoodLamp
      19:54:12 [D] Controller::Control > Control: c:control v:moodlamp
      19:54:12 [D] Controller::checkIfRunningFinisched
      19:54:12 [D] Controller::checkIfRunningFinisched > control[command] = control
      19:54:12 [D] Controller::checkIfRunningFinisched > control[value] = moodlamp
      19:54:12 [D] Controller::checkIfRunningFinisched > control[startcommand] = enigmalight -m 0 -f -c /etc/enigmalight.conf &
      19:54:12 [D] Controller::checkIfRunningFinisched > callback = None
      19:54:12 [D] Controller::checkIfRunningFinisched > pid = 2404
      19:54:12 [D] Controller::checkIfRunningFinisched > [/usr/bin/enigmalight] already running with pid 2404
      19:54:12 [D] Controller::DoControl
      19:54:12 [D] Controller::writeMoodlamp
      19:54:12 [D] Controller::getColor
      19:54:12 [D] > __common__::rgbToHex()
      19:54:12 [D] > __common__::showMessage()
      19:54:12 [D] Controller::sendAll
      19:54:12 [D] Controller::writeMoodlamp
      19:54:12 [D] Controller::getColor
      19:54:12 [D] > __common__::rgbToHex()
      19:54:12 [D] Controller::writeSettings
      19:54:12 [D] Controller::writeAdjust
      19:54:15 [D] EL_Screen_MainMenu::keyYellow
      19:54:15 [D] Controller::ToggleMoodLamp
      19:54:15 [D] Controller::writeDynamic
      19:54:15 [D] Controller::Control > Control: c:control v:stop
      19:54:15 [D] Controller::checkIfRunningFinisched
      19:54:15 [D] Controller::checkIfRunningFinisched > control[command] = control
      19:54:15 [D] Controller::checkIfRunningFinisched > control[value] = stop
      19:54:15 [D] Controller::checkIfRunningFinisched > control[startcommand] = enigmalight -m 0 -f -c /etc/enigmalight.conf &
      19:54:15 [D] Controller::checkIfRunningFinisched > callback = None
      19:54:16 [D] Controller::checkIfRunningFinisched > pid = 2404
      19:54:16 [D] Controller::checkIfRunningFinisched > [/usr/bin/enigmalight] already running with pid 2404
      19:54:16 [D] Controller::DoControl
      19:54:16 [D] > __common__::showMessage()
      19:54:18 [D] EL_Screen_MainMenu::right
      19:54:19 [D] EL_Screen_MainMenu::right
      19:54:20 [D] EL_Screen_MainMenu::okbuttonClick
      19:54:20 [D] EL_Screen_MainMenu::okbuttonClick > Selected item EL_Screen_Moodlamp
      19:54:20 [D] EL_Screen_Moodlamp::__init__ > Moodlamp Opened succesfull..
      19:54:20 [D] EL_Screen_Moodlamp::createList
      19:54:20 [D] EL_Screen_Moodlamp::__init__ > Finisch layout..
      19:54:20 [D] EL_Screen_Moodlamp::updateHelp
      19:54:20 [D] EL_Screen_Moodlamp::finishLayout > Layout finsched..
      19:54:20 [D] > __common__::getRGB()
      19:54:22 [D] EL_Screen_MainMenu::refreshMenu
      19:54:22 [D] Controller::sendAll
      19:54:22 [D] Controller::writeSettings
      19:54:22 [D] Controller::writeAdjust
      19:54:26 [D] EL_Screen_MainMenu::right
      19:54:29 [D] EL_Screen_MainMenu::right
      19:54:30 [D] EL_Screen_MainMenu::right
      19:54:33 [D] EL_Screen_MainMenu::right
      19:54:35 [D] EL_Screen_MainMenu::right
      19:54:37 [D] EL_Screen_MainMenu::cancel
      19:54:37 [D] EL_Screen_MainMenu::exit > Main Exit..


      Hier mal meine log.
    • Hi,
      habe das vor Tagen auch probiert und so meine Probleme gehabt. Irgendwann ging es dann aber!
      Ich glaube der TE ist hier nicht mehr aktiv, konnte aber seinen Nick im oATV finden.Vielleicht mal dort nachfragen!
    • Hi Holymoly,

      vielen Dank für deine Anleitung. Hat auch mit etwas gefrickel dann endlich funktioniert. Tatsächlich ist die Verzögerung doch recht nervig. Ich habe mich mal ein wenig reingelesen und mir auch mal deinen Python-Code angeschaut. Leider bin ich kein echter Programmierer und kann daher nicht wirklich einschätzen woran es genau liegt. Aber könnte es sein, dass es daran, liegt, dass in deinem Code nur die normale Api angesprochen wird? Sofern ich das verstehe, gibt es diese Hue Entertainment API, welche wohl für solche Zwecke besser geeignet wäre. Hier mal der Link: User account | Philips Hue API

      Bin gerade dabei in Python Programmierung einzusteigen, allerdings noch lange nicht soweit, dass ich damit was anfangen kann. Das nur mal so als Anregung. Vielleicht liege ich damit aber auch komplett falsch.

      Liebe Grüße
    • holymoly_EL schrieb:

      Update wurde am 09.02. gemacht, leider keine Verbesserung!
      Vielleicht könnte man noch etwas am Code verbessern, da ich meine, dass die Leuchten über die App ein wenig schneller reagieren.
      Selbst wenn, wäre es als TV-Ambilight immer noch zu lahm. Da muss es einfach auf den Punkt kommen!
      Ich bin gestern auf dieses Thema gestoßen und konnte meine Go Lampen erfolgreich koppeln und ansteuern. Natürlich mit der bekannten Verzögerung, was es völlig unbrauchbar macht.

      Daraufhin habe ich mal ein wenig recherchiert. Es reicht nicht, einfach auf ein Bridge Update zu hoffen. Seit dem letzten Update ist es wohl so, dass die Hue Entertainment API bereitgestellt wurde. Diese arbeitet an der Zigbee Schnittstelle vorbei.
      Über diese Schnittstelle werden auch nicht mehr einzelne Lampen, sondern ein Entertainment-Bereich angesprochen, den man über die App konfigurieren kann (Einstellungen -> Entertainment-Bereiche).
      So wie ich es verstanden habe, wird eine verschlüsselte Verbindung zur Bridge aufgebaut und anschließend mittels UDP Streams dorthin geschickt.
      Beschrieben ist das Ganze hier.
      Nach meinem Verständnis müsste die Datei enigmalight_hue.py dahingegen geändert werden. Allerdings habe ich keinen Plan von Python, so dass ich an dieser Stelle leider keine Hilfe bin.

      Es müsste dort also folgendes passieren:

      1. neuen Benutzer erstellen, der parallel einen Schlüssel zurückliefert
      2. mit diesen Informationen eine Verbindung zur Bridge herstellen und in den passenden Modus versetzen
      3. Stream mit Farbinformationen erstellen und per UDP an die Bridge senden


      Falls jemandem mit diesen Informationen geholfen ist, wäre es ja super, wenn es mal jemand testen könnte.

      Viele Grüße
    • Danke für den Hinweis! Das hatte ich nicht wahrgenommen.

      Evtl. gibt es ja andere, die Python beherrschen und sich mit dem Thema befassen wollen. Mich würde es sehr freuen!
    • pccorner schrieb:

      Hi,

      kann jemand helfen?

      Ich habe die 1.5 vom Feed installiert und mich an die Anleitung gehalten.

      Bekomme meine Hue-Stripes Plus aber einfach nicht zum laufen.
      Hast du es geschafft, wenn ja wie?

      otto_64 schrieb:

      Hallo,

      ich habe eigentlich alles wie in der Anleitung was im ersten Beitrag steht gemacht. Leider bekomme ich es nicht zum Laufen.

      Ich wollte meine philips lightstrip plus damit ansteuern. ...
    • Hmm, wundert mich, dass sich die Einrichtung bei einigen so kompliziert gestaltet. Bei mir hat es gestern im Grunde völlig unproblematisch geklappt. Seid ihr euch sicher, dass ihr wirklich alle Schritte durchgeführt habt?

      Ich habe das Ganze mit den Dateien aus "Philips Hue.rar" aus dem ersten Post gemacht.

      1. EL aus dem Feed installiert (bei mir v2.26)
      2. Schritte aus Post 1, wobei der Schritt 2 inzwischen nicht mehr notwendig ist
        1. Key, Leuchtennummer und -typ auslesen
        2. Dateien anpassen
        3. Dateien in die entsprechenden Verzeichnisse kopieren
      3. EL über Erweiterungen aufrufen und mit grüner Taste starten


      Das war's bei mir eigentlich. Würde mich jetzt wundern, wenn es mit den Stripes anders läuft. Wichtig ist halt wirklich, dass man alle Stellen in den Dateien erwischt und an seine Bedürfnisse anpasst.
    • Glemp schrieb:

      Leuchtennummer und -typ auslesen
      Ich hänge gerade hier fest.
      Wenn ich das eingebe:

      Quellcode

      1. http://192.168.178.37/api/1964/lights/1/state


      Bekomme ich diese Fehlermeldung:

      Shell-Script

      1. error
      2. type 1
      3. address "/lights"
      4. description "unauthorized user"


      Ist dass jetzt richtig oder falsch?
      Was muss ich hier eintragen?
      lurl = url + '1/state' # die 1 ersetzen mit der Nummer deiner Leuchte

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von otto_64 ()

    • Du musst einen gültig Benutzer von der Whitelist verwenden. 1964 ist nur ein Platzhalter. Wie man einen Benutzer anlegt, ist hier beschrieben.

      Anschließend musst du 192.168.xxx.xxx/api/123456/lights aufrufen. Dort sind dann die Leuchten aufgeführt.

      Alternativ rufst du 192.168.xxx.xxx/debug/clip.html auf. Dort trägst du oben

      /api/123456/lights/

      ein und drückst auf GET. Damit erhält man unten eine besser formatierte Ausgabe.

      PS: 123456 muss natürlich auch ersetzt werden ;)

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von Glemp ()