Lautstärke an smartem Lautsprecher per HTTP ändern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • surech
    Azubi
    • 07.08.2024
    • 3

    #1

    Lautstärke an smartem Lautsprecher per HTTP ändern

    Hoi zäme
    Wir haben einen smarten Lautsprecher. Dieser ist mit dem Netzwerk verbunden und hat zur Steuerung eine einfache REST-API. Mich interessiert hier die Lautstärke, welche über folgende URL ausgelesen werden kann:
    Code:
    GET http://IP-Adresse/fsapi/GET/netremote.sys.audio.volume?pin=1234
    Als Antwort kommt ein einfaches JSON zurück:
    Code:
    <fsapiResponse>
    <status>FS_OK</status>
    <value><u8>10</u8>
    </value>
    </fsapiResponse>
    Die Lautstarke lässt sich wiederum mit diesem Request auf einen bestimmten Wert setzen:
    Code:
    GET http://IP-Adresse/fsapi/SET/netremote.sys.audio.volume?pin=1234&value=12
    Was ich tun will, ist die Lautstärke über einen Taster schrittweise zu erhöhen. Dafür muss beim Auslösen des Tasters folgendes geschehen:
    1. Über den ersten Request die aktuelle Lautstärke ermitteln
    2. Die Lautstärke mit 1 addieren
    3. Der neue Wert über den zweiten Request setzen
    Folgendes habe ich bereits herausgefunden:
    • Mit einem virtuellen Ausgang kann ich die Schnittstelle aufrufen und die Lautstärke setzen. Gut.
    • Mit einem "Virtuellen HTTP Eingang" kann man die Schnittstelle aufrufen und mit dem "Virtuellen HTTP Eingang Befehl" den Inhalt parsen. Das habe ich auch schon hingekriegt.
      Dieser Eingang basiert aber auf Polling. Ich muss jedoch nicht die ganze Zeit die aktuelle Lautstärke wissen, sondern nur, wenn der Schalter gedrückt wird. Dann will ich aber den Wert *jetzt* haben, und nicht vor 10 Sekunden.
    Irgendwie habe ich das Gefühl, fast alle Bausteine zusammen zu haben. Trotzdem ergibt sich keine runde Sache. Kann mir jemand weiterhelfen?

    Gruss, Stefan
  • Lenardo
    MS Profi
    • 25.08.2015
    • 676

    #2
    du gibst Dir die Antwort ja schon selbst, du kannst per API deinen Lautsprecher abfragen oder eine Änderung senden, aber dein Lautsprecher hat keine eigene Intelligenz um Dir mitzuteilen das sich die Lautstärke geändert hat. Also gibt es nur die Möglichkeit die Lautstärke periodisch abzufragen was du aber nicht willst.

    Kommentar

    • OmerBeg
      Smart Home'r
      • 27.08.2015
      • 95

      #3
      Zitat von surech
      Hoi zäme
      Wir haben einen smarten Lautsprecher. Dieser ist mit dem Netzwerk verbunden und hat zur Steuerung eine einfache REST-API. ... Kann mir jemand weiterhelfen?

      Gruss, Stefan
      Welcher Hersteller ist das ? Bitte um Link.
      EFH, Loxone, Loxberry & KNX

      Kommentar

      • surech
        Azubi
        • 07.08.2024
        • 3

        #4
        Zitat von Lenardo
        du gibst Dir die Antwort ja schon selbst, du kannst per API deinen Lautsprecher abfragen oder eine Änderung senden, aber dein Lautsprecher hat keine eigene Intelligenz um Dir mitzuteilen das sich die Lautstärke geändert hat. Also gibt es nur die Möglichkeit die Lautstärke periodisch abzufragen was du aber nicht willst.
        Ja, ich muss die aktuelle Lautstärke nur wissen, wenn der Taster gedrückt wird. Zu jedem anderen Zeitpunkt interessiert mich die aktuelle Lautstärke nicht, also macht auch ein regelmässiges Polling wenig Sinn und verbraucht nur Ressourcen.
        Du siehst auch keine Möglichkeit, nur beim Druck des Tasters die aktuelle Lautstärke abzufragen, um einen bestimmten Wert zu addieren und dann die neue Lautstärke wieder zu setzen?

        Kommentar


        • Lenardo
          Lenardo kommentierte
          Kommentar bearbeiten
          ich verstehe das du gerne wissen möchtest welche Lautstärke läuft um dann +1 in Etappen lauter zu stellen, aber wenn du deine Lautsprecher kennst und nur mal grob den Wert für Leise (als Hintergrund) normal (zum Musik hören) und vielleicht laut (Partymodus) kennst, dann kannst du ja diesen wert schicken und wenn dir das zu leise ist dann von da aus schrittweise +1 höher stellen ?
      • surech
        Azubi
        • 07.08.2024
        • 3

        #5
        Zitat von OmerBeg

        Welcher Hersteller ist das ? Bitte um Link.
        Es handelt sich um einen Lautsprecher der Marke Marshall aus deren "Multiroom Speaker"-Reihe. Unser Modell ist aus der ersten Generation, welche schon seit ein paar Jahren nicht mehr verkauft wird.
        Natürlich hat Marshall diesen Lautsprecher nicht wirklich selbst gebaut. Das hat für mich den Vorteil, dass der Chip auch in anderen Geräten verbaut wurde und die Frontier Silicon API (kurz FSAPI) unterstützt. Diese Schnittstelle ist zum Beispiel hier schön dokumentiert:

        Kommentar

        • svethi
          Lebende Foren Legende
          • 25.08.2015
          • 6356

          #6
          Nur so zur Info, die Rückgabe ist, wenn die so kommt wie von Dir gepostet, kein JSON. Ist für Anwendung hier allerdings auch nicht relevant.
          Wie schon gesagt wurde, wenn Dein Lautsprecher keine Eventmitteilungen rausschickt, hast Du gar keine andere Wahl als immer zu pollen. Ich persönlich halte aus den gleichen Gründen wie von Dir vorgebracht, von solchen Lösungen auch nichts. Leider hast Du oft gar keine andere Chance. Allerdings lässt mich Deine Lösung ebenso zweifeln. Wenn Du bei jedem Klick erst per HTTP den Status abfragen willst um dann per HTTP die Änderung zu senden, könnte sich das ganze bei Mehrfachem Klicken durch die Delay‘s so hochschaukeln, dass der MS überlastet wird und schlecht bis gar nicht mehr reagiert.
          Oft kommt beim setzen der Lautstärke die altuellen Statusinfos auch zurück. Wenn dem so ist, dann polle doch 1x in der Minute und nimm beim Setzen auch einen Eingang und aktualisierte damit den Status im MiniServer.
          Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

          Kommentar

          Lädt...