Ankündigung

Einklappen
Keine Ankündigung bisher.

openhab2 + harmony hub + Einschaltszene

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

    openhab2 + harmony hub + Einschaltszene

    Hallo,


    ich habe es bereits geschafft in openhab2 den Harmony Hub dank einiger guten Anleitungen erfolgreich einzurichten und einige Geräte auch darüber zu steuern mit den Standardbefehlen (Ein, Aus, Eingang Schalten, usw...)


    jetzt möchte ich aber auch noch eine Art Einschaltszene schalten wie folgt z.B::

    - TV Ein
    - TV SAT- Eingang (HDMI 2 schalten)
    - AV Ein
    - AV SAT- Eingang (HDMI 1 schalten)
    - Sat Receiver Ein
    - usw....


    die Items dafür sind bereits angelegt und das einzelnen Befehle schalten funktioniert bereits wie gesagt.


    ich bin mir nicht ganz sicher ob meine Gedanken hierzu richtig sind?!


    items

    String harmony_tv "Sony TV" (gHarmony) { channel="harmonyhub:device:harmonyhub:hub:HarmonyH ub:currentActivity" }
    String harmony_humax "Humax" (gHarmony) { channel="harmonyhub:device:harmonyhub:hub:HarmonyH ub:currentActivity" }
    String harmony_av "Sony AV" (gHarmony) { channel="harmonyhub:device:harmonyhub:hub:HarmonyH ub:currentActivity" }


    Switch harmony_hub_act "Test Fernsehen" (gHarmony) [ "Switchable" ]



    rule (hätte ich mir folgendermaßen vorgestellt)


    rule "Test Fernsehen ein"
    when
    Item harmony_hub_act received command
    then

    switch(receivedCommand) {
    case ON : harmony_humax.sendCommand("PowerOn")
    case ON : harmony_tv.sendCommand("PowerOn")
    case ON : harmony_tv.sendCommand("InputHdmi2")
    case ON : harmony_av.sendCommand("PowerOn")
    case ON : harmony_av.sendCommand("InputAudio3")
    }

    end


    lieg ich da richtig mit meiner Theorie?


    #2
    Zitat von MrWichtig Beitrag anzeigen
    lieg ich da richtig mit meiner Theorie?
    Nicht ganz.
    Deine "Einschaltszenen" werden im Harmony Hub angelegt und entsprechend gespeichert. Dafür musst du also die Desktop Software oder auch die App nutzen.

    Danach kannst du mit dem activity channel deines Hubs (anbei mein eigenes, funktionierendes Beispiel)

    Code:
    String HarmonyWZActivity "HarmonyWZ Current Activity [%s]" <television> (gRestore) { channel="harmonyhub:hub:HarmonyWZ:activity"}
    den String Befehl auf deiner Sitemap auswählen:

    Code:
    Switch item=HarmonyWZActivity mappings=[PowerOff="Aus", "TV mit Bose"="TV mit Bose", "RPi3 Media"="Musik","DVD/BLURAY ABSPIELEN"="DVD/BLURAY ABSPIELEN"]
    die gespeicherten Szenes deines Hubs "abspielen".

    Zum besseren Verständnis: openHAB aktiviert die Szenen im Hub und hat nicht selbst die Szenen gespeichert.

    Kommentar


      #3
      mhm...das muss ich jetzt ncohmal langsam durchdenken........


      Deine "Einschaltszenen" werden im Harmony Hub angelegt und entsprechend gespeichert. Dafür musst du also die Desktop Software oder auch die App nutzen.
      - also die APP (Harmony nutze ich schon bereits und die Einschaltszene lässt sich auch mittels APP am Smartphone steuern.
      dieser Punkt wäre mal abgehackt.


      Danach kannst du mit dem activity channel deines Hubs (anbei mein eigenes, funktionierendes Beispiel)

      Code:
      String HarmonyWZActivity "HarmonyWZ Current Activity [%s]" <television> (gRestore) { channel="harmonyhub:hub:HarmonyWZ:activity"}
      - welcher activitychannel ist damit genau gemeint? ich habe ja pro Gerät einen eigenen Channel?!....gibt es auch einen allgemeinen HUB Channel? wenn ja wo wird mir denn da die Nummer angezeigt? im "Paper UI" werden mir nur die Geräte Channels angezeigt der einzelnen Geräte.


      den String Befehl auf deiner Sitemap auswählen:

      Code:
      Switch item=HarmonyWZActivity mappings=[PowerOff="Aus", "TV mit Bose"="TV mit Bose", "RPi3 Media"="Musik","DVD/BLURAY ABSPIELEN"="DVD/BLURAY ABSPIELEN"]
      die gespeicherten Szenes deines Hubs "abspielen".
      - Sitemap verwende ich nicht, da ich nur die items und rules verwende für die Sprachausgabe für Alexa

      Kommentar


        #4
        Zitat von MrWichtig Beitrag anzeigen
        gibt es auch einen allgemeinen HUB Channel?
        Genau, nämlich der für deine Einschaltszenen.

        Du hast jeweils ein String item mit einem buttonPress channel, der steuert einzelne Tasten der einzelnen Geräte. Was dir dann noch fehlt ist der acitivity channel für deinen Hub und das dazugehörige String item (siehe mein Beispiel oben).

        Einfach mal in die Doku schauen, dort ist das erklärt:
        http://docs.openhab.org/addons/bindi...ub/readme.html

        Eine "Nummer" brauchst du dafür nicht, der ist nur für die einzelnen Geräte interessant. Einfach mal in PaperUI deine Things anschauen, dort findest du die HUE Bridge:

        1.JPG

        Um das Ganze nun mit Alexa zu steuern benutze ich virtuelle Items und Rules, ich weiß nicht ob es eine einfachere Lösung dafür gibt.

        Beispiel: Eine Einschaltszene in der App heißt "TV mit Bose".

        items:

        Code:
        String HarmonyWZActivity "HarmonyWZ Current Activity [%s]" <television> (gRestore) { channel="harmonyhub:hub:HarmonyWZ:activity"}
        Switch HarmonyWZActivity_TV_Alexa "Fernseher" ["Switchable"]
        rule:

        Code:
        rule "Fernseher an/aus"
        when
            Item HarmonyWZActivity_TV_Alexa received command
        then
            if (HarmonyWZActivity_TV_Alexa.state==OFF) {
            HarmonyWZActivity.sendCommand("PowerOff")
            }
            else if (HarmonyWZActivity_TV_Alexa.state==ON){
            HarmonyWZActivity.sendCommand("TV mit Bose")
            }
        end

        Der Vorteil: ich kann das Label für den Switch (und damit das Aufrufwort für Alexa) frei und unabhängig von dem String wählen. Die Einschaltszene in der App heißt somit bei mir "TV mit Bose" und der Befehl für die komplette Ausschaltszene "PowerOff". Das "PowerOff" ermittelst du, indem du nachschaust, welcher Befehl auf der Taste für "Aus" gespeichert ist. Das dürfte in den meisten Fällen "PowerOff" ergeben, da man diese Szene ja nicht extra programmiert sondern sich aus der Logik des Hubs ergibt.
        Alexa muss ich nur folgendes sagen" Alexa, schalte den Fernseher an" bzw. aus, da der Switch das Label "Fernseher" hat. Anschließend wird die komplette Szene für "TV mit Bose" abgespielt, also Fernseher an, HDMI wählen, Surroundanlage an, Humax an, ...

        Für deine weiteren Szenen musst du also weitere Switches und weitere Rules anlegen, der String für den Hub muss nur ein einziges Mal angelegt werden.
        Zuletzt geändert von sihui; 23.07.2017, 15:40.

        Kommentar


          #5

          buhhh...das ist mir jetzt ein wenig zu steil.... :-)

          Frage 1...wofür brauche ich jetzt die "HUE Bridge"?
          habe ich bisher weder installiert noch kann ich die in meiner Paper UI finden?!

          ich habe eine "HUE Emulation" und den "Harmony Hub" installiert. mit den allein funkt wie gesagt normales Steuern der einzelnen Geräte (ein/aus, usw,...)

          Frage 2.... in deinem Beispiel schaltest Du Fernseher und Bose?! richtig?
          wo ist in der rule definiert welchen Eingang am Fernseher und am Bose gewählt werden soll?


          wenn man direkt das bereits bestehende Einschaltverhalten von der APP (Harmony) ansteuern möchte dann muss es dafür ja bereits eine Channel ID geben? wo findet man die denn ?

          in meiner Paper UI habe ich nur wie von Dir angesprochen je Gerät eine Channel ID für "Press Button".

          da bin ich jetzt verwirrt......die Doku ahbe ich mir auch durchgesehen aber klarer ist das ganze auch nicht für mich.

          Kommentar


            #6
            ich glaub ich habs verstanden :-)

            die Namen direkt von der App müssen verwendet werden und somit brauche ich nur den ganzen HarmonyHub Channel angeben.


            ich habe mal nach Deeinem Beispiel versucht die Einschaltszene zu steuern.....aber passieren tut (noch nix)

            item
            HTML-Code:
            String  harmony_hub_tv          "TVgucken" (gHarmony) { channel="harmonyhub:hub:MediaHarmonyHub:currentActivity" }
            Switch harmony_hub_tv_act   "Fernseher" (gHarmony) [ "Switchable" ]
            rule
            HTML-Code:
            rule "Fernseher an/aus"
            when
                Item harmony_hub_tv_act received command
            then
                if (harmony_hub_tv_act.state==OFF) {
                harmony_hub_tv.sendCommand("PowerOff")
                }
                else if (harmony_hub_tv_act.state==ON){
                harmony_hub_tv.sendCommand("TVgucken")
                }
            end
            "TVgucken" heisst bei mir in der APP die Aktion


            da tut sich aber weder beim Ein noch Ausschalten etwas?

            Kommentar


              #7
              Zitat von MrWichtig Beitrag anzeigen
              Frage 1...wofür brauche ich jetzt die "HUE Bridge"?
              Sorry, falsches Bild erwischt, soll natürlich der Harmony Hub sein:

              1.JPG

              Zitat von MrWichtig Beitrag anzeigen

              Frage 2.... in deinem Beispiel schaltest Du Fernseher und Bose?! richtig?
              wo ist in der rule definiert welchen Eingang am Fernseher und am Bose gewählt werden soll?
              Gar nicht. Das wird nicht in der Rule bei openHAB gemacht, sondern das hast du ja bereits in deinem Harmony Hub hinterlegt als "Szene". Es wird nur diese Szene über openHAB in der Rule angesteuert, nicht jeder einzelne Befehl.


              Kommentar


                #8
                Zitat von MrWichtig Beitrag anzeigen
                da tut sich aber weder beim Ein noch Ausschalten etwas?
                Versuch es mal mit
                Code:
                String  harmony_hub_tv          "TVgucken" (gHarmony) { channel="harmonyhub:hub:MediaHarmonyHub:activity" }
                statt mit
                Code:
                String  harmony_hub_tv          "TVgucken" (gHarmony) { channel="harmonyhub:hub:MediaHarmonyHub:currentActivity" }
                Da du keine Sitemap nutzt und der HUB nicht im Control Panel von PaperUI erscheint kann der Fehler überall sein. Deshalb: Sitemap anlegen, Switch auf die Sitemap legen, Switch betätigen, wenn es dann funktioniert liegt der Fehler im Bereich Alexa oder Cloud oder den Befehlen dafür, wenn es nicht funktioniert liegt der Fehler auf Seiten Harmony Hub oder den Befehlen dafür.

                Anonsten musst du in die events.log und openhab.log schauen ob dort ein Fehler angezeigt wird, bzw. ob die Befehle wie gewünscht umgesetzt werden.
                Bei dieser Konfiguration sind sehr viele Komponenten im Zusammenspiel notwendig damit alles funktioniert: Harmony Hub, openHAB Items, openHAB Rules, openHAB Cloud, Alexa Skill, Amazon Dot, Amazon Cloud.

                Kommentar


                  #9
                  ich habe es mit dem neuen Code (ohne "current") auch probiert....gleiches Verhalten...nix tut sich..

                  Da du keine Sitemap nutzt und der HUB nicht im Control Panel von PaperUI erscheint kann der Fehler überall sein. Deshalb: Sitemap anlegen, Switch auf die Sitemap legen, Switch betätigen, wenn es dann funktioniert liegt der Fehler im Bereich Alexa oder Cloud oder den Befehlen dafür, wenn es nicht funktioniert liegt der Fehler auf Seiten Harmony Hub oder den Befehlen dafür.
                  ....nur um hier keine Verwirrung zu schaffen....."Harmony HUB" und "HUE Emulation" (also die Addons die ich benötige) sind sauber installiert und werden auch angezeigt.
                  Nur die "HUE Bridge" wird mir nicht angezeigt.....hier hast Du aber eh auch schon geschrieben, dass du den Screenshot verwechselt hast. Somit auch nicht für mein Vorhaben hier notwendig


                  lt. event log, scheint es das zu machen was es soll wenn ich es richtig interpretiere?

                  HTML-Code:
                  [ItemCommandEvent          ] - Item 'harmony_hub_tv_act' received command ON
                  [ItemCommandEvent          ] - Item 'harmony_hub_tv' received command TVgucken
                  [ItemStateChangedEvent     ] - harmony_hub_tv changed from PowerOn to TVgucken


                  wenn ich den Befehl auf die Sitemap bringe und drücke wird ebenfalls ein Kommando ausgelöst: (aber ohne das sich etwas tut)
                  HTML-Code:
                  [ItemCommandEvent          ] - Item 'harmony_hub_tv' received command TVgucken



                  Kommentar


                    #10
                    Zitat von MrWichtig Beitrag anzeigen
                    Nur die "HUE Bridge" wird mir nicht angezeigt.....hier hast Du aber eh auch schon geschrieben, dass du den Screenshot verwechselt hast. Somit auch nicht für mein Vorhaben hier notwendig
                    Nein, vergiss die HUE Bridge ...


                    Zitat von MrWichtig Beitrag anzeigen
                    wenn ich den Befehl auf die Sitemap bringe und drücke wird ebenfalls ein Kommando ausgelöst: (aber ohne das sich etwas tut)
                    Okay, dann musst du auf der Harmony Seite nach dem Fehler schauen. Logs sehen okay aus, schau noch mal in die App welches Kommando gesendet werden muss, der String muss exakt passen inklusive Groß-/Kleinschreibung, anbei wieder ein funktionierendes Beispiel analog zu meinen obigen Items/Rules:

                    2.png





                    Kommentar


                      #11
                      nach langem hin u. her habe ich es jetzt geschafft die Einschaltszene ein u. aus als Regel zu erstellen.


                      item:
                      HTML-Code:
                      String harmony_hub_tv         "TVgucken" (gHarmony) { channel="harmonyhub:hub:MediaHarmonyHub:currentActivity" }
                      Switch harmony_hub_tv_act "Fernseher" (gHarmony) [ "Switchable" ]


                      rule:
                      HTML-Code:
                      rule "Fernseher an/aus"
                      when
                          Item harmony_hub_tv_act received command
                      then
                          switch(receivedCommand) {
                                  case ON :  harmony_hub_tv.sendCommand("TVgucken")
                                  case OFF : harmony_hub_tv.sendCommand("PowerOff")
                          }
                      
                      end
                      sihui
                      danke nochmals für die Gedankenanstöße und Deine Hilfe.

                      warum auch immer, aber vielleicht habe ich bei der rule zu kompliziert gedacht.... sieht jetzt wesentlich einfacher aus im Vergleich zu Deiner, aber wahrscheinlich steuerst Du wesentlich mehr dahinter?!

                      Kommentar


                        #12
                        Ich denke, ob man nun switch case verwendet oder if, macht kaum einen Unterschied man könnte das auch in einer Zeile machen:
                        Code:
                        rule "Fernseher an/aus"
                        when
                            Item harmony_hub_tv_act received command
                        then
                            harmony_hub_tv.sendCommand(if(receivedCommand==ON)"TVgucken" else "PowerOff")
                        end
                        Wobei zugegebenermaßen ein ungültiges Kommando nicht abgefangen wird, aber das gibt es eh nicht...

                        Kommentar


                          #13
                          Schön das es jetzt funktioniert.
                          Allerdings ist es mir ein Rätsel wieso es mit einem Channel "currentActivity" funktioniert der laut Doku gar nicht existiert.
                          openHAB ist manchmal voller Überraschungen ...

                          Kommentar


                            #14
                            http://docs.openhab.org/addons/bindi...ctivity-status

                            Kommentar


                              #15
                              Thx!
                              Ich war immer davon ausgegangen MrWichtig nutzt das 2er Binding. Wenn ich mal Zeit habe konfiguriere ich bei mir mal um und schaue ob "currentActivity" auch in meinem 2er Snapshot funktioniert ...

                              Kommentar

                              Lädt...
                              X