Hallo Pollibus
ich habe IPS V1, wie das in V2 zu ändern ist, kann ich daher nicht sagen, aber bei mir funktioniert das LAN-DB-IR-Trans Teil bestens:
An Instanzen sind eine Client-Socket-Verbindung zur LAN-Adresse vom IR-Trans auf Port 21000 einzurichten.
Dann je eine Registervariable zum Empfangen (heißt bei mir „IR_Get“) und eine zum Senden („IR_Send“) einrichten
Nach dem Starten von IPS ist das IRTrans-Modul einmalig auf aSCII - Zeichensatz einzustellen, d.h. als erstes einmalig ein Script mit dem Inhalt:
$a = 'ASCI';
SetValueString("IR_send",$a);
aufzurufen.
Anschliessend können im IRTrans-Modul hinterlegte Sendebefehle aus IPS raus einfach durch beschreiben der Registervariablen „IR-Send“ gesendet werden.
Alternativ kann aus IPS mit PHP auch über HTTP-Get gespeicherte Infrarot-Befehle gesendet werden, z.B:
sende('remote=TV&command=ok;@p300;ok;@p300;ok;@p300;ok');
function sende($data)
{
$host = '192.168.1.30'; // IP des Lan - IRTrans hir eintragen
$path= '/send.htm?'.$data;
$filePointer = fsockopen($host, 80, $errorNumber, $errorString, 2);
if (!$filePointer)
{
return 'debug: Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>
';
}
$requestHeader = "GET ".$path." HTTP/1.1
";
$requestHeader.= "Host: ".$host."
";
$requestHeader.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0
";
$requestHeader.= "Content-Type: application/x-www-form-urlencoded
";
$requestHeader.= "Connection: close
";
fwrite($filePointer, $requestHeader);
$responseHeader = '';
$responseContent = '';
do
{
$responseHeader.= fread($filePointer, 1);
}
while (!preg_match('/\\r\
\\r\
$/', $responseHeader));
// return $responseHeader;
while (!feof($filePointer))
{
$responseContent.= fgets($filePointer, 128);
}
return chop($responseContent);
}
Zum Auswerten der von einer angelernten Fernsteuerung an IR-Trans gesendeten Daten ein Scrip anlegen, das „on Update“ durch die Registervariable IR_Get getrggert wird:
$a = GetvalueString("IR_get");
$a = substr ( $a , 16 , strlen($a)-16 ) ;
$b= explode(",",$a);
if ($b[0] == 'terratec' ) {
if ($b[1] == 'power') {
FS20_SetIntensity(27544, 0, 2); // Deckenlicht Esszimmer
EZCT_SendPreset(43565, 6, 0); // Küche Licht aus
}elseif($b[1]== '1') {
// was auch immer....
}
}
Gruß Rolf