Ich möchte meine Alarmanlage (die eine serielle Schnittstelle hat) über IPS steuern und auch die Zustände Anzeigen lassen.
Das Steuern der Anlage funktiniert schon ohne weitere Probleme (Schnittstellenbeschreibung hab ich)
Um nun den Status der Anlage zu bekommen muss ich einen Anfragebefehl senden und bekomme dann folgende Zeichen zurück, die ich dann auswerten muss:
02 1F 1F 02 80 33 00 19 01 19 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 19 01 19 01 00 00 1B 03
Das 02 1F 1F 02 80 33 00 sind Startbits, Längenbits usw. und können ignoriert werden (bleiben auch immer gleich)
ab 19 01 19 01 00 usw. bekomme ich nun die Zustände der einzelnen Bereiche und Melder angezeigt.
Am Ende die 00 00 1B 03 können wieder ignoriert werden.
Meine Frage ist nun wie ich das Anzeigen der Melder und Bereiche richtig hinbekomme.
Habe natürlich schon ein Serial Port angelegt (sonst könnte ich ja noch nichts zur Anlage schicken).
Ich glaube ich benötige eine Register Variable, Cutter und für jeden Bereich und Melder eine Variable.
Vielleicht kann mir hierbei jemand behilflich sein (vor allem über ein Beispielscript wäre ich sehr dankbar)
So, hab mal folgendes Script erstellt und mit der register Variable verbunden.
<?php
// wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden ist
if ($IPS_SENDER == "RegisterVariable")
{
// bereits im Puffer der Instanz vorhandene Daten in $data kopieren
$data = RegVar_GetBuffer($_IPS['INSTANCE']);
// neu empfangene Daten an $data anhängen
$data .= $_IPS['VALUE'];
// wenn das Trennzeichen ; in $data gefunden worden ist
if (strpos($data, ';'))
{
// $data in durch ; separierte Datensätze zerlegen
$datasets = explode(';', $data);
// alle nicht durch ; terminierten Datensätze ausgeben
for ($i = 0; $i < count($datasets) - 1; $i++)
{
echo "empfangener Datensatz: ".$datasets[$i]."
";
}
// $data auf den Inhalt des letzten (unvollständigen) Datensatzes setzen
$data = $datasets[count($datasets) - 1];
}
// Inhalt von $data im Puffer der RegisterVariable-Instanz speichern
RegVar_SetBuffer($_IPS['INSTANCE'], $data);
// Daten in hex umwandeln
$dataStr = strToHex($data);
IPS_LogMessage( "MC1200","".$dataStr);
// String in Variable ausgeben
SetValue(15974 /*[Hardware\Alarmanlage MC1200\ABI Status\SB String]*/, $dataStr);
}
function strToHex($string)
{
$hex='';
for ($i=0; $i < strlen($string); $i++)
{
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
?>
Wenn ich nun Daten von der Anlage anfordere werden diese in auch in die Register Variable geschrieben:
Moin,
ich bin auch gerade dran (zwar ein paar Jahre später) meine MC1200 über RS232 anzusprechen und ins KNX zu bekommen.
Existiert die Schnittstellenbeschreibung noch und könnte ich diese auch bekommen?