Denon HEOS Steuerung

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

tob
Beiträge: 15
Registriert: 02.11.2016, 14:31

Denon HEOS Steuerung

Beitrag von tob » 02.11.2016, 14:34

Hier im Forum wurde ein Telnet Client vorgestellt der für AV_Receiver Steuerung genutzt werden kann.

CCU1
telnet_client.zip

CCU2
telnet_clientCCU2new.zip

Damit ist es auch möglich die HEOS Systeme von DENON zu steuern. Dieses habe ich vor ca. 1 Jahr auch probiert. Leider funktionierte es immer nur ein paar Stunden. Ich vermute es gab irgendein Timeout. Ich habe es dann aufgegeben, habe aber die Programme in der CCU2 belassen.
Jetzt nach ein paar Updates der CCU2 und der DENON HEOS Firmware funktioniert es auf einmal total zuverlässig, ohne das ich sonst etwas geändert habe!

Installation:

Kopieren (mit SSH) des Telnet Clients auf die CCU in das Verzeichnis /usr/local/addons

Erstellen und kopieren der gewünschten Steuerdateien in das Verzeichnis /usr/local/addons

Mit einem Texteditor die Steuerdatei erstellen:

Hier ein paar Beispiele:

Achtung: Username, Password und PID Nummer auf eure Gegebenheiten anpassen. Befehle und Details finden sich in der HEOS CLI Doku.

on.txt

Code: Alles auswählen

<ACTION>heos://system/sign_in?un=heos_username&pw=password</ACTION>
<ACTION>heos://player/set_play_state?pid=221702901&state=play</ACTION>
<ACTION>heos://player/set_volume?pid=221702901&level=17</ACTION>
pause.txt

Code: Alles auswählen

<ACTION>heos://system/sign_in?un=heos_username&pw=password</ACTION>
<ACTION>heos://player/set_play_state?pid=221702901&state=pause</ACTION>
Anschließend die Berechtigungen für das Programm und die Steuerdateien per SSH auf ausführbar und lesbar einstellen:

Code: Alles auswählen

chmod +rx /usr/local/addons/telnet_clientCCU2
chmod +r /usr/local/addons/on.txt

In der homematic kann mit folgender Zeile der gewünschte Steuerbefehl abgesetzt werden:
Achtung hierzu ist die Voraussetzung ein installiertes CUXD.

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/telnet_clientCCU2 192.168.0.141 1255 /usr/local/addons/on.txt");
Achtung: IP Adresse ändern auf eure HEOS Lautsprecher IP.

Jetzt kann ich endlich Musik beim Badezimmerbesuch automatisch anschalten bzw. beim Verlassen abschalten.

Ich hoffe jemand kann damit etwas anfangen.

VG
Oliver

Brati
Beiträge: 217
Registriert: 22.07.2014, 09:53
Danksagung erhalten: 3 Mal

Re: Denon HEOS Steuerung

Beitrag von Brati » 13.01.2017, 15:34

Hallo Tob,

läuft das bei dir noch? Über Putty kann ich die Boxen mit den verwendeten Befehlen steuern. In der Console über die Homematic scheint alles gesendet zu werden, die Box reagiert aber nicht:

Code: Alles auswählen

TelnetClient(C) by Sascha Hommert contact at: info@saho1.de
Connecting ...
Connection succesfull.

Prompting for create action...
Posting command: [heos://system/sign_in?un=NAME&pw=PW] to Telnetconnection...
Return.
Sending data: heos://system/sign_in?un=NAME&pw=PW ...
Return.
Prompting for create action...
Posting command: [heos://player/set_play_state?pid=1418767639&state=pause] to Telnetconnection...
Return.
Sending data: heos://player/set_play_state?pid=1418767639&state=pause ...
Return.
Connection closed.

Aufruf über Cuxd, SytemExec und direkt in der Consolte getestet.

Grüße

Brati
46 Geräte mit 243 Kanälen, ioBroker auf Intel NUC mit Tab als Frontend.
Projekt Gartenhaus mit HM

GuidoK
Beiträge: 4
Registriert: 13.01.2017, 20:23

Re: Denon HEOS Steuerung

Beitrag von GuidoK » 13.01.2017, 21:50

Hallo,

leider funktioniert die Lösung von Tob/Oliver bei mir ebenfalls nicht.
Ich habe jedoch schon seit längerem eine relativ stabile Lösung bei mir laufen.
Der Gesamtaufbau ist jedoch etwas kompliziert und ich erhoffe mir Anregungen zur Vereinfachung.

Ein Grundproblem bei vielen Versuchen scheint zu sein, dass die Telnetverbindung zu früh wieder abgebaut, bevor die Heos-Geräte die erfolgreiche Ausführung des Befehls bestätigen.
Dieses Problem umgehe ich durch die Nutzung von Expect. Dies führt Skripte im Dialog aus und interpretiert die Rückmeldungen.

Meine Lösung läuft über ein Zusammenspiel von CCU2 und RaspberriPI3.
Auf den RaspberryPI sind installiert:
-Raspbian (Betriebsystem Image)
-Telnet (vermutlich sudo apt-get telnet)
-Expect (vermutlich sudo apt-get expect)
-FHEM (Hausautomation mit Webserver, Installation ggf. googlen)
-FHEM-Plugin GenShellSwitch (Plugin das Skripte als Gerät darstellt - somit per Browser, CURL, WGET ausführbar. Ggf. googlen)


Der Kern des Ganzen sind die Expect-Scripts - Hier ein paar Beispiele:

signing.exp

Code: Alles auswählen

#!/usr/bin/expect
spawn /usr/bin/telnet 192.168.0.7 1255 
expect "Escape character is '^]'." { send "heos://system/sign_in?un=user@domain.de&pw=MeinPasswort\n" }
expect "}}"
expect "}}"

play.exp

Code: Alles auswählen

#!/usr/bin/expect
spawn /usr/bin/telnet 192.168.0.7 1255 
expect "Escape character is '^]'." { send "heos://player/set_play_state?pid=xxxxxxxxxxx&state=play\n" }
expect "}}"

stop.exp

Code: Alles auswählen

#!/usr/bin/expect
spawn /usr/bin/telnet 192.168.0.7 1255 
expect "Escape character is '^]'." { send "heos://player/set_play_state?pid=xxxxxxxxxx&state=stop\n" }
expect "}}"

vol20.exp

Code: Alles auswählen

#!/usr/bin/expect
spawn /usr/bin/telnet 192.168.0.7 1255 
expect "Escape character is '^]'." { send "heos://group/set_volume?gid=xxxxxxxxx&level=20\n" }
expect "}}"

Nach Installation von Expect und Telnet lassen sich die Skripte mit Expect starten:
sudo /usr/bin/expect /home/pi/scripts/play.exp
(Ggf. die anzusprechende HEOS-Box neu starten und danach nur noch per Skript ansprechen.)


Der Rest meiner Konstruktion ist umständlich.
Mit Hilfe von FHEM und dem Plugin GehShellSwitch ermögliche ich mir die Ausführung der Skripte per Browser / WGET / CURL.
Mit der Kombination CCU2, Cuxd-Plugin, CURL rufe ich die von FHEM erzeugten Links dann in Homematic Programmen auf
Genauer würde ich dies nur auf Anfrage beschreiben.

Einfacher wäre es natürlich, wenn man direkt auf der CCU2 Telnet und EXPECT zur Verfügung hätte.
Vielleicht kann das ja mal jemand erforschen.

Viele Grüße,
Guido

Brati
Beiträge: 217
Registriert: 22.07.2014, 09:53
Danksagung erhalten: 3 Mal

Re: Denon HEOS Steuerung

Beitrag von Brati » 14.01.2017, 10:43

Oha,

na das hatte ich mir einfacher vorgestellt, wenn die Box nicht Bluetooth und Akku hätte, würde ich sie glatt zurück schicken und Sonos mit ioBroker nehmen.

IoBroker läuft aber auf einem Debian NUC , also werde ich dort mal die Expect Lösung testen. Die Scripte kann ich aber nicht direkt aus der CCU ausführen richtig? Aus JavaScript im ioBroker sollte es klappen. Auf die Rückmeldung verzichte ich.

Oder hat tob noch einen Hinweis?

Grüße Brati


Gesendet von iPad mit Tapatalk
46 Geräte mit 243 Kanälen, ioBroker auf Intel NUC mit Tab als Frontend.
Projekt Gartenhaus mit HM

GuidoK
Beiträge: 4
Registriert: 13.01.2017, 20:23

Re: Denon HEOS Steuerung

Beitrag von GuidoK » 14.01.2017, 19:34

Hallo,

die Skripte würden vermutlich auf der CCU laufen, wenn man dort Expect installiert bekommt.

Gruß,
Guido

Brati
Beiträge: 217
Registriert: 22.07.2014, 09:53
Danksagung erhalten: 3 Mal

Re: Denon HEOS Steuerung

Beitrag von Brati » 16.01.2017, 22:00

GuidoK hat geschrieben:Hallo,

die Skripte würden vermutlich auf der CCU laufen, wenn man dort Expect installiert bekommt.

Gruß,
Guido
Vielen Dank, es läuft erst mal. Ich rufe die Scripte auf dem NUC aus JavaScript auf:

Code: Alles auswählen

   exec('/usr/bin/expect /opt/skripte/morow.exp', function(err, stdout, stderr) {
    if (err) {
       log(stderr,'error');
       return;
        }
    });
Eine Frage noch. Wie oft nimmt man das SignIn Script? Eigentlich läuft es ohne auch und die Box ist ja auch im HEOS Account....

Jetzt muss ich mir noch eine Visiu basteln und das Scipt auf Variablen umstellen...

Grüße

Brati
46 Geräte mit 243 Kanälen, ioBroker auf Intel NUC mit Tab als Frontend.
Projekt Gartenhaus mit HM

GuidoK
Beiträge: 4
Registriert: 13.01.2017, 20:23

Re: Denon HEOS Steuerung

Beitrag von GuidoK » 17.01.2017, 19:53

Hallo Brati,

ich lasse den SignIn immer durchführen, bevor ich einen Radiosender als Quelle aufrufe.
So funktioniert es für mich. Immer wäre vielleicht nicht nötig, aber irgendwann läuft die Anmeldung ab.
Für den Aufruf lokaler Medien ist der SignIn meiner Erfahrung nach nicht nötig.

Gruß,
Guido

Brati
Beiträge: 217
Registriert: 22.07.2014, 09:53
Danksagung erhalten: 3 Mal

Re: Denon HEOS Steuerung

Beitrag von Brati » 17.01.2017, 21:19

@Guido

Danke noch mal, war gerade am werkeln und so sieht es jetzt aus (noch nicht das final):
HEOS.jpg
HEOS
HEOS.jpg (16.39 KiB) 7288 mal betrachtet
Ein HowTo werde ich bei ioBroker schreiben, weil ein JavaScript dahinter liegt. Auf die Lösung mit Expect wäre ich jedenfalls nicht gekommen.

Grüße

Brati
46 Geräte mit 243 Kanälen, ioBroker auf Intel NUC mit Tab als Frontend.
Projekt Gartenhaus mit HM

NetPirate
Beiträge: 3
Registriert: 16.11.2014, 09:10
Hat sich bedankt: 1 Mal

Re: Denon HEOS Steuerung

Beitrag von NetPirate » 18.07.2018, 19:05

Bei mir funktioniert die Denon Heos Steuerung mit socat und cuxd auf der CCU2 absolut verlässlich.

Dieses socat: viewtopic.php?t=13299
dann wie dieses Beispiel mit cuxd ausführen (Lautstärke auf Level 12 setzen):

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("sh -c `echo -c 'heos://player/set_volume?pid=player_id&level=12' | /usr/local/addons/socat TCP:191.160.170.66:1255,crlf - ` ");
wichtig dabei ist, dass der Sh-Code nochmal extra mit Akzent-Zeichen (`...`) eingebettet wird. Am besten den Code kopieren und natürlich die "player-id" und IP durch eure austauschen.

GuidoK
Beiträge: 4
Registriert: 13.01.2017, 20:23

Re: Denon HEOS Steuerung

Beitrag von GuidoK » 01.08.2018, 13:27

@NetPirate: Danke! Funktioniert auch bei mir sehr gut!

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“