Ankündigung

Einklappen
Keine Ankündigung bisher.

Philips HUE Plugin (NEU) v1.0 released

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

    Philips HUE Plugin (NEU) v1.0 released

    Hallo,

    es ist vollbracht, das Release 1.0 des Philips HUE Plugins (NEU) ist getestet und fertig. Vielen Dank an Martin (Msinn) und Oliver (Sandmann60) für das Testen und die Überarbeitung der Dokumentation des Plugins.

    Was geht:
    - Steuerung der Hue Lampen (Farben, Helligkeit usw.)
    - Nutzung RGB Auswahl Features z.B. der smartvisu
    - Effekte (Alert, Effect)
    - Abruf von Szenen der Hue Bridges
    - Für alle dimmbaren Items ist eine Anbindung eines relativen Dimmens (DPT3) über Taster möglich
    - Viele Statusrückmeldungen (reachable, SW Stände von Lampen, Portalstatus, usw.) können auf Items gemapped vorhanden
    - Es können mehrere Bridges konfiguriert werden
    - Viele Konfigurationsmöglichkeiten für Zeitverhalten / Übergänge

    Das Ganze ist unter https://github.com/mworion/hue.git zu finden. Rückmeldungen willkommen, bitte ins Forum. Mit dem Release beende ich auch den Betatest Thread. Bitte alle Punkte ab dem offiziellen Release bitte in diese Thread.

    Grüße Michel

    PS: anbei Beispiele für ein smartvisu Darstellung, liegen ebenfalls in Github
    Angehängte Dateien

    #2
    Klasse Arbeit! Danke!

    Kommentar


      #3
      Hallo Michel,

      sauber. Was meinst Du, sollen wir das nicht lieber ins git packen?

      Bis bald

      Marcus

      Kommentar


        #4
        Hallo Marcus,

        aus meiner Sicht gerne, habe überhaupt nichts dagegen. Der Master mit v1.0 ist erst mal fertig. Ich habe noch ein paar Dinge vor, aber dafür gibt es den develop Zweig. Ich würde dort auch erst mal weiter entwickeln, da ich beim Entwickeln viele Commits und auch Pushes ins Git Repo mache.

        Einzig einen Pull Request kann ich Dir nicht schicken, weil meine GIT Struktur komplett anders aussieht (ich benutze GIT auch zum deployen inkl. smartvisu und Konfig. Ich arbeite auch nicht auf dem Image, sondern virtuellen Maschinen unter ubuntu server. Ich nehme daher die geschriebenen Plugins oder Widgets aus meinem Environment heraus und stelle sie als Einzelkomponente auf Github zur Verfügung.

        Wenn Du etwas im Upstream Pfad änderst, dann gibt es bei entsprechender Dringlichkeit halt ein Rebase auf Deinen neuen Stand. Insofern freue ich mich auf ein Submodules im Git pro Plugin, dann würde das alles viel einfacher (jedenfalls für mich :-).

        anbei das Paket HUE Plugin Master v1.0 komplett als ZIP file.

        Grüsse

        Michel
        Angehängte Dateien

        Kommentar


          #5
          Update der verwendeten Library RGB->CIE

          Hallo für alle Hue Verwender:

          Die zusätzlich zu verwendende Library
          Code:
          https://github.com/benknight/hue-python-rgb-converter
          hat vom Author einen Update bekommen (Division durch 0 abgefangen).
          Bei Interesse oder Problemen bitte updaten.

          Michel

          Kommentar


            #6
            Hallo Hue Fans,

            aktuell auf dem Git ist in "develop" die Version 1.5. Sie enthält neben einigen Codehanges und Aufräumarbeiten auch den Update der wichtigsten Funktionen, die mit der Philips Hue API von 1.4 auf 1.7 hereingekommen sind. Im Wesentlichen sind das die Kommandos mit Einkrementen für die Haupstellgrößen (Brightness, Hue usw.)

            Viel Spaß beim Testen !

            Michel

            Kommentar


              #7
              Hallo Michel,
              Zitat von Orion Beitrag anzeigen
              PS: anbei Beispiele für ein smartvisu Darstellung, liegen ebenfalls in Github
              hast du die Beispiele inzwischen gelöscht?
              Ich fange gerade an, ein wenig zu testen und da wäre das Beispiel mit dem bridge-Status sehr hilfreich.

              VG
              Jan
              Zuletzt geändert von dh6; 25.09.2015, 17:58.

              Kommentar


                #8
                Hallo Jan,

                habe unter develop wieder meine Beispiele eingestellt.

                Michel

                Kommentar


                  #9
                  Vielen Dank Michel!

                  Kommentar


                    #10
                    Hallo zusammen,

                    sorry, aber ich brauche glaube ich mal eine kleine Nachhilfestunde...
                    Michel, könntest du mir den zugehörigen Abschnitt deiner items.conf zeigen, mit der du z.B. "kg.bridge1.bridge_name" definierst?
                    Und zum anderen würd ich gern wissen, was diese Zeile macht:
                    PHP-Code:
                    "{{hue.control_group('kg.test.1','kg.hue_group_1.p ower','kg.hue_group_1.alert','kg.hue_group_1.effec t','kg.hue_group_1.bri','kg.hue_group_1.sat','kg.h ue_group_1.hue')}}" 
                    Dank dir und euch im voraus!

                    Viele Grüße
                    Jan

                    Kommentar


                      #11
                      Hallo Jan,

                      ich nutze diese Plugin seit einigen Monaten und es tut was es soll. Ich erinnere mich, das die Einrichtung bei mir auch recht holprig war, daher mal die wesentlichen Punkte (soweit ich mich noch erinnere):

                      Erst mal einen User auf der Bridge einrichten. Das ist in Phillips der Doku zur HUE Api beschrieben: http://www.developers.meethue.com/do...etting-started
                      Falls schon ein User eingerichtet ist, bekommst du dessen ID (keine Ahnung, ob ID in diesem Kontext richtig ist) unter http://<IP der Bridge>/api/<userName> angezeigt. Bei mir sieht das so aus:
                      [...]"timezone": "Europe/Berlin","whitelist":{"<userID>":{"last use date": [...]
                      plungin.conf sieht bei mir dann so aus:
                      Code:
                      [HUE]
                          class_name = HUE
                          class_path = plugins.hue    
                          hue_user = 00000000155e251b7d6c42e97d6cd2e9 # <-- das ist die "userID"
                          hue_ip = 192.168.32.50

                      Hier ein Beispiel für eine Lampe, welche ich über KNX ein/ausschalte und über smartvisu dimmen, schalten und Farbe ändern kann.


                      Meine items.conf:
                      Code:
                      [OG]
                          [[Bad]]
                              [[[Licht]]]
                                  [[[[Haengelampe1]]]]
                                      hue_lamp_id = 1
                                      hue_bridge_id = 0
                                      hue_lamp_type = 0
                                      [[[[[AnAus]]]]]
                                          type = bool
                                          visu_acl = rw
                                          knx_dpt = 1
                                          knx_listen = 1/2/50
                                          hue_send = on
                                          hue_listen = on        
                                      [[[[[dimmen]]]]]
                                          type = num
                                          cache = on
                                          hue_send = bri
                                          hue_listen = bri                    
                                          visu_acl = rw
                                      [[[[[red]]]]]
                                          type = num
                                          cache = on
                                          hue_send = col_r
                                          visu_acl = rw
                                      [[[[[green]]]]]
                                          type = num
                                          cache = on
                                          hue_send = col_g
                                          visu_acl = rw
                                      [[[[[blue]]]]]
                                          type = num
                                          cache = on
                                          hue_send = col_b
                                          visu_acl = rw
                      Eingebunden in die Smartvisu habe ich es dann wie folgt:
                      HTML-Code:
                                  <div data-role="collapsible" data-collapsed="false">
                                      <h3>Licht Dimmbar</h3>
                                      <table width="100%">
                                      <tr><td width="30px">{{ basic.rgb('BadHue1', 'OG.Bad.Licht.Haengelampe1.red', 'OG.Bad.Licht.Haengelampe1.green', 'OG.Bad.Licht.Haengelampe1.blue') }}</td><td>{{ device.dimmer('BadHue1', 'HängeLampe 1', 'OG.Bad.Licht.Haengelampe1.AnAus', 'OG.Bad.Licht.Haengelampe1.dimmen') }}</td></tr> 
                      [...]              
                                      </table>
                                  </div>
                      hue.png


                      Gruß,

                      Daniel

                      Kommentar


                        #12
                        Hallo,

                        daniel, danke für die Erklärung.

                        Anbei meine conf für die Bridge Items:

                        Code:
                        [kg]
                            [[bridge1]]
                                # Bridge 1
                                hue_bridge_id = 0
                                
                                [[[bridge_name]]]
                                    type = str
                                    hue_listen = bridge_name
                                [[[zigbeechannel]]]
                                    type = num
                                    hue_listen = zigbeechannel
                                [[[mac]]]
                                    type = str
                                    hue_listen = mac
                                [[[dhcp]]]
                                    type = bool
                                    hue_listen = dhcp
                                [[[ipaddress]]]
                                    type = str
                                    hue_listen = ipaddress
                                [[[netmask]]]
                                    type = str
                                    hue_listen = netmask
                                [[[gateway]]]
                                    type = str
                                    hue_listen = gateway
                                [[[utc]]]
                                    type = str
                                    hue_listen = UTC
                                [[[localtime]]]
                                    type = str
                                    hue_listen = localtime
                                [[[timezone]]]
                                    type = str
                                    hue_listen = timezone
                                [[[whitelist]]]
                                    type = dict
                                    hue_listen = whitelist
                                [[[bridge_swversion]]]
                                    type = str
                                    hue_listen = bridge_swversion
                                [[[apiversion]]]
                                    type = str
                                    hue_listen = apiversion
                                [[[swupdate]]]
                                    type = dict
                                    hue_listen = swupdate
                                [[[linkbutton]]]
                                    type = bool
                                    hue_listen = linkbutton
                                [[[portalservices]]]
                                    type = bool
                                    hue_listen = portalservices
                                [[[portalconnection]]]
                                    type = str
                                    hue_listen = portalconnection
                                [[[portalstate]]]
                                    type = dict
                                    hue_listen = portalstate
                                [[[errorstatus]]]
                                    type = bool
                                    hue_listen = errorstatus
                        und ein Beispiel für eine Lampe:
                        Code:
                            [[hue3]]
                                # Treppe Keller
                                   hue_bridge_id = 0
                                hue_lamp_id = 3
                                hue_lamp_type = 0
                                [[[power]]]
                                    type = bool
                                    hue_send = on
                                    hue_listen = on
                                    knx_dpt = 1
                                    knx_cache = 8/0/1
                                [[[reachable]]]
                                    type = bool
                                    hue_listen = reachable
                                [[[bri]]]
                                    type = num
                                    cache = on
                                    hue_send = bri
                                    hue_listen = bri
                                [[[sat]]]
                                    type = num
                                    cache = on
                                    hue_send = sat
                                    hue_listen = sat
                                [[[col_r]]]
                                    type = num
                                    cache = on
                                    hue_send = col_r
                                [[[col_g]]]
                                    type = num
                                    cache = on
                                    hue_send = col_g
                                [[[col_b]]]
                                    type = num
                                    cache = on
                                    hue_send = col_b
                                [[[hue]]]
                                    type = num
                                    cache = on
                                    hue_send = hue
                                    hue_listen = hue
                                [[[effect]]]
                                    type = str
                                    hue_send = effect
                                    hue_listen = effect
                                [[[alert]]]
                                    type = str
                                    hue_send = alert
                                    hue_listen = alert
                                 [[[modeltype]]]
                                    type = str
                                    hue_listen = type
                                 [[[name]]]
                                    type = str
                                    hue_listen = name
                                 [[[modelid]]]
                                    type = str
                                    hue_listen = modelid
                                 [[[swversion]]]
                                    type = str
                                    hue_listen = swversion
                        Ist aber Max Ausbau, brauche ich nicht wirklich komplett.
                        Wenn du das Macro verwendest, und in die HTML Seite einbaust:
                        Code:
                        <div class="block">
                            <div class="ui-bar-c ui-li-divider ui-corner-top">
                                Subwoofer
                            </div>
                            <div class="ui-fixed ui-body-a ui-corner-bottom" style="min-height: 50px">
                                {{hue.control('eg.1','eg.hue1.power','eg.hue1.reachable','eg.hue1.col_r','eg.hue1.col_g','eg.hue1.col_b','eg.hue1.alert','eg.hue1.effect','eg.hue1.bri','eg.hue1.sat','eg.hue1.hue')}}
                            </div>
                        </div>
                        und nicht vergessen die Widget Datei mit dem Macro zu installieren (die HTML Datei mit in Dein Pages Verzeichnis kopieren) und anschliessend auch mit
                        Code:
                        {% import "widget_hue.html" as hue %}
                        auf Deiner Seite auch einbinden. Dann bekommst Du für eine Lampe folgendes Resultat: widget.png


                        Ich hoffe es hilft etwas.

                        Grüße Michel

                        Kommentar


                          #13
                          Herzlichen Dank für eure Hilfe.
                          Jetzt bin ich einen großen Schritt voran gekommen.

                          Als nächstes würde ich gern eine Szene in den items per crontab aufrufen.
                          Gefunden habe ich dies:
                          Zitat von Msinn Beitrag anzeigen
                          Ich habe ein Item definiert:
                          Code:
                           [[[hue_szenen]]]
                          name = Hue Bridge Szenen
                          type = str
                          hue_id = 0
                          hue_send = scene
                          hue_listen = scene
                          und dazu habe isch folgendes sv_widget definiert:
                          Code:
                          sv_widget = {{ basic.button('szenen_terrasse0', 'wohnung.terrasse.hue_szenen', 'aus', icon0~"control_standby.png", 'd2412db60-on-0', 'midi') }}
                          wobei d2412db60-on-0 der Szenenname ist.

                          Funktioniert!
                          Fragt sich nur, wie ich die richtige Szene in der items.conf benenne und ob sie dann auch mit einem
                          Code:
                          crontab =  sunset-20m = 1 | 30 23 * 0,1,2,3,4 = 0 | 59 23 * 5,6 = 0
                          eingeschaltet wird.

                          Kommentar


                            #14
                            Hallo Jan,

                            Du musst ja die Szene als String an das Item übergeben. Genauso wie Du es mit dem Widget gemacht hast. Insofern (nur Theorie) sollte
                            Code:
                            crontab =  sunset-20m = 'd2412db60-on-0'
                            die Szene aufrufen. Aus meiner Sicht kann keine Szene ein oder ausgeschaltet werden, sondern nur aufgerufen ! Der 2. und 3. Teil im Crontab mach dann keinen Sinn.
                            Insofern wirst Du im Log bei hue_listen = scene eine Warning im Log bekommen, weil das nicht abgefragt werden kann.

                            Grüße Michel

                            Kommentar


                              #15
                              Hallo Michel.
                              Zitat von Orion Beitrag anzeigen
                              Du musst ja die Szene als String an das Item übergeben. Genauso wie Du es mit dem Widget gemacht hast. Insofern (nur Theorie) sollte
                              Code:
                              crontab = sunset-20m = 'd2412db60-on-0'
                              die Szene aufrufen. Aus meiner Sicht kann keine Szene ein oder ausgeschaltet werden, sondern nur aufgerufen ! Der 2. und 3. Teil im Crontab mach dann keinen Sinn.
                              Insofern wirst Du im Log bei hue_listen = scene eine Warning im Log bekommen, weil das nicht abgefragt werden kann.
                              Das klingt logisch. Danke dir; ich werde es probieren.

                              Aber zuvor noch eine andere Frage. Ich habe nach einem restart von smarthome folgende Einträge im log, wenn ich das hue-plugin aktiviert habe:
                              Code:
                              Init SmartHome.py 1.0-45-g02cf972+
                              2015-10-07 13:41:08 WARNING  hue-update-bridges 0
                              2015-10-07 13:41:09 WARNING  hue-update-groups 0
                              2015-10-07 13:41:09 ERROR    hue-update-groups Method hue-update-groups exception: 'state'
                              Traceback (most recent call last):
                                File "/usr/local/smarthome/lib/scheduler.py", line 344, in _task
                                  obj()
                                File "/usr/local/smarthome/plugins/hue/__init__.py", line 739, in _update_groups
                                  dictOptimized = hueGroupIdValues['state'].copy()
                              KeyError: 'state'
                              2015-10-07 13:41:10 WARNING  hue-update-lamps 0
                              und dann nach einiger Zeit kommt dann jede Minute
                              Code:
                              ERROR    Scheduler    Needing more worker threads than the specified maximum of 20!

                              Ist das ein bekannter Fehler (wenn es denn einer ist) ?

                              Viele Grüße
                              Jan

                              Kommentar

                              Lädt...
                              X