Ankündigung

Einklappen
Keine Ankündigung bisher.

Starten eines SONOS Gerätes mittels Tastsensor

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

    #31
    Also, ich hab grade mal einen kurzen Test gemacht. Ich habe dazu ein zweites Item angelegt, welches mit einem Channel gekoppelt ist, in dem nur die Steuerbefehls-GA für MOVE UP/DOWN und STEP UP/DOWN eingetragen sind. Damit sehe ich die Kommandos.

    Unter OH1 war es nicht gut, GA mehrfach einzutragen, ich hoffe aber, dass dies unter OH2 mit knx2 keine negativen Seiteneffekte hat. Bei mir sieht die Definition jetzt so aus:
    knx.things (ich habe pro Device ein eigenes Thing angelegt):
    Code:
    Thing device HagerShut1_1_42 "RollGruppe 2" @ "KNX" [
        address="1.1.42"
    ] {Type rollershutter         : ch4     "Tür"    [upDown="3/6/60",stopMove="3/6/61",position="3/6/63+<3/6/64"]
    }
    Thing device GiraTSplus1_1_112 "TS2 Verandatür" @ "KNX" [
        address="1.1.112"
    ] {Type rollershutter-control : rocker3 "Hoftür" [upDown="3/6/60",stopMove="3/6/61"]
    }
    knx.items:
    Code:
     Rollershutter ShutterDoor "Süd4 Tür" {channel="knx:device:bridge:HagerShut1_1_42:ch4"}
     Rollershutter ShutterRockerDoor "Hoftür" {channel="knx:device:bridge:GiraTSplus1_1_112:rocker3"}
    Auf dem Item ShutterDoor sehe ich nur Changes (kommt immer zum Ende der Fahrt), auf dem Item ShutterRockerDoor sehe ich die Steuerbefehle UP/DOWN/STOP von der passenden Taste. Natürlich sähe ich hier auch andere Tatendrücke mit der gleichen GA, ich habe aber nur die eine Taste für diese GA.

    Interessanterweise wird ShutterDoor.sendCommand(UP) nicht mit einem ShutterRockerDoor received command beantwortet, sondern nur mit einem ShutterDoor received command. Somit kann ich zwischen Befehlen, die aus openHAB kamen und Befehlen, die vom Bus kamen unterscheiden.

    Auf jeden Fall ist das ein breaking change, aber zumindest sollte es damit ohne Probleme möglich sein, das alte Verhalten wieder herzustellen.
    Zuletzt geändert von udo1toni; 03.04.2018, 12:11.

    Kommentar


      #32
      Zitat von udo1toni Beitrag anzeigen
      Also, ich hab grade mal einen kurzen Test gemacht. Ich habe dazu ein zweites Item angelegt, welches mit einem Channel gekoppelt ist, in dem nur die Steuerbefehls-GA für MOVE UP/DOWN und STEP UP/DOWN eingetragen sind. Damit sehe ich die Kommandos.
      ...
      Auf jeden Fall ist das ein breaking change, aber zumindest sollte es damit ohne Probleme möglich sein, das alte Verhalten wieder herzustellen.
      Hallo udo1toni,
      danke für die Mühe.
      Ich werde das mal ausprobieren

      Kommentar


        #33
        Interessanterweise wird ShutterDoor.sendCommand(UP) nicht mit einem ShutterRockerDoor received command beantwortet, sondern nur mit einem ShutterDoor received command. Somit kann ich zwischen Befehlen, die aus openHAB kamen und Befehlen, die vom Bus kamen unterscheiden.
        Auch von mir noch einmal vielen Dank für Deine Mühe!

        Das heißt dann aber auch, dass ein Rule trigger auf „received command“ nicht funktioniert, wenn openHAB selbst die Rolläden verfährt, oder habe ich Dich falsch verstanden? Da wären dann potentiell auch Änderungen an den Regeln erforderlich.

        Kommentar


          #34
          Hallo, könntet Ihr mir evtl mit meiner Regel aus dem Beitrag helfen?

          https://knx-user-forum.de/forum/supp...04#post1210804

          Ich hab jetzt nochmal etwas rumgespielt und nun folgendes:

          items:
          Code:
          Dimmer        demoDimmer         "Test"                 ["Lighting"]  { channel="knx:ip:bridge:demoDimmer" }
          things:
          Code:
          Type dimmer       : demoDimmer        "Dimmer"       [  increaseDecrease="1/4/55" ]
          und die Rule:
          Code:
          // Change Volume
          rule "Sonos kueche Volume"
          when
              Item demoDimmer received update
          then
              switch receivedupdate  {
                  case INCREASE : {Sonos_Volume.sendCommand(Sonos_Volume.state as DecimalType + 1)}
                  case DECREASE : {Sonos_Volume.sendCommand(Sonos_Volume.state as DecimalType - 1)}
              //}
          end
          Im event.log kommt es an als:
          Code:
          2018-04-03 21:52:47.481 [ome.event.ItemCommandEvent] - Item 'demoDimmer' received command INCREASE
          jedoch wird die Regel nicht ausgeführt. Fehlt hier irgendetwas noch?

          Kommentar


            #35
            Siehe https://docs.openhab.org/configurati...ng-item-states received command löst kein update trigger aus.

            Kommentar


              #36
              Aber ich hab doch in der Regel received Update verwendet. Was müsste ich denn verwenden. Stehe momentan etwas auf dem Schlauch.

              Kommentar


                #37
                Hast Du mal einen Logeintrag außerhalb der switch Anweisung schreiben lassen? Vielleicht eird die Regel ausgeführt, aber die Abfrage im switch passt nicht?

                Kommentar


                  #38
                  Dein Logeintrag sagt aus, dass das Item demoDimmer ein Kommando empfangen hat. Rules mit dem Trigger received update reagieren nicht auf Kommandos!

                  received update bezieht sich immer auf den Status eines Items. Der Status eines Dimmer Items ist immer vom Typ DecimalType, also eine Zahl zwischen 0 und 100. Alternativ kann man noch OnOffType abfragen, wobei OFF = 0 und ON > 0 ist. NULL wäre auch noch ein gültiger Status (dann gab es noch keinen gültigen Status).

                  INCREASE und DECREASE sind jedoch keine Status, sondern ausschließlich Befehle. Ein Item kann also diesen Befehl erhalten, man kann diesen Befehl aber nicht mit .state abfragen, sondern nur mit receivedCommand innerhalb der Rule, die auf received command getriggert wurde.

                  Kommentar


                    #39
                    Ok danke dir. Das hab ich jetzt soweit verstanden. Wie müsste ich das dann ausführen? Hab jetzt schon mehrfach versucht die Regel umzuschreiben aber dann funktioniert nichts mehr. Könntest du mir die Regel ggf. schnell schreiben?

                    Kommentar


                      #40
                      Du musst statt received update halt received command verwenden. Entsprechend statt receivedupdate (das gibt es übrigens gar nicht) receivedCommand:
                      Code:
                      rule "Sonos kueche Volume"
                      when
                          Item demoDimmer received command
                      then
                          switch receivedCommand  {
                              case INCREASE : {Sonos_Volume.sendCommand(Sonos_Volume.state as DecimalType + 1)}
                              case DECREASE : {Sonos_Volume.sendCommand(Sonos_Volume.state as DecimalType - 1)}
                              default : {logInfo ("myrule","empfangener Befehl: {} wurde nicht verstanden!",receivedCommand)}
                          }
                      end

                      Kommentar


                        #41
                        AudiQ7 Hast du das evtl. funktionierend mit KNX 2.0 am laufen? Habe auch einen MDT GT2. Für ein tasten Dimmen brauche ich ja aber noch ein paar zusätzliche GAs (Wert für Umschaltung, Dimmen relativ..). Und was mir hier in den Beispielen fehlt, das greift nur in die Richtung KNX -> Sonos? Wenn ich also mit der App die Lautstärke anpasse oder Play/Pause ausführe, dann wird das nicht auf die KNX Stati übertragen...

                        Kommentar


                          #42
                          Wenn der Glastaster den Sonos bedienen soll, musst Du den Channel als dimmer-control Channel definieren. als GA trägst Du dann switch, position und increaseDecrease ein. Einflächendimmen wird aber nicht sinnvoll gehen. Ich nutze Zweiflächendimmen.

                          Links kurz -> Track rückwärts
                          Links lang -> Lautstärke verringern
                          Rechts kurz -> Track vorwärts
                          Rechts lang -> Lautstärke erhöhen.

                          Die Kurzzeit GA geht auf switch, die Langzeit-GA geht auf increaseDecrease. Ergebnis ist ein Item, welches die Befehle OFF, ON, DECREASE und INCREASE empfängt. Eine passende Rule dazu setzt dann die Kommandos in Richtung Sonos ab.
                          Code:
                          Type dimmer-control : sonos "Sonos" [ switch="1/1/1", increaseDecrease="1/1/2", position="1/1/3" ]
                          Code:
                          Dimmer MeinSonos "Sonos Lautstärke [%d %%]" { channel = "knx:device:bridge:deveicename:sonos", autoUpdate="false" }
                          Code:
                          rule "sonos"
                          when
                              Item MeinSonos received command
                          then
                              switch (receivedCommand) {
                                  case ON       : {
                                      sonosTrack.sendCommand(UP)
                                  }
                                  case OFF      : {
                                      sonosTrack.sendCommand(DOWN)
                                  }
                                  case INCREASE : {
                                      sonosVolume.sendCommand((sonosVolume.state as Number) +5)
                                  }
                                  case DECREASE : {
                                      sonosVolume.sendCommand((sonosVolume.state as Number) -5)
                                  }
                              }
                          end
                          
                          rule "sonos volume changed"
                          when
                              Item sonosVolume changed
                          then
                              MeinSonos.postUpdate(sonosVolume.state as Number)
                          end
                          Ich habe meinen Taster so konfiguriert, dass er beim Dimmen die Telegramm alle 400mSec sendet.

                          Ich nutze Gira TS2plus und Squeezeboxen, so dass die zu sendenden Befehle vielleicht im Detail abweichen werden, aber das Prinzip ist das gleiche.

                          Kommentar


                            #43
                            Hallo Udo,
                            vielen Dank für dein Beispiel, leider komme ich erst jetzt zum ausprobieren und es klappt bei mir nicht ganz. Was ist sonosTrack bei dir für ein Item? Ich finde in den Sonos Channels nichts passendes was auf UP/DOWN als play/pause reagiert. Ich habe es mit einem control versucht, der mag aber kein start/stop als command. Die Doku verstehe ich aber so das er es sollte.

                            Kommentar


                              #44
                              Wie gesagt, ich habe kein Sonos, die Befehle, welche gesendet werden, müssen halt den Track hoch, bzw. runter zählen. Die Lautstärke wird bei mir ausschließlich als Absolutwert verarbeitet, entsprechend setze ich die Befehle INCREASE und DECREASE auf "addiere eine Zahl zum aktuellen Status und schreibe das Ergebnis in den Status" um,

                              Kommentar


                                #45
                                Hi Leute,
                                ich habe das bei mir so gelöst:

                                sonos.items (z.B. eine Play1 und eine Soundbar)

                                Code:
                                Player Sonos_Controller_Abi   "Controller"                          (Sonos) {channel="sonos:PLAY1:abi:control"}
                                Dimmer Sonos_Volume_Abi       "Volume [%.1f %%]" <soundvolume>      (Sonos) {channel="sonos:PLAY1:abi:volume"}
                                Switch Sonos_Mute_Abi         "Mute"             <soundvolume_mute> (Sonos) {channel="sonos:PLAY1:abi:mute"}
                                Switch Sonos_LED_Abi          "LED"              <switch>           (Sonos) {channel="sonos:PLAY1:abi:led"}
                                String Sonos_CurrentTrack_Abi "Now playing [%s]" <text>             (Sonos) {channel="sonos:PLAY1:abi:currenttrack"}
                                String Sonos_State_Abi        "Status [%s]"      <text>             (Sonos) {channel="sonos:PLAY1:abi:state"}
                                String sonosAbiNotification     "Notification Sound"    <songtitle>         {channel="sonos:PLAY1:abi:notificationsound"}
                                Dimmer sonosAbiNotificationVol  "Notification Volume"   <volume>            {channel="sonos:PLAY1:abi:notificationvolume"}
                                Switch sonosAbiSave             "Save Playlist"                             {channel="sonos:PLAY1:abi:save"}
                                Switch sonosAbiRestore          "Restore Playlist"                          {channel="sonos:PLAY1:abi:restore"}
                                
                                Group SonosWZ <player>
                                Player Sonos_Controller_WZ   "Controller"                          (Sonos) {channel="sonos:PLAYBAR:wz:control"}
                                Dimmer Sonos_Volume_WZ       "Volume [%.1f %%]" <soundvolume>      (Sonos) {channel="sonos:PLAYBAR:wz:volume"}
                                Switch Sonos_Mute_WZ         "Mute"             <soundvolume_mute> (Sonos) {channel="sonos:PLAYBAR:wz:mute"}
                                Switch Sonos_LED_WZ          "LED"              <switch>           (Sonos) {channel="sonos:PLAYBAR:wz:led"}
                                String Sonos_CurrentTrack_WZ "Now playing [%s]" <text>             (Sonos) {channel="sonos:PLAYBAR:wz:currenttrack"}
                                String Sonos_State_WZ        "Status [%s]"      <text>             (Sonos) {channel="sonos:PLAYBAR:wz:state"}
                                String Playuri_Sonos_WZ                                            (Sonos) {channel="sonos:PLAYBAR:wz:playuri"}
                                Image  Sonos_Cover_WZ                                              (Sonos) {channel="sonos:PLAYBAR:wz:currentalbumart"}
                                String Sonos_Artist_WZ                                             (Sonos) {channel="sonos:PLAYBAR:wz:currentartist"}
                                
                                String sonosWZNotification      "Notification Sound"    <songtitle>        {channel="sonos:PLAYBAR:wz:notificationsound"}
                                Dimmer sonosWZNotificationVol   "Notification Volume"   <volume>           {channel="sonos:PLAYBAR:wz:notificationvolume"}
                                Switch sonosWZSave              "Save Playlist"                            {channel="sonos:PLAYBAR:wz:save"}
                                Switch sonosWZRestore           "Restore Playlist"                         {channel="sonos:PLAYBAR:wz:restore"}
                                dann die Rules:
                                Code:
                                 // Play or pause
                                rule "play or pause speakers"
                                when
                                    Item PlayPauseSonosWZ received update
                                then
                                    if (PlayPauseSonosWZ.state==ON) {
                                        sendCommand(Sonos_Volume_WZ, 5)
                                        sendCommand(Sonos_Controller_WZ, PLAY)
                                    } else {
                                        sendCommand(Sonos_Controller_WZ, PAUSE)
                                        sendCommand(Sonos_Volume_WZ, 5)
                                    }
                                end
                                
                                // Change Volume
                                rule "Sonos WZ Volume"
                                when
                                    Item SonosWZVolume received update
                                then
                                    if (SonosWZVolume.state==ON) {
                                        Sonos_Volume_WZ.sendCommand(Sonos_Volume_WZ.state as DecimalType +4)
                                    } else {
                                        Sonos_Volume_WZ.sendCommand(Sonos_Volume_WZ.state as DecimalType -4)
                                    }
                                end
                                
                                // Change Track
                                rule "Sonos WZ change Track"
                                when
                                    Item SonosWZNext received update
                                then
                                    if (SonosWZNext.state==ON) {
                                        sendCommand(Sonos_Controller_WZ, NEXT)
                                    } else {
                                        sendCommand(Sonos_Controller_WZ, PREVIOUS)
                                    }
                                end
                                
                                // Klingelzeichen
                                rule "Klingelzeichen"
                                when
                                    Item Z_Klingel_Haustuer changed from OFF to ON
                                then  
                                    {
                                    logInfo("Doorbell", "Someone is at the door")
                                    sendCommand(sonosWZSave, "ON")              //saves what is currently playing
                                    sendCommand(sonosWZNotificationVol, 10)     //sets the notification volume
                                    sendCommand(sonosWZNotification, "http://x.x.x.x:8080/static/tuerklingel.mp3")  //the sound file to play
                                    sendCommand(sonosWZRestore, "ON")           // restores the previously playing music
                                    sendCommand(sonosAbiSave, "ON")             //saves what is currently playing
                                    sendCommand(sonosAbiNotificationVol, 5)     //sets the notification volume
                                    sendCommand(sonosAbiNotification, "http://x.x.x.x:8080/static/tuerklingel.mp3")    //the sound file to play
                                    sendCommand(sonosAbiRestore, "ON")          // restores the previously playing music
                                    }
                                end
                                Viel Erfolg beim testen.
                                Frank

                                Kommentar

                                Lädt...
                                X