Neues Modul Harmon Kardon (AVR 270)

Begonnen von schnibberle, 25 März 2015, 22:37:04

Vorheriges Thema - Nächstes Thema

schnibberle

Hallo zusammen,

habe mich in den letzten Tagen drangemacht, die Harmon Kardon App zu entschlüsseln um den AV Receiver AVR 270 per FHEM zu steuern.



Die Commands weclche ich per Ethertap und tcpdump extrahiert habe sehen wie folgt aus

Umschaltung auf Source A

POST AVR HTTP/1.1
Host::10025
User-Agent:Harman Kardon AVR Controller/1.0
Content-Length:185
<?xml version="1.0" encoding="UTF-8"?> <harman> <avr> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>Source A</para> </control> </common> </avr> </harman>


Umschaltung auf Sat
POST AVR HTTP/1.1
Host::10025
User-Agent:Harman Kardon AVR Controller/1.0
Content-Length:186
<?xml version="1.0" encoding="UTF-8"?> <harman> <avr> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>Cable Sat</para> </control> </common> </avr> </harman>


Das ganze ist ein HTTP Request auf <AVR-IP>:10025

Wenn ich das nun per nc (netcat) von der Bash des FHEM Servers pushe schaltet der Receiver nicht um. Mach ich ein Skript welches den HTTP Request 20x abschickt schaltet der Receiver um.

root@raspberrypi:~# cat sat.sh
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2
cat sat | nc 192.168.3.22 10025 -w 2

root@raspberrypi:~#


Gibt es hier noch andere die an einem HarmonKardon Modul interessiert wären ?
Ich denke wenn wir den HTTP Request von der Bash hinbekommen wäre ein Modul einfach realisierbar.

bense2k


schnibberle

Hatte nicht so viel Zeit , habe aber jetzt ein NodeJS Bash aufruf der 100% Verlässlichkeit funktioniert (was bei der Telnet/Perl Variante nicht der Fall ist)

root@raspberrypi:~# nodejs sat.js
CONNECTED TO: 192.168.3.22:10025


root@raspberrypi:~# cat sat.js
var net = require('net');

var HOST = '192.168.3.22';
var PORT = 10025;

function buildRequest(cmd, zone, param) {
   var text = '';
   var payload = '<?xml version="1.0" encoding="UTF-8"?> <harman> <avr> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>Cable Sat</para> </control> </common> </avr> </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'));
    client.destroy();   

});
root@raspberrypi:~#



root@raspberrypi:~# nodejs  sourcea.js
CONNECTED TO: 192.168.3.22:10025

root@raspberrypi:~# cat sourcea.js
var net = require('net');

var HOST = '192.168.3.22';
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> <avr> <common> <control> <name>source-selection</name> <zone>Main Zone</zone> <para>Source A</para> </control> </common> </avr> </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'));
    client.destroy();   
});

danieljo

Ich wollte mal nachfragen ob es hier schon was neues gibt oder aber ob das Modul schon gestorben ist. Hätte da interesse dran Habe ein Harman&Kardon AVR171 Heimkino und würde den gerne aus FHEM raus steuern Hautpsächlich erstmal so ein paar Grundfunktionen wie Lautstärke usw.

MFG, Daniel Joachims

stehajo

Hallo allerseits,

Ich würde das gerne ebenfalls nutzen. Gibt es irgendwo eine Liste der Commands, die dr Receiver versteht? Wärd praktisch, wenn wir das hier zussmmentrgen könntn, die xml-Struktur sowie Port ist ja bekannt. Danach könnte man da evtl. sogar in ein Modul giessen. Also: Wer Kommandos kennt bitte posten. Danke!