NEWS
[Vorlage] Denon HEOS Script
-
@withstu sagte in [Vorlage] Denon HEOS Script:
Ich habe in den letzten Tagen noch ein paar Bugs gefixt
Super, wenn ich Zeit finde (ist ja bald Ostern), schau ich rein und übernehme es. Hinweis: Wenn du das Script hier als code postest, versieht es das Forum mit zufällligen {1} Einträgen; besser ist es das Script als Datei (z.B.: heos.js) hochzuladen.
-
Ich habe für jeden Lautsprecher einen Ping Adapter angelegt. Sobald sich da was ändert und in den HEOS Objekten der Player noch nicht verbunden ist, starte ich das Script neu (bei mir sind die Player nicht dauerhaft verbunden).
Ich komme gerade erst dazu mir das mit der Ping-Überprüfung anzuschauen. Ist das mit dem neuen Skript überhaupt noch erforderlich? Wahrscheinlich ja, weil bei mir sind immer wieder Boxen nicht erreichbar.
Du schreibst, das ist ein Blockly-Skript, aber die Definition sieht eher aus wie ein Java-Script. Könntest Du mir das als Blockly exportieren, oder hast du das in Java umgewandelt.Vielen Dank auf jeden Fall für Eure Mühen, das Heos Skript läuft sonst sehr gut bei mir.
Danke,
Christian -
@chrisblu Mit der zweiten Version ist der Ping Adapter nicht mehr notwendig und auch ein Neustart des Scripts ist nicht mehr erforderlich. Mein Script läuft mittlerweile seit über einer Woche stabil und erkennt automatisch Player die neu hinzukommen oder ausgeschaltet werden. In der nachfolgenden Version habe ich noch Fehler in dem Heartbeat Mechanismus gelöst. Das einzige was mich noch stört ist das Feld "last error", welches nach der Lösung des Fehlers nicht geleert wird. So wird der Fehler bei mir im vis noch angezeigt, obwohl er nicht mehr besteht. Mal schauen, ob mir in den nächsten Tagen noch was dazu einfällt: HEOS.json
-
@withstu Vielen Dank für die aktuelle Version des Skripts. Während die letzte Fassung bei mir regelmäßig abgestürzt ist (das Pausezeichen in den Skripts war gelb und nichts ging mehr bis ich den Javascript-Adapter wieder gestartet hab), läuft dieses jetzt scheinbar stabil.
Das mit dem last error finde ich nicht ganz so schlimm, da man ja am TimeStamp erkennt, wann der aufgetreten ist. Könnte man vielleicht zum last error einen Flag einführen, ob der Fehler noch anhält oder nicht?
Aber super Skript...
vielen Dank
Christian -
-
Komisch, irgendwas läuft da falsch. Bem Erststart nach ioBroker-Neustart möchte sich das Script mit meiner Hue-Bridge (...72:1255) verbinden. Wie ist das zu erklären, jemand eine Idee?
Beim Neustart des Scripts wird keine Verbindung mehr zur Hue-Bridge gesucht und das Script läuft fehlerfrei.
javascript.1 2020-04-14 18:47:06.030 info (18421) Stop script script.js.java.sonstige.heos javascript.1 2020-04-14 18:46:25.905 error (18421) at process._tickCallback (internal/process/next_tick.js:63:19) javascript.1 2020-04-14 18:46:25.905 error (18421) at emitErrorAndCloseNT (internal/streams/destroy.js:59:3) javascript.1 2020-04-14 18:46:25.904 error (18421) at emitErrorNT (internal/streams/destroy.js:91:8) javascript.1 2020-04-14 18:46:25.904 error (18421) at Socket.emit (events.js:198:13) javascript.1 2020-04-14 18:46:25.904 error (18421) at Socket.net_client.on (script.js.java.sonstige.heos:384:18) javascript.1 2020-04-14 18:46:25.904 error (18421) at Heos.disconnect (script.js.java.sonstige.heos:298:30) javascript.1 2020-04-14 18:46:25.903 error (18421) script.js.java.sonstige.heos: TypeError: this.nodessdp_client.destroy is not a function javascript.1 2020-04-14 18:46:25.902 info (18421) script.js.java.sonstige.heos: [Heos] disconnecting from HEOS ... javascript.1 2020-04-14 18:46:25.901 error (18421) script.js.java.sonstige.heos: [Heos] Error: connect ECONNREFUSED 192.168.178.72:1255 javascript.1 2020-04-14 18:46:25.891 info (18421) script.js.java.sonstige.heos: [Heos] connecting to 192.168.178.72 ... javascript.1 2020-04-14 18:46:25.758 info (18421) script.js.java.sonstige.heos: registered 1 subscription and 0 schedules javascript.1 2020-04-14 18:46:25.754 info (18421) script.js.java.sonstige.heos: [Heos] connecting to HEOS ... javascript.1 2020-04-14 18:46:25.730 info (18421) Start javascript script.js.java.sonstige.heos
-
@Meister-Mopper Welche Version verwendest du denn? Diesen Fehler hatte ich damals auch und hatte den Fehler bereits in folgendem Beitrag gefixt: https://forum.iobroker.net/topic/10420/vorlage-denon-heos-script/93
Das Problem ist, dass das Filtern der Pakete von node-ssdp nicht korrekt durchgeführt wird und versucht wurde sich mit dem ersten Paket was reinkommt zu verbinden. Das kann auch mal ein Hue Paket sein.
Ich hatte bei mir die folgende Überprüfung in die onNodeSSDPResponse Funktion eingebaut.if (headers.ST !== this.ssdpSearchTargetName) { // korrektes SSDP this.logDebug('onNodeSSDPResponse: Getting wrong SSDP entry. Keep trying...'); } else {
-
@withstu Ich nutze eine alte Version aus dem vorigen Jahr, weil ich die neue (aus dem ersten Beitrag) nicht zum Laufen bekomme (s. log)
-
@Meister-Mopper sagte in [Vorlage] Denon HEOS Script:
@withstu Ich nutze eine alte Version aus dem vorigen Jahr, weil ich die neue (aus dem ersten Beitrag) nicht zum Laufen bekomme (s. log)
Änderung: Jetzt habe ich das neue Script in einer zweiten JS-Instanz auf dem Slave-System gestartet, und es funktioniert bisher problemfrei. Das beobachte ich mal.
-
@withstu Hi, das Skript läuft bei mir sehr schön stabil, thumbs up.
Das einzige, was nicht immer klappt, ist der Start mit einem Neustart vom Broker.
Von Zeit zu Zeit stoppe ich meinen Broker manuell, führe die Updates der Adapter durch und starte wieder.
Dabei wird nicht immer das Heos-Skript neu gestartet. Manchmal bekomme ich die Meldung, dass der Socket beendet wurde:
Nach einem weiteren Neustart des Javascript-Adapters startet das Skript dann normal.
Ich könnte mir vorstellen, dass das Skript gestartet wird, bevor irgend eine Abhängigkeit geladen wurde?Ich verwende dein Skript vom 10. April, das trat aber bei der vorhergehenden Version auch schon auf.
Viele Grüße
Christian -
@chrisblu Der Fehler ist mir am Wochenende auch aufgefallen. Konnte ihn aber nicht mehr reproduzieren. Ich habe aber auf Verdacht in der reconnect Methode die stateCONNECTED Prüfung rausgenommen. An der könnte es gelegen haben, dass das Script sich nicht sauber beendet hat: heos.js
In dem Zug habe ich auch die Events für Shuffle und Repeat korrigiert. Die haben bis jetzt noch nie funktioniert. Zudem habe ich zwei Commands hinzugefügt, die alle Player gruppieren bzw. alle Gruppen auflösen. Vielleicht benötigt sie ja jemand:
group/group_all
group/ungroup_all -
@withstu danke, ich habe es eingespielt und werde das Verhalten mal beobachten.
Die group all und ungroup all finde ich sehr praktisch. Werden die in dem übergeordneten command angegeben oder bei dem command der einzelnen Boxen?
Gibt es sowas wie wie ungroup all auch für play? Vor allem Pause all oder Stopp all wäre für mich interessant, weil ich einen Knopf neben der Haustür habe, mit dem ich alle HEOS auschalten kann.
LG Christian -
@chrisblu Gute Idee. Ich hatte das bisher über ein anderes Script gelöst und habe es nun integriert: heos.js Es gibt jetzt drei neuen Commands, die sich über den übergeordneten Command steuern lassen:
"group/ungroup_all" : Löst alle Player Gruppen auf.
"group/group_all" : Gruppiert alle Player in einer Gruppe."player/cmd": Sendet den Command cmd an alle Player.
Bsp:
player/set_play_state&state=pause
player/set_play_state&state=play
player/set_play_state&state=stop -
@withstu Cool, das werde ich gleich mal ausprobieren. Vielen Dank.
Zu deiner Info: Skript läuft seit der letzten Version stabil, Probleme beim Neustart sind bisher nicht mehr aufgetreten.
Viele Grüße
Christian -
@withstu Mir ist da gerade noch was aufgefallen. Bei mir kam gerade beim Starten die Meldung "
script.js.Steuerung.heos: [Heos] result=fail, User_not_logged_in
Im Objekt taucht das in der Fehlermeldung auf, und in dem Feld last_error auf, in error steht aber false. Das Interpretiere ich jetzt mal so, dass die Anmeldung danach scheinbar geklappt hat? Aber sehen kann ich dass nirgends, oder?
Wie wäre es mit einem Objekt "logged_in"?Viele Grüße,
Christian -
-
@withstu super, danke, habe das Skritpt eingespielt.
Vielleicht kurzer Erfahrungsbericht: Skript (also letzte Version) lief sehr stabil. Ich hatte Zwischenzeitlich mal einen Lautsprecher abgeschaltet (vom Strom getrennt). Wurde später wieder gefunden. Läuft alles gut.
Im neuen Skript zeigt er jetzt den Loginnamen und Status an... PrimaLustigerweise ist mir noch Folgendes aufgefallen, ist aber ein Fehler der Heos-App:
Ich habe ein Verzeichnisse mit Hörspielen, jedes eine mp3, die ein Cover drinnen gespeichert hat. Wenn ich mir die über DLNA-Ordneransicht zeigen lasse, haben alle das selbe Bild - da wird scheinbar nur das erste gelesen, im Verzeichnis selber liegt kein Bild. Auch wenn ich die Titel abspiele, wird mir ein falsches Bild angezeigt. In VIS zeige ich mir die URL zum Cover an, da wird das richtige Cover angezeigt. Aber das nur so nebenbei.Viele Grüße,
Christian -
Hallo,
ich interessiere mich auch sehr für das HEOS Script. Leider klappt es bei mir nicht.
Die States ließt er mir Korrekt in die Objekte aus.Aber einen Command zur Steuerung absetzen klappt nicht z.b. Lauter Leiser Mute, so wie im Kommentar beschrieben!!
screenshot.png
Im Script zeigt er mir auch mehrere Fehler an u.a. Findet der anscheinend das node-ssdp nicht. Obwohl ich es unter den Zusätzlichen npm Modulen im Script Adapter hinterlegt habe.Was mache ich Falsch?
Viele Grüße
-
@beowulf123456 zeig mal bitte die Adapterkonfiguration.
-
Hallo, das ist meine Konfiguration.
Die Version des Javascript Adapters die neueste.
Das ganze läuft auf Raspian auf einem Raspi 4Danke sehr