Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Vorlage] Denon HEOS Script

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

[Vorlage] Denon HEOS Script

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascripttemplate
357 Beiträge 48 Kommentatoren 75.9k Aufrufe 44 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.
  • P Offline
    P Offline
    Postmymind
    schrieb am zuletzt editiert von
    #7

    Hey! Vielen Dank für die rasche Antwort. Verdammt guter Ansatz aber wie definiere ich vorgefertigte Gruppen?

    Entschuldigt mein ioBroker / Skript Einsteigerwissen.

    @obakuhl:

    Ich regel das über Skripte, die die einzelnen commands dann an die jeweilige Box sendet. Blockly eignet sich sehr gut dafür. Wenn du verschiedenen Gruppen hast reicht es auch ein Gerät aus dieser Gruppe einen Befehl zu senden (z.B. über "play_preset&preset=xyz") dann spielt es auf allen "dazugehörigen" Heosgeräten auch diese Quelle ab. Die Heosapp brauch ich dadurch überhaupt nicht mehr, ich regel alles über die VIS Oberfläche.

    Ist vielleicht nicht die sauberste Lösung, aber es funktioniert sehr gut 😉 `

    1 Antwort Letzte Antwort
    0
    • O Offline
      O Offline
      obakuhl
      Developer
      schrieb am zuletzt editiert von
      #8

      Das musst du über die App machen. https://denon-de.custhelp.com/app/answers/detail/a_id/2256/~/heos-gruppieren.

      Sonst nochmal der Auszug aus der Supportseite:

      ` > <size size="150">Wie kann ich meine HEOS Lautsprecher zu einer Gruppe zusammenfassen?</size>

      Die Gruppierung von HEOS Lautsprechern erlaubt es Ihnen, zwei (oder mehrere) HEOS Lautsprecher in unterschiedlichen Räumen oder auch im gleichen Raum mit der gleichen Musik anzusteueren und zu bedienen. Die Gruppierung sorgt auch für einen hervorragende Synchronisation zwischen den einzelnen Lautsprechern, so dass Sie keinen zeitlichen Versatz (Echo) hören, wenn die Lautsprecher in unterschiedlichen Räumen stehen.

      Um die HEOS Lautsprecher zu gruppieren, wählen Sie in der HEOS App den Reiter Räume an. Anschliessend tippen Sie den HEOS Lautsprecher an, den Sie zu mit einem anderen HEOS Lautsprecher gruppieren möchen. Schieben Sie ihn auf den anderen HEOS Lautsprecher.

      Sie können auch alle HEOS Lautsprecher (max. 16 Stück) auf einmal zusammenfügen. Halten Sie dazu bitte den ersten und letzten HEOS Lautsprecher gedrückt und schieben diese zusammen.

      Um einen Lautsprecher aus der Gruppe zu entfernen, gehen Sie bitte genauso vor. Halten Sie den Lautsprecher gedrückt und ziehen ihn aus der Gruppe heraus. `

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        Postmymind
        schrieb am zuletzt editiert von
        #9

        Danke für die schnelle Rückmeldung. Wie ich es in der App mache weiß ich ja … Hab Heos ja seit Marktstart im Einsatz.

        Oder meinst du, dass man die Gruppen über die App nur definiert und dann über io als Variable anspricht, damit man sich den Weg über die App spart?

        Hätte ja aber sein können, dass ich das auch über ein Script lösen kann. Meine aktuelle Lösung für die Gruppierung von Räumen ohne die App ist der Harmony Adapter in ioBroker. In Harmony habe ich jeweils Aktivitäten ohne Quellenauswahl für die einzelnen Gruppierungen erstellt, welche dann die Speaker zusammenfasst. Mit dem Spotify Adapter kann ich dann über die Vis das aktive Device wählen.

        @obakuhl:

        Das musst du über die App machen. https://denon-de.custhelp.com/app/answers/detail/a_id/2256/~/heos-gruppieren.

        Sonst nochmal der Auszug aus der Supportseite:

        ` > <size size="150">Wie kann ich meine HEOS Lautsprecher zu einer Gruppe zusammenfassen?</size>

        Die Gruppierung von HEOS Lautsprechern erlaubt es Ihnen, zwei (oder mehrere) HEOS Lautsprecher in unterschiedlichen Räumen oder auch im gleichen Raum mit der gleichen Musik anzusteueren und zu bedienen. Die Gruppierung sorgt auch für einen hervorragende Synchronisation zwischen den einzelnen Lautsprechern, so dass Sie keinen zeitlichen Versatz (Echo) hören, wenn die Lautsprecher in unterschiedlichen Räumen stehen.

        Um die HEOS Lautsprecher zu gruppieren, wählen Sie in der HEOS App den Reiter Räume an. Anschliessend tippen Sie den HEOS Lautsprecher an, den Sie zu mit einem anderen HEOS Lautsprecher gruppieren möchen. Schieben Sie ihn auf den anderen HEOS Lautsprecher.

        Sie können auch alle HEOS Lautsprecher (max. 16 Stück) auf einmal zusammenfügen. Halten Sie dazu bitte den ersten und letzten HEOS Lautsprecher gedrückt und schieben diese zusammen.

        Um einen Lautsprecher aus der Gruppe zu entfernen, gehen Sie bitte genauso vor. Halten Sie den Lautsprecher gedrückt und ziehen ihn aus der Gruppe heraus.

        1 Antwort Letzte Antwort
        0
        • B Offline
          B Offline
          Brati
          schrieb am zuletzt editiert von
          #10

          @Postymind

          Die Gruppen solltest du gemäß CLI Protokoll mit den Player PID setzen können:

          This command is used to perform the following actions:
          
          Create new group:
          Creates new group. First player id in the list is group leader.
          Ex: heos://group/set_group?pid=3,1,4Modify existing group members:
          
          Adds or delete players from the group. First player id should be the group leader id.
          Ex: heos://group/set_group?pid=3,1,5
          
          Ungroup all players in the group
          Ungroup players. Player id (pid) should be the group leader id.
          Ex: heos://group/set_group?pid=3
          
          Command: heos://group/set_group?pid=player_id_leader, player_id_member_1,…,player_id_member_n
          

          Und das dann im "command" State übergeben. Habe es aber noch nicht getestet. Mein AVR mit 3 Zonen hat nur eine PID und dann gibt es nur eine 2. Box…

          Grüße

          Brati

          CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

          1 Antwort Letzte Antwort
          0
          • O Offline
            O Offline
            obakuhl
            Developer
            schrieb am zuletzt editiert von
            #11

            Achso 8-)

            Im Skript ist aktuell noch nichts zu Gruppen implementiert, soweit ich das durchschaut habe.

            Genau, ich sende die Komandos, wie z.B. einen Lautsprecher muten über ioBroker. Die App verwende ich gar nicht mehr. Wahrscheinlich ist es gar nicht nötig, wenn man alles über Blocklyskripte regelt und die Lautsprecher einzeln anspricht, dass man diese gruppiert. Aber dadurch ist auf jeden Fall sichergestellt, dass die Boxen synchron laufen.

            Generell ist aber sicher mögich, dass über die Group-Schnittstelle des CLI Protokolls von HEOS professioneller zu regeln.

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              Postmymind
              schrieb am zuletzt editiert von
              #12

              Danke! Ich werde mal testen sobald ich Zuhause bin. Erreichen möchte ich z.B., dass ich über verschiedene Buttons und deren "States" im Haus (ob Hue Dimmer Switch o.Ä.) Gruppierungen, Quellenauswahl und Playstate triggern kann. Ich werde mal mit den 7 vorhandenen Heos (1x Link, 6x Heos 3/5) testen. Danke schon mal

              @Brati:

              @Postymind

              Die Gruppen solltest du gemäß CLI Protokoll mit den Player PID setzen können:

              This command is used to perform the following actions:
              
              Create new group:
              Creates new group. First player id in the list is group leader.
              Ex: heos://group/set_group?pid=3,1,4Modify existing group members:
              
              Adds or delete players from the group. First player id should be the group leader id.
              Ex: heos://group/set_group?pid=3,1,5
              
              Ungroup all players in the group
              Ungroup players. Player id (pid) should be the group leader id.
              Ex: heos://group/set_group?pid=3
              
              Command: heos://group/set_group?pid=player_id_leader, player_id_member_1,…,player_id_member_n
              

              Und das dann im "command" State übergeben. Habe es aber noch nicht getestet. Mein AVR mit 3 Zonen hat nur eine PID und dann gibt es nur eine 2. Box…

              Grüße

              Brati `

              1 Antwort Letzte Antwort
              0
              • P Offline
                P Offline
                Postmymind
                schrieb am zuletzt editiert von
                #13

                Funktioniert leider nicht. Direkt über Telnet funktioniert die Gruppierung aber über die Kommandozeile des Scripts passiert leider nichts.

                Hat sonst noch jemand weitere Ideen, wie man das lösen könnte oder ob man den Befehl über "Command" des Scripts anders senden muss?

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  spielberger32
                  schrieb am zuletzt editiert von
                  #14

                  Probier mal set_group?pid=-123456789,-223456789,-323456789 in die die Command-Option zu schreiben. Bei mir macht das folgendes Skript:

                  setState("javascript.0.heos.192_168_XXX_XXX.command", 'set_group?pid=-123456789,-223456789,-323456789');
                  

                  Für -123456789 etc natürlich jeweils die PID des Lautsprechers angeben. 😉 ACHTUNG: immer mit einem eventuellen MINUS DAVOR.

                  <size size="85">„Alte Knaben haben genauso ihr Spielzeug wie die jungen, der Unterschied liegt lediglich im Preis.“

                  Benjamin Franklin</size>

                  1 Antwort Letzte Antwort
                  0
                  • P Offline
                    P Offline
                    Postmymind
                    schrieb am zuletzt editiert von
                    #15

                    Funktioniert! Danke! So kann ich meine Etagen-Gruppensteuerung realisieren.

                    1 Antwort Letzte Antwort
                    0
                    • S Offline
                      S Offline
                      sashe
                      schrieb am zuletzt editiert von
                      #16

                      Hey,

                      das Script funktioniert echt Prima. Allerdings kriege ich keine Presets? Jemand ne Idee? Und ja, die Logindaten stimmen 😄

                      ! javascript.0 2018-12-09 14:27:30.435 error script.js.Automatisierungen.heos: [Heos] parseResponse: Unexpected token R in JSON at position 1 javascript.0 2018-12-09 14:27:30.434 error script.js.Automatisierungen.heos: [Heos] parseResponse: Unexpected end of JSON input javascript.0 2018-12-09 14:27:30.176 info script.js.Automatisierungen.heos: [Heos] command: load_presets !

                      Ich kann mit play_preset&preset=1 auch meine Favoriten abspielen, habe sie allerdings nicht in den Objekten in iobroker.

                      1 Antwort Letzte Antwort
                      0
                      • S Offline
                        S Offline
                        spielberger32
                        schrieb am zuletzt editiert von
                        #17

                        Nach meinem letzten Stand geht es leider auch nur so … also über den Befehl per Skript

                        <size size="85">„Alte Knaben haben genauso ihr Spielzeug wie die jungen, der Unterschied liegt lediglich im Preis.“

                        Benjamin Franklin</size>

                        1 Antwort Letzte Antwort
                        0
                        • S Offline
                          S Offline
                          sashe
                          schrieb am zuletzt editiert von
                          #18

                          Naja, wenn ich mir den Quelltext seines Favoriten-Widgets angucke, hat er die Presets als Objekte..

                          "javascript.1.heos.presets.4.image_url"

                          Das habe ich nicht

                          1 Antwort Letzte Antwort
                          0
                          • UhulaU Offline
                            UhulaU Offline
                            Uhula
                            schrieb am zuletzt editiert von
                            #19

                            Nach dem Scriptstart wird ein Connect zum Heos System aufgebaut, connected sich mindestens ein Player, wird in Zeil 301

                            this.getMusicSources();

                            aufgerufen, was zum Auslesen der Presets führen sollte. Erhält das Script vom Heos-Player eine Antwort, dann werden die Presets als Objekte im Script ab Zeile 430 erzeugt. Meine Vermutung ist, dass die Antwort des Heos-Players nicht so aussieht, wie im Script erwartet, Bsp ab Zeile 419.

                            Dieses Laden der Presets kann man auch später, nach Scriptstart, manuell aufrufen: heos.getMusicSources();

                            Bsp:

                            // Heos Instanz erzeugen und verbinden   
                            var heos = new Heos( );
                            heos.connect();
                            
                            ...
                            
                            heos.getMusicSources();
                            
                            

                            Noch ein Hinweis. Ich habe meine ioBroker Installation vom Pi3 auf einen Windows10 Rechner umziehen lassen. Da hier der node-ssdp Client wohl anders arbeitet, musste ich im Script beim connect() (ab Zeile 224) die Zeile "this.nodessdp_client.explicitSocketBind = true; " ergänzen:

                            connect() { 
                                try {
                                    this.log('connecting to HEOS ...');
                                    setState( this.statePath+"connected", false );
                                    const NodeSSDP = require('node-ssdp').Client;
                            	    this.nodessdp_client = new NodeSSDP();
                            	    this.nodessdp_client.explicitSocketBind = true;  // <--- notwendig für Windows10 !
                                        ...    
                            } 
                            

                            Uhula - Leise und Weise
                            Ex: ioBroker on Gigabyte NUC Proxmox

                            1 Antwort Letzte Antwort
                            0
                            • S Offline
                              S Offline
                              sashe
                              schrieb am zuletzt editiert von
                              #20

                              Danke. Mal schauen ob ich das fixen kann. Wenn nicht hardcode ich die Favoriten halt darein. Ansteuern kann ich sie ja und eigentlich ändern wir die auch nicht.

                              1 Antwort Letzte Antwort
                              0
                              • B Offline
                                B Offline
                                Brati
                                schrieb am zuletzt editiert von
                                #21

                                Bei mir funktioniert der HEOS Login momentan auf keinem Gerät (AVR, HS1 Box, App, ioBroker…). Vielleicht ist auch gerade der Wurm drin. Am WE lief es noch.

                                Grüße

                                Brati

                                CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

                                1 Antwort Letzte Antwort
                                0
                                • B Offline
                                  B Offline
                                  Brati
                                  schrieb am zuletzt editiert von
                                  #22

                                  @Brati:

                                  Bei mir funktioniert der HEOS Login momentan auf keinem Gerät (AVR, HS1 Box, App, ioBroker…). Vielleicht ist auch gerade der Wurm drin. Am WE lief es noch.

                                  Grüße

                                  Brati `

                                  Heute läuft wieder alles, werden jetzt vielleicht die Presets geladen?

                                  CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

                                  1 Antwort Letzte Antwort
                                  0
                                  • B Offline
                                    B Offline
                                    bassface
                                    schrieb am zuletzt editiert von
                                    #23

                                    Moin,

                                    der HEOS Login funktioniert bei mir.

                                    Die Objekte für die Favoriten werden auch erstellt.

                                    Allerdings erhalte ich weiterhin einen Fehler. Kann ich die abstellen bzw. beheben?

                                    ! ````
                                    17:40:07.068 error javascript.0 script.js.Haushalt.Wohnzimmer.Denon.HEOS_bySkript: [Heos] parseResponse: Unexpected end of JSON input
                                    17:40:07.069 error javascript.0 script.js.Haushalt.Wohnzimmer.Denon.HEOS_bySkript: [Heos] parseResponse: Unexpected string in JSON at position 1t

                                    
                                    Beste Grüße
                                    1 Antwort Letzte Antwort
                                    0
                                    • B Offline
                                      B Offline
                                      Brati
                                      schrieb am zuletzt editiert von
                                      #24

                                      @bassface:

                                      Moin,

                                      der HEOS Login funktioniert bei mir.

                                      Die Objekte für die Favoriten werden auch erstellt.

                                      Allerdings erhalte ich weiterhin einen Fehler. Kann ich die abstellen bzw. beheben?

                                      ! ````
                                      17:40:07.068 error javascript.0 script.js.Haushalt.Wohnzimmer.Denon.HEOS_bySkript: [Heos] parseResponse: Unexpected end of JSON input
                                      17:40:07.069 error javascript.0 script.js.Haushalt.Wohnzimmer.Denon.HEOS_bySkript: [Heos] parseResponse: Unexpected string in JSON at position 1t

                                      
                                      Beste Grüße `  
                                      

                                      Du könntest mal versuchen die Objekte (IP Adressen und darunter) zu löschen und dann das Script neu starten. War der Fehler von Anfang an da?

                                      Grüße

                                      Brati

                                      CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

                                      1 Antwort Letzte Antwort
                                      0
                                      • B Offline
                                        B Offline
                                        bassface
                                        schrieb am zuletzt editiert von
                                        #25

                                        Hey,

                                        danke für die Rückmeldung.

                                        Die Meldung kommt seit dem ersten Start des Skripts.

                                        Die Objekte hatte ich bereits einmal gelöscht, die Meldungen kommen dann aber erneut sofern das Skript gestartet wird.

                                        Die Funktionen des Skripts werden allerdings nicht beinträchtigt und da die Meldung nur bei Skriptstart kommt kann ich damit leben.

                                        Ist ja nicht so häufig.

                                        Daher auch noch herzlichen an Uhula für deine Arbeit. Für meine Bedürfnisse perfekt!

                                        Gruß

                                        1 Antwort Letzte Antwort
                                        0
                                        • C Offline
                                          C Offline
                                          charon
                                          schrieb am zuletzt editiert von
                                          #26

                                          @Uhula : Könntest Du das das initiale Posting mit dem Script und den Widgets bitte nochmal anschauen und ggfs. überarbeiten? Es scheint, als würde die neue Forensoftware deinen Text verhunzen. Habe schon versucht per "Quote" an den Plaintext zu kommen, aber das war nicht von Erfolg gekrönt.

                                          Falls es nicht geht wäre ja vielleicht auch pastebin oder dein github-Repo eine Möglichkeit?

                                          Vielen Dank im Voraus und viele Grüße

                                          B 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

                                          343

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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