array(
'header' => "Authorization: Basic " . base64_encode("$username:$password") ,
"Connection: close\r\n"
)
));
// set time zone to local German time
date_default_timezone_set('Europe/Berlin');
sleep(2);
$counter = 0;
$calltime = time();
$errorcount = 0;
$errormessage = '
';
$starttime = $calltime;
$n = 0;
//echo "started ".date("r", $starttime).PHP_EOL;
// do {
$n++;
$currenttime = time();
$delaytime = 10 - ($currenttime % 10);
sleep($delaytime);
// echo "start polling ".time().PHP_EOL;
//echo "Polling ADEI data.".PHP_EOL;
for ($id = 0;$id < sizeof($adeiChannel);$id++) {
$adeiChannels = "";
for ($id2 = 0;$id2 < sizeof($adeiChannel[$id]);$id2++) {
$adeiChannels = $adeiChannels . $adeiChannel[$id][$id2] . ",";
}
$adeiChannels = substr($adeiChannels, 0, strlen($adeiChannels) - 1);
// new adei-katrin.kaas.kit.edu added and optimized readout parameters
$fileip = file_get_contents("https://adei-katrin.kaas.kit.edu/adei/services/getdata.php?db_server=virtual&db_name=srctree&db_group=-3&control_group=-3&virtual=srctree&srctree=" . $adeiChannels . "&rt=full&window=400&format=csv", false, $context);
sleep(1);
//echo $fileip.PHP_EOL;
$adeiArray = explode("\n", $fileip);
//convert ADEI response into array with all values
$oldTS1 = 0;
$oldTS2 = 0;
$readings1 = array();
$readings2 = array();
foreach ($adeiArray as $key => $element) {
$adeiLine = explode(",", $element);
//echo $key." ".sizeof($adeiLine).PHP_EOL;
if (sizeof($adeiLine) == 5) {
$voltage = floatval($adeiLine[1]);
$voltageTS = floatval($adeiLine[3]);
if (($voltageTS > 0) && ($voltageTS > $oldTS1)) {
$readings1[] = array(
$voltageTS,
$voltage
);
$oldTS1 = $voltageTS;
}
$voltage = floatval($adeiLine[2]);
$voltageTS = floatval($adeiLine[4]);
if (($voltageTS > 0) && ($voltageTS > $oldTS2)) {
$readings2[] = array(
$voltageTS,
$voltage
);
$oldTS2 = $voltageTS;
}
}
}
unset($element);
// filter and extract FlukeA values and calculate mean and deviations for a set of entries
$index = array(-5, -10, -30, -150, -300);
foreach ($index as $slice) {
if (sizeof($readings1) > abs($slice)) {
$arrayslice = array_slice($readings1, $slice);
$entries = count($arrayslice);
if ($entries > 2) {
$voltages = array_column($arrayslice, 1);
$mean = array_sum($voltages) / $entries;
$carry = 0.0;
foreach ($voltages as $val) {
$d = ((double)$val) - $mean;
$carry += $d * $d;
}
}
$mean1 = $mean;
$stddev1 = sqrt($carry / $entries);
$stddev1_rel = $stddev1 / abs($mean1);
$endTS = $arrayslice[sizeof($arrayslice) - 1][0];
$span = round($endTS - $arrayslice[0][0]);
$time_conversion_factor = 2082844800;
//echo "Number of aquired elements: ".sizeof($arrayslice).PHP_EOL;
//echo "Mean Value: ".sprintf('%.6F', $mean1).PHP_EOL;
//echo "Standard Deviation: ".sprintf('%.2E', $stddev1).PHP_EOL;
//echo "Rel. Standard Deviation: ".sprintf('%.2E', $stddev1_rel).PHP_EOL;
//echo "TS at end: ".date("r", $endTS-$time_conversion_factor).PHP_EOL;
//echo "Timespan: ".$span.PHP_EOL;
//echo PHP_EOL;
$results1[] = array(
"number" => sizeof($arrayslice) ,
"timespan" => $span,
"timestamp" => $endTS - $time_conversion_factor,
"humantime" => date("r", $endTS - $time_conversion_factor) ,
"mean" => $mean1,
"stddev" => $stddev1,
"ppmdev" => $stddev1_rel
);
}
}
// filter and extract FlukeE values and calculate mean and deviations for a set of entries
$index = array(-5, -10, -30, -150, -300);
foreach ($index as $slice) {
if (sizeof($readings2) > abs($slice)) {
$arrayslice = array_slice($readings2, $slice);
$entries = count($arrayslice);
if ($entries > 2) {
$voltages = array_column($arrayslice, 1);
$mean = array_sum($voltages) / $entries;
$carry = 0.0;
foreach ($voltages as $val) {
$d = ((double)$val) - $mean;
$carry += $d * $d;
}
}
$mean2 = $mean;
$stddev2 = sqrt($carry / $entries);
$stddev2_rel = $stddev2 / abs($mean2);
$endTS = $arrayslice[sizeof($arrayslice) - 1][0];
$span = round($endTS - $arrayslice[0][0]);
$time_conversion_factor = 2082844800;
//echo "Number of aquired elements: ".sizeof($arrayslice).PHP_EOL;
//echo "Mean Value: ".sprintf('%.6F', $mean2).PHP_EOL;
//echo "Standard Deviation: ".sprintf('%.2E', $stddev2).PHP_EOL;
//echo "Rel. Standard Deviation: ".sprintf('%.2E', $stddev2_rel).PHP_EOL;
//echo "TS at end: ".date("r", $endTS-$time_conversion_factor).PHP_EOL;
//echo "Timespan: ".$span.PHP_EOL;
//echo PHP_EOL;
$results2[] = array(
"number" => sizeof($arrayslice) ,
"timespan" => $span,
"timestamp" => $endTS - $time_conversion_factor,
"humantime" => date("r", $endTS - $time_conversion_factor) ,
"mean" => $mean2,
"stddev" => $stddev2,
"ppmdev" => $stddev2_rel
);
}
}
//var_dump( $results2 );
//var_dump( $results1 );
// error handling
if (substr($fileip, 0, 5) == "ERROR") {
$errorcount++;
$errormessage = $errormessage . "Error loading ADEI channel " . $id . "
";
}
for ($id2 = sizeof($adeiChannel[$id]) - 1;$id2 > - 1;$id2--) {
$pos = strrpos($fileip, ",");
$adeiValue[$id][$id2] = floatval(substr($fileip, $pos + 2));
$fileip = substr($fileip, 0, $pos);
//echo $id . " " . $id2 . " " . $adeiValue[$id][$id2] . PHP_EOL;
}
}
if ($errorcount > 0) echo $errormessage;
//echo "Writing data into formatted string.".PHP_EOL;
$strFileContent = "<"."?php".PHP_EOL.PHP_EOL."$"."REU0201 = ".var_export($results1, true).";".PHP_EOL.PHP_EOL;
$strFileContent .= "$"."REU0301 = ".var_export($results2, true).";".PHP_EOL.PHP_EOL;
$strFileContent .= "$"."extraction_time_HV = '". date(DATE_RFC850) ."';".PHP_EOL.PHP_EOL;
$strFileContent .= "?".">".PHP_EOL;
// write ADEI data to file
//echo "Writing data to file.".PHP_EOL;
$file_w = fopen('ADEI_HV_readings.php', 'w+');
sleep(1);
fwrite($file_w, $strFileContent);
fclose($file_w);
//echo $strFileContent.PHP_EOL;
//echo $n." ".time().PHP_EOL;
// }
// while (time() < $starttime + 50);
//echo "stopped".date("r", time()).PHP_EOL;
//echo "Data extraction done.".PHP_EOL;
?>