Datenpunkt Befehl senden

Link

Vorheriges Thema Nächstes Thema Kein Verzeichnis für dieses Thema  

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";

         }

         

 }

         

 }        

 

 

 

                         

?>