Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Version Plugin HUE zum Betatest

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

    #46
    Hi Michel,

    ich habe noch einen allgemeineren Wunsch zum Plugin. Da das Plugin eine recht hohe Zahl an Attributen je Peripherieelement (Hue-Leuchte) unterstützt und in der items.conf diese Attribute meist als childs zu einem "Haupt-Item" definiert werden, wäre es evtl. sinnvoll/hilfreich, wenn solche Identifier aus der nächst höheren Hirarchiestufen vererbt werden könnten?

    Für [dim] tust Du das ja bereits. Dort muss keine hue_id angegeben werden.

    Wenn ich in items.conf solche hue Bäume kopiere, wäre es weniger fehlerträchtig, wenn die hue_id nicht bei jedem Attribut definiert ist und geändert werden muss.

    Das Beispiel aus dem Hue-Plugin kann das verdeutlichen. Der Übersicht halber habe ich nur einen Teil der Attribute aufgeführt.

    Bisher muss der Identifier hue_id zu jedem Attribut angegeben werden:
    Code:
    [[hue_light_01]]     
        [[[power]]]
            type = bool
            hue_id = 1
            hue_bridge = 0
            hue_send = on
            hue_listen = on
            knx_dpt = 1
            knx_cache = 8/0/1
         [[[reachable]]]
                 type = bool
                 hue_id = 1
                 hue_listen = reachable
             [[[ct]]]
                 type = num
                 hue_id = 1
                 hue_send = ct
                 hue_listen = ct
                 enforce_updates = true
             [[[scene]]]
                 type = str
                 hue_id = 1
                 hue_send = scene
                 enforce_updates = true
             [[[bri]]]
                 type = num
                 cache = on
                 hue_id = 1
                 hue_send = bri
                 hue_listen = bri
                 hue_transitionTime = 0.5
                 [[[[dim]]]]
                     type = list
                     knx_dpt = 3
                     knx_listen = 8/0/2
                     hue_dim_max = 255
                     hue_dim_step = 5
                     hue_dim_time = 0.5
             [[[sat]]]
                 type = num
                 cache = on
                 hue_id = 1
                 hue_send = sat
                 hue_listen = sat
    Bei Nutzung der Hirarchie könnten hue_id (und hue_bridge) "vor die Klammer" gezogen werden:
    Code:
    [[hue_light_01]]     
        hue_id = 1
        [[[power]]]
            type = bool
            hue_bridge = 0
            hue_send = on
            hue_listen = on
            knx_dpt = 1
            knx_cache = 8/0/1
         [[[reachable]]]
                 type = bool
                 hue_listen = reachable
             [[[ct]]]
                 type = num
                 hue_send = ct
                 hue_listen = ct
                 enforce_updates = true
             [[[scene]]]
                 type = str
                 hue_send = scene
                 enforce_updates = true
             [[[bri]]]
                 type = num
                 cache = on
                 hue_send = bri
                 hue_listen = bri
                 hue_transitionTime = 0.5
                 [[[[dim]]]]
                     type = list
                     knx_dpt = 3
                     knx_listen = 8/0/2
                     hue_dim_max = 255
                     hue_dim_step = 5
                     hue_dim_time = 0.5
             [[[sat]]]
                 type = num
                 cache = on
                 hue_send = sat
                 hue_listen = sat
    Was hältst Du davon?
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #47
      Hi Michel,

      sorry für die späte Rückmeldung von meiner Seite.
      Vergess das erst mal mit den Multiple Bridges, das wird aktuell anscheinend von Philips gar nicht angeboten, sprich es gibt nur eine 1:n Beziehung. Man denkt wohl, dass die Maschen des ZigBee ausreichend sind für einen normalen Haushalt. Man kann ja notfalls das Plugin Clonen und dann läuft es auch mit mehreren, hab ich so gemacht für mein Wechselrichter-Plugin bis ich das mal auf Multiple umgestellt habe.

      Interessant war heute ein anstehendes Update, bei dem vor dem Update der Wert
      Code:
      "swupdate":{"updatestate": 2
      und nach dem Update
      Code:
      "swupdate":{"updatestate": 0
      stand.

      Ich mach mich mal nun wieder ans Testen...

      Cheers,
      Oliver

      Kommentar


        #48
        Hallo Oliver,

        was hat das Update denn upgedated (fallls Du Dir die config vorher angesehen hast)?

        Wenn bei lights[] Ids standen, war es die Firmware der aufgeführten Lights:
        Code:
            "swupdate": {
                "updatestate": 1,
                "checkforupdate": false,
                "devicetypes": {
                    "bridge": false,
                    "lights": []
                },
                "url": "",
                "text": "",
                "notify": false
            },
        Sonst war es die Firmware der Bridge (bridge: true). Für die Bridge ist die aktuellste Version:
        Code:
            "swversion": "01018228",
            "apiversion": "1.5.0",
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #49
          Hi Martin, Michel,
          hatte vor und nach dem Update jeweils die Meldungen aus der API geloggt.
          Das Update ist für eine der neuen Lampen erfolgt.

          Beim nochmaligen Lesen der Meldung kann man sogar folgendes Schlussfolgern:
          1. "swupdate":{"updatestate": 2 >> Es steht ein Update an
          2. "bridge": false >> Kein Update für die Bridge
          3. "lights": ["3"] >> Update steht für Lampe 3 an

          Nach dem Update sieht nun die Message so aus:
          1. "swupdate":{"updatestate": 0
          2. "bridge": false
          3. "lights": []

          Ach ja, bei Lampe 3 wechselte die SW-Version von
          "swversion": "66009461"
          auf
          "swversion": "66013452"

          Cheers,
          Oliver

          Kommentar


            #50
            Hallo,

            es gibt den nächsten Schritt hin auf das Release mit v0.94 in develop.

            changelog:

            - alles nochmal umgekrempelt
            - bitte achtet auf die teilweise neuen Attributnamen, ist im readme drin. Es dient zur Klarstellung der Bedeutung.
            - weitere Parameter in der plugin.conf auch hier Verweis auf readme
            - die Lampen ID (hue_lamp_id) und die Bridge ID (hue_bridge_id) wird von einem Item auf einem oberen Layer nach unten vererbt. Es wird zur Zeit alles drunter überschrieben! Damit kann man die Items pro Lampe nicht mehr in der Struktur verteilen
            - weitere Fehlermeldungen bei Falschkonfigurationen
            - die Stati der HueBridge selbst können auf Items gelegt werden
            - die letzten Rückmeldungen zu Fehlern oder fehlenden Statusupdate sollten geklärt sein

            @Oliver, Martin: Ich bitte Euch zu testen. Funktion sollte natürlich da sein, hoffentlich habe ich wenig übersehen. Mehr Feature Hub wird es erst einmal für die 1.0 nicht geben. Es wäre super, wenn ihr verschiedenste Einstellungen in Eurer Item.conf ausprobieren könntet (keine Werte angeben, damit default gesetzt wird usw.). Der Parser für die Konfigurationen (in plugin.conf und item.conf) ist mittlerweile recht umfangreich geworden. Da kann ich nicht alles durchprobieren.

            Grüße

            Michel

            Kommentar


              #51
              Hallo Michel,

              ich habe zum ersten Test für eine Leuchte hue_lamp_id auf dem level [[hue]] gesetzt und smarthome.py neu gestartet. Alle anderen Parameter habe ich gleich gelassen. Überflüssige Settings (hue_id = bzw. cycle = in plugin.conf) sollten nicht stören und ignoriert werden.

              Erstes Resultat war ein Trace:
              Code:
              2015-01-08 21:52:17 ERROR    Main         Plugin HUE exception: __init__() got an unexpected keyword argument 'cycle'
              Traceback (most recent call last):
                File "/usr/local/smarthome/lib/plugin.py", line 53, in __init__
                  plugin_thread = Plugin(smarthome, plugin, classname, classpath, args)
                File "/usr/local/smarthome/lib/plugin.py", line 80, in __init__
                  exec("self.plugin = {0}.{1}(smarthome{2})".format(classpath, classname, args))
                File "<string>", line 1, in <module>
              TypeError: __init__() got an unexpected keyword argument 'cycle'
              Danach habe ich in der plugin.conf den cycle parameter auskommentiert und smarthome.py neu gestartet.

              Jetzt habe ich keinerlei Einträge mehr im log es geht allerdings bei der zum Test umkonfigurierten Leuchte gar nichts... Ich bekomme auch nichts an Stati (type, name, modelid, ...)

              Bin zurück zur 0.92...
              Viele Grüße
              Martin

              There is no cloud. It's only someone else's computer.

              Kommentar


                #52
                ... Es ist einfach magisch. Da teste ich in dieser Ecke einiges, sehe nichts und du triffst gleich beim ersten Mal ins Schwarze. es hat was mit dem unabhängigen Test beim entwickeln. Lustiger Weise läuft bei mir alles und auch ohne Logeintrag.....

                Allerdings weiß ich nicht wie die allgemeine pPuginverwaltung mit überflüssigen oder falschen Parameteränderungen umgeht. So sieht zumindest die Fehlermeldung aus.

                :-)

                Michel

                Kommentar


                  #53
                  Hallo Michel,

                  nachdem ich die Plugin.conf angepasst habe, bin ich zwar Log-Eintrag frei, aber auch funktionsfrei
                  Viele Grüße
                  Martin

                  There is no cloud. It's only someone else's computer.

                  Kommentar


                    #54
                    Poste doch bitte mal den Ausschnitt.

                    Michel

                    Kommentar


                      #55
                      Bitte schön:

                      Code:
                              # Tischleuchte auf dem Dreieckschrank, Leuchtmittel Philips hue 
                              # reagiert wir ein KNX Dimmaktor
                              [[[dreieckschrank]]]
                                  name = Leuchte Dreieckschrank
                                  visu = yes
                                  sv_widget = "{{ device.dimmer('item.level', 'level / hue / sat / ct', 'item.onoff', 'item.level') }} <br> {{ basic.slider('item.hue', 'item.hue', 0, 65535) }} <br> {{ basic.slider('item.sat', 'item.sat') }} <br> {{ basic.slider('item.ct', 'item.ct', 153, 500) }}"
                                  hue_lamp_id = 3
                                  [[[[visu_attributes]]]]
                                      name = Attribute Leuchte Dreieckschrank
                                      visu = yes
                                      sv_widget = "Type: {{ basic.value('wohnung.buero.dreieckschrank.type', 'wohnung.buero.dreieckschrank.type') }} <br> Name: {{ basic.value('wohnung.buero.dreieckschrank.myname', 'wohnung.buero.dreieckschrank.myname') }} <br> Model: {{ basic.value('wohnung.buero.dreieckschrank.modelid', 'wohnung.buero.dreieckschrank.modelid') }} <br> SW Vers.: {{ basic.value('wohnung.buero.dreieckschrank.swversion', 'wohnung.buero.dreieckschrank.swversion') }} <br> erreichbar: {{ basic.text('wohnung.buero.dreieckschrank.reachable', 'wohnung.buero.dreieckschrank.reachable', 'Ja', 'Nein') }}"
                                  [[[[onoff]]]]
                                      name = Leuchte Dreieckschrank OnOff
                                      type = bool
                                      hue_id = 3
                                      hue_lamp_id = 3
                                      hue_send = on
                                      hue_listen = on
                                      knx_dpt = 1
                                      knx_listen = 2/1/14
                                      knx_status = 2/2/14
                                      knx_reply = 2/2/14
                                  [[[[reachable]]]]
                                      type = bool
                                      hue_lamp_id = 3
                                      hue_id = 3
                                      hue_listen = reachable
                                  [[[[level]]]]
                                      type = num
                                      hue_id = 3
                                      hue_send = bri
                                      hue_listen = bri
                                      hue_transitiontime = 0.5
                                      knx_dpt = 5
                                      knx_listen = 2/4/14
                                      knx_status = 2/5/14
                                      knx_reply = 2/5/14
                                      [[[[[dim]]]]]
                                          type = list
                                          knx_dpt = 3
                                          knx_listen = 2/3/14
                                          hue_dim_max = 255
                                          hue_dim_step = 5
                                          hue_dim_time = 0.5
                                  [[[[hue]]]]
                                      type = num
                                      hue_id = 3
                                      hue_send = hue
                                      hue_listen = hue
                      #                knx_dpt = 7
                      #                knx_listen = 1/7/9x
                      #                knx_send = 1/7/9x        # knx_send statt knx_status, da selbe Adesse wie knx_listen
                      #                knx_reply = 1/7/9x
                                  [[[[sat]]]]
                                      type = num
                                      hue_id = 3
                                      hue_send = sat
                                      hue_listen = sat
                      #                knx_dpt = 5
                      #                knx_listen = 1/7/9x
                      #                knx_send = 1/7/9x        # knx_send statt knx_status, da selbe Adesse wie knx_listen
                      #                knx_reply = 1/7/9x
                                  [[[[ct]]]]
                                      type = num
                                      hue_id = 3
                                      hue_send = ct
                                      hue_listen = ct
                                      enforce_updates = on
                      #                knx_dpt = 7
                      #                knx_listen = 1/7/9x
                      #                knx_send = 1/7/9x        # knx_send statt knx_status, da selbe Adesse wie knx_listen
                      #                knx_reply = 1/7/9x
                                      eval = 343 if sh.wohnung.buero.dreieckschrank.onoff() else sh.wohnung.buero.dreieckschrank.ct()
                                      eval_trigger = wohnung.buero.dreieckschrank.onoff
                      
                                  [[[[type]]]]
                                      type = str
                                      hue_id = 3
                                      hue_bridge_id = 0
                                      hue_lamp_id = 3
                                      hue_listen = type
                                  [[[[myname]]]]
                                      type = str
                                      hue_id = 3
                                      hue_listen = name
                                  [[[[modelid]]]]
                                      type = str
                                      hue_id = 3
                                      hue_listen = modelid
                                  [[[[swversion]]]]
                                      type = str
                                      hue_id = 3
                                      hue_listen = swversion
                      
                      
                      #            [[[[hue]]]]
                      #                type = num
                      #                sv_widget = "{{ device.dimmer('item', 'dreieckschrank: hue', 'wohnung.buero.dreieckschrank_hue', 'wohnung.buero.dreieckschrank_hue.hue', 0, 65535) }} {{ device.dimmer('item_sat', 'dreieckschrank: sat', 'wohnung.buero.dreieckschrank_hue', 'wohnung.buero.dreieckschrank_hue.sat') }}"
                      #                sv_widget = "hue: {{ basic.slider('item_hue', 'wohnung.buero.dreieckschrank_hue.hue', 0, 65535) }} sat: {{ basic.slider('item_sat', 'wohnung.buero.dreieckschrank_hue.sat') }} ct: {{ basic.slider('item_ct', 'wohnung.buero.dreieckschrank_hue.ct', 153, 500) }}"
                      #                knx_dpt = 7
                      #                knx_listen = 1/7/90
                      #                knx_send = 1/7/90      # knx_send statt knx_status, da selbe Adesse wie knx_listen
                      #                knx_reply = 1/7/90
                      #                hue_id = 3
                      #                hue_feature = hue
                      #            [[[[sat]]]]
                      #                type = num
                      #                sv_widget = "{{ device.dimmer('item', 'dreieckschrank: sat', 'wohnung.buero.dreieckschrank_hue', 'wohnung.buero.dreieckschrank_hue.sat') }}"
                      #                knx_dpt = 5
                      #                knx_listen = 1/7/190
                      #                knx_send = 1/7/190      # knx_send statt knx_status, da selbe Adesse wie knx_listen
                      #                knx_reply = 1/7/190
                      #                hue_id = 3
                      #               hue_feature = sat
                                  [[[[ct]]]]
                                      type = num
                      #                sv_widget = "{{ device.dimmer('item', 'dreieckschrank: ct', 'wohnung.buero.dreieckschrank_hue', 'wohnung.buero.dreieckschrank_hue.ct', 153, 500) }}"
                                      knx_dpt = 7
                      #                knx_listen = 1/6/90
                      #                knx_send = 1/6/90      # knx_send statt knx_status, da selbe Adesse wie knx_listen
                      #                knx_reply = 1/6/90
                                      hue_id = 3
                                      hue_feature = ct
                                  [[[[effect]]]]
                                      type = str
                                      hue_id = 3
                                      hue_feature = effect
                                  [[[[all]]]]
                                      type = dict
                                      hue_id = 3
                                      hue_feature = all
                      Ergänzung: plugin.conf Section

                      Code:
                      [HUE]
                          class_name = HUE
                          class_path = plugins.hue
                          hue_user = knxbususer
                          hue_ip = 10.0.0.136
                          hue_port = 80
                      #    cycle = 5
                      Viele Grüße
                      Martin

                      There is no cloud. It's only someone else's computer.

                      Kommentar


                        #56
                        Hallo,

                        nachdem ich einiges nochmal überarbeitet habe, gibt es jetzt die v0.95 auf github/develop.

                        - changelog: viele Fehlermeldungen eingebaut, damit man im Log file sehr genau sieht, was man bei der Konfiguration wo falsch gemacht hat.

                        Bitte unbedingt das Readme anschauen. Einige Attribute sind vom Namen her angepasst der Lesbarkeit wegen. Ich bin mir sicher, es war die letzten Anpassung dazu, aus meiner Sicht aber für die Zukunft bei Erweiterungen notwendig. Hier nochmal die Delta Liste zu Version vor 0.94:

                        Code:
                        in item.conf:
                        
                        hue_id wird zu hue_lamp_id
                        hue_bridge_id kommt neu dazu (optional wenn mehrere bridges da)
                        
                        in plugin.conf:
                        
                        cycle wird zu cycle_lamps
                        cycle_bridges kommt neu dazu (Polling cycle für Bridge Daten, kann langsam sein)
                        default_transitionTime kommt neu dazu (optional für das Standard umschaltverhalten Hue)

                        Die hue_lamp_id und die hue_bridge_id können entweder direkt beim jedem Item stehen (wie bislang auch), oder auch in höheren Item Ebenen als "Sammeleinstellung". Der Parser schaut in der Hierarchie von unten nach oben, bis er eine Einstellung (hoffentlich !) findet.

                        Ich freue mich wie immer auf ein Feedback.

                        Grüße Michel

                        PS: @ Martin: das war wohl auch Dein Problem, dass Du beim letzten Versuch die alten Parameternamen verwendet hast.

                        Kommentar


                          #57
                          Hallo Michel,

                          ich hatte in der Konfiguration (siehe weiter oben im Thread) den neuen Parameternamen hue_lamp_id in der daüberliegenden Ebene definiert. Ich hatte in den Ebenen darunter hatte ich die alten Parameter stehen lassen, weil ich vermutete das würde nicht stören. Nur bei OnOff habe ich als es nicht ging, auch noch hue_lamp_id definiert. Die restlichen (neuen) Parameter hatte ich nicht gesetzt, so dass die defaults greifen sollten.

                          Ich schaue mir die v0.95 gleich mal an...
                          Viele Grüße
                          Martin

                          There is no cloud. It's only someone else's computer.

                          Kommentar


                            #58
                            Hallo Michel,

                            hast Du auf Deinem Entwicklungsrechner eine exotische Zeitzone eingestellt? Mir ist eben aufgefallen, dass die heruntergeladenen Dateien den Timestamp 10.01.2015 04:34 tragen. Oder hängt das mit dem einchecken/auschecken bei GitHub zusammen?
                            Viele Grüße
                            Martin

                            There is no cloud. It's only someone else's computer.

                            Kommentar


                              #59
                              Hallo Michel,

                              ich habe eben die v0.95 installiert und mit der selben Konfiguration gestartet, die ich für den v0.94 Test erstellt hatte ... und es funktioniert im Prinzip .

                              Die einzelnen Testfälle muss ich noch durchspielen, aber ich kann Leuchten Schalten und Szenen abrufen.
                              Viele Grüße
                              Martin

                              There is no cloud. It's only someone else's computer.

                              Kommentar


                                #60
                                Hallo Martin,

                                kling schon mal gut.

                                @Oliver: Ich habe nichts gefunden, was gegen einen Betrieb mit 2 Bridges spricht, ausser dass die Lampen Zuordnung etwas schwieriger werden kann (wenn beide Bridges die neue Lampe sehen). Wenn Du Zeit hast, probiere es doch mal aus mit einer Lampe auf der 2. Bridge.

                                Michel

                                Kommentar

                                Lädt...
                                X