Einbindung Russound CAM6.6 in IPS?

Hallo,

hat jemand ein CAM6.6 von Russound in IPS eingebunden und kann dazu ein paar Infos geben? Vielleicht sogar Skripte?

Ich Frage lieber bevor ich das Rad neu erfinde!

Danke schon mal im vorraus!

Gruß Tommy und ein schönes Osterfest!

Hallo,

für alle (ich bin ja offensichtlich der einzige der einen hat;)) die ein Russound Controller haben anbei mein erstes Testskript zum spielen! Geht ganz gut.

Viel Spaß damit
Tommy

<?
// Russound CAM6.6 Steuerung Version 1.0
// Thomas Unger 21.04.2014
// unterstützte Geräte und Kommandos:
// Controller "Audio" -> "Power" (Zone Ein/Aus)
// Controller "Audio" -> "ZoneSource" (Quelle Zone setzen)
// Controller "Audio" -> "Volume" (Lautstärke Zone setzen)
// Controller "Audio" -> "Bass" (Tiefen Zone setzen)
// Controller "Audio" -> "Treble" (Höhen Zone setzen)
// Controller "Audio" -> "Balance" (Balance Zone setzen)
// Controller "Audio" -> "VolumeOn" (Einschaltlautstärke Zone setzen)
//
// Controller "Tuner" -> "SeekUp" (Sender Suchen auf)
// Controller "Tuner" -> "SeekDn" (Sender Suchen ab)
// Controller "Tuner" -> "TuneUp" (Frequenz auf)
// Controller "Tuner" -> "TuneDn" (Frequenz ab)
// Controller "Tuner" -> "Save1" (Sender Speichern Speicher 1)
// Controller "Tuner" -> "Save2" (Sender Speichern Speicher 2)
// Controller "Tuner" -> "Save3" (Sender Speichern Speicher 3)
// Controller "Tuner" -> "Save4" (Sender Speichern Speicher 4)
// Controller "Tuner" -> "Save5" (Sender Speichern Speicher 5)
// Controller "Tuner" -> "Save6" (Sender Speichern Speicher 6)
// Controller "Tuner" -> "PresetUp" (Sender Speicher auf)
// Controller "Tuner" -> "PresetDn" (Sender Speicher ab)
// Controller "Tuner" -> "SetAM" (AM setzen)
// Controller "Tuner" -> "SetFM" (FM setzen)
// Controller "Tuner" -> "SetMono" (Mono setzen)
// Controller "Tuner" -> "SetStereo" (Stereo setzen)

$ComID = 42546 /*[Russound Seriell]*/;

// Definitionen Geräte und Kommandos holen
$Geraet = Getvalue(22708 /*[Audio\RUSSOUND CAM6.6\Geraet]*/);
$commandaudio = Getvalue(15089 /*[Audio\RUSSOUND CAM6.6\CommandAudio]*/);
$commandtunner = Getvalue(56825 /*[Audio\RUSSOUND CAM6.6\CommandTuner]*/);

// Daten Controller definieren und holen siehe Variablen
$Start = "\xF0"; //Startbyte
$TargetID = chr((Getvalue(42513 /*[Audio\RUSSOUND CAM6.6\Controller_ID]*/)-1)&0x0F); //Controller ID -1  1-1=0 entspricht Controller mit ID 1
$OnOff = chr(Getvalue(51490 /*[Audio\RUSSOUND CAM6.6\Power_On_Off]*/)&0x0F);  // Ein= \x01 Aus= \x00
$Zone = chr((Getvalue(57946/*[Audio\RUSSOUND CAM6.6\Zone]*/)-1)&0x0F); // Zone -1
$Source = chr((Getvalue(45990 /*[Audio\RUSSOUND CAM6.6\Source]*/)-1)&0x0F); // Source -1
if (Getvalue(12813 /*[Audio\RUSSOUND CAM6.6\Volume]*/)<51)
{
$Vol = chr(Getvalue(12813 /*[Audio\RUSSOUND CAM6.6\Volume]*/));   // Lautstärke Level 0x00 bis 0x32
}
else
{
$Vol = "\x32";
}
if (Getvalue(26567 /*[Audio\RUSSOUND CAM6.6\Bass]*/)<21)
{
$Bass = chr(Getvalue(26567 /*[Audio\RUSSOUND CAM6.6\Bass]*/));   // Bass Level 0x00= -10 bis 0x14= +10
}
else
{
$Bass = "\x14";
}
if (Getvalue(57180 /*[Audio\RUSSOUND CAM6.6\Treble]*/)<21)
{
$Treble = chr(Getvalue(57180 /*[Audio\RUSSOUND CAM6.6\Treble]*/));   // Treble Level 0x00= -10 bis 0x14= +10
}
else
{
$Treble = "\x14";
}
if (Getvalue(32986 /*[Audio\RUSSOUND CAM6.6\Balance]*/)<21)
{
$Bal = chr(Getvalue(32986 /*[Audio\RUSSOUND CAM6.6\Balance]*/));   // Balance Level 0x00= links bis 0x14= rechts
}
else
{
$Bal = "\x14";
}
if (Getvalue(34334 /*[Audio\RUSSOUND CAM6.6\Volume_On]*/)<51)
{
$VolOn = chr(Getvalue(34334 /*[Audio\RUSSOUND CAM6.6\Volume_On]*/));   // Lautstärke Level beim einschalten 0x00 bis 0x32
}
else
{
$VolOn = "\x32";
}

switch($Geraet)
{
Case("Audio"):

switch($commandaudio)
{
Case("Power"):
// Zone Power Ein/Aus
$Daten = "\x00\x7F\x00\x00\x70\x05\x02\x02\x00\x00\xF1\x23\x00";
$Daten1 = "\x00";
$Daten2 = "\x00\x01";
$FC =$Start.$TargetID.$Daten.$OnOff.$Daten1.$Zone.$Daten2;
break;
Case("ZoneSource"):
// Zone Source
$Start = "\xF0"; //Startbyte
$Daten = "\x00\x7F\x00";
$Daten1 = "\x70\x05\x02\x00\x00\x00\xF1\x3E\x00\x00\x00";
$Daten2 = "\x00\x01";
$FC =$Start.$TargetID.$Daten.$Zone.$Daten1.$Source.$Daten2;
break;
Case("Volume"):
// Zone Set Volume
$Daten = "\x00\x7F\x00\x00\x70\x05\x02\x02\x00\x00\xF1\x21\x00";
$Daten1 = "\x00";
$Daten2 = "\x00\x01";
$FC =$Start.$TargetID.$Daten.$Vol.$Daten1.$Zone.$Daten2;
break;
Case("Bass"):
// Zone Set Bass
$Daten = "\x00\x7F\x00\x00\x70\x00\x05\x02\x00";
$Daten1 = "\x00\x00\x00\x00\x00\x01\x00\x01\x00";
$FC =$Start.$TargetID.$Daten.$Zone.$Daten1.$Bass;
break;
Case("Treble"):
// Zone Set Treble
$Daten = "\x00\x7F\x00\x00\x70\x00\x05\x02\x00";
$Daten1 = "\x00\x01\x00\x00\x00\x01\x00\x01\x00";
$FC =$Start.$TargetID.$Daten.$Zone.$Daten1.$Treble;
break;
Case("Balance"):
// Zone Set Balance
$Daten = "\x00\x7F\x00\x00\x70\x00\x05\x02\x00";
$Daten1 = "\x00\x03\x00\x00\x00\x01\x00\x01\x00";
$FC =$Start.$TargetID.$Daten.$Zone.$Daten1.$Bal;
break;
Case("VolumeOn"):
// Zone Set Einschaltlautstärke
$Daten = "\x00\x7F\x00\x00\x70\x00\x05\x02\x00";
$Daten1 = "\x00\x04\x00\x00\x00\x01\x00\x01\x00";
$FC =$Start.$TargetID.$Daten.$Zone.$Daten1.$VolOn;
break;
}
$CRC = GetCRC($FC);
$CRCstr = chr($CRC&0x7F);  // Maskieren mit 0x7F nur ein Byte!!
$Senddata = $FC.$CRCstr."\xF7";
COMPort_SendText($ComID, $Senddata);               				// Datenframe über Comport senden
break;

Case("Tuner"):
switch($commandtuner)
{
// Tuner SEEK UP
Case("SeekUp"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x1B\x00\x70\x00\x00\x00\x01\x09\xF7";
break;
// Tuner SEEK DN
Case("SeekDn"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x24\x00\x70\x00\x00\x00\x01\x22\xF7";
break;
// Tuner Tune UP
Case("TuneUp"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x2F\x00\x70\x00\x00\x00\x01\x1D\xF7";
break;
// Tuner Tune DN
Case("TuneDn"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x30\x00\x70\x00\x00\x00\x01\x1E\xF7";
break;
// Tuner Save Preset 1
Case("Save1"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x3C\x00\x70\x00\x00\x00\x01\x2A\xF7";
break;
// Tuner Save Preset 2
Case("Save2"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x3D\x00\x70\x00\x00\x00\x01\x2B\xF7";
break;
// Tuner Save Preset 3
Case("Save3"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x3E\x00\x70\x00\x00\x00\x01\x2C\xF7";
break;
// Tuner Save Preset 4
Case("Save4"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x3F\x00\x70\x00\x00\x00\x01\x2D\xF7";
break;
// Tuner Save Preset 5
Case("Save5"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x40\x00\x70\x00\x00\x00\x01\x2E\xF7";
break;
// Tuner Save Preset 6
Case("Save6"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x41\x00\x70\x00\x00\x00\x01\x2F\xF7";
break;
// Tuner Save Preset UP
Case("PresetUp"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x0E\x00\x70\x00\x00\x00\x01\x7C\xF7";
break;
// Tuner Save Preset DN
Case("PresetDn"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x0F\x00\x70\x00\x00\x00\x01\x7D\xF7";
break;
// Tuner AM
Case("SetAM"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x4A\x00\x70\x00\x00\x00\x01\x38\xF7";
break;
// Tuner FM
Case("SetFM"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x49\x00\x70\x00\x00\x00\x01\x37\xF7";
break;
// Tuner Mono
Case("SetMono"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x34\x00\x70\x00\x00\x00\x01\x22\xF7";
break;
// Tuner Stereo
Case("SetStereo"):
$data = "\xF0\x00\x7D\x00\x00\x00\x70\x05\x02\x01\x00\x02\x01\x00\x33\x00\x70\x00\x00\x00\x01\x21\xF7";
break;
}
COMPort_SendText($ComID, $data);               				// Datenframe über Comport senden
break;
}

function GetCRC($s)
// CRC für Russound Protokoll
// Thomas Unger 21.04.2014
//
{
 $crc = 0; 			// Startwert

for ($count=0; $count<strlen($s); $count++)
 {
	$crc += ord($s[$count]);
 }
 $crc = $crc+$count;
 return $crc;
}

?>


Russound_seriell.jpg