Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS19002160/2061 - Virtual HUE Device for Alexa

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    LBS19002160/2061 - Virtual HUE Device for Alexa

    Ich möchte euch meine ersten 2 LBS vorstellen an denen ich die letzten Wochen gearbeitet habe.
    Damit ist es möglich ein virtuelles HUE Gerät zu simulieren und dieses direkt mit Alexa zu steuern.
    Im Gegensatz zu anderen Lösungen ist dafür kein Skill, kein Reverse Proxy oder sonstiges nötig.
    Die ganze Logik läuft komplett in Edomi im lokalen Netzwerk.
    Die Reaktionszeit ist damit deutlich besser als mit Cloud-Lösungen.
    1. Virtual HUE Bridge (LBS19002160) ===> DOWNLOAD <===
    2. Virtual HUE Device (LBS19002161) ===> DOWNLOAD <===
    Die Bridge ist nur einmal nötig und macht die virtuellen Geräte für Alexa sichtbar.
    Für jedes zu steuernde Gerät ist ein virtuelles Device mit eindeutiger ID und eindeutigem Namen nötig.

    Für die korrekte Funktion ist lediglich eine kleine Anpassung am Webserver von Edomi nötig.
    Alle Anfragen an http://IP_VON_EDOMI:80/api... müssen an den LBS19002161 weitergeleitet werden.
    Dies geht am einfachsten über eine .htaccess Datei im www Verzeichnis.
    Eine Beispieldatei ist im ZIP enthalten. Eventuell muss im Webserver noch die Weiterleitung durch .htaccess Dateien erlaubt werden.

    In der aktuellen Version können folgende virtuellen Geräte emuliert werden:
    • Einfaches Licht mit ein/aus
    • Gerät/Szene mit ein/aus
    • Dimmbares Licht
    • Dimmbares Licht mit Farbtemperatur (CT)
    • Dimmbares Licht mit HSV Farben (mangels eigener Geräte ungetestet)
    Der Gerätetyp dimmbares Licht kann z.B. auch für Jalousiesteuerung mittels Prozentwert missbraucht werden.

    Update: V0.3 ist online

    Ich freue mich auf Euer Feedback.
    Danke auch an jonofe der mit seinen unzähligen Bausteinen Inspiration zur Umsetzung mancher Funktionen gegeben hat.

    Schöne Grüße und viel Spaß damit
    Philipp
    Zuletzt geändert von philipp900; 15.01.2021, 16:36.

    #2
    Hoi Philipp

    Irgendwie sehe ich den Usecase nicht!? Wozu sollte ich eine virtuelle Leuchte steuern wollen?
    Kind regards,
    Yves

    Kommentar


      #3
      Hallo philipp900,

      wollte das grad mal ausprobieren, bekomme folgende Fehlermeldung:
      Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19002160.php | Fehlercode: 2 | Zeile: 8 | socket_bind(): unable to bind address [98]: Address already in use
      Sieht so aus, als ob 1900 bereits verwendet wird... gibt's ne Chance rauszubekommen was hier blockiert?
      CustomLog:
      2021-01-13 21:26:21 610171 2672 debug LBS19002160 [v0.1]: Starting Hue Emulate Receiver daemon... (3791)
      2021-01-13 21:26:21 634516 2672 debug LBS19002160 [v0.1]: Daemon is not running (3791)
      2021-01-13 21:26:21 635080 2672 debug LBS19002160 [v0.1]: Starting daemon ... (3791)
      2021-01-13 21:26:21 696774 13344 debug EXE19002160 [v0.1]: Could not bind socket : [98] Address already in use (3791)
      2021-01-13 21:26:21 697398 13344 debug EXE19002160 [v0.1]: Waiting for data ... (3791)
      2021-01-13 21:45:27 123745 2672 debug LBS19002160 [v0.1]: Daemon is running with PID: 13344 (3791)
      ein netstat -tanp | grep 1900 (google) hat nichts gebracht

      Gruß

      Jetzt gefunden: meine Yamahas kommunizieren auf Port 1900 .
      Zuletzt geändert von Winni; 13.01.2021, 22:00.

      Kommentar


        #4
        Zitat von starwarsfan Beitrag anzeigen
        Irgendwie sehe ich den Usecase nicht!? Wozu sollte ich eine virtuelle Leuchte steuern wollen?
        Ist die Frage ernst gemeint? Damit du beliebige Signale in Edomi bzw. in weiterer Folge KNX steuern kannst.

        Zitat von Winni Beitrag anzeigen
        Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19002160.php | Fehlercode: 2 | Zeile: 8 | socket_bind(): unable to bind address [98]: Address already in use[/TD]
        Sieht so aus, als ob 1900 bereits verwendet wird... gibt's ne Chance rauszubekommen was hier blockiert?
        Was läuft denn sonst noch so alles auf deinem Server?
        Eventuell was anderes mit HUE oder SSDP oder DLNA.
        Den Bridge Baustein hast du aber schon nur 1 mal in deinem Projekt?

        Kommentar


          #5
          Wie geschrieben, meine Yamaha Receiver benötigen ebenfalls UDP Multicast auf 1900.
          Ich versuche gerade meine Optionen in deinen Baustein zu basteln, damit sollte eine Gruppe auf einem Port möglich sein (Hab's selber nur irgendwo her kopiert).
          Sollte ich Erfolg haben, schick ich dir's zum Testen.

          Kommentar


            #6
            Hi Philipp

            Zitat von philipp900 Beitrag anzeigen
            Ist die Frage ernst gemeint? Damit du beliebige Signale in Edomi bzw. in weiterer Folge KNX steuern kannst.
            Ja natürlich. Ein virtuelles Gerät ist für mich ein physisch nicht vorhandenes Gerät. Daher die Fage, wozu ich denn eine virtuelle Leuchte steuern soll.

            Aber offenbar ist mir das Konzept dahinter (resp. die beiden Werks-LBS 17000210 und 17000211) bisher entgangen. Vermutlich sind die Bausteine später dazu gekommen. Sachen gibts...
            Kind regards,
            Yves

            Kommentar


              #7
              Zitat von Winni Beitrag anzeigen
              Wie geschrieben, meine Yamaha Receiver benötigen ebenfalls UDP Multicast auf 1900.
              Ich versuche gerade meine Optionen in deinen Baustein zu basteln, damit sollte eine Gruppe auf einem Port möglich sein (Hab's selber nur irgendwo her kopiert).
              Sollte ich Erfolg haben, schick ich dir's zum Testen.
              Ansonsten kannst du zum Testen einfach mal den Yamaha Baustein deaktivieren.
              Der Hue Bridge Baustein wird nämlich nur einmalig bei der Erkennung oder wenn du neue Leuchten dazufügst benötigt.
              Danach kannst du die Bridge wieder stoppen.

              Kommentar


                #8
                Hab jetzt mal einiges getestet:
                Nach Deaktivierung der Yamaha-Logiken:
                Problemloser Start der Bridge.
                E2 auf 1 um den einen virtuellen Device bekannt zu machen (nichts im LOG)
                Suche mit der Alexa-App: da kommt einiges im Bridge LOG:
                2021-01-13 23:21:01 824733 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.6 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: upnp:rootdevice[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                2021-01-13 23:21:01 825273 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.55 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: upnp:rootdevice[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                2021-01-13 23:21:01 825838 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.55 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: ssdp:all[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                2021-01-13 23:21:01 826366 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.55 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: upnp:rootdevice[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                2021-01-13 23:21:01 827058 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.55 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: ssdp:all[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                2021-01-13 23:21:01 827956 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.55 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: upnp:rootdevice[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                2021-01-13 23:21:01 828861 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.6 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: ssdp:all[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                2021-01-13 23:21:01 829631 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.6 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: upnp:rootdevice[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                2021-01-13 23:21:01 830185 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.6 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: ssdp:all[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                2021-01-13 23:21:01 830720 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.6 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: upnp:rootdevice[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                2021-01-13 23:21:01 834808 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.16 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: ssdp:all[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                2021-01-13 23:21:01 835361 992 debug EXE19002160 [v0.1]: Handling response for 192.168.4.16 : 50000 -- M-SEARCH * HTTP/1.1[CR][LF]HOST: 239.255.255.250:1900[CR][LF]ST: upnp:rootdevice[CR][LF]MAN: "ssdp:discover"[CR][LF]MX: 3[CR][LF][CR][LF] (3791)
                Leider wird aber nichts gefunden. Kanns noch irgendwie am Web-Server liegen? das .htaccess habe ich entsprechend der Angaben gepflegt. Kann man irgendwie testen ob das soweit funktioniert? (Thema: Eventuell muss im Webserver noch die Weiterleitung durch .htaccess Dateien erlaubt werden)

                Ein LOG für das Device entsteht nicht.

                Komme hier aktuell nicht weiter.

                Zu dem Parallelbetrieb: Ich hab's geschafft zwei Bausteine auf den gleichen Port hören zu lassen. Vor dem Bind einfach folgende 2 Zeilen einfügen:

                socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1);
                socket_set_option($sock, SOL_SOCKET, SO_REUSEPORT, 1);

                Hab's aber im Moment ausdokumentiert bis es im Standard funktioniert, aber evtl. magst du bei dir ja schonmal testen ob's Nebenwirkungen hat.

                Gruß

                P.S.: In der HUE App muss man nichts machen, oder? Steht zumindest nichts in der Beschreibung.
                Zuletzt geändert von Winni; 13.01.2021, 23:34.

                Kommentar


                  #9
                  Hue App brauchst du nicht.
                  Testen ob die Weiterleitung funktioniert, kannst du mit: http://IP_VON_EDOMI:80/api/description.xml
                  Was verwendest du für einen Webserver?
                  Für Apache2 im httpd.conf unter
                  Code:
                  <Directory "/usr/local/edomi/www">
                  AllowOverride All
                  setzen.

                  Kommentar


                    #10
                    Da bin ich soeben angelangt , zumindest kam auf .../api was zurück was bisher nicht der Fall war.
                    mit description.xml bekomme ich:
                    <root xmlns="urn:schemas-upnp-org:device-1-0">
                    <specVersion>
                    <major>1</major>
                    <minor>0</minor>
                    </specVersion>
                    <URLBase>http://192.168.5.22:80/</URLBase>
                    <device>
                    <deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType>
                    <friendlyName>Philips hue (192.168.5.22)</friendlyName>
                    <manufacturer>Royal Philips Electronics</manufacturer>
                    <manufacturerURL>http://www.philips.com</manufacturerURL>
                    <modelDescription>Philips hue Personal Wireless Lighting</modelDescription>
                    <modelName>Philips hue bridge 2015</modelName>
                    <modelNumber>EDOMI</modelNumber>
                    <modelURL>http://www.meethue.com</modelURL>
                    <serialNumber>12345678910</serialNumber>
                    <UDN>uuid:00eedd00-1234-0000-4321-00eedd00eedd00</UDN>
                    <presentationURL>index.html</presentationURL>
                    <iconList>
                    <icon>
                    <mimetype>image/png</mimetype>
                    <height>48</height>
                    <width>48</width>
                    <depth>24</depth>
                    <url>hue_logo_0.png</url>
                    </icon>
                    </iconList>
                    </device>
                    </root>

                    Kommentar


                      #11
                      Das sieht doch gut aus.
                      Jetzt müssten die devices eigentlich auch funktionieren.
                      Das socket reuse habe ich soeben als Update eingepflegt.

                      Kommentar


                        #12
                        Ja, hab' grad die Meldung bekommen, meine Alexa App findet aber nichts, egal wie oft ich Suche
                        Welche Rolle spielt die Datei .alexa-hue-status.json, muss die beim Suchen vorhanden sein, oder nicht? Die wird beim ersten Ändern des devices angelegt, dann aber nicht mehr upgedated, weil ja immer ID oder Name gleich sind, alles kann man ja nicht gleichzeitig ändern. Bei einem Reset wird sie wohl gelöscht. Wie ist der richtige Ablauf für ein neues Device? Device anlegen, Reset? Device anlegen Restart?

                        Danke für deine Mühen, werde wohl erst morgen weiter testen

                        Kommentar


                          #13
                          In der alexa-hue-status.json werden die konfigurierten Devices gespeichert. Diese muss beim Suchen vorhanden sein.
                          Also einmalig Reset, damit das config File gelöscht ist.
                          Danach für jedes Device einen eigenen LBS mit eindeutigem Namen und eindeutiger ID erstellen.
                          Dann solltest du alle devices in der alexa-hue-status.json sehen und kannst dann auch die Alexa Suche ausführen.

                          Kommentar


                            #14
                            Hab's bevor ich zur Arbeit gefahren bin nochmal probiert. Datei ist vorhanden mit folgendem Inhalt.

                            {"7":{"manufacturername":"Edomi","modelid":"EdoSwi tch","name":"ORANGE","state":{"mode":"homeautomati on","on":false,"reachable":true},"swversion":"3792 ","type":"On/Off plug-in unit","uniqueid":"EED:00:EED:00:EED-07"}}

                            Weder die Alex-App, noch die Alexa-Web-Seite kann was finden.
                            Was kann ich noch probieren?

                            Kommentar


                              #15
                              Das json sieht ok aus.
                              Du kannst noch mit http://IP_VON_EDOMI/api/edomi/lights bzw. http://IP_VON_EDOMI/api/edomi/lights/7 prüfen ob deine Weiterleitung und das Script richtig arbeiten.
                              Außerdem mal mit tail -f /var/log/httpd/access_log während des Scans schauen welche Geräte welche URLs vom Webserver anfordern.
                              Probier mal statt Typ 'sw' den typ 'dim'.

                              Welche Echo Geräte/Version hast du? Ich habe nur mit Dots der Version 3 und 4 getestet.

                              Kommentar

                              Lädt...
                              X