Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Vorlage] Denon HEOS Script

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Vorlage] Denon HEOS Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      CrazyFloyd last edited by

      Bekomme das Script nicht importieret. Kann jemand einen Tipp geben wie ich es am besten installiere bzw. importiere? Danke Euch.

      1 Reply Last reply Reply Quote 0
      • W
        withstu @BobBruni last edited by

        @BobBruni Es sieht so aus, dass die message nicht korrekt geparsed werden kann (Cannot read property 'pid'). Versuche mal eine neuere Version des Scripts. Seit dem Script im ersten Post hat sich viel getan.

        @CrazyFloyd Das Script musst du in den JS-Adapter kopieren, Anmeldedaten eintragen und starten. Den Adapter musst du einfach über die "Katze" unter Adapter (Installieren aus eigener URL) installieren. Dazu ist lediglich die URL zum GitHub Repo nötig.

        B 1 Reply Last reply Reply Quote 0
        • B
          BobBruni @withstu last edited by

          @withstu said in [Vorlage] Denon HEOS Script:

          @BobBruni Es sieht so aus, dass die message nicht korrekt geparsed werden kann (Cannot read property 'pid'). Versuche mal eine neuere Version des Scripts. Seit dem Script im ersten Post hat sich viel getan.

          Nachdem ich geheckt habe, dass die states nun in 0_userdata.0 liegen, läuft wieder alles. Vielen Dank!
          Ich freue mich, wenn es hierzu bald einen neuen Adapter gibt!!!!

          W 1 Reply Last reply Reply Quote 0
          • W
            withstu @BobBruni last edited by

            Der Adapter lief jetzt bei mir mehrere Wochen stabil. Deswegen habe ich meinen ersten Adapter veröffentlicht 🙂 Allerdings weiß ich nicht, wie dieser ins Repository aufgenommen werden kann: https://github.com/withstu/ioBroker.heos

            @Bluefox Hast du eine Idee, wer den Adapter im Repo hinzufügen kann?

            1 Reply Last reply Reply Quote 0
            • S
              sveni_lee last edited by

              Ich habe einen Denon AVR-X 4400H und habe mir jetzt den Adapter installiert.
              Das klappt auch soweit richtig gut.
              Der Denon greift ja nicht mehr direkt auf Netztwerkfreigaben zu, sondern nur noch über HEOS.
              Ich habe mir nun die 167 Tread durchgelesen aber kann nicht finden, ob ich über das scribt auch durch meine
              Musikdatenbank auf den NAS navigieren kann...

              Bietet der Adapter die möglichkeit bzw gibt das die HEOS "API" überhaupt her?

              Uhula 1 Reply Last reply Reply Quote 0
              • Uhula
                Uhula @sveni_lee last edited by

                @sveni_lee Das bietet das HEOS API nicht an, sondern nur das Abspielen. Eine Navigation darüber wäre wohl auch zu langsam, und für dich im Design zu aufwendig in der Umsetzung, da du selbst die Ergebnislisten (Ordner, Dateien) darstellen müsstest und über Ereignisse die Ordner wechseln.

                S 1 Reply Last reply Reply Quote 0
                • S
                  sveni_lee @Uhula last edited by

                  @Uhula

                  okay, verstehe...
                  in der HEOS App auf dem Handy kann ich ja durch die Ordnerstrucktur browsen. das bedeutet ja es gibt durchaus "Befehle" die das ermöglichen. wenn Ich nun die Kommunikation in meinem Netzwerk mitlogge (wireshark), müsste man es ja rausbekommen.
                  Ich hatte sowas mal mit meinem alten Onkyo gemacht...

                  Uhula W 3 Replies Last reply Reply Quote 0
                  • Uhula
                    Uhula @sveni_lee last edited by

                    @sveni_lee Mag sein, wenn denn das API das her gibt. Trotzdem bleibt immer noch der Aufwand dieses dann zu visualisieren. Manchmal sind die nativen Apps doch besser geeignet als nachgebaute Eigenentwürfe. Ich nutze das HEOS Script nur für die grundsätzliche Steuerung (für meine Frau). NDR2, Playlist Johannes Oerding, ... Lautstärke. Alles andere findet dann in der HEOS App bzw. in der Spotify App statt.

                    1 Reply Last reply Reply Quote 0
                    • W
                      withstu @sveni_lee last edited by

                      @sveni_lee Alles was du über die App machen kannst, ist auch über die HEOS API möglich (http://rn.dmglobal.com/euheos/HEOS_CLI_ProtocolSpecification.pdf). Also auch die Navigation. Wie Uhula schon sagt ist die Darstellung das Problem. Die Commands könntest du jedoch schicken. Sie werden nur nicht vom Adapter ausgewertet. Wenn jemand eine Idee hat, wie man das sinnvoll umsetzen kann, ich bin offen für Anregungen.

                      Beispielsweise könntest du im Terminal folgendes nacheinander eingeben, um dir die Ergebnisse der API anzuschauen:

                      telnet flur 1255
                      heos://system/prettify_json_response?enable=on
                      heos://browse/browse?sid=1024
                      # Entsprechend die sid raussuchen immer weiter navigieren, bis man irgendwann eine mid hat und ein playable flag
                      heos://browse/browse?sid=851081134&cid=1$FF0
                      
                      1 Reply Last reply Reply Quote 0
                      • W
                        withstu @sveni_lee last edited by

                        @sveni_lee Ich habe gerade den Adapter erweitert (Version 1.1.2). In den Source Channels gibt es jetzt einen Browse Button. Im Log wird dann ausgegeben, welche HEOS Commands auf der nächsten Ebene möglich sind. So kann man halbwegs komfortabel navigieren und die Commands für die Automatisierung raussuchen.

                        [BROWSE] [851081134] [Video] Possible Commands: browse/browse?sid=851081134&cid=2
                        [BROWSE] [851081134] [Ordner durchsuchen] Possible Commands: browse/browse?sid=851081134&cid=64
                        [BROWSE] [851081134] [Musik] Possible Commands: browse/browse?sid=851081134&cid=1
                        [BROWSE] [851081134] [Bilder] Possible Commands: browse/browse?sid=851081134&cid=3
                        [BROWSE] [851081134] {"sid":"851081134","returned":"4","count":"4"}
                        [BROWSE] [Local Music] [Server] Possible Commands: browse/browse?sid=851081134
                        [BROWSE] [Local Music] [AVM FRITZ!Mediaserver] Possible Commands: browse/browse?sid=77447081
                        [BROWSE] [Local Music] {"sid":"1024","returned":"2","count":"2"}
                        [BROWSE] [History] [SWR1 Baden-Württemberg 94.7 (Variety)] Possible Commands: player/play_stream&sid=1026&cid=STATIONS&mid=s20291
                        [BROWSE] [History] [1 LIVE] Possible Commands: player/play_stream&sid=1026&cid=STATIONS&mid=s25260
                        [BROWSE] [History] [DASDING 90.8 (Euro Hits)] Possible Commands: player/play_stream&sid=1026&cid=STATIONS&mid=s20295
                        

                        Btw. ich habe einen Pull Request gestellt, sodass der Adapter in das offizielle Repository aufgenommen wird. Dann wird die Installation einfacher.

                        A H S 4 Replies Last reply Reply Quote 0
                        • A
                          ak1 @withstu last edited by

                          Hmm, nichts geht mehr.
                          Seit langer Zeit habe ich das HEOS Skript von @Uhula im Einsatz. Derzeit die Version vom 13.03.2020. Aus meiner Visualisierung rufe ich lediglich drei Presets auf, steuere die Lautstärke, Stopp und Start, nicht viel mehr.

                          Seit heute morgen reagiert mein Denon allerdings nicht mehr darauf. Ich sehe im Log, dass das Skript den den Denon findet und sich verbindet. in Meinen Blockly-Skripten, genutzt durch meine Visualisierung, habe ich Debug-Einträge und sehe auch, dass die Befehle zum Abspielen des Presets rausgehen.

                          Im Datenpunkt last_error kommt dann allerdings ein

                          result=fail, Command not recognized
                          

                          zurück.

                          Befehl ist z.B.

                          play_preset&preset=1|set_volume&level=40
                          

                          Dann habe ich mal den neuen Adapter von @withstu installiert und getestet. Auch hier das gleiche Phänomen. Der Adapter findet den Denon, legt Datenpunkte mit den Presets an, alles sieht gut aus.

                          Wenn ich dann allerdings ein Kommando abschicke, scheitert dies:

                          heos.0	2020-09-27 12:01:19.527	warn	(1235) result=fail,text=Command not recognized,command=preset
                          heos.0	2020-09-27 12:00:56.006	info	(1235) connected to HEOS (192.168.2.102)
                          heos.0	2020-09-27 12:00:56.005	info	(1235) connecting to HEOS (192.168.2.102) ...
                          heos.0	2020-09-27 12:00:54.006	info	(1235) searching for HEOS devices ...
                          heos.0	2020-09-27 12:00:53.975	info	(1235) starting. Version 1.1.2 in /opt/iobroker/node_modules/iobroker.heos, node: v12.16.3, js-controller: 3.1.6
                          

                          In dem Fall war das Kommando

                          play_preset&preset=3
                          

                          Hat jemand eine Idee? Mit der HEOS App geht die Auswahl der Presets wie bisher problemlos.

                          W 1 Reply Last reply Reply Quote 0
                          • W
                            withstu @ak1 last edited by withstu

                            @ak1 Ich habe gerade beide Commands bei mir ausprobiert und sie funktionierten tadellos (Marantz Receiver, HEOS 1). Mir ist aber auch gerade aufgefallen, dass sich mein Receiver merkwürdig verhalten hat. Dieser hat keine anderen Player mehr erkannt. Bei mir war die Lösung, den Receiver einmal vom Strom zu trennen. Weitere Möglichkeit wäre, dass der Denon ein Update bekommen hat? Lief ja in der letzten Zeit auch nicht mehr alles rund bei Denon.

                            Edit: Mir ist gerade noch eingefallen, dass es Probleme gibt, wenn sich die App und das Script/Adapter zufällig mit dem gleichen Player verbinden wollen. Dabei funktioniert entweder die App nicht richtig oder der Adapter/Script. Die aktuellen Scripte bzw. der Adapter merken das durch den Heartbeat und versuchen sich neu zu verbinden.

                            A 1 Reply Last reply Reply Quote 1
                            • A
                              ak1 @withstu last edited by

                              @withstu
                              Danke für Deinen Tipp! Tatsächlich hat es geholfen, den Receiver für einen Moment vom Strom zu nehmen. Das war für mich etwas überraschend, denn er ist gemeinsam mit dem Sat-Receiver und dem Fernseher jede nacht per Shelly Plug S komplett vom Strom getrennt.

                              Wie auch immer. Nach dem der Receiver wieder an war, funktioniert zuerst Uhulas Skript wieder. Dann habe ich Deinen Adapter neu gestartet und auch der funktioniert nun. Mir ist aufgefallen, das erst bei diesem Neustart die Datenstruktur "players" in den Objekten befüllt wurde. Vorher war da nix.

                              1 Reply Last reply Reply Quote 0
                              • H
                                hotze78 @withstu last edited by

                                Erst mal Danke viel mal für eure Arbeit. Ich habe die Tage von Script auf den Adapter gewechselt. Mir ist noch nichts aufgefallen wo fehlerhaft wäre, alles funktioniert von Steuern, Gruppieren, Presets...
                                Ausser Playlist habe ich noch nicht herausgefunden wie ich die an einem bestimmtes Gerät ansteuern kann. Mit heos.0.playlists.xxxxx.play ist es kein Problem. Aber mit Command auf den Player habe ich noch keine Lösung gefunden.

                                W 1 Reply Last reply Reply Quote 0
                                • W
                                  withstu @hotze78 last edited by

                                  @hotze78 Das mit den Playlists ist in der Tat nicht so einfach. Da steht nämlich nirgends die sid von den playlists. Folgendes Kommando müsstest du im player channel im command state eingeben: add_to_queue&sid=1025&aid=4&cid=XXXXXX. Die cid ist die ID der Playlist.

                                  Habe mir gerade überlegt, dass ich die playlist und preset Ordner noch in den Sources Ordner verschiebe. Dann sieht man es klarer. Wenn man es streng nimmt, sind es ja auch keine devices...

                                  H 1 Reply Last reply Reply Quote 0
                                  • H
                                    hotze78 @withstu last edited by

                                    @withstu Danke! Funktioniert bestens.
                                    Was ich noch nirgens in der Protokoll Spezifikationen gelesen habe, ist die Zonen Schaltung. Ich habe es bei mir mit dem Denon Adapter gelöst. Ist es denkbar das dies auch in den Heos adapter integriert werden kann wie in der App? Beispielbild
                                    hifi-im-hinterhof-berlin-heos-app-screenshot.jpg

                                    W 1 Reply Last reply Reply Quote 0
                                    • W
                                      withstu @hotze78 last edited by

                                      @hotze78 Sehr gut. Die App wird für einige Funktionen noch auf die Receiver API per Port 23 zugreifen (http://assets.eu.denon.com/DocumentMaster/DE/AVR1713_AVR1613_PROTOCOL_V8.6.0.pdf). Von daher ist da der Denon Adapter besser geeignet. In der HEOS API fehlen mir aber auch einige Funktionen, wie etwa Power An/Aus, das Vorspulen oder ein besseres Queue Management für TTS.

                                      PS.: Hab jetzt in v1.2.0 die presets und playlists in den entsprechenden source Ordner verschoben. Am besten vor der Installation die devices presets, playlists und sources einmal löschen.

                                      S 1 Reply Last reply Reply Quote 0
                                      • S
                                        sveni_lee @withstu last edited by

                                        @withstu

                                        vielen Dank für die neue Version. Ich werde mir das heute Abend mal ansehen.

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          sveni_lee @withstu last edited by

                                          @withstu

                                          Ich habe mir das jetzt mal angesehen und es sieht wirklich gut aus.
                                          kannst Du den return auch in ein State als Array oder List packen?

                                          bspw.

                                          {Bilder : browse/browse?sid=851081134&cid=3; Musik : browse/browse?sid=851081134&cid=1}
                                          

                                          dann könnte man daraus eine Widget basteln denke ich...

                                          W 2 Replies Last reply Reply Quote 0
                                          • W
                                            withstu @sveni_lee last edited by withstu

                                            @sveni_lee Hab in Version 1.2.2 den State sources.browse_result eingeführt. Schau mal, ob du daraus ein Widget basteln kannst (hab ich noch nie gemacht). Man müsste nur den payload iterieren, die Namen anzeigen und dann jeweils einen Button pro command einblenden.

                                            {"sid":1024,
                                            "name":"Local Music",
                                            "parameter":{"sid":"1024","returned":"2","count":"2"},
                                            "payload":[
                                            {"name":"Navigate to top","commands":{"browse":"browse/browse?sid=1024"}},
                                            {"name":"Server","commands":{"browse":"browse/browse?sid=851081134"}},
                                            {"name":"AVM FRITZ!Mediaserver","commands":{"browse":"browse/browse?sid=77447081"}}
                                            ]}
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            581
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript template
                                            45
                                            341
                                            52739
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo