poll_HV_data_old.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?php
  2. // include channel list
  3. $adeiChannel = array(
  4. // Voltage monitoring K35 etc. (index 30)
  5. array(
  6. "hv__katrin-hv_rep__7__2", //K35 divided voltage reading
  7. "hv__katrin-hv_rep__7__5", //K65 divided voltage reading
  8. "hv__katrin-hv_rep__7__3", //K35 divided voltage timestamp
  9. "hv__katrin-hv_rep__7__6", //K65 divided voltage timestamp
  10. )
  11. );
  12. // include previous values
  13. //include "ADEI_HV_readings.php";
  14. $username = 'katrin';
  15. $password = 'adei.F3rmi!2019';
  16. $context = stream_context_create(array(
  17. 'http' => array(
  18. 'header' => "Authorization: Basic " . base64_encode("$username:$password"), "Connection: close\r\n"
  19. )
  20. ));
  21. // set time zone to local German time
  22. date_default_timezone_set('Europe/Berlin');
  23. $counter = 0;
  24. $calltime = time();
  25. $errorcount = 0;
  26. $errormessage = '<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>';
  27. $starttime = time();
  28. //echo "Polling ADEI data.".PHP_EOL;
  29. for ($id = 0; $id < sizeof($adeiChannel); $id++)
  30. {
  31. $adeiChannels = "";
  32. for ($id2 = 0; $id2 < sizeof($adeiChannel[$id]); $id2++)
  33. {
  34. $adeiChannels = $adeiChannels . $adeiChannel[$id][$id2] . ",";
  35. }
  36. $adeiChannels = substr($adeiChannels, 0, strlen($adeiChannels) - 1);
  37. // new adei-katrin.kaas.kit.edu added and optimized readout parameters
  38. $fileip = file_get_contents("http://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);
  39. sleep(1);
  40. //echo $fileip.PHP_EOL;
  41. $adeiArray = explode("\n", $fileip);
  42. //convert ADEI response into array with all values
  43. $oldTS1 = 0;
  44. $oldTS2 = 0;
  45. foreach ($adeiArray as $key => $element)
  46. {
  47. $adeiLine = explode(",",$element);
  48. //echo $key." ".sizeof($adeiLine).PHP_EOL;
  49. if (sizeof($adeiLine) == 5)
  50. {
  51. $voltage = floatval($adeiLine[1]);
  52. $voltageTS = floatval($adeiLine[3]);
  53. if (($voltageTS > 0) && ($voltageTS > $oldTS1)) { $readings1[] = array($voltageTS, $voltage); $oldTS1 = $voltageTS; }
  54. $voltage = floatval($adeiLine[2]);
  55. $voltageTS = floatval($adeiLine[4]);
  56. if (($voltageTS > 0) && ($voltageTS > $oldTS2)) { $readings2[] = array($voltageTS, $voltage); $oldTS2 = $voltageTS; }
  57. }
  58. }
  59. unset($element);
  60. // filter and extract FlukeA values and calculate mean and deviations for a set of entries
  61. $index = array(-10,-30,-150);
  62. foreach ($index as $slice)
  63. {
  64. if (sizeof($readings1) > abs($slice))
  65. {
  66. $arrayslice = array_slice($readings1,$slice);
  67. $entries = count($arrayslice);
  68. if ($entries > 2)
  69. {
  70. $voltages = array_column($arrayslice,1);
  71. $mean = array_sum($voltages) / $entries;
  72. $carry = 0.0;
  73. foreach ($voltages as $val)
  74. {
  75. $d = ((double) $val) - $mean;
  76. $carry += $d * $d;
  77. }
  78. }
  79. $mean1 = $mean;
  80. $stddev1 = sqrt($carry / $entries);
  81. $stddev1_rel = $stddev1 / abs($mean1);
  82. $endTS = $arrayslice[sizeof($arrayslice)-1][0];
  83. $span = round($endTS-$arrayslice[0][0]);
  84. $time_conversion_factor = 2082844800;
  85. //echo "Number of aquired elements: ".sizeof($arrayslice).PHP_EOL;
  86. //echo "Mean Value: ".sprintf('%.6F', $mean1).PHP_EOL;
  87. //echo "Standard Deviation: ".sprintf('%.2E', $stddev1).PHP_EOL;
  88. //echo "Rel. Standard Deviation: ".sprintf('%.2E', $stddev1_rel).PHP_EOL;
  89. //echo "TS at end: ".date("r", $endTS-$time_conversion_factor).PHP_EOL;
  90. //echo "Timespan: ".$span.PHP_EOL;
  91. //echo PHP_EOL;
  92. $results1[] = array(
  93. "number" => sizeof($arrayslice),
  94. "timespan" => $span,
  95. "timestamp" => $endTS-$time_conversion_factor,
  96. "humantime" => date("r", $endTS-$time_conversion_factor),
  97. "mean" => $mean1,
  98. "stddev" => $stddev1,
  99. "ppmdev" => $stddev1_rel
  100. );
  101. }
  102. }
  103. // filter and extract FlukeE values and calculate mean and deviations for a set of entries
  104. $index = array(-5,-10,-30,-150);
  105. foreach ($index as $slice)
  106. {
  107. if (sizeof($readings2) > abs($slice))
  108. {
  109. $arrayslice = array_slice($readings2,$slice);
  110. $entries = count($arrayslice);
  111. if ($entries > 2)
  112. {
  113. $voltages = array_column($arrayslice,1);
  114. $mean = array_sum($voltages) / $entries;
  115. $carry = 0.0;
  116. foreach ($voltages as $val)
  117. {
  118. $d = ((double) $val) - $mean;
  119. $carry += $d * $d;
  120. }
  121. }
  122. $mean2 = $mean;
  123. $stddev2 = sqrt($carry / $entries);
  124. $stddev2_rel = $stddev2 / abs($mean2);
  125. $endTS = $arrayslice[sizeof($arrayslice)-1][0];
  126. $span = round($endTS-$arrayslice[0][0]);
  127. $time_conversion_factor = 2082844800;
  128. //echo "Number of aquired elements: ".sizeof($arrayslice).PHP_EOL;
  129. //echo "Mean Value: ".sprintf('%.6F', $mean2).PHP_EOL;
  130. //echo "Standard Deviation: ".sprintf('%.2E', $stddev2).PHP_EOL;
  131. //echo "Rel. Standard Deviation: ".sprintf('%.2E', $stddev2_rel).PHP_EOL;
  132. //echo "TS at end: ".date("r", $endTS-$time_conversion_factor).PHP_EOL;
  133. //echo "Timespan: ".$span.PHP_EOL;
  134. //echo PHP_EOL;
  135. $results2[] = array(
  136. "number" => sizeof($arrayslice),
  137. "timespan" => $span,
  138. "timestamp" => $endTS-$time_conversion_factor,
  139. "humantime" => date("r", $endTS-$time_conversion_factor),
  140. "mean" => $mean2,
  141. "stddev" => $stddev2,
  142. "ppmdev" => $stddev2_rel
  143. );
  144. }
  145. }
  146. //var_dump( $results2 );
  147. //var_dump( $results1 );
  148. // error handling
  149. if (substr($fileip,0,5) == "ERROR")
  150. {$errorcount++; $errormessage = $errormessage . "Error loading ADEI channel " . $id . "<br>";}
  151. for ($id2 = sizeof($adeiChannel[$id]) - 1 ; $id2 > -1; $id2--)
  152. {
  153. $pos = strrpos($fileip, ",");
  154. $adeiValue[$id][$id2] = floatval(substr($fileip, $pos + 2));
  155. $fileip = substr($fileip, 0, $pos);
  156. //echo $id . " " . $id2 . " " . $adeiValue[$id][$id2] . PHP_EOL;
  157. }
  158. }
  159. if ($errorcount >0) echo $errormessage;
  160. //echo "Writing data into formatted string.".PHP_EOL;
  161. $strFileContent = "<"."?php".PHP_EOL.PHP_EOL."$"."flukeA = ".var_export($results1, true).";".PHP_EOL.PHP_EOL;
  162. $strFileContent .= "$"."flukeE = ".var_export($results2, true).";".PHP_EOL.PHP_EOL;
  163. $strFileContent .= "?".">".PHP_EOL;
  164. // write ADEI data to file
  165. //echo "Writing data to file.".PHP_EOL;
  166. $file_w = fopen('ADEI_HV_readings.php', 'w+');
  167. //sleep(5);
  168. fwrite($file_w, $strFileContent);
  169. fclose($file_w);
  170. //echo "Data extraction done.".PHP_EOL;
  171. ?>