|
![]() |
![]() |
![]() |
![]() |
Mit diesem PHP Skript kann ein Datenpunkt anhand seiner ID aus der Datenbank angesteuert werden:
Dieses Skript muss unter C:/xampp/htdocs/Xsolution/Ordnerxy/Test.php liegen. Da sonst die Referenz auf den oberhalb liegenden mcs Ordner nicht gefunden wird.
Beispiel Link: http://localhost/Xsolution/Ordnerxy/Test.php?id=COMMAND_12&VALUE=SWITCH_ON
oder
http://localhost/Xsolution/Ordnerxy/Test.php?id=SET_VALUE_12&value=100
12 ist die id des Datenpunkt. Diese können Sie im Xhome-Server unter "Konfiguration" - "Datenpunkt Name/Einheit" in der ersten Zeile auslesen. SWITCH_ON ist der Befehl - Diesen können Sie unter "System" - "Manuelle Steuerung" auslesen.
Bei einem SET Befehl müssen Sie den Wert angeben welcher übertragen werden soll.
<?php header('content-type: application/json; charset=utf-8');
error_reporting(1); require_once ("../mcs/config.inc.php"); require_once ("../mcs/datenbank.php");
//require_once ("Xsolution/mcs/config.inc.php"); // Wenn das PHP Skript direkt im htdocs Verzeichnis liegt //require_once ("Xsolution/mcs/datenbank.php"); // Wenn das PHP Skript direkt im htdocs Verzeichnis liegt
mysql_set_charset('utf8');
$result = 'error';
// ?id=COMMAND_12&value=SWITCH_ON // ?id=SET_VALUE_12&value=100
if (isset($_GET["id"]) && isset($_GET["value"]) ) {
$id = $_GET["id"]; // COMMAND_12 für id12 oder SET_VALUE_12 für id 12 $value = $_GET["value"]; // SWITCH_ON oder 100
$service_port = 2425;
$address = gethostbyname('localhost');
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket !== false) {
$result = socket_connect($socket, $address, $service_port);
$read = array($socket); $write = array($socket);
$message = ''; while(($buf=@socket_read($socket, 512))) { $message .= $buf; if ($ret = socket_select($read, $write, $except = NULL, NULL) < 2) {break; } }
$reader = new XMLReader(); $reader->xml($message);
while ( $reader->read() ) { if ( $reader->nodeType ==XMLReader::ELEMENT ) { if($reader->name == 'res:security'){ $Random = $reader->readString() ; } } }
$Random_Key_Server = rand(0,100); (int) $ValueKey = substr($Random, 3, 1).substr($Random, 1, 1).substr($Random, 6, 1).substr($Random, 7, 1).substr($Random, 0, 1); $Response_Generated_Key = ((int)$ValueKey) * $Random_Key_Server; $Key = '<request xsi:schemaLocation="/de/xsolution/xmladapter/extern/request file:/request.xsd" xmlns:mcom="/de/xsolution/xmladapter/extern/common" xmlns="/de/xsolution/xmladapter/extern/request" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><prefix>'.$Random_Key_Server.'</prefix><suffix>'.$Response_Generated_Key.'</suffix><user>PHP_Control</user><uuid>PHP_Control</uuid><noinit>true</noinit><getRequest_after_command>true</getRequest_after_command></request>'; $length=pack("n",strlen($Key)); socket_write($socket,$length.$Key,strlen($Key)+2);
while(($buf=@socket_read($socket, 512))) { $data .= $buf; if ($ret = socket_select($read, $write, $except = NULL, NULL) < 2) { break; } }
$raw_ID = substr($id, strrpos($id, '_')+1); $query = "select * from `datapoints` WHERE `id` = ".$raw_ID;
fwrite($fh, $query); $res = mysql_query($query);
$number = mysql_num_rows($res);
if ($number) {
$dp = mysql_fetch_array($res, MYSQL_ASSOC);
$Kommando = "leer";
if (strpos($id,'COMMAND_') !== false) {
$Kommando = '<request xsi:schemaLocation="/de/xsolution/xmladapter/extern/request file:/request.xsd" xmlns:mcom="/de/xsolution/xmladapter/extern/common" xmlns="/de/xsolution/xmladapter/extern/request" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><timestamp>2011-09-29T21:59:11</timestamp><command><id>0815</id><dataPoint><mcom:name>'.$dp['dp_name'].'</mcom:name><mcom:type>'.$dp['dp_type'].'</mcom:type></dataPoint><command>'.$value.'</command></command></request>';
}else{
$Send_Kommando = substr($id, 0, strrpos($id, '_')); $Kommando = '<request xsi:schemaLocation="/de/xsolution/xmladapter/extern/request file:/request.xsd" xmlns:mcom="/de/xsolution/xmladapter/extern/common" xmlns="/de/xsolution/xmladapter/extern/request" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><timestamp>2011-09-29T21:59:11</timestamp><command><id>0815</id><dataPoint><mcom:name>'.$dp['dp_name'].'</mcom:name><mcom:type>'.$dp['dp_type'].'</mcom:type></dataPoint><command>'. $Send_Kommando.'</command><parameter>'.$value.'</parameter></command></request>';
}
$length=pack("n",strlen($Kommando));
usleep(500000);
socket_write($socket, $length, 2); socket_write($socket,$Kommando,strlen($Kommando));
socket_close($socket);
$result = 'success';
echo json_encode($result);
}else{
echo "Datenpunkt nicht gefunden"; }
}
}
?>
|