Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos und EibPC - Erfahrungen?

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

    #16
    Hallo Steffi,

    mit der ausführlichen Anleitung von Jens funktioniert das mehrfache Einbinden des Makros jetzt problemlos.
    Danke Jens.

    Was aber nicht geht, ist die Lautstärkeregelung. Sobald ich Volume+ oder Volume- schicke geht die Kiste aus. Ich muß dann am Gerät selbst wieder einschalten.
    Ich habe natürlich getrennte GA's für EIN//AUS und +/-.
    Wäre hier die Lösung mittels Byte-Wert eleganter?

    Sonos hat ja inzwischen ein paar Updates rausgebracht. Vielleicht hängt es damit zusammen.

    Und ja, falls du das Makro überarbeiten willst könnte ich testweise ein Sonos Gerät zur Verfügung stellen. Daran soll es nicht scheitern.

    Gruß Frank

    Kommentar


      #17
      Als ich diesen Thread vor 3 Wochen eröffnet habe, ging das mit der Lautstärkeregelung noch. Inzwischen geht das bei mir auch nicht mehr. Das "SetVolumeSonos"-Makro ist ja so aufgebaut, dass erst die aktuelle Lautstärke ausgelesen wird, diese dann erhöht oder erniedrigt und abschließend wieder gesetzt wird. Ich vermute (ohne Analyse), dass das Auslesen scheitert; möglicherweise wegen einer Änderung im Sonos-Protokoll.

      Unabhängig davon habe ich ein Makro, das die Lautstärke auf einen absoluten Wert setzt. Das ist nur eine leichte Abwandlung des relativen Steffi-Makros.

      [highlight=epc]
      // Sonos Set Volume Absolut
      // @date 02.07.2014
      // @version 1
      :begin SetVolumeAbsolutSonos(IpAdresse, Name, SchalterGA, InWert)
      :info $Setzt die Lautstärke auf den InWert.$\\
      $IP-Adresse der Sonos$\\
      $Name, muss eindeutig sein (z.B. Wohnen)$\\
      $Gruppenadresse um die Lautstärke zu setzen$\\
      $Der zu setzende Wert$
      :shortinfo $Setzt die Lautstärke$

      :var Volume@
      Volume@ = 0u08

      if after(event(SchalterGA),100u64) then {
      Volume@ = InWert;
      if Volume@>100u08 then Volume@=100u08 endif;

      sonos_host^_Name = IpAdresse;
      sonos_command^_Name = $SetVolume$;
      sonos_param^_Name = $<Channel>Master</Channel><DesiredVolume>$ + convert(Volume@, $$) + $</DesiredVolume>$;
      sonos_send^_Name = EIN
      #ifdef DEBUG
      ;if debug^_Name then write('10/10/10'c14,$SetVolume: $c14+convert(Volume@,$$c14)) endif
      #endif
      } endif
      :end
      [/highlight]

      Der Aufruf erfolgt ähnlich wie bei dem relativen Setzen:
      [highlight=epc]
      SetVolumeAbsolutSonos(C_SONOS_IP_ARBEITEN, SonosArbeiten, '9/2/4'b01, 30u08)
      [/highlight]

      Kommentar


        #18
        Zitat von frankthegreat Beitrag anzeigen
        Sonos hat ja inzwischen ein paar Updates rausgebracht. Vielleicht hängt es damit zusammen.

        Und ja, falls du das Makro überarbeiten willst könnte ich testweise ein Sonos Gerät zur Verfügung stellen. Daran soll es nicht scheitern.

        Gruß Frank
        An der Sonos wird es nicht scheitern, eher an der Zeit, aber ich habs aufgenommen und vielleicht im "Sommerloch" ....
        Enertex Bayern GmbH - www.eibpc.com

        Kommentar


          #19
          Gibt es denn hier was neues?

          Es hängt immer noch an der Lautstärkeregelung. Ich hab noch rausgefunden, das die Sonos beim bedienen der + oder - Taste in den "Mute" Zustand springt und beim nächsten drücken der gleichen Taste wieder aufwacht.

          Das geänderte Makro von Jens hab ich auch testweise installiert. Allerdings ohne Erfolg. Der Compiler meckert beim aufrufen.

          Irgendwelche Ideen?

          Gruß Frank

          Kommentar


            #20
            Hallo,

            Zitat von DerRenovator Beitrag anzeigen
            [highlight=epc]// Konstanten fuer Sonos
            C_SONOS_IP_ARBEITEN = $192.168. und so weiter$;
            C_SONOS_IP_KUECHE = $192.168. und so weiter$;
            C_SONOS_MAC_ARBEITEN = $B8E937 und so weiter$;
            C_SONOS_MAC_KUECHE = $B8E937 und so weiter$;
            C_SONOS_RADIO1_ABSOLUTRELAX = $s158432?sid=254$;
            C_SONOS_RADIO2_ANTBAYERN80ER = $s104092?sid=254$;
            C_SONOS_RADIO3_1FMCLASSICROCK = $s116726?sid=254$;
            C_SONOS_RADIO4_WDR2RUHRGEBIET = $s99166?sid=254$;
            C_SONOS_RADIO5_HR1 = $s7866?sid=254$;[/highlight]
            wie erhalte ich denn die ID für die Radiosender oder der Playlisten? Wo kann ich da nachsehen?

            Eine Frage hab ich noch zu

            Code:
            SetPlaylistSonos(IpAdresse,Name,SchalterGA,PlaylistNr, MAC)
            Braucht es da unbedingt eine "richtige" GA für die Variable "SchatlerGA" oder kann ich auch irgendeine Variable selbst definieren?

            Danke.

            Peter

            Kommentar


              #21
              Hallo nochmals.

              ich habe mich gerade ein wenig mit den Sonos Makros gespielt. Und es sieht zzt. folgendermaßen aus:
              Code:
              hnen=$192.168.1.21$
              SonosNameWohnen=$Wohnen$
              SonosMACWohnen=$000E58D236EC$
              boolSonosWohnenPlay=AUS
              boolSonosWohnenPlayAlarm=0b01
              Sonos(SonosIPWohnen, SonosNameWohnen)
              SetStateSonosToggle(SonosIPWohnen, SonosNameWohnen,boolSonosWohnenPlay)
              SetPlaylistSonos(SonosIPWohnen, SonosNameWohnen,"Technikkeller Taste 3-14/0/0",4,SonosMACWohnen)
              
              SonosIPFitness=$192.168.1.27$
              SonosNameFitness=$Fitness$
              SonosMACFitness=$000E58D82F94$
              boolSonosFitnessPlay=AUS
              boolSonosFitnessPlayAlarm=0b01
              Sonos(SonosIPFitness, SonosNameFitness)
              SetStateSonosToggle(SonosIPFitness, SonosNameFitness,boolSonosFitnessPlay)
              SetPlaylistSonos(SonosIPFitness, SonosNameFitness,"Technikkeller Taste 3-14/0/0",4,SonosMACFitness)
              Wenn ich die Variable "boolSonosWohnenPlay" auf EIN stelle, fängt es im Wohnzimmer zu spielen an. Soweit so gut.

              Setze ich die Variable "boolSonosFitnessPlay" auf EIN, spielt es auch im Wohnzimmer? Wie kann das sein? Ich hab keine Erklärung dafür. Hab die IP Adressen und MAC Adressen 2x überprüft....

              Wie kann das sein? Mache ich da noch was falsch?

              Danke,

              Peter

              Kommentar


                #22
                Zitat von frankthegreat Beitrag anzeigen
                Das geänderte Makro von Jens hab ich auch testweise installiert. Allerdings ohne Erfolg. Der Compiler meckert beim aufrufen.
                Irgendwelche Ideen?
                Meine Glaskugel ist vernebelt ...

                Zitat von ppfeifer Beitrag anzeigen
                wie erhalte ich denn die ID für die Radiosender oder der Playlisten? Wo kann ich da nachsehen?
                Die IDs der Radiosender hole ich mir von tunein.com (in der url der Sender-Seiten). Ist nicht so richtig smart, aber was anderes kenne ich nicht.
                Die Nummer der Playlisten ist in der Reihenfolge des Anlegens, so weit ich das bisher verstanden habe.

                Zitat von ppfeifer Beitrag anzeigen
                Braucht es da unbedingt eine "richtige" GA für die Variable "SchatlerGA" oder kann ich auch irgendeine Variable selbst definieren?
                Was ist eine "richtige GA"? Also eine Gruppenadresse sollte es schon sein, da sie in dem Makro mit "event" abgefragt wird. Sie muss aber nicht in der ETS bzw. esf bekannt sein.

                Zitat von ppfeifer Beitrag anzeigen
                Wie kann das sein? Mache ich da noch was falsch?
                Das weiß ich auch nicht. Verdächtig finde ich dein "SonosNameWohnen=$Wohnen$", da hier nicht ein String sondern ein Bestandteil für Variablennamen übergeben wird. Das würde ich als erstes umbauen und dann nochmal testen.

                Kommentar


                  #23
                  Zitat von DerRenovator Beitrag anzeigen
                  Was ist eine "richtige GA"? Also eine Gruppenadresse sollte es schon sein, da sie in dem Makro mit "event" abgefragt wird. Sie muss aber nicht in der ETS bzw. esf bekannt sein.
                  Wie mache ich das? Wie kann ich eine GA anlegen, die nicht der ETS bekannt ist? Muss die dann auch nicht in einem Aktor/Sensor einprogrammiert sein?

                  Zitat von DerRenovator Beitrag anzeigen
                  Das weiß ich auch nicht. Verdächtig finde ich dein "SonosNameWohnen=$Wohnen$", da hier nicht ein String sondern ein Bestandteil für Variablennamen übergeben wird. Das würde ich als erstes umbauen und dann nochmal testen.
                  Das finde ich nicht verdächtig. Weil wenn du den Debugger aufmachst, dann siehst du, dass es Variablen für jede Sonos gibt. Das macht schon Sinn....

                  Ich hab jetzt testhalber mal in meinem Code alles mit "*SonosWohnen" auskommentiert. Und voila, dann spielt die Sonos im Fitnesszimmer.

                  Sind wieder beide Sonosen aktiv spielt wieder die im Wohnzimmer....

                  Jetzt probiere ich noch im Code die SonosFitness vor die SonosWohnen zustellen... Mal sehen, was da passiert.

                  lg, Peter

                  Kommentar


                    #24
                    So schnell gehts.

                    Zitat von ppfeifer Beitrag anzeigen
                    Jetzt probiere ich noch im Code die SonosFitness vor die SonosWohnen zustellen... Mal sehen, was da passiert.
                    lg, Peter
                    Jetzt reagiert die SonosFitness korrekt und auch die SonosWohnzimmer... Aber wieso?? Wie kann das sein, dass ein simples umstellen der Codezeilen diese Auswirkung hat?

                    Ausserdem möchte ich ja, dass sich bei einem bestimmten Ereignis eine bestimmte Playliste auf alle Sonosen setzt. Und dann wiederrum nur bei einzelnen Sonosen eine bestimmte Playlist. Meinem Verständnis nach sollte das ja mit einer gemeinsamen GA funktionieren, oder nicht? Ich dachte mir, wenn ich eine Event auf der GA "Technikkeller Taste 3-14/0/0" erzeuge, dann greift es überall dort, wo ich diese verwende? Also in diesem Beispiel bei
                    Code:
                    SetPlaylistSonos(SonosIPFitness, SonosNameFitness,"Technikkeller Taste 3-14/0/0",4,SonosMACFitness)
                    SetPlaylistSonos(SonosIPWohnen, SonosNameWohnen,"Technikkeller Taste 3-14/0/0",4,SonosMACWohnen)
                    Aber es wird nur auf der ersten Sonos (SonosFitness) die Playliste eingestellt.
                    lg, Peter

                    Kommentar


                      #25
                      Zitat von ppfeifer Beitrag anzeigen
                      Wie mache ich das? Wie kann ich eine GA anlegen, die nicht der ETS bekannt ist? Muss die dann auch nicht in einem Aktor/Sensor einprogrammiert sein?
                      Einfach so: '9/2/11'b01

                      Kommentar


                        #26
                        So ich hab das Makro jetzt mal für 3 Sonosen zum laufen gebracht Funktioniert einwandfrei.

                        Eine Frage hätte ich noch. Sind die Zeitverzögerungen in den Makro bei den einzelnen Sonos-Aufrufen schon die unterste Grenze?

                        Ich hätte nämlich gerne unsere Haustürklingel mit den Sonosen gekoppelt. Und da hab ich dann leider Verzögerungen von ein paar Sekunden. Kann man das noch ein wenig straffen, oder funktioniert dann die Kommunikation mit der Sonos nicht mehr richtig?

                        lg, Peter

                        Kommentar


                          #27
                          Zitat von ppfeifer Beitrag anzeigen
                          So ich hab das Makro jetzt mal für 3 Sonosen zum laufen gebracht Funktioniert einwandfrei.
                          Funktioniert bei dir die Lautstärkeregelung?

                          Bei mir nach wie vor nicht möglich.

                          Gruß Frank

                          Kommentar


                            #28
                            Hallo zusammen,

                            gibt es ein Makro, um sich alle aktuell aktiven Wecker zu holen, um diese ggf. in eine Steuerung mit einzubeziehen?

                            Wie zum Beispiel: "GetAlarmsSonos"

                            Jede Nacht um 02:00 Uhr holt sich der EIBPC alle im Sonos aktiven Wecker.
                            Beim ersten Wecker soll er z.B. das Licht auf 30% dimmen.
                            Beim zweiten Wecker, soll er das Licht auf 80% dimmen.
                            Beim dritten Wecker, soll er prüfen ob schon Sonnenaufgang war und falls ja, die Rollos öffnen und das Licht ausschalten.

                            Ich kann mir nicht vorstellen, das sowas nicht hier im Forum ankommt ;-)

                            Viele Grüße!

                            Kommentar


                              #29
                              in der EnertexSonosLib gibt es sowas noch nicht, aber vielleicht kann jemand privat weiter helfen...?
                              Enertex Bayern GmbH - www.eibpc.com

                              Kommentar


                                #30
                                Schade - aber trotzdem Danke!

                                .. ein Workaround wäre, erkennen zu können, ob Sonos aktuell ein Lied spielt, um dann darauf reagieren zu können - aber ich glaube auch das ist nicht möglich oder?

                                Kommentar

                                Lädt...
                                X