Hier stelle ich nun mein 8fach Taster vor der pro Taste 2 LED´s zur Meldung besitzt.
Das ganze ist mit einem Atmega aufgebaut der per seriell Verbindung mit dem IPS PC aufnimmt. Da der Controller eine ID besitzt können auch mehrere Controller an einem Seriellen Port hängen. Die Ports des Mega8 aus den anderen Projekten reichten nicht mehr aus.
Es können nun 8 Befehle gesendet werden die mit einer roten und/oder grünen LED bestätigt werden, die auch blinken können.
Statt der LED´s können aber z.B. auch Relais angesteuert werden.
Die Programmierung des µC hab ich wieder nicht selbt, sondern Tobi für mich erledigt:) danke!
Der Befehl für die LED´s im Skript:
COMPort_SendText(12345,"\xffIf\0\1\xfe"); // Beispiel LED 0 und 1 sollen Blinken...
COMPort_SendText(12345, "\xffIe\0\xfe"); //Beispiel LEDs 0 aus...
12345 = ID des seriellen Ports
I = ID des µC´s der auf den Befehl hören soll (hier I)
f = Befehl (was soll passieren)
0 = LED Nr. 0
1 = und LED Nr. 1
Befehle:
d = LED geht an
f = LED soll blinken
e = LED geht aus
LED´s = 0…15
Wenn eine Taste gedrückt wird sendet der µC das eine Taste gedrückt wurde, welche und welcher Controller sendet.
<?
$teile = explode(";", $IPS_VALUE);
// Der Sender heißt "I"
// Das entspricht dann 8 Tasten + 16 LED Controller bei Jan
$sender = $teile[0]{1};
$typ = $teile[0]{2};
if($typ == "t") //t=Taste
{
$taste = rtrim($teile[1]);
if($typ == "t") //t=Taste
{
// Taste am Raumdisplay
$taste = rtrim($teile[1]);
echo ($taste);
echo ($sender);
switch($sender)
{
case "I":
// Raum x
switch($taste)
{
case "1":
echo "Taste 1 Gerät I";
IPS_RunScript(30105 /*[Sonstige Aktoren\87 Drucker schalten]*/);
break;
case "2":
echo "Taste 2 Gerät I";
//IPS_RunScript(13927 /*[Sonstige Aktoren\81 PC 1 schalten]*/);
$Simu = getValueBoolean(23636 /*[Anwesenheitssimulation\Anweseheitssimu-an]*/); //hole Zustand von Variable - ist gerade an oder aus?
if ($Simu == false)
{
COMPort_SendText(20531 /*[Serial Port 08 / 3-1..4a+b]*/ , "\xffId\7\xfe");
setvalue(23636 /*[Anwesenheitssimulation\Anweseheitssimu-an]*/,true);
}
if ($Simu == true)
{
COMPort_SendText(20531 /*[Serial Port 08 / 3-1..4a+b]*/ , "\xffIe\7\xfe");
setvalue(23636 /*[Anwesenheitssimulation\Anweseheitssimu-an]*/,false);
}
break;
case "3":
echo "Taste 3 Gerät I";
IPS_RunScript(46836 /*[Sonstige Aktoren\83 PC 2 schalten]*/);
break;
case "4":
echo "Taste 4 Gerät I";
IPS_RunScript(17688 /*[Sonstige Aktoren\97 Server schalten]*/);
break;
case "5":
echo "Taste 5 Gerät I";
IPS_RunScript(24931 /*[Sonstige Aktoren\94 Licht Schreibtisch schalten]*/);
break;
case "6":
echo "Taste 6 Gerät I";
IPS_RunScript(56117 /*[Sonstige Aktoren\84 Monitor 2 schalten]*/);
break;
case "7":
echo "Taste 7 Gerät I";
IPS_RunScript(44939 /*[Sonstige Aktoren\82 Monitor 1 schalten]*/);
break;
case "8":
echo "Taste 8 Gerät I";
IPS_RunScript(40520 /*[Sonstige Aktoren\99 Switch schalten]*/);
break;
}
break;
}
}
}
?>
Das in der Mitteilung steht, dass es eine Taste war die gedrück wurde kommt daher, da bei den anderen Controllern auch die Info vom IRSignal empfangen oder vom Netzindikator Spannung liegt an oder halt nicht, kommen kann.
Jan