DIYHUE Entertainmet "Bridge response is not Valid"

  • Moin zusammen,


    in meinem gestrigen Post wurde mir der Tipp gegeben, mit Hyperion.NG auf meinem Pi 3 mit LibreELEC mal die HUE Entertainment API zu testen, da sie schneller ist als die einzelnen LEDs anzusteuern.


    Ich nutze einen DIYHUE Server auf Debian, der auch bereits mit Entertainment funktioniert (mit Razer Synapse und WS2812B Stripes an einem ESP8266-12F und DIYHUE Ligths). Nun teste ich mit einem ESP8266-01S und DIYHUE Ligths. Dafür habe ich eine neue Entertainment Gruppe erstellt, die Lampen eingefügt und im Hyperion.NG Alpha 9 eingebunden. Der Test beim Einbinden (LEDs nach Auswahl der Entertainment Gruppe aufleuchten lassen) funktioniert. Daher scheint das Setup generell korrekt zu sein. Wenn ich nun aber die Instanz starte, leuchten die LEDs nicht. Ich sehe im Debug Log vom Hyperion.NG folgende Einträge:




    Das Debug Log vom DIYHUE Server zeigt mir keine offensichtlichen Fehler:




    Gibt es noch eine bekannte Inkompatibilität? Ich hätte ja zuerst auf ein Zertifikatsproblem getippt, Die Verbindung kann ja aber offensichtlich aufgebaut werden.

  • Ja, klar. An sich ist es das, was in dem Link auch schon drin steht (https://github.com/diyhue/diyHue/issues/422). Das Problem ist offenbar eine "falsche" Antwort vom DIYHUE Server, bzw. ein Format, mit dem die Entertainment API vom Hyperion.NG nicht klar kommt (Abweichung seitens DIYHUE vom ursprünglichen Philips Hue Protokoll).


    Erwartet wird:


    Code
    {
            "success": {
                "/groups/5/stream/active": true
            }
        }


    Zurückgegeben wird aber:


    Code
    {
            "success": {
                "/groups/5/stream": {
                    "active": true
                }
            }
        }


    Man sieht hier, dass die "Verschachtelung" der Antwort tiefer ist als die erwartete Antwort. Somit kommt es zu meinem Fehler.
    Das eigentliche Problem wurde bisher noch nicht gelöst, ein Workaround ist aber, das Serverskript vom DIYHUE Server anzupassen, so wie es im Bugreport beschrieben ist. Dazu habe ich mir das Skript /opt/hue-emulator/HueEmulator3.py editiert und in Zeilen 1855/1856 die genannten Änderungen eingetragen.


    Also vorher:


    Code
    for key, value in put_dictionary.items():
                    response_dictionary.append({"success":{response_location + key: value}})



    Und nachher:


    Code
    for key, value in put_dictionary.items():
                    if isinstance(value,dict):
                        second_key = list(value.keys())[0]
                        response_location += key + '/' + second_key
                        response_dictionary.append({"success":{response_location: value[second_key]}})
                    else:
                        response_dictionary.append({"success":{response_location + key: value}})


    Aufzupassen ist hier mit der Formatierung / Nutzung von Leerzeichen und Tabs. Es sollten zum Einrücken nur Leerzeichen benutzt werden und keine Tabs (Skript startet sonst nicht).


    Es empfiehlt sich, das originale Skript zu kopieren, damit man es notfalls wiederherstellen kann. Ladet ihr es zum Editieren runter und wieder hoch, nicht vergessen mit chmod +x HueEmulator3.py die Berechtigungen zum Ausführen wieder zu setzen.


    Je nach System (bei mir Debian, Ubuntu identisch) stoppt man zuvor den Dienst mit systemctl stop hue-emulator und zum Testen würde ich nach der Änderung das Skript mit /opt/hue-emulator/HueEmulator3.py --debug starten.


    Bekommt Ihr nach dem Start einen dieser Fehler


    Code
    root@diyhue:/opt/hue-emulator# ./HueEmulator3.py --debug
      File "./HueEmulator3.py", line 1861
        response_dictionary.append({"success":{response_location + key: value}})
                          ^
    IndentationError: expected an indented block


    kontrolliert bitte Umbrüche und Leerzeichen der Einrückungen.


    Bitte beachtet, dass die angegebenen Zeilen je nach Version des DIYHUE Servers variieren können! Beim Update des Servers wird die Datei möglicherweise überschrieben.


    Die Gegenprüfung war für mich, dass danach auch noch meine anderen Entertainment-Einbindungen funktionieren. Razer Synapse Hue Integration und Hue Essentials kommen danach weiterhin an die Entertainment Api.


    Ich hoffe, ich konnte es mit meinem Halbwissen einigermaßen passabel beschreiben :)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!