Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Play/Pause über KNX Taster mit Hilfe von openhab 2

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

    Sonos Play/Pause über KNX Taster mit Hilfe von openhab 2

    Hallo Zusammen,

    da ich gerne Sonos (Play/Pause-Funktion) über meine Taster steuern würde, bin ich gerade dran dies mit Hilfe von Openhab 2 umzusetzen.

    Ich habe dies auf einem Rapsberry Pi 3 B+ mit openhabian 1.4.1 installiert.

    Das KNX Bindinig habe ich auch zum laufen bekommen. Kann über openhab meine Lichter und Rolläden steuern. Nur mit der Ansteuerung der Sonos funktioniert noch nicht so ganz.

    Sonos kann ich über Paper UI steuern. Habe dann wie in diesem Beitrag https://knx-user-forum.de/forum/supp...els-tastsensor (Beitrag #12) versucht über eine Rule die Sonos mit Play/Pause zu steuern, aber das will einfach nicht klappen.

    Habe zum Testen den Beispiel Code von dem User Moare genommen und meine GA angepasst, aber irgendwie reagiert die Rule nicht.

    Im Log kann openhab die Adresse einlesen und mit loggen wenn ich den Taster betätige.

    Ich weiss leider nicht wo der Fehler liegt.

    Die GA 15/1/41 habe ich als Umschalter mit der DPT 1.001 in der ETS parametriert.

    Auszug aus dem Log file
    Code:
    20-Jan-2019 23:02:06.645 [TRACE] [nhab.binding.knx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.1.63' to '15/1/41' with value '[1]'
    20-Jan-2019 23:02:08.480 [TRACE] [nhab.binding.knx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.1.63' to '15/1/41' with value '[0]'
    20-Jan-2019 23:02:10.858 [TRACE] [nhab.binding.knx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.1.63' to '15/1/41' with value '[1]'
    20-Jan-2019 23:02:11.831 [TRACE] [nhab.binding.knx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.1.63' to '15/1/41' with value '[0]'
    20-Jan-2019 23:02:12.640 [TRACE] [nhab.binding.knx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.1.63' to '15/1/41' with value '[1]'
    20-Jan-2019 23:02:13.141 [TRACE] [nhab.binding.knx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.1.63' to '15/1/41' with value '[0]'
    sonos.items
    Code:
    Group Sonos <player>
    
    
    Player Sonos_Controller "Controller" (Sonos) {channel="sonos:PLAY1:sz:control"}
    
    Dimmer Sonos_Volume "Volume [%.1f %%]" <soundvolume> (Sonos) {channel="sonos:PLAY1:sz:volume"}
    
    Switch Sonos_Mute "Mute" <soundvolume_mute> (Sonos) {channel="sonos:PLAY1:sz:mute"}
    
    Switch Sonos_LED "LED" <switch> (Sonos) {channel="sonos:PLAY1:sz:led"}
    
    String Sonos_CurrentTrack "Now playing [%s]" <text> (Sonos) {channel="sonos:PLAY1:sz:currenttrack"}
    
    Player SonosSZControl "Control [%s]" <test> (Sonos) {channel="sonos:PLAY1:sz:control"}
    
    String Sonos_State "Status [%s]" <text> (Sonos) {channel="sonos:PLAY1:sz:state"}
    
    Switch PlayPauseSonosSZ "Sonos" ["Switchable"] { knx="15/1/41" }
    sonos.things (die RINCON Nr habe ich natürlich an meine sonos box angepasst)
    Code:
    Thing sonos:PLAY1:sz [ udn="RINCON_000000000000000000", refresh=60]
    sonos.rules
    Code:
    // Play or pause speakers"
    
    rule "Sonos SZ Play/Pause"
    
    when
    
    Item PlayPauseSonosSZ received command
    
    then
    
    switch receivedCommand {
    
    case ON : {sendCommand(SonosSZControl, PLAY)}
    
    case OFF : {sendCommand(SonosSZControl, PAUSE)}
    
    }
    
    
    
    end

    #2
    Welche Version von openHAB2 verwendest Du?
    Siehst Du das passende Event zum Tastendruck? (in der events.log pro Tastendruck eine Zeile für das Item PlayPauseSonosSZ). Es kann sein, dass es sich nicht um received command handelt, sondern um ein changed event.

    Kommentar


      #3
      Werde ich heute Abend gleich mal schauen was in dem eventlog steht.
      Hab die openhab Version 2.4

      Kommentar


        #4
        Werde ich heute Abend gleich mal schauen was in dem eventlog steht.
        Hab die openhab Version 2.4

        Kommentar


          #5
          Hallo,

          also interessanterweise erscheint die Taste nicht im "events.log". Wenn ich aber einen Button aus der PaperUi betätige, wird dieser in der Liste aufgelistet.

          Aber in der KNX.log erscheint die Taste als received Command.
          Code:
          21-Jan-2019 17:14:20.682 [TRACE] [nhab.binding.knx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.1.63' to '15/1/41' with value '[1]'
          21-Jan-2019 17:14:21.572 [TRACE] [nhab.binding.knx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.1.63' to '15/1/41' with value '[0]'
          aber wenn ich die Rule auf received Umstelle passiert auch nichts.
          Muss ich die Rule noch aktivieren?Oder openhab neustarten?



          Kommentar


            #6
            Habe es nun zum laufen bekommen. Hatte wohl mehrere Fehler. Habe eine Zuordnung zur knx bridge gemacht und es sind in den rules bei meiner version andere Befehle.
            Hier nun mein funktionierender Code.

            Aber vielen Dank für die Tipps hier im Forum.
            .things
            Code:
             Bridge knx:ip:bridge [
              ipAddress="xxx.xxx.xxx.xxx",
              portNumber=3671,
              localIp="xxx.xxx.xxx.xxx",
              type="TUNNEL",
              readingPause=50,
              responseTimeout=10,
              readRetriesLimit=3,
              autoReconnectPeriod=0
              ] {
                Thing device LS_Esszimmer [
                      address="1.1.63",
                      fetch=true,
                      pingInterval=300,
                      readInterval=3600
                ]{
                    Type number : Temperatur_Esszimmer_IST    "Temp_esszimmer"     [ga="9.001:<4/1/5" ]
                    Type switch: SWSonPlPa                 "SonPlPa"     [ga="15/1/41" ]
                }
                
                   Thing sonos:PLAY1:sz [ udn="RINCON_0000000000000", refresh=60]
             
              }
            .itmes
            Code:
            Player Sonos_Controller "Controller" (Sonos) {channel="sonos:PLAY1:sz:control"}
            Dimmer Sonos_Volume "Volume [%.1f %%]" <soundvolume> (Sonos) {channel="sonos:PLAY1:sz:volume"}
            Switch Sonos_Mute "Mute" <soundvolume_mute> (Sonos) {channel="sonos:PLAY1:sz:mute"}
            Switch Sonos_LED "LED" <switch> (Sonos) {channel="sonos:PLAY1:sz:led"}
            String Sonos_CurrentTrack "Now playing [%s]" <text> (Sonos) {channel="sonos:PLAY1:sz:currenttrack"}
            String Sonos_State "Status [%s]" <text> (Sonos) {channel="sonos:PLAY1:sz:state"}
            Switch    SWSonPlPa   "SonPlPa [%s]"     <light>    { channel="knx:device:bridge:LS_Esszimmer:SWSonPlPa" }

            .rules
            Code:
            rule  "Sonos SZ Play"
                when
                    Item SWSonPlPa received update ON
                then
                    sendCommand(Sonos_Controller, PLAY)
            end
            
            rule "Sonos SZ Pause"
                when
                    Item SWSonPlPa received update OFF
                then
                    sendCommand(Sonos_Controller, PAUSE)
            end
            Zuletzt geändert von SteffenD; 21.01.2019, 20:04.

            Kommentar


              #7
              Die things können so nicht stimmen Sonos gehört nicht zur knx-Bridge.

              Kommentar


                #8
                Ok überzeugt. habe mal meine ".things" und ".items" geändert und es geht auch. Lag wohl dann an der rule das die falsch war.

                .things
                Code:
                 
                 Thing sonos:PLAY1:sz [ udn="RINCON_000000000000000000", refresh=60]
                .items
                Code:
                Player Sonos_Controller "Controller" (Sonos) {channel="sonos:PLAY1:ez:control"}
                Dimmer Sonos_Volume "Volume [%.1f %%]" <soundvolume> (Sonos) {channel="sonos:PLAY1:ez:volume"}
                Switch Sonos_Mute "Mute" <soundvolume_mute> (Sonos) {channel="sonos:PLAY1:ez:mute"}
                Switch Sonos_LED "LED" <switch> (Sonos) {channel="sonos:PLAY1:ez:led"}
                String Sonos_CurrentTrack "Now playing [%s]" <text> (Sonos) {channel="sonos:PLAY1:ez:currenttrack"}
                String Sonos_State "Status [%s]" <text> (Sonos) {channel="sonos:PLAY1:ez:state"}
                Switch SwitchSonosPlayPause "Sonos"  <light> { knx="15/1/41" }
                jetzt muss ich nur noch den Statu auf den Bus zurück führen, damit auch der Status an meinem Lichtschalter passend geändert wird

                Kommentar

                Lädt...
                X