Halli hallo
nachdem ich euch die letzten wochen immer wieder mit einzelheiten genervt habe, soll nun die kür folgen
ich habe ein formularfeld das die IP des Ofens angibt bzw, den namen dieser soll gefüllt werden durch die URL ($_GET ??) und die anderen felder sollen dann von dem zugehörigen Ofen angezeigt werden.
in dem Formular sollen aber auch die Targets des ofens geändert werden können und abgeschickt ($_POST!!).
Nun die schwierigkeit
wenn die IP geändert wird, soll so gesehen onchange, die daten vom neuen ofen abgerufen werden.
ich tu mich hier mit der realisierung recht schwer auch mit dem $_GET....
ein weiteres problem habe ich mit dem reloadbutton, der nur die formularfelder aktualisieren soll, aber nicht die komplette seite
hier ein bisheriger code
nachdem ich euch die letzten wochen immer wieder mit einzelheiten genervt habe, soll nun die kür folgen
ich habe ein formularfeld das die IP des Ofens angibt bzw, den namen dieser soll gefüllt werden durch die URL ($_GET ??) und die anderen felder sollen dann von dem zugehörigen Ofen angezeigt werden.
in dem Formular sollen aber auch die Targets des ofens geändert werden können und abgeschickt ($_POST!!).
Nun die schwierigkeit
wenn die IP geändert wird, soll so gesehen onchange, die daten vom neuen ofen abgerufen werden.
ich tu mich hier mit der realisierung recht schwer auch mit dem $_GET....
ein weiteres problem habe ich mit dem reloadbutton, der nur die formularfelder aktualisieren soll, aber nicht die komplette seite
hier ein bisheriger code
PHP-Code:
<?php
//this script is for the online- Remote contorl of the Oven
$debug=0; //
$maxtemp=(real)85; //
$mintemp=(real)-40; //
$lowhum=(real)0; //
$highhum=(real)100; //
$lowfan=(real)0; //
//////////////////////////
$IP="de-oven-02";
$buff;
$newtemp;
$cel="[°C]";
$per="[%]";
$newtartempstr="";
$newtarhumstr="";
$newtarfanstr="";
//initiate debug notices
if($debug===1){
init_set('display_errors', 1);
error_reporting(-1);
}
//function to get values from target oven
function readOven($IP, $debug){
$con=fsockopen($IP, 2049, $errno, $errstr);
if($con){
fputs($con, "\$01I\r";
$stream=stream_get_contents($con, 131, 0);
if($debug===1){
echo "debug readoven: $stream <br> vardump readOven(): ";
var_dump($stream);
echo "<br>";
}
}else{
echo $errno . "( $errstr ) <br>";
$stream="false";
}
fclose($con);
return $stream;
}
//function to get values in right format after submit
function getFormat($value, $debug){
$newform=sprintf("%1$06.1f", $value);
if($debug===1){
echo "debug newform: $newform <br> var_dump()";
var_dump($newform);
echo "<br>";
}
return $newform;
}
//send new values to target oven
function sendOven($newtartempstr, $newtarhumstr, $newtarfanstr, $buff, $IP, $debug){
$stream=explode (" "; $buff);
$sendstring=$newtartempstr . " " . $newtarhumstr . " " . $newtarfanstr . " " . $stream[8] . " " . $stream[9] . " " . $stream[10] . " " . $stream[11] . " " . $stream[14];
if($debug===1){
echo "debug sendOven Sendstring: $sendstring <br>";
echo "debug sendOven buff: $buff <br>";
}
$con=fsockopen($IP, 2049, $errno, $errstr);
if($con){
fputs($con, "\$01E $sendstring\r");
}
else{
echo "$errno ( $errstr )<br>";
}
fclose($con);
}
$buff=readOven($IP, $debug);
//debuging
if($debug===1){
echo "var_dump() after readOven: ";
var_dump($buff);
echo "<br>";
}
//format the string pieces to double
$tartemp=(real)substr($buff,0,6);
$curtemp=(real)substr($buff,7,6);
$tarhum=(real)substr($buff,14,6);
$curhum=(real)substr($buff,21,6);
$tarfan=(real)substr($buff,28,6);
$curfan=(real)substr($buff,35,6);
//format the string pieces to integer
$power=(int)substr($buff,99,1);
$humcon=(int)substr($buff,100,1);
$condprot=(int)substr($buff,101,1);
//debuging
if($debug===1){
echo "power: $power <br>";
echo "humcon: $humcon <br>";
echo "condprot: $condprot <br>";
}
//see if checkbox have to be checked or not
$checked='checked="checked"';
$powercheck=($power===1) ? $checked: "";
$humcheck=($humcon===1) ? $checked: "";
$condcheck=($condprot===1) ? $checked: "";
echo<<< BODY
<head>
<title>online-oven-management</title>
</head>
<body>
<form method="POST" action=ovenmanagement.php align="center">
<table boarder=0>
<tr>
<td>Adresse</td>
<td><input name="IP" size=3 value=$IP></td>
</tr>
<tr>
<td></td>
<td></td>
<td>Target</td>
<td>Current</td>
</tr>
<tr>
<td>Temp</td>
<td>$cel</td>
<td><input name="tartemp" size=1 value=$tartemp></td>
<td>$curtemp</td>
</tr>
<tr>
<td>Humidity</td>
<td>$per</td>
<td><input name="tarhum" size=1 value=$tarhum></td>
<td>$curhum</td>
</tr>
<tr>
<td>Fanspeed</td>
<td>$per</td>
<td><input name="tarfan" size=1 value=$tarfan></td>
<td>$curfan</td>
</tr>
<tr>
<td>Power</td>
<td><input type="checkbox" name="power" $powercheck></td>
</tr>
<tr>
<td>Power</td>
<td><input type="checkbox" name="humcon" $humcheck></td>
</tr>
<tr>
<td>Power</td>
<td><input type="checkbox" name="condprot" $condcheck></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Submit"></td>
<td><input type="button" name="reload" value="Reload" onClick=location.reload(true)></td>
<td><input type="reset" name="reset" value="Reset"></td>
</tr>
</table>
</form>
</body>
BODY;
//on submit
if($_SERVER["REQUEST_METHOD"]=="POST"){
if($debug===1){
echo "var_dump() Request: ";
var_dump($_POST);
echo "<br>";
}
//Target values get formated to compare easier
$newtartemp=(real)($_POST['tartemp']);
$newtarhum=(real)($_POST['tarhum']);
$newtarfan=(real)($_POST['tarfan']);
//check if tartemp is changed
if($newtartemp!=$tartemp){
//tartemp check
if($newtartemp<$mintemp){
echo "<script type=\"text/javascript\" language=\"Javascript\">
alert(\"temp to low it musst be over -40° C;\");
</script>";
}
else if($newtartemp>$maxtemp){
echo "<script type=\"text/javascript\" language=\"Javascript\">
alert(\"temp to high it musst be under 85° C;\");
</script>";
}
else{
$newtartempstr=getFormat($newtartemp, $debug);
}
}
else{
$newtartempstr=getFormat($newtartemp, $debug);
}
//tarhum check
if($newtarhum!=$tarhum){
if($newtarhum<$minhum){
echo "<script type=\"text/javascript\" language=\"Javascript\">
alert(\"hum to low it musst be over 0%;\");
</script>";
}
else if($newtarhum>$maxhum){
echo "<script type=\"text/javascript\" language=\"Javascript\">
alert(\"hum to high it musst be under 100%;\");
</script>";
}
else{
$newtarhumstr=getFormat($newtarhum, $debug);
}
}
else{
$newtarhumstr=getFormat($newtarhum, $debug);
}
//tarfancheck
if($newtarfan!=$tarfan){
if($newtarfan<$minfan){
echo "<script type=\"text/javascript\" language=\"Javascript\">
alert(\"temp to low it musst be over 0 %;\");
</script>";
}
else if($newtarfan>$maxfan){
echo "<script type=\"text/javascript\" language=\"Javascript\">
alert(\"temp to high it musst be under 100 %\");
</script>";
}
else{
$newtarfanstr=getFormat($newtarfan, $debug);
}
}
else{
$newtarfanstr=getFormat($newtarfan, $debug);
}
//checkbox power
if(!empty($_POST['power'])){
$buff[99]="1";
if($debug===1){
echo "debug power on: " . $buff[99] . "<br>";
}
}
else{
$buff[99]="0";
if($debug===1){
echo "debug power off: ". $buff[99] "<br>";
}
}
//checkbox Humcon
if(!empty($_POST['humcon'])){
$buff[100]="1";
if($debug===1){
echo "debug humcon on: " . $buff[100] . "<br>";
}
}
else{
$buff[100]="0";
if($debug===1){
echo "debug humcon off: ". $buff[100] "<br>";
}
}
//checkbox condprot
if(!empty($_POST['condprot'])){
$buff[101]="1";
if($debug===1){
echo "debug condprot on: " . $buff[101] . "<br>";
}
}
else{
$buff[101]="0";
if($debug===1){
echo "debug power off: ". $buff[101] "<br>";
}
}
if($debug===1){
echo "debug gettype newtartemp:" . gettype($newtartemp) . "<br>";
echo "debug gettype tartemp:" . gettype($tartemp) . "<br>";
echo "debug gettype newtarhum:" . gettype($newtarhum) . "<br>";
echo "debug gettype tarhum:" . gettype($tarhum) . "<br>";
echo "debug gettype newtarfan:" . gettype($newtarfan) . "<br>";
echo "debug gettype tarfan:" . gettype($tarfan) . "<br>";
echo "debug gettype newtartempstr:" . gettype($newtartempstr) . "<br>";
echo "debug gettype newtarhumstr:" . gettype($newtarhumstr) . "<br>";
}
sendOven($newtartempstr, $newtarhumstr, $newtarfanstr, $buff, $IP, $debug);
}
?>
Kommentar