Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. node-sonos-http-api

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    824

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

node-sonos-http-api

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
10 Beiträge 2 Kommentatoren 1.0k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    skorpil
    schrieb am zuletzt editiert von skorpil
    #1

    Da die Verwendung dieser API ja hier beim Sonos Adapter offiziell empfohlen wird: ich habe herausgefunden, dass diese API unter Node.js. 20 nicht mehr sauber funktioniert. Zunächst habe ich das auf den Befehl httpGet geschoben und vermutete hier das Problem. Nach vielen Tests konnte ich das Problem eingrenzen. Hier die Antwort des Entwickler der AP:

    
    I think this is related to this global change in Node 20:
    
    nodejs/node#43522
    
    The Sonos players probably doesn't like keep-alive, and might not properly respond with a Connection: close. The http api will maintain connections and try to send new requests over the old socket and probably confusing the player.
    
    Since this only affects requests that happen within 30-90 seconds (not sure what the default timeout is), this might appear random.
    
    I'll see if I can reproduce it, I haven't run this project under newer Node.js versions in a long time.
    
    

    Hier noch der Link zu meinem anderen Post.

    Hat jemand ähnliche Probleme wie ich?

    OliverIOO 1 Antwort Letzte Antwort
    0
    • S skorpil

      Da die Verwendung dieser API ja hier beim Sonos Adapter offiziell empfohlen wird: ich habe herausgefunden, dass diese API unter Node.js. 20 nicht mehr sauber funktioniert. Zunächst habe ich das auf den Befehl httpGet geschoben und vermutete hier das Problem. Nach vielen Tests konnte ich das Problem eingrenzen. Hier die Antwort des Entwickler der AP:

      
      I think this is related to this global change in Node 20:
      
      nodejs/node#43522
      
      The Sonos players probably doesn't like keep-alive, and might not properly respond with a Connection: close. The http api will maintain connections and try to send new requests over the old socket and probably confusing the player.
      
      Since this only affects requests that happen within 30-90 seconds (not sure what the default timeout is), this might appear random.
      
      I'll see if I can reproduce it, I haven't run this project under newer Node.js versions in a long time.
      
      

      Hier noch der Link zu meinem anderen Post.

      Hat jemand ähnliche Probleme wie ich?

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #2

      @skorpil

      ich glaube die denken da gerade schon nach
      https://github.com/jishi/node-sonos-http-api/issues/907

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      S 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @skorpil

        ich glaube die denken da gerade schon nach
        https://github.com/jishi/node-sonos-http-api/issues/907

        S Offline
        S Offline
        skorpil
        schrieb am zuletzt editiert von
        #3

        @oliverio derjenige, der das Nachdenken angestoßen hat, bin ich😂

        OliverIOO 1 Antwort Letzte Antwort
        0
        • S skorpil

          @oliverio derjenige, der das Nachdenken angestoßen hat, bin ich😂

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von OliverIO
          #4

          @skorpil ah ok
          gibt es ähnliche bibliotheken auch für andere programmiersprachen? python?
          evtl kann man da mal schauen wie die mit den connctions umgehen.
          weil unterhalb der programmiersprache liegt ja wieder die gleiche schicht an tcpip-stack, mit der alle gleich umgehen müssen.

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          S 1 Antwort Letzte Antwort
          0
          • OliverIOO OliverIO

            @skorpil ah ok
            gibt es ähnliche bibliotheken auch für andere programmiersprachen? python?
            evtl kann man da mal schauen wie die mit den connctions umgehen.
            weil unterhalb der programmiersprache liegt ja wieder die gleiche schicht an tcpip-stack, mit der alle gleich umgehen müssen.

            S Offline
            S Offline
            skorpil
            schrieb am zuletzt editiert von
            #5

            @oliverio guter Hinweis! Ich habe keine Ahnung. Der Entwickler der APi, Jishi, schrieb bei GitHub, er wolle sich kümmern. Mal sehen…

            Die Frage ist, ob es evtl. hier Profis gibt, die das fixen können. Denn der Code ist ja frei zugänglich!

            1 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              skorpil
              schrieb am zuletzt editiert von
              #6

              leider funktioniert diese schöne API nicht - wie gesagt - unter Node.js 20. Der Entwickler reagiert auch nicht mehr:

              Github Link zur Sonos API

              Ich habe in diesem Issue die Details des Problems beschrieben. Der Entwickler schrieb:

              "I think this is related to this global change in Node 20:

              nodejs/node#43522

              The Sonos players probably doesn't like keep-alive, and might not properly respond with a Connection: close. The http api will maintain connections and try to send new requests over the old socket and probably confusing the player.

              Since this only affects requests that happen within 30-90 seconds (not sure what the default timeout is), this might appear random.

              I'll see if I can reproduce it, I haven't run this project under newer Node.js versions in a long time."

              Meine Frage daher @Bluefox @paul53 oder vielleicht andere Spezialisten:

              Kann jemand von Euch der Code der API so anpassen, dass sie unter node.js 20 wieder funktioniert? Oder kennt jemand eine gute Alternative zu dieser API?

              Danke für Eure Hilfe im voraus

              OliverIOO 1 Antwort Letzte Antwort
              0
              • S skorpil

                leider funktioniert diese schöne API nicht - wie gesagt - unter Node.js 20. Der Entwickler reagiert auch nicht mehr:

                Github Link zur Sonos API

                Ich habe in diesem Issue die Details des Problems beschrieben. Der Entwickler schrieb:

                "I think this is related to this global change in Node 20:

                nodejs/node#43522

                The Sonos players probably doesn't like keep-alive, and might not properly respond with a Connection: close. The http api will maintain connections and try to send new requests over the old socket and probably confusing the player.

                Since this only affects requests that happen within 30-90 seconds (not sure what the default timeout is), this might appear random.

                I'll see if I can reproduce it, I haven't run this project under newer Node.js versions in a long time."

                Meine Frage daher @Bluefox @paul53 oder vielleicht andere Spezialisten:

                Kann jemand von Euch der Code der API so anpassen, dass sie unter node.js 20 wieder funktioniert? Oder kennt jemand eine gute Alternative zu dieser API?

                Danke für Eure Hilfe im voraus

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von OliverIO
                #7

                @skorpil

                hier mal was man ausprobieren könnte. leider hab ich kein sonos, kann es daher nicht selbst ausprobieren

                ausgehend davon, das das die relevante Änderung ist, die der Verursacher ist:

                const globalAgent = new Agent({ keepAlive: true, scheduling: 'lifo', timeout: 5000 });
                

                der globalAgent ist sozusagen der default Agent, der immer dann genommen wird, wenn im request keiner vorgegeben wurde
                https://nodejs.org/api/http.html#httpglobalagent

                dann könnte man bei jedem request einen eigenen Agent mitgeben, bei dem dann das keepalive deaktiviert ist?

                vgl beispiel in der node doku, allerdings mit aktiviertem keepalive
                https://nodejs.org/api/http.html#new-agentoptions

                einfach wird es aber nicht, da die sonos bibliothek selbst mit verbogenen und customizten request Objekten arbeitet, soweit ich das auf die schnelle gesehen habe

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                S 1 Antwort Letzte Antwort
                0
                • OliverIOO OliverIO

                  @skorpil

                  hier mal was man ausprobieren könnte. leider hab ich kein sonos, kann es daher nicht selbst ausprobieren

                  ausgehend davon, das das die relevante Änderung ist, die der Verursacher ist:

                  const globalAgent = new Agent({ keepAlive: true, scheduling: 'lifo', timeout: 5000 });
                  

                  der globalAgent ist sozusagen der default Agent, der immer dann genommen wird, wenn im request keiner vorgegeben wurde
                  https://nodejs.org/api/http.html#httpglobalagent

                  dann könnte man bei jedem request einen eigenen Agent mitgeben, bei dem dann das keepalive deaktiviert ist?

                  vgl beispiel in der node doku, allerdings mit aktiviertem keepalive
                  https://nodejs.org/api/http.html#new-agentoptions

                  einfach wird es aber nicht, da die sonos bibliothek selbst mit verbogenen und customizten request Objekten arbeitet, soweit ich das auf die schnelle gesehen habe

                  S Offline
                  S Offline
                  skorpil
                  schrieb am zuletzt editiert von
                  #8

                  @oliverio vielen Dank für den Hinweis. Ich hatte seinerzeit chatGPT befragt. chatGPT hat einen ähnlichen Vorschlag gemacht:

                  „ Adjust Node.js HTTP Agent Settings:

                  Use a custom HTTP agent to override default keep-alive behavior globally for node-sonos-http-api.
                  Example:
                  const http = require('http');

                  const agent = new http.Agent({ keepAlive: false });
                  const options = { agent: agent };“

                  Da ich kein Programmier und ein Javaskript Laie bin, fällt es mir sehr schwer, diese vorgeschlagenen Lösungen in mein Skript zu integrieren. Sollte ich hier mal mein Java Skript posten, damit sich jemand erbarmt, die oben genannte Lösung einzubauen? Oder muss das vielleicht direkt im Programm der API erfolgen?

                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • S skorpil

                    @oliverio vielen Dank für den Hinweis. Ich hatte seinerzeit chatGPT befragt. chatGPT hat einen ähnlichen Vorschlag gemacht:

                    „ Adjust Node.js HTTP Agent Settings:

                    Use a custom HTTP agent to override default keep-alive behavior globally for node-sonos-http-api.
                    Example:
                    const http = require('http');

                    const agent = new http.Agent({ keepAlive: false });
                    const options = { agent: agent };“

                    Da ich kein Programmier und ein Javaskript Laie bin, fällt es mir sehr schwer, diese vorgeschlagenen Lösungen in mein Skript zu integrieren. Sollte ich hier mal mein Java Skript posten, damit sich jemand erbarmt, die oben genannte Lösung einzubauen? Oder muss das vielleicht direkt im Programm der API erfolgen?

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #9

                    @skorpil

                    wahrscheinlich in der api. die macht ja die requests.
                    wie gesagt, ist nicht ganz so simple.
                    weiß auch nicht, welche requests da schief gehen.
                    ausserdem scheint die api noch weitere pakete zu verwenden
                    bspw https://github.com/jishi/node-sonos-discovery
                    dort scheint das ganze player discovery und die kommunikation mit einem einzelnen player zu laufen (also play,stop)

                    am besten du gibst mal den hinweis an den maintainer.
                    er kennt ja das problem, weiß aber selbst nicht weiter, wie er schreibt

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    1 Antwort Letzte Antwort
                    1
                    • S Offline
                      S Offline
                      skorpil
                      schrieb am zuletzt editiert von skorpil
                      #10

                      Der Programmier der API ist tätig geworden und hat sie auf den neuesten Stand gebracht. Jetzt läuft sie auch unter Node.js. 20!

                      Hi, try the latest master (and remember to re-install dependencies with npm install or npm ci, since this is actually fixed in the sonos-discovery package) and see if this solves your problem. I couldn't see the exact error you were seeing, but it's most likely related.
                      

                      Link

                      Hier runterladen!

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate
                      FAQ Cloud / IOT
                      HowTo: Node.js-Update
                      HowTo: Backup/Restore
                      Downloads
                      BLOG

                      628

                      Online

                      32.6k

                      Benutzer

                      82.1k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe