Harman Kardon BDS577 steuern über CCU.IO

WebUIs (DashUI, yahui, ...), Adapter (Hue, IRTrans, Sonos, ...), Logging, Scripting

Moderator: Co-Administratoren

Communicate
Beiträge: 126
Registriert: 08.07.2012, 22:41
Hat sich bedankt: 1 Mal

Re: Harman Kardon BDS577 steuern über CCU.IO

Beitrag von Communicate » 25.06.2014, 07:43

Guten Morgen zusammen,

ich verstehe nicht alles von dem, was ich da mitgesnifft habe, aber ein paar interessante Informationen hab ich dann doch gefunden:


Code: Alles auswählen

POST HK_APP HTTP/1.1
Host: :10025
User-Agent: Harman Kardon BDS Remote Controller/1.0
Content-Length: 163

<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>heart-alive</name> <zone></zone> <para></para> </control> </common> </bds> </harman>

POST HK_APP HTTP/1.1
Host: 192.168.178.24:10025
User-Agent: Harman Kardon BDS G3 /1
Content-Length: 150

<?xml version="1.0" encoding="UTF-8"?><harman><bds><common><status><name>heart-alive</name><zone></zone><para></para></status></common></bds></harman>

POST HK_APP HTTP/1.1
Host: :10025
User-Agent: Harman Kardon BDS Remote Controller/1.0
Content-Length: 172

<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>volume-down</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
Ich habe also zumindest rausgefunden, mit welchem Befehl ich die Lautstärke verringern kann.

Jetzt bleibt nur noch die Frage, wie und in welcher Form ich die Befehle an die Anlage schicken kann und was es mit dem heart-alive auf sich hat.

Kennt sich einer von Euch damit aus?

Viele Grüße
Dominic

Bluefox
Beiträge: 779
Registriert: 20.02.2011, 19:55

Re: Harman Kardon BDS577 steuern über CCU.IO

Beitrag von Bluefox » 25.06.2014, 12:57

Es gibt für Chrom eine Extension POSTMAN:
https://chrome.google.com/webstore/deta ... oidkmcomcm
Kannst du damit an http://192.168.178.24:10025
so was senden?

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>mute-on</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
Dateianhänge
harman.png

Communicate
Beiträge: 126
Registriert: 08.07.2012, 22:41
Hat sich bedankt: 1 Mal

Re: Harman Kardon BDS577 steuern über CCU.IO

Beitrag von Communicate » 25.06.2014, 20:16

Hallo,

das war es leider noch nicht :(

Es passiert einfach gar nichts. Kann man in Postman irgendwie debuggen, so dass man sehen würde ob der Harman eine Rückmeldung gibt?

Bluefox
Beiträge: 779
Registriert: 20.02.2011, 19:55

Re: Harman Kardon BDS577 steuern über CCU.IO

Beitrag von Bluefox » 25.06.2014, 21:37

Das währe auch zu einfach.
Ich werde script vorbereiten. Denn solltest du dann ausprobieren.
Gibt mir ein bisschen Zeit.

Communicate
Beiträge: 126
Registriert: 08.07.2012, 22:41
Hat sich bedankt: 1 Mal

Re: Harman Kardon BDS577 steuern über CCU.IO

Beitrag von Communicate » 27.06.2014, 07:35

Hallo Bluefox,

da habe ich doch vor lauter WM-Fieber glatt vergessen, mich bei Dir zu bedanken.
Vielen Dank für Deinen Einsatz und Deine Hilfsbereitschaft.

Ich freue mich schon auf das Skrikpt und bin gespannt, ob wir das gemeinsam
zum laufen bringen.

Viele Grüße
Dominic

Bluefox
Beiträge: 779
Registriert: 20.02.2011, 19:55

Re: Harman Kardon BDS577 steuern über CCU.IO

Beitrag von Bluefox » 27.06.2014, 09:45

Code: Alles auswählen

var net = require('net');

var HOST = '192.168.178.24';
var PORT = 10025;

// Supported commands:
// volume-down
// mute-on
// source-selection (param is used: Component, DISC)
// Play

function buildRequest(cmd, zone, param) {
	var text = '';
	var payload = '<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>' + cmd + '</name> <zone>' + zone + '</zone> <para>' + param + '</para> </control> </common> </bds> </harman>';
	zone = zone || 'Main Zone';
	param = param || ''
	text += 'POST HK_APP HTTP/1.1\r\n';
	text += 'Host: :' + PORT + '\r\n';
	text += 'User-Agent: Harman Kardon BDS Remote Controller/1.0\r\n';
	text += 'Content-Length: ' + payload.length + '\r\n';
	text += '\r\n';
	text += payload;
	return text;
}

var client = new net.Socket();
client.connect(PORT, HOST, function() {
    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
    client.write(buildRequest('mute-on'));
});

// Add a 'data' event handler for the client socket
// data is what the server sent to this socket
client.on('data', function(data) {
    console.log('DATA: ' + data);
    // Close the client socket completely
    client.destroy();   
});

// Add a 'close' event handler for the client socket
client.on('close', function() {
    console.log('Connection closed');
});
Kannst das als harman.js irgendwo abspeichern und mit:
node harman.js
starten.
Wenn es funktioniert, dann sollte das Gerät auf "mute" gehen.

Communicate
Beiträge: 126
Registriert: 08.07.2012, 22:41
Hat sich bedankt: 1 Mal

Re: Harman Kardon BDS577 steuern über CCU.IO

Beitrag von Communicate » 27.06.2014, 21:08

Hallo Bluefox,

mein Held :D

Das funktioniert tatsächlich!!!

Bis hier hin: Vielen vielen lieben Dank.

Jetzt habe ich nur noch 2 Punkte:

1. Was genau macht denn das Skript, damit die Steuerung jetzt funktioniert?
2. Wie integriere ich das jetzt am besten in CCU.IO?

Nochmal vielen vielen Dank für Deine tolle Hilfe :D

Viele Grüße
Dominic

Bluefox
Beiträge: 779
Registriert: 20.02.2011, 19:55

Re: Harman Kardon BDS577 steuern über CCU.IO

Beitrag von Bluefox » 27.06.2014, 21:55

Warte mal mit der Implementierung ab. Weil es neben bei noch jemand um Yamaha Adapter fragt, werde ich den Harman Adapter schon fertig machen und dann auf Yamaha abändern.
Was du herausfinden solltest, das ist welche Kommandos es gibt.
Wie ich gesehen habe, es gibt:

Code: Alles auswählen

volume-down
mute-on
source-selection (param is used: Component, DISC)
Play
Daraus kann ich vermuten, dass es noch folgende Befehle gibt:

Code: Alles auswählen

mute-off
volume-up
Stop
source-selector (???)
Fehlen noch fast-forward, fast-rewind, next, prev,

Es muss auch so sein, dass das Gerät sein Zustand melden soll. Kannst du Sniffer/Wireshark Starten, App Starten und dann über Fernbedienung (nicht über App) Play/Stop, mute-on/off machen?
Interessant ist, ob das App mitbekommt oder ob App nur reine Fernbedienung ist.

Testen kannst du die Befehle mit dem script in dem du Zeile:
client.write(buildRequest('mute-on'));
modifizierst.

Communicate
Beiträge: 126
Registriert: 08.07.2012, 22:41
Hat sich bedankt: 1 Mal

Re: Harman Kardon BDS577 steuern über CCU.IO

Beitrag von Communicate » 27.06.2014, 23:10

Es muss auch so sein, dass das Gerät sein Zustand melden soll. Kannst du Sniffer/Wireshark Starten, App Starten und dann über Fernbedienung (nicht über App) Play/Stop, mute-on/off machen?
Interessant ist, ob das App mitbekommt oder ob App nur reine Fernbedienung ist.
Das kommt dabei raus, wenn ich zwei Tasten auf der Hardware Fernbedienung gedrückt habe:

Code: Alles auswählen

POST HK_APP HTTP/1.1
Host: :10025
User-Agent: Harman Kardon BDS Remote Controller/1.0
Content-Length: 163

<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>heart-alive</name> <zone></zone> <para></para> </control> </common> </bds> </harman>POST HK_APP HTTP/1.1
Host: 192.168.178.24:10025
User-Agent: Harman Kardon BDS G3 /1
Content-Length: 150

<?xml version="1.0" encoding="UTF-8"?><harman><bds><common><status><name>heart-alive</name><zone></zone><para></para></status></common></bds></harman>POST HK_APP HTTP/1.1
Host: :10025
User-Agent: Harman Kardon BDS Remote Controller/1.0
Content-Length: 163

<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>heart-alive</name> <zone></zone> <para></para> </control> </common> </bds> </harman>POST HK_APP HTTP/1.1
Host: 192.168.178.24:10025
User-Agent: Harman Kardon BDS G3 /1
Content-Length: 150

<?xml version="1.0" encoding="UTF-8"?><harman><bds><common><status><name>heart-alive</name><zone></zone><para></para></status></common></bds></harman>
Was du herausfinden solltest, das ist welche Kommandos es gibt.
Ich habe jetzt jede Taste in der App einmal gedrückt:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>Back</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>bye-bye</name> <zone></zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>Down</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>eject</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>heart-alive</name> <zone></zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>Home</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>keyboard</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>Left</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>Ok</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>Options</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>popup</name> <zone>display</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>Program</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>Right</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>sleep</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>AUX</para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>Bluetooth</para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>Component</para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>DISC</para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>HDMI1</para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>HDMI2</para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>HDMI3</para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>Picasa</para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>Radio</para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>USB</para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>YouTube</para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>thumbnail</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>Up</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?> <harman> <bds> <common> <control> <name>zoom</name> <zone>Main Zone</zone> <para></para> </control> </common> </bds> </harman>
<?xml version="1.0" encoding="UTF-8"?><harman><bds><common><status><name>heart-alive</name><zone></zone><para></para></status></common></bds></harman>
Was mir noch aufgefallen ist: Die App hat drei Screens und die werden anscheinend über den Xml-Tag "ZONE" abgebildet.

Bluefox
Beiträge: 779
Registriert: 20.02.2011, 19:55

Re: Harman Kardon BDS577 steuern über CCU.IO

Beitrag von Bluefox » 30.06.2014, 17:12

Aus deiner Untersuchung kann ich sehen, dass App keinen Zustand von Harman zeigen kann. Habe ich recht?

P.S. für mich ist trotzdem besser pcap Dateien zu sehen. Da kann ich z.B. Zeitabstand zwischen Frames sehen.

Antworten

Zurück zu „CCU.IO“