@Eisbaeeer, evtl. nimmst du mal die ISCP.xls in den Github mit auf, falls das lizenztechnisch/rechtlich ok ist.
Ansonsten kannst du in der "getestet Liste" den 515 mitaufnehmen.
Nachtrag: Sorry, dass ich die letzten Tage nicht mehr gepostet habe. Habe die große Anleitung vorbereitet und war schon mittendrin, das Problem war nur sich mit dem Scripteditor auseinanderzusetzen. Konnte den Power String "00"/"01" ums Verrecken nicht mit if Abfragen.
Der Slider funktioniert noch nicht 100% weil die Onkyo_Volume_Zone2 immer mal wieder auf "null" springt, keine ahnung warum
_____________________________________________________
Anleitung zur Nutzung des Onkyo-Adapters in CCU.IO
Gliederung
1. Einleitung
2. Konfiguration
3. Nutzung mit HomeMatic Endgeräten (Tastern)
4. Nutzung in DashUI
1. Einleitung
Zur Nutzung des Guides wird Grundverständnis der CCU, der Homematic Komponenten und eine funktionierende CCU.IO Installation vorausgesetzt, ebenso FTP, Putty, WinSCP und ähnliches. Erläutert wird die Nutzung des Adapters in der HomeMatic Umgebung. Am Beispiel der Zone 2 soll die Nutzung von CCU.IO Scripts und die entsprechende Auslagerung aus der CCU.IO erläutert werden. Für die DashUI soll auf die mögliche Nutzung der Widgets hingewiesen werden, die genutzt werden können um die Funktionen abzubilden.
Zur Entwicklung des Adapters wird auf diese beiden Threads im Forum verwiesen:
Onkyo mit der Nutzung einer Middleware
Onkyo mit direkter Steuerung der CCU
Alle möglichen Kommandos zur Steuerung des Receivers finden sich unter:
http://blog.siewert.net/?p=37
2. Konfiguration
Die Installation des Addons erfolgt a. manuell, oder b. automatisiert.
a. Download des Adapters von https://github.com/Eisbaeeer/Onkyo. Im Adapter-Ordner einen Ordner "onkyo" erstellen und die Dateien reinkopieren. CCU.IO neustarten.
b. (Zukunft) Im Lieferumfang der CCU.IO Basisinstallation
In der Konfiguration des Adapters die IP des Onkyos hinterlegen. Die restlichen voreingestellten Werte sollten in 99% bei euch passen.
Code: Alles auswählen
{
"enabled": true,
"settings": {
"IP": "x.x.x.x",
"port": 60128,
"firstId": 100000,
"debug": false
}
}
Ein erfolgreicher Start sollte in etwa so aussehen:
Code: Alles auswählen
[root@raspi log]# strings ccu.io.log | grep onkyo
[0m: ccu.io starting adapter /opt/ccuio/adapter/onkyo/onkyo.js
[0m: adapter onkyo starting connect to:x.x.x.x 60128
[0m: adapter onkyo start
[0m: adapter onkyo objects inserted, starting at: 100000
[0m: adapter onkyo connected to Receiver: x.x.x.x
[0m: adapter onkyo debug is set to: false
[0m: adapter onkyo connected to ccu.io
3. Nutzung mit HomeMatic Endgeräten (Tastern)
Im folgenden wird als Beispiel ein 6-fach Taster (HM-PB-6-WM55) aus der CCU skripttechnisch in die CCU.IO migriert.
Tastenbelegung:
1. LO (Links Oben): Power Toggle
2. RO: USB Stick
3. ML: Volume - 4
4. MR: Volume + 4
5. LU: Internetradio #1
6. RU: Internetradio #2
Die Grundkonfiguration der CCU.IO Scripts erfolgt mit der ScriptGUI:
Als Test müsste sich jetzt die Zone 2 einschalten lassen, jedoch noch nicht ausschalten. Die Lautstärke müsste auf 2 feste Werte gesetzt werden können. Deshalb müssen wir im ScriptEditor per Hand einige Funktionen nachpflegen
1. Toggle Power Funktion
2. 3x Kommandos nacheinander: "SLZ2A", "NTCSELECT", "NTCSELECT"
3/4. Aktuelle Lautstärke +- 4
5. 2x Kommando: "SLZ2B", "NPR01"
6. 2x Kommando: "SLZ2B", "NPR02"
Die Kommandos sind soweit kommentiert, für Syntax-Highlighting einfach in den ScriptEditor kopieren
Code: Alles auswählen
// Peusdo Sleep Funktion, diese wird benoetigt um mehrere Befehle hintereinander zu setzen
// Evtl. waere das auch mit einer Onky_Command ist wieder leer Pruefung moeglich
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
subscribe({id: 1281}, function (data){
taster_1(data);
});
subscribe({id: 1287}, function (data){
taster_2(data);
});
subscribe({id: 1293}, function (data){
taster_3(data);
});
subscribe({id: 1299}, function (data){
taster_4(data);
});
subscribe({id: 1305}, function (data){
taster_5(data);
});
subscribe({id: 1311}, function (data){
taster_6(data);
});
/////////////////////////
// Taste 1 - Toggle Power
function taster_1(data){
// Aktuellen Status auslesen
var var_1_z2power= datapoints[100019][0];
// Umwandeln von String "00"/"01" zu Integer 0/1
// Hab weder mit if/else noch switch/case sonst den Vergleich hingebracht
var_1_z2power = parseInt(var_1_z2power);
// Jeweils das umgekehrte Kommando senden
if (0 == var_1_z2power) {
var var_1_out= "ZPW01";
} else {
var var_1_out= "ZPW00";
}
// Setzen der Onkyo_Command Variable
setState(100000,var_1_out);
};
/////////////////////////////
// Taste 2 - USB Start
function taster_2(data){
// Auswahl USB Eingang
var var_2_out= "SLZ2A" ;
setState(100000,var_2_out);
sleep(1000);
// Auswahl Stick
var var_2_out= "NTCSELECT" ;
setState(100000,var_2_out);
sleep(1000);
// Auswahl erstes Lied am Stick zum starten der Wiedergabe
var var_2_out= "NTCSELECT" ;
setState(100000,var_2_out);
};
// Taste 3 - Lautstaerke - 4
function taster_3(data){
// Aktuelle Lautstaerke auslesen
var var_3_z2volume= datapoints[100007][0];
// Umwandeln von String "00"/"01" zu Integer 0/1
var_3_z2volume = parseInt(var_3_z2volume);
// Senken der Lautstaerke um 4
var_3_z2volume = var_3_z2volume - 4;
// In Hexadezimal umrechnen
var_3_z2volume = var_3_z2volume.toString(16);
// Zusammensetzen des Befehs
var string_3_out= "ZVL" + var_3_z2volume;
setState(100000,string_3_out);
};
// Taste 4 - Lautstaerke + 4
function taster_4(data){
// Aktuelle Lautstaerke auslesen
var var_4_z2volume= datapoints[100007][0];
// Umwandeln von String "00"/"01" zu Integer 0/1
var_4_z2volume = parseInt(var_4_z2volume);
// Senken der Lautstaerke um 4
var_4_z2volume = var_4_z2volume + 4;
// In Hexadezimal umrechnen
var_4_z2volume = var_4_z2volume.toString(16);
// Zusammensetzen des Befehs
var string_4_out= "ZVL" + var_4_z2volume;
setState(100000,string_4_out);
};
// Taste 5 - Internetradio #01
function taster_5(data){
// Auswahl Radio
var string_5_out= "SLZ2B" ;
setState(100000,string_5_out);
sleep(1000);
// Auswahl Nummer aus "Favoriten"
var string_5_out= "NPR02" ;
setState(100000,string_5_out);
};
// Taste 6 - Internetradio #02
function taster_6(data){
// Auswahl Radio
var string_6_out= "SLZ2B" ;
setState(100000,string_6_out);
sleep(1000);
// Auswahl Nummer aus "Favoriten"
var string_6_out= "NPR01" ;
setState(100000,string_6_out);
};
4. Nutzung in DashUI
Einfache Kommandos können mit "jqui - Button" gesendet werden. Alle ISCP Kommandos sind möglich:
Einfache Variablen können mit "basic hm-val" dargestellt werden:
"Erweitere" Variablen lassen sich mit "HTML Value List 8" darstellen:
Für einen Volume Slider wird eine zusätzliche CCU.IO Variable benötigt, an der ein CCU.IO Script hängt. Wenn sich die Variable ändert wird wieder der Wert wieder in Hexadezimal umgerechnet und das ISCP Kommando zusammengesetzt:
Code: Alles auswählen
// Ergaenzung Volume Slider
setObject(100036, { Name: "Onkyo_Slider_Volume", TypeName: "VARDP"});
setState(100036,10);
subscribe({id: 100036, change:"ne"}, function (data){
volume_slider(data);
});
function volume_slider(data){
// Aktuelle Lautstaerke auslesen
var slider_volume = datapoints[100036][0];
// Umwandeln von String "00"/"01" zu Integer 0/1
slider_volume = parseInt(slider_volume);
// In Hexadezimal umrechnen
slider_volume = slider_volume.toString(16);
// Zusammensetzen des Befehs
var string_slider= "ZVL" + slider_volume;
setState(100000,string_slider);
};
Viel Spass nun