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

  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.2k

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

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

[Vorlage] Denon HEOS Script

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascripttemplate
357 Beiträge 48 Kommentatoren 76.1k 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.
  • M Mars

    Danke für deine schnelle Rückmeldung. Ok, wenn der Profi sagt es ist nicht verlässlich dann denke ich muss man einen anderen Weg wählen.
    Das mit Kommando "play_stream&url=url_path" habe ich ehrlicherweise nicht verstanden. Kann man das in 2 Sätzen erklären? Bzw. wie finde ich den Pfad des audiofiles auf z.B. dem USB stick heraus?

    Eine Integration wie im SONOS Adapter wäre natürlich eine extrem komfortable Lösung und ich würde mich riesig freuen wenn du das umsetzen würdest.

    Habe gerade das mit dem Befehl "play_stream&url=url_path" ausprobiert. Habe wieder zuerst über die App das Klingel file abgespielt und geschaut was er mir in die "aktuelle mid" rein schreibt. Diesen URL Pfad habe ich dann benutzt und das scheint erstmal zu funktionieren. Danke für den Hinweis. Ich hatte damit schon probiert mir war jedoch unklar wie ich das URL bekomme....
    Jetzt wäre der nächste Schritt wenn gerade Musik läuft und es klingelt der Gong ertönt dann die Musik weiter geht. Das ist aber viell. in einem Skript abzubilden!?

    W Offline
    W Offline
    withstu
    schrieb am zuletzt editiert von
    #137

    @Mars Um eine SayIt Datei über einen HEOS Player auszugeben würde der Command so aussehen: play_stream&url=http://IOBROKER:8082/state/sayit.0.tts.mp3

    Ich habe wie beim SONOS einen neuen State tts und tts_playing hinzugefügt (heos.js). Den tts State gibt es sowohl global und für alle Player. Der State muss nach dem Schema VOLUME;URI gefüllt werden z.b.: 20;http://IOBROKER:8082/state/sayit.0.tts.mp3

    Das Script ist noch nicht perfekt, da es von HEOS einige Einschränkungen gibt z.B. ist es schwierig zu erkennen, wann HEOS mit dem Abspielen der TTS Datei fertig ist. Aber nach dem Abspielen der SayIt Datei wird das Letzte Lied/Station für TuneIn, Amazon, AUX und NAS Streams wiederhergestellt.

    M 1 Antwort Letzte Antwort
    0
    • W withstu

      @Mars Um eine SayIt Datei über einen HEOS Player auszugeben würde der Command so aussehen: play_stream&url=http://IOBROKER:8082/state/sayit.0.tts.mp3

      Ich habe wie beim SONOS einen neuen State tts und tts_playing hinzugefügt (heos.js). Den tts State gibt es sowohl global und für alle Player. Der State muss nach dem Schema VOLUME;URI gefüllt werden z.b.: 20;http://IOBROKER:8082/state/sayit.0.tts.mp3

      Das Script ist noch nicht perfekt, da es von HEOS einige Einschränkungen gibt z.B. ist es schwierig zu erkennen, wann HEOS mit dem Abspielen der TTS Datei fertig ist. Aber nach dem Abspielen der SayIt Datei wird das Letzte Lied/Station für TuneIn, Amazon, AUX und NAS Streams wiederhergestellt.

      M Offline
      M Offline
      Mars
      schrieb am zuletzt editiert von
      #138

      @withstu Vielen Dank!

      Ich habe jetzt probiert erst einen Gong abzuspielen und im Anschluss eine Sprachansage. Jedoch ist das vom Timing her nicht so einfach die Sprachausgabe kommt manchmal gar nicht "durch".
      Hast du das bei dir so im Einsatz? Wenn ja wie?

      Der say.it adapter kann von sich aus auch einen Gong vor die Ansage setzen jedoch bekomme ich das nicht auf die Soundbar.

      Viell. habe ich aber auch den say.it Adapter falsch konfiguriert.

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        Stueckinger
        schrieb am zuletzt editiert von
        #139

        Hallo,

        ich danke vielmals für dieses Script. Habe es heute das erste mal hinzugefügt.
        Ich laufe direkt auf einen Fehler beim Starten:

        21:34:42.068	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected end of JSON input {"heos": {"command": "player/get_now_playing_media", "result": "success", "message": "pid=1849007305"}, "payload": {"type": "song", "song": "Casimir von Oettingen & Lenia don't wanna go home
        21:34:42.070	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected token K in JSON at position 1 Kater Blau 24.02.19", "album": "", "artist": "Casimir von Oettingen", "image_url": "https://i1.sndcdn.com/artworks-000495104037-6l4zar-t500x500.jpg", "album_id": "1", "mid": "581602872", "qid": 3, "sid": 9, "gid": 1849007305}, "options": []}
        21:34:42.088	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected end of JSON input {"heos": {"command": "player/get_now_playing_media", "result": "success", "message": "pid=-1557307954"}, "payload": {"type": "song", "song": "Casimir von Oettingen & Lenia don't wanna go home
        21:34:42.090	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected token K in JSON at position 1 Kater Blau 24.02.19", "album": "", "artist": "Casimir von Oettingen", "image_url": "https://i1.sndcdn.com/artworks-000495104037-6l4zar-t500x500.jpg", "album_id": "1", "mid": "581602872", "qid": 3, "sid": 9, "gid": 1849007305}, "options": []}
        21:34:42.105	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected end of JSON input {"heos": {"command": "player/get_now_playing_media", "result": "success", "message": "pid=413862456"}, "payload": {"type": "song", "song": "Casimir von Oettingen & Lenia don't wanna go home
        21:34:42.107	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected token K in JSON at position 1 Kater Blau 24.02.19", "album": "", "artist": "Casimir von Oettingen", "image_url": "https://i1.sndcdn.com/artworks-000495104037-6l4zar-t500x500.jpg", "album_id": "1", "mid": "581602872", "qid": 3, "sid": 9, "gid": 1849007305}, "options": []}
        

        Jetzt hab ich mir mal den Liedtitel (Soundcloud) angesehen. Der beinhaltet ein "|". Kann es sein, dass daher der Parsing-Error entsteht? Das "Lied" habe ich einfach in meinen Likes drin.
        Hast du zufällig eine Idee wie man das fixen könnte?

        Schöne Grüße

        W 1 Antwort Letzte Antwort
        0
        • S Stueckinger

          Hallo,

          ich danke vielmals für dieses Script. Habe es heute das erste mal hinzugefügt.
          Ich laufe direkt auf einen Fehler beim Starten:

          21:34:42.068	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected end of JSON input {"heos": {"command": "player/get_now_playing_media", "result": "success", "message": "pid=1849007305"}, "payload": {"type": "song", "song": "Casimir von Oettingen & Lenia don't wanna go home
          21:34:42.070	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected token K in JSON at position 1 Kater Blau 24.02.19", "album": "", "artist": "Casimir von Oettingen", "image_url": "https://i1.sndcdn.com/artworks-000495104037-6l4zar-t500x500.jpg", "album_id": "1", "mid": "581602872", "qid": 3, "sid": 9, "gid": 1849007305}, "options": []}
          21:34:42.088	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected end of JSON input {"heos": {"command": "player/get_now_playing_media", "result": "success", "message": "pid=-1557307954"}, "payload": {"type": "song", "song": "Casimir von Oettingen & Lenia don't wanna go home
          21:34:42.090	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected token K in JSON at position 1 Kater Blau 24.02.19", "album": "", "artist": "Casimir von Oettingen", "image_url": "https://i1.sndcdn.com/artworks-000495104037-6l4zar-t500x500.jpg", "album_id": "1", "mid": "581602872", "qid": 3, "sid": 9, "gid": 1849007305}, "options": []}
          21:34:42.105	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected end of JSON input {"heos": {"command": "player/get_now_playing_media", "result": "success", "message": "pid=413862456"}, "payload": {"type": "song", "song": "Casimir von Oettingen & Lenia don't wanna go home
          21:34:42.107	error	javascript.0 (21822) script.js.Heos: [Heos] parseResponse: Unexpected token K in JSON at position 1 Kater Blau 24.02.19", "album": "", "artist": "Casimir von Oettingen", "image_url": "https://i1.sndcdn.com/artworks-000495104037-6l4zar-t500x500.jpg", "album_id": "1", "mid": "581602872", "qid": 3, "sid": 9, "gid": 1849007305}, "options": []}
          

          Jetzt hab ich mir mal den Liedtitel (Soundcloud) angesehen. Der beinhaltet ein "|". Kann es sein, dass daher der Parsing-Error entsteht? Das "Lied" habe ich einfach in meinen Likes drin.
          Hast du zufällig eine Idee wie man das fixen könnte?

          Schöne Grüße

          W Offline
          W Offline
          withstu
          schrieb am zuletzt editiert von
          #140

          @Stueckinger Oh das ist natürlich blöd. Mit der Pipe | wurden die Heos Nachrichten gesplittet 🙂 Jetzt funktioniert es: heos.js

          @Mars Ja der Gong kommt bei mir auch noch nicht mit durch. Hatte gedacht, dass sayit alles in eine mp3 packt...

          S M 2 Antworten Letzte Antwort
          0
          • W withstu

            @Stueckinger Oh das ist natürlich blöd. Mit der Pipe | wurden die Heos Nachrichten gesplittet 🙂 Jetzt funktioniert es: heos.js

            @Mars Ja der Gong kommt bei mir auch noch nicht mit durch. Hatte gedacht, dass sayit alles in eine mp3 packt...

            S Offline
            S Offline
            Stueckinger
            schrieb am zuletzt editiert von
            #141

            @withstu super, dankeschön. Das hat funktioniert.
            Man kann nur auf Favoriten - sprich Radiosender - zugreifen, oder? (Presets)
            Meine Playlists tauchen leider nicht auf.

            W 1 Antwort Letzte Antwort
            0
            • XsevX Offline
              XsevX Offline
              Xsev
              schrieb am zuletzt editiert von Xsev
              #142

              Hallo zusammen,
              ich musste heute ein Backup von heute morgen einspielen über backitup wegen einer Vis View.... Seit dem Zeitpunkt des neuen Backups wird mein Java Adapter beendet sobald ich das Heos Skript aktiviere. Das passiert mit meinem alten Skript was bisher lief aber auch wenn ich das neue von ende 2019 nehme, welches ich gerade getestet habe.

              Was mich total verwundert ist, das gleich der ganze Adapter 4.6.17 auf rot geht.

              Node.js
              v12.18.1
              NPM
              6.14.4

              Es kommt folgende Meldung

              host.Homeserver	2020-06-19 17:46:59.368	info	Restart adapter system.adapter.javascript.0 because enabled
              host.Homeserver	2020-06-19 17:46:59.367	error	instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
              host.Homeserver	2020-06-19 17:46:59.367	error	Caught by controller[0]: at processTicksAndRejections (internal/process/task_queues.js:84:21)
              host.Homeserver	2020-06-19 17:46:59.367	error	Caught by controller[0]: at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
              host.Homeserver	2020-06-19 17:46:59.367	error	Caught by controller[0]: at emitErrorNT (internal/streams/destroy.js:92:8)
              host.Homeserver	2020-06-19 17:46:59.367	error	Caught by controller[0]: at Socket.EventEmitter.emit (domain.js:482:12)
              host.Homeserver	2020-06-19 17:46:59.367	error	Caught by controller[0]: at Socket.emit (events.js:315:20)
              host.Homeserver	2020-06-19 17:46:59.367	error	Caught by controller[0]: at Socket.<anonymous> (script.js.HIFI.Heos:629:18)
              host.Homeserver	2020-06-19 17:46:59.366	error	Caught by controller[0]: at Heos.disconnect (script.js.HIFI.Heos:543:30)
              host.Homeserver	2020-06-19 17:46:59.364	error	Caught by controller[0]: TypeError: this.nodessdp_client.destroy is not a function
              javascript.0	2020-06-19 17:46:59.308	info	(15005) script.js.HIFI.Heos: registered 1 subscription and 0 schedules
              javascript.0	2020-06-19 17:46:59.265	info	(15005) script.js.HIFI.Heos: [Heos] connecting to HEOS ...
              javascript.0	2020-06-19 17:46:59.257	info	(15005) Start javascript script.js.HIFI.Heos
              

              2020-06-19.png

              1 Antwort Letzte Antwort
              0
              • S Stueckinger

                @withstu super, dankeschön. Das hat funktioniert.
                Man kann nur auf Favoriten - sprich Radiosender - zugreifen, oder? (Presets)
                Meine Playlists tauchen leider nicht auf.

                W Offline
                W Offline
                withstu
                schrieb am zuletzt editiert von
                #143

                @Stueckinger Prinzipiell kann man auf alles zugreifen. Habe die Playlists und Sources inkl. Play Buttons hinzugefügt: heos.js

                1 Antwort Letzte Antwort
                0
                • W withstu

                  @Stueckinger Oh das ist natürlich blöd. Mit der Pipe | wurden die Heos Nachrichten gesplittet 🙂 Jetzt funktioniert es: heos.js

                  @Mars Ja der Gong kommt bei mir auch noch nicht mit durch. Hatte gedacht, dass sayit alles in eine mp3 packt...

                  M Offline
                  M Offline
                  Mars
                  schrieb am zuletzt editiert von
                  #144

                  @withstu weißt du ob das mit den neuen Home 150 oder größer besser/anders ist?`
                  Ich habe nämlich noch eine alte HEOS HomeCinema Soundbar. Die Frage ist wenn ich jetzt eine neue Home 150 Box kaufe und dann diese anspreche und die alte soundbar in die gleiche Gruppe nehme, Verbesserung verspricht.

                  Gibt es eine andere sinnvolle Lösung die HEOS Box als SmartHome Sprachrohr zu nutzen mit oder ohen sayit adapter?

                  1 Antwort Letzte Antwort
                  0
                  • C Offline
                    C Offline
                    chrisblu
                    schrieb am zuletzt editiert von
                    #145

                    @Mars @withstu Ich könnte mir vorstellen, dass der Grund warum der Gong nicht gespielt wird, die Pufferungszeit vom Heos ist. Wenn ich ein mp3 Abspiele werden immer erst 5 Sekunden lautlos gespielt, bevor ich was höre.
                    Versucht doch mal, vor den Gong z.B. leere 5 Sekunden in das mp3 zu packen.
                    Ich schätze, dass sich das bei neueren Boxen auch nicht anders verhält, weil das System den Puffer braucht, um mehrere Boxen synchron spielen zu können.
                    Nur ein Gedankenanstoß, vielleicht hilfts.
                    Viele Grüße Christian

                    1 Antwort Letzte Antwort
                    0
                    • C Offline
                      C Offline
                      chrisblu
                      schrieb am zuletzt editiert von
                      #146

                      Hallo @withstu,
                      das Skript lief in der Version 2.0 vom Anfang Mai super, ist aber am Freitag nach dem Update der Heos-Boxen abgeschmiert und hat mir das Log gescheit mit Information gefüllt. Die Heos-App hat ein Update verlangt, ich habe dann alle Boxen gleich mit upgedated. Im Log ist folgendes passiert:

                      Beim Update kam:

                      2020-06-25 19:01:55.020  - warn: javascript.1 (1416) script.js.Steuerung.heos: [Heos] HEOS closed the connection to 192.168.111.20
                      2020-06-25 19:01:55.022  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] reconnecting to HEOS ...
                      2020-06-25 19:01:55.023  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnecting from HEOS ...
                      2020-06-25 19:01:55.025  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] [HEARTBEAT] Stop interval
                      2020-06-25 19:01:55.026  - info: javascript.1 (1416) script.js.Steuerung.heos: [HeosPlayer 1645177266] stopping HEOS player with pid 1645177266 (192.168.111.22)
                      2020-06-25 19:01:55.044  - info: javascript.1 (1416) script.js.Steuerung.heos: [HeosPlayer -140829128] stopping HEOS player with pid -140829128 (192.168.111.23)
                      2020-06-25 19:01:55.065  - info: javascript.1 (1416) script.js.Steuerung.heos: [HeosPlayer -1359970574] stopping HEOS player with pid -1359970574 (192.168.111.20)
                      2020-06-25 19:01:55.085  - error: javascript.1 (1416) script.js.Steuerung.heos: [Heos] Error: This socket has been ended by the other party
                      2020-06-25 19:01:55.086  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] reconnecting to HEOS ...
                      2020-06-25 19:01:55.086  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnecting from HEOS ...
                      2020-06-25 19:01:55.087  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] [HEARTBEAT] Stop interval
                      2020-06-25 19:01:55.088  - error: javascript.1 (1416) script.js.Steuerung.heos: [Heos] Error: This socket has been ended by the other party
                      2020-06-25 19:01:55.088  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] reconnecting to HEOS ...
                      2020-06-25 19:01:55.088  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnecting from HEOS ...
                      2020-06-25 19:01:55.088  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] [HEARTBEAT] Stop interval
                      

                      Innerhalb von 2 Sekunden wurden hier ca. 1500 mal diese 4 Zeilen geschrieben.
                      Dann kam diese Meldung, aber nur ca. 80 mal:

                      2020-06-25 19:02:10.461  - error: javascript.1 (1416) script.js.Steuerung.heos: [Heos] sendMsg: Maximum call stack size exceeded
                      

                      Weiter gings ca. 1500x mit folgender Meldung:

                      2020-06-25 19:02:11.831  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnected from HEOS
                      

                      und

                      2020-06-25 19:02:24.383  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] searching for HEOS devices ...
                      

                      und dann bis ichs gemerkt habe (ca. 400k Einträge in 2h):

                      2020-06-25 19:02:48.835  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] still searching for HEOS devices ...
                      

                      Ich habe dann den iobroker neu gestartet. Wahrscheinlich hätte ein Restart des javascript Adapters auch gereicht? aber ich habe den broker eh angehalten wegen mehrfacher Updates.

                      Irgendwie hat wohl das Update der Boxen das Skript bzw. den Adapter verwirrt.
                      Wenn ich alle Boxen ausstecke, dann kommt zwar auch "searching", jedoch nur im 30s-Takt.

                      Hier wäre es eventuell günstiger, den Ausgabe bzw. auch den Verbindungsversuch zu minimieren, dass der nicht im ms-Takt einen Reconnect versucht.

                      Auch scheint hier das Heartbeat Intervall (15s) nicht zu greifen? Oder wird das nur angewendet, wenn die Verbindung aufgebaut ist?

                      Viele Grüße
                      Christian

                      B W 2 Antworten Letzte Antwort
                      0
                      • C chrisblu

                        Hallo @withstu,
                        das Skript lief in der Version 2.0 vom Anfang Mai super, ist aber am Freitag nach dem Update der Heos-Boxen abgeschmiert und hat mir das Log gescheit mit Information gefüllt. Die Heos-App hat ein Update verlangt, ich habe dann alle Boxen gleich mit upgedated. Im Log ist folgendes passiert:

                        Beim Update kam:

                        2020-06-25 19:01:55.020  - warn: javascript.1 (1416) script.js.Steuerung.heos: [Heos] HEOS closed the connection to 192.168.111.20
                        2020-06-25 19:01:55.022  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] reconnecting to HEOS ...
                        2020-06-25 19:01:55.023  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnecting from HEOS ...
                        2020-06-25 19:01:55.025  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] [HEARTBEAT] Stop interval
                        2020-06-25 19:01:55.026  - info: javascript.1 (1416) script.js.Steuerung.heos: [HeosPlayer 1645177266] stopping HEOS player with pid 1645177266 (192.168.111.22)
                        2020-06-25 19:01:55.044  - info: javascript.1 (1416) script.js.Steuerung.heos: [HeosPlayer -140829128] stopping HEOS player with pid -140829128 (192.168.111.23)
                        2020-06-25 19:01:55.065  - info: javascript.1 (1416) script.js.Steuerung.heos: [HeosPlayer -1359970574] stopping HEOS player with pid -1359970574 (192.168.111.20)
                        2020-06-25 19:01:55.085  - error: javascript.1 (1416) script.js.Steuerung.heos: [Heos] Error: This socket has been ended by the other party
                        2020-06-25 19:01:55.086  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] reconnecting to HEOS ...
                        2020-06-25 19:01:55.086  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnecting from HEOS ...
                        2020-06-25 19:01:55.087  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] [HEARTBEAT] Stop interval
                        2020-06-25 19:01:55.088  - error: javascript.1 (1416) script.js.Steuerung.heos: [Heos] Error: This socket has been ended by the other party
                        2020-06-25 19:01:55.088  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] reconnecting to HEOS ...
                        2020-06-25 19:01:55.088  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnecting from HEOS ...
                        2020-06-25 19:01:55.088  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] [HEARTBEAT] Stop interval
                        

                        Innerhalb von 2 Sekunden wurden hier ca. 1500 mal diese 4 Zeilen geschrieben.
                        Dann kam diese Meldung, aber nur ca. 80 mal:

                        2020-06-25 19:02:10.461  - error: javascript.1 (1416) script.js.Steuerung.heos: [Heos] sendMsg: Maximum call stack size exceeded
                        

                        Weiter gings ca. 1500x mit folgender Meldung:

                        2020-06-25 19:02:11.831  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnected from HEOS
                        

                        und

                        2020-06-25 19:02:24.383  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] searching for HEOS devices ...
                        

                        und dann bis ichs gemerkt habe (ca. 400k Einträge in 2h):

                        2020-06-25 19:02:48.835  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] still searching for HEOS devices ...
                        

                        Ich habe dann den iobroker neu gestartet. Wahrscheinlich hätte ein Restart des javascript Adapters auch gereicht? aber ich habe den broker eh angehalten wegen mehrfacher Updates.

                        Irgendwie hat wohl das Update der Boxen das Skript bzw. den Adapter verwirrt.
                        Wenn ich alle Boxen ausstecke, dann kommt zwar auch "searching", jedoch nur im 30s-Takt.

                        Hier wäre es eventuell günstiger, den Ausgabe bzw. auch den Verbindungsversuch zu minimieren, dass der nicht im ms-Takt einen Reconnect versucht.

                        Auch scheint hier das Heartbeat Intervall (15s) nicht zu greifen? Oder wird das nur angewendet, wenn die Verbindung aufgebaut ist?

                        Viele Grüße
                        Christian

                        B Offline
                        B Offline
                        Brati
                        schrieb am zuletzt editiert von
                        #147

                        @chrisblu

                        Das Update führt wohl selbst auch zu Problemen...

                        Caschys Blog: Denon Heos: Probleme nach Firmware-Update.
                        http://feedproxy.google.com/~r/stadt-bremerhaven/dqXM/~3/tPazcUOP0Ys/

                        Könnte also auch daran liegen.

                        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
                        • C chrisblu

                          Hallo @withstu,
                          das Skript lief in der Version 2.0 vom Anfang Mai super, ist aber am Freitag nach dem Update der Heos-Boxen abgeschmiert und hat mir das Log gescheit mit Information gefüllt. Die Heos-App hat ein Update verlangt, ich habe dann alle Boxen gleich mit upgedated. Im Log ist folgendes passiert:

                          Beim Update kam:

                          2020-06-25 19:01:55.020  - warn: javascript.1 (1416) script.js.Steuerung.heos: [Heos] HEOS closed the connection to 192.168.111.20
                          2020-06-25 19:01:55.022  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] reconnecting to HEOS ...
                          2020-06-25 19:01:55.023  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnecting from HEOS ...
                          2020-06-25 19:01:55.025  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] [HEARTBEAT] Stop interval
                          2020-06-25 19:01:55.026  - info: javascript.1 (1416) script.js.Steuerung.heos: [HeosPlayer 1645177266] stopping HEOS player with pid 1645177266 (192.168.111.22)
                          2020-06-25 19:01:55.044  - info: javascript.1 (1416) script.js.Steuerung.heos: [HeosPlayer -140829128] stopping HEOS player with pid -140829128 (192.168.111.23)
                          2020-06-25 19:01:55.065  - info: javascript.1 (1416) script.js.Steuerung.heos: [HeosPlayer -1359970574] stopping HEOS player with pid -1359970574 (192.168.111.20)
                          2020-06-25 19:01:55.085  - error: javascript.1 (1416) script.js.Steuerung.heos: [Heos] Error: This socket has been ended by the other party
                          2020-06-25 19:01:55.086  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] reconnecting to HEOS ...
                          2020-06-25 19:01:55.086  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnecting from HEOS ...
                          2020-06-25 19:01:55.087  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] [HEARTBEAT] Stop interval
                          2020-06-25 19:01:55.088  - error: javascript.1 (1416) script.js.Steuerung.heos: [Heos] Error: This socket has been ended by the other party
                          2020-06-25 19:01:55.088  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] reconnecting to HEOS ...
                          2020-06-25 19:01:55.088  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnecting from HEOS ...
                          2020-06-25 19:01:55.088  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] [HEARTBEAT] Stop interval
                          

                          Innerhalb von 2 Sekunden wurden hier ca. 1500 mal diese 4 Zeilen geschrieben.
                          Dann kam diese Meldung, aber nur ca. 80 mal:

                          2020-06-25 19:02:10.461  - error: javascript.1 (1416) script.js.Steuerung.heos: [Heos] sendMsg: Maximum call stack size exceeded
                          

                          Weiter gings ca. 1500x mit folgender Meldung:

                          2020-06-25 19:02:11.831  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] disconnected from HEOS
                          

                          und

                          2020-06-25 19:02:24.383  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] searching for HEOS devices ...
                          

                          und dann bis ichs gemerkt habe (ca. 400k Einträge in 2h):

                          2020-06-25 19:02:48.835  - info: javascript.1 (1416) script.js.Steuerung.heos: [Heos] still searching for HEOS devices ...
                          

                          Ich habe dann den iobroker neu gestartet. Wahrscheinlich hätte ein Restart des javascript Adapters auch gereicht? aber ich habe den broker eh angehalten wegen mehrfacher Updates.

                          Irgendwie hat wohl das Update der Boxen das Skript bzw. den Adapter verwirrt.
                          Wenn ich alle Boxen ausstecke, dann kommt zwar auch "searching", jedoch nur im 30s-Takt.

                          Hier wäre es eventuell günstiger, den Ausgabe bzw. auch den Verbindungsversuch zu minimieren, dass der nicht im ms-Takt einen Reconnect versucht.

                          Auch scheint hier das Heartbeat Intervall (15s) nicht zu greifen? Oder wird das nur angewendet, wenn die Verbindung aufgebaut ist?

                          Viele Grüße
                          Christian

                          W Offline
                          W Offline
                          withstu
                          schrieb am zuletzt editiert von
                          #148

                          Hey @chrisblu,
                          hatte gerade mal das Debugging eingeschaltet und dabei ein HEOS Player aktualisiert. Bei mir gab es keine Probleme. Das Script trennt die Verbindung, falls der Heartbeat fehlschlägt und reconnected, wenn der Player nach dem Update gefunden wurde.
                          Die reconnect Funktion wird immer aufgerufen, falls HEOS Fehler wirft oder die Verbindung fehlerhaft ist. Nach dem disconnect wird dann 5 Sekunden gewartet, um eine neue Verbindung aufzubauen. Leider gab es hier keine Beschränkung wie oft diese Funktion ausgeführt wird. Bei vielen Fehlern würden auch die reconnect Funktion sehr oft aufgerufen werden. Habe jetzt im Script versucht das wiederholte Ausführen der reconnect Funktion zu unterbinden. Ich hoffe, dass dadurch der Fehler Geschichte ist.
                          Der Heartbeat wird übrigens nur aktiviert, falls es eine Verbindung zu einem HEOS Player gibt. Bei einem reconnect/disconnect wird der Heartbeat ausgeschaltet.

                          @Mars Da sich die Schnittstelle bei den neuen Playern nicht geändert hat, wird es da auch nicht besser funktionieren. Problem mit dem Gong und sayit ist, dass sayit den Gong und den Text hintereinander unter der selben URL veröffentlicht (Die Datei wird nach dem Gong mit der Text mp3 ersetzt). Dadurch müsste mein Script quasi zweimal im richtigen Moment play_stream ausführen und dafür die Längen der beiden mp3s kennen. Dafür habe ich aktuell noch keine Lösung. Der Sonos Adapter arbeitet da wohl mit einer Queue https://github.com/ioBroker/ioBroker.sonos/blob/master/lib/tts.js. Durch die Integration von Sonos im sayit Adapter wird zudem für den Gong und den Text jeweils ein Update auf dem tts state durchgeführt.

                          Script: heos.js

                          M 1 Antwort Letzte Antwort
                          0
                          • C Offline
                            C Offline
                            chrisblu
                            schrieb am zuletzt editiert von
                            #149

                            Hallo @withstu, vielen Dank für deine Mühe, ich habe das neue Skript eingespielt. Werde wieder berichten.

                            @Brati danke für den Link. Die Info ist ja recht schwammig, aber dann ist ja zumindest davon auszugehen, dass die bald mal noch ein Update nachschieben 🙂

                            Viele Grüße
                            Christian

                            1 Antwort Letzte Antwort
                            0
                            • W withstu

                              Hey @chrisblu,
                              hatte gerade mal das Debugging eingeschaltet und dabei ein HEOS Player aktualisiert. Bei mir gab es keine Probleme. Das Script trennt die Verbindung, falls der Heartbeat fehlschlägt und reconnected, wenn der Player nach dem Update gefunden wurde.
                              Die reconnect Funktion wird immer aufgerufen, falls HEOS Fehler wirft oder die Verbindung fehlerhaft ist. Nach dem disconnect wird dann 5 Sekunden gewartet, um eine neue Verbindung aufzubauen. Leider gab es hier keine Beschränkung wie oft diese Funktion ausgeführt wird. Bei vielen Fehlern würden auch die reconnect Funktion sehr oft aufgerufen werden. Habe jetzt im Script versucht das wiederholte Ausführen der reconnect Funktion zu unterbinden. Ich hoffe, dass dadurch der Fehler Geschichte ist.
                              Der Heartbeat wird übrigens nur aktiviert, falls es eine Verbindung zu einem HEOS Player gibt. Bei einem reconnect/disconnect wird der Heartbeat ausgeschaltet.

                              @Mars Da sich die Schnittstelle bei den neuen Playern nicht geändert hat, wird es da auch nicht besser funktionieren. Problem mit dem Gong und sayit ist, dass sayit den Gong und den Text hintereinander unter der selben URL veröffentlicht (Die Datei wird nach dem Gong mit der Text mp3 ersetzt). Dadurch müsste mein Script quasi zweimal im richtigen Moment play_stream ausführen und dafür die Längen der beiden mp3s kennen. Dafür habe ich aktuell noch keine Lösung. Der Sonos Adapter arbeitet da wohl mit einer Queue https://github.com/ioBroker/ioBroker.sonos/blob/master/lib/tts.js. Durch die Integration von Sonos im sayit Adapter wird zudem für den Gong und den Text jeweils ein Update auf dem tts state durchgeführt.

                              Script: heos.js

                              M Offline
                              M Offline
                              Mars
                              schrieb am zuletzt editiert von
                              #150

                              @withstu Ja mit Gong und anschließender Ansage bekomme ich auch nicht vernünftig zum laufen.
                              Generell ist die 5 sec. Zeitverzögerung für eine Haustürklingel nicht ganz optimal. Manchmal geht es auch deutlich länger, wenn in meinem Fall die Soundbar im "sleep" ist.
                              Ich habe vor meinen Gong jetzt 5 sec. Leerlauf eingebaut. Der Gong kommt so immer sauber durch aber halt manchmal recht spät.
                              Zudem muss man wissen wie lange der Gong in etwa läuft um dann wieder ein "Stop" an den Heos Lautsprecher zu schicken sonst läuft dieser in Endlosschleife!
                              Wenn jemand hier Tips hat darf er diese gerne äußern!
                              Danke!

                              W C 2 Antworten Letzte Antwort
                              0
                              • M Mars

                                @withstu Ja mit Gong und anschließender Ansage bekomme ich auch nicht vernünftig zum laufen.
                                Generell ist die 5 sec. Zeitverzögerung für eine Haustürklingel nicht ganz optimal. Manchmal geht es auch deutlich länger, wenn in meinem Fall die Soundbar im "sleep" ist.
                                Ich habe vor meinen Gong jetzt 5 sec. Leerlauf eingebaut. Der Gong kommt so immer sauber durch aber halt manchmal recht spät.
                                Zudem muss man wissen wie lange der Gong in etwa läuft um dann wieder ein "Stop" an den Heos Lautsprecher zu schicken sonst läuft dieser in Endlosschleife!
                                Wenn jemand hier Tips hat darf er diese gerne äußern!
                                Danke!

                                W Offline
                                W Offline
                                withstu
                                schrieb am zuletzt editiert von
                                #151

                                @Mars Eine Idee wäre den Gong in eine HEOS Playlist zu packen und über die neuen Playlist States (0_userdata.0.heos.playlists.ID.play) das Abspielen zu triggern. Dauert auch bei mehreren Playern nicht länger als 2 Sekunden. Vorher sollte Shuffle noch deaktiviert werden (player/set_play_mode&shuffle=off) bzw. Repeat (player/set_play_mode&repeat=off). Wenn die Playlist einmal abgespielt wurde, stoppen die Player die Wiedergabe. Bei dieser Variante ist natürlich die gespielte Musik verloren und müsste wieder gestartet werden. Leider speichert HEOS in den Playlists kein Url Stream und damit wäre TTS aus dem Rennen.

                                M 1 Antwort Letzte Antwort
                                0
                                • M Mars

                                  @withstu Ja mit Gong und anschließender Ansage bekomme ich auch nicht vernünftig zum laufen.
                                  Generell ist die 5 sec. Zeitverzögerung für eine Haustürklingel nicht ganz optimal. Manchmal geht es auch deutlich länger, wenn in meinem Fall die Soundbar im "sleep" ist.
                                  Ich habe vor meinen Gong jetzt 5 sec. Leerlauf eingebaut. Der Gong kommt so immer sauber durch aber halt manchmal recht spät.
                                  Zudem muss man wissen wie lange der Gong in etwa läuft um dann wieder ein "Stop" an den Heos Lautsprecher zu schicken sonst läuft dieser in Endlosschleife!
                                  Wenn jemand hier Tips hat darf er diese gerne äußern!
                                  Danke!

                                  C Offline
                                  C Offline
                                  chrisblu
                                  schrieb am zuletzt editiert von chrisblu
                                  #152

                                  @Mars Mir kommt da als Quelle noch ein mp3 auf einem USB-Stick direkt in der Box in den Sinn. Könnte schneller gehen, aber ob man das ansteuern kann? Ein Versuch wärs Wert. Das Problem mit der unterbrochenen/ abgebrochenen Musik wird da aber wohl auch auftreten. Vielleicht könnte man den aktuellen Status durch ein Skript vor dem Auslösen auslesen und dann wieder weiterspielen?
                                  Viele Grüße Christian

                                  1 Antwort Letzte Antwort
                                  0
                                  • W withstu

                                    @Mars Eine Idee wäre den Gong in eine HEOS Playlist zu packen und über die neuen Playlist States (0_userdata.0.heos.playlists.ID.play) das Abspielen zu triggern. Dauert auch bei mehreren Playern nicht länger als 2 Sekunden. Vorher sollte Shuffle noch deaktiviert werden (player/set_play_mode&shuffle=off) bzw. Repeat (player/set_play_mode&repeat=off). Wenn die Playlist einmal abgespielt wurde, stoppen die Player die Wiedergabe. Bei dieser Variante ist natürlich die gespielte Musik verloren und müsste wieder gestartet werden. Leider speichert HEOS in den Playlists kein Url Stream und damit wäre TTS aus dem Rennen.

                                    M Offline
                                    M Offline
                                    Mars
                                    schrieb am zuletzt editiert von
                                    #153

                                    @withstu das hatte ich in einer Playlist gemacht, jedoch wusste ich noch nicht wie man eine Playlist abspielt. Das ist ja aber jetzt mit einem Datenpunkt sehr einfach geworden. Also der Klingel Gong wird so zuverlässig eingespielt. Habe noch 2 sec. Leerlauf vor den Gong gepackt, dann kommt dieser sauber durch.
                                    Mein Ziel wäre es eigtl. Alexa zu ersetzen als Ausgabe Lautsprecher da es hier über die Cloud geht.
                                    Für mich als Laie ist unklar was jetzt bei dem sehr umfangreichen Script noch fehlt, dass es wie bei einer Sonos Box mit dem "text to speech" funktioniert?
                                    @chrisblu die Gong MP3 ist auf einem USB direkt an der Box dran. Das mit dem auslesen und wieder einspielen des Status war auch mal mein Gedanke hatte ich aber noch nicht probiert.

                                    K W 2 Antworten Letzte Antwort
                                    0
                                    • M Mars

                                      @withstu das hatte ich in einer Playlist gemacht, jedoch wusste ich noch nicht wie man eine Playlist abspielt. Das ist ja aber jetzt mit einem Datenpunkt sehr einfach geworden. Also der Klingel Gong wird so zuverlässig eingespielt. Habe noch 2 sec. Leerlauf vor den Gong gepackt, dann kommt dieser sauber durch.
                                      Mein Ziel wäre es eigtl. Alexa zu ersetzen als Ausgabe Lautsprecher da es hier über die Cloud geht.
                                      Für mich als Laie ist unklar was jetzt bei dem sehr umfangreichen Script noch fehlt, dass es wie bei einer Sonos Box mit dem "text to speech" funktioniert?
                                      @chrisblu die Gong MP3 ist auf einem USB direkt an der Box dran. Das mit dem auslesen und wieder einspielen des Status war auch mal mein Gedanke hatte ich aber noch nicht probiert.

                                      K Offline
                                      K Offline
                                      Klaus Baumecker
                                      schrieb am zuletzt editiert von
                                      #154

                                      Hi,
                                      möglicherweise kam die Frage schon, aber kann man rausbekommen, ob auf einen der Quick-Select buttons gedrückt worden ist?

                                      Mein Use-Case: Wenn ich im Bad die (1) drücke, dann soll das gleiche gespielt werden, was gerade im Wohnzimmer läuft.

                                      Grüße,
                                      klaus

                                      ioBroker on raspi 4B, SSD, IKEA Tradfri Gateway & bulbs, Homematic CCU2, Zigbee stick

                                      1 Antwort Letzte Antwort
                                      0
                                      • M Mars

                                        @withstu das hatte ich in einer Playlist gemacht, jedoch wusste ich noch nicht wie man eine Playlist abspielt. Das ist ja aber jetzt mit einem Datenpunkt sehr einfach geworden. Also der Klingel Gong wird so zuverlässig eingespielt. Habe noch 2 sec. Leerlauf vor den Gong gepackt, dann kommt dieser sauber durch.
                                        Mein Ziel wäre es eigtl. Alexa zu ersetzen als Ausgabe Lautsprecher da es hier über die Cloud geht.
                                        Für mich als Laie ist unklar was jetzt bei dem sehr umfangreichen Script noch fehlt, dass es wie bei einer Sonos Box mit dem "text to speech" funktioniert?
                                        @chrisblu die Gong MP3 ist auf einem USB direkt an der Box dran. Das mit dem auslesen und wieder einspielen des Status war auch mal mein Gedanke hatte ich aber noch nicht probiert.

                                        W Offline
                                        W Offline
                                        withstu
                                        schrieb am zuletzt editiert von
                                        #155

                                        @Mars Das Problem ist hier die HEOS API. Es gibt nur eine play_stream Funktion, die einen Stream sofort abgespielt. Für unsere TTS Funktion bräuchten wir aber eher eine Funktion, die den Stream lediglich zur Queue hinzufügt, aber nicht abspielt. So ist es quasi unmöglich mehrere Streams (Gong + TTS) hintereinander abzuspielen. Zudem ist der Sonos Adapter in den SayIt Adapter integriert und hat so die Dauer der Audiofiles zur Verfügung.

                                        @Klaus-Baumecker Es gibt kein Event dafür, um das zu erkennen. Workaround könnte sein, dass du hinter dem Quickselect ein stilles Lied mit einem bestimmten Lied Titel hinterlegst und dann ein Script den Liedtitel überwachen lässt.

                                        Btw. mir ist aufgefallen, dass die States der Gruppen nicht richtig funktioniert haben. Deswegen gibts ne neue Version: heos.js

                                        K 1 Antwort Letzte Antwort
                                        0
                                        • W withstu

                                          @Mars Das Problem ist hier die HEOS API. Es gibt nur eine play_stream Funktion, die einen Stream sofort abgespielt. Für unsere TTS Funktion bräuchten wir aber eher eine Funktion, die den Stream lediglich zur Queue hinzufügt, aber nicht abspielt. So ist es quasi unmöglich mehrere Streams (Gong + TTS) hintereinander abzuspielen. Zudem ist der Sonos Adapter in den SayIt Adapter integriert und hat so die Dauer der Audiofiles zur Verfügung.

                                          @Klaus-Baumecker Es gibt kein Event dafür, um das zu erkennen. Workaround könnte sein, dass du hinter dem Quickselect ein stilles Lied mit einem bestimmten Lied Titel hinterlegst und dann ein Script den Liedtitel überwachen lässt.

                                          Btw. mir ist aufgefallen, dass die States der Gruppen nicht richtig funktioniert haben. Deswegen gibts ne neue Version: heos.js

                                          K Offline
                                          K Offline
                                          Klaus Baumecker
                                          schrieb am zuletzt editiert von Klaus Baumecker
                                          #156

                                          @withstu Das mit dem stillen Lied hatte ich mir auch schon überlegt. Bzw einen URL, der direkt das Web-API vom iobroker anspricht. Ich werde das demnächst mal probieren und berichte dann.

                                          Ich hatte übrigens auch einen Fehler im Script entdeckt: Beim scannen nach HEOS devices wird bei mir ein ungültiges device gefunden. Daraufhin bricht die Suche ab. Ich checke mal das neue von Dir bei Gelegenheit. Vielleicht sollte man es auch nach Github schieben. Dann kann man besser mir issues und PRs arbeiten.

                                          ioBroker on raspi 4B, SSD, IKEA Tradfri Gateway & bulbs, Homematic CCU2, Zigbee stick

                                          D 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

                                          729

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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