Hallo,
ich habe mir ein günstiges 16-fach Relaisboard aus China bestellt. Es wird u.a. bei Eb*y unter Bezeichnungen wie dieser ‚16-Kanal 9-36V USB-gesteuertes SPDT-Relaismodul Optokoppelte Platine SRD-5VDC‘ für ca. 30€ inkl. Porto angeboten.
<?php
$ch16_data = array(
1 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x30\x30\x30\x30\x30\x46\x44\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x30\x46\x46\x30\x30\x46\x45\x0D\x0A" /*on*/),
2 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x31\x30\x30\x30\x30\x46\x43\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x31\x46\x46\x30\x30\x46\x44\x0D\x0A" /*on*/),
3 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x32\x30\x30\x30\x30\x46\x42\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x32\x46\x46\x30\x30\x46\x43\x0D\x0A" /*on*/),
4 => array("F\x3A\x46\x45\x30\x35\x30\x30\x30\x33\x30\x30\x30\x30\x46\x41\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x33\x46\x46\x30\x30\x46\x42\x0D\x0A" /*on*/),
5 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x34\x30\x30\x30\x30\x46\x39\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x34\x46\x46\x30\x30\x46\x41\x0D\x0A" /*on*/),
6 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x35\x30\x30\x30\x30\x46\x38\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x35\x46\x46\x30\x30\x46\x39\x0D\x0A" /*on*/),
7 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x36\x30\x30\x30\x30\x46\x37\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x36\x46\x46\x30\x30\x46\x38\x0D\x0A" /*on*/),
8 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x37\x30\x30\x30\x30\x46\x36\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x37\x46\x46\x30\x30\x46\x37\x0D\x0A" /*on*/),
9 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x38\x30\x30\x30\x30\x46\x35\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x38\x46\x46\x30\x30\x46\x36\x0D\x0A" /*on*/),
10 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x39\x30\x30\x30\x30\x46\x34\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x39\x46\x46\x30\x30\x46\x35\x0D\x0A" /*on*/),
11 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x41\x30\x30\x30\x30\x46\x33\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x41\x46\x46\x30\x30\x46\x34\x0D\x0A" /*on*/),
12 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x42\x30\x30\x30\x30\x46\x32\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x42\x46\x46\x30\x30\x46\x33\x0D\x0A" /*on*/),
13 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x43\x30\x30\x30\x30\x46\x31\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x43\x46\x46\x30\x30\x46\x32\x0D\x0A" /*on*/),
14 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x44\x30\x30\x30\x30\x46\x30\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x44\x46\x46\x30\x30\x46\x31\x0D\x0A" /*on*/),
15 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x45\x30\x30\x30\x30\x46\x46\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x45\x46\x46\x30\x30\x46\x30\x0D\x0A" /*on*/),
16 => array("\x3A\x46\x45\x30\x35\x30\x30\x30\x46\x30\x30\x30\x30\x46\x45\x0D\x0A", /*off*/
"\x3A\x46\x45\x30\x35\x30\x30\x30\x46\x46\x46\x30\x30\x46\x46\x0D\x0A" /*on*/)
);
$ch16_id = 21410 /*[16ch usb]*/;
/** Test
for($i=1; $i<=16; $i++){
SPRT_SendText($ch16_id,$ch16_data[$i][1]);
IPS_Sleep(800);
SPRT_SendText($ch16_id,$ch16_data[$i][0]);
IPS_Sleep(150);
}
//*/
if($_IPS['SENDER']=="WebFront" || $_IPS['SENDER']=="RequestAction"){
$i = (int) str_replace("Kanal_", "",IPS_GetObject($_IPS['VARIABLE'])['ObjectIdent']);
if($_IPS['VALUE']){
//ein
SPRT_SendText($ch16_id,$ch16_data[$i][1]);
}else{
//aus
SPRT_SendText($ch16_id,$ch16_data[$i][0]);
}
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
}
Im Script findet sich die Variable $ch16_id (ID des Virtual Com Port), welche natürlich auch angepasst werden muss.
Es werden zusätzlich zu diesem Script 16 bool Variablen benötigt, welche als Aktion das Script haben sowie als IDENT die Bezeichnung Kanal_1 bis Kanal_16.
Dies könnte (ungetestet) mit folgendem Script gehen:
for($i=1;$i<=16;$i++){
$id = IPS_CreateVariable(0);
IPS_SetName($id, "Mein Name für Kanal ".$i);
IPS_SetParent($id, 12345); // parent ID angeben
IPS_SetIdent($id,"Kanal_".$i);
IPS_SetVariableCustomAction($id, 54321); // id des o.g. Scripts einfügen
IPS_SetVariableCustomProfile($id, "~Switch");
}