|
@@ -0,0 +1,288 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+ function show_status($done, $total, $size = 30) {
|
|
|
+ static $start_time;
|
|
|
+
|
|
|
+ // if we go over our bound, just ignore it
|
|
|
+ if ($done > $total) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (empty($start_time)) {
|
|
|
+ $start_time = time();
|
|
|
+ }
|
|
|
+ $now = time();
|
|
|
+
|
|
|
+ $perc = (float)($done / $total);
|
|
|
+
|
|
|
+ $bar = floor($perc * $size);
|
|
|
+
|
|
|
+ $status_bar = "\r[";
|
|
|
+ $status_bar .= str_repeat("=", $bar);
|
|
|
+ if ($bar < $size) {
|
|
|
+ $status_bar .= ">";
|
|
|
+ $status_bar .= str_repeat(" ", $size - $bar);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $status_bar .= "=";
|
|
|
+ }
|
|
|
+
|
|
|
+ $disp = number_format($perc * 100, 0);
|
|
|
+
|
|
|
+ $status_bar .= "] $disp% $done/$total";
|
|
|
+
|
|
|
+ $rate = ($now - $start_time) / $done;
|
|
|
+ $left = $total - $done;
|
|
|
+ $eta = round($rate * $left, 2);
|
|
|
+
|
|
|
+ $elapsed = $now - $start_time;
|
|
|
+
|
|
|
+ $status_bar .= " remaining: " . number_format($eta) . " sec. elapsed: " . number_format($elapsed) . " sec.";
|
|
|
+
|
|
|
+ echo "$status_bar ";
|
|
|
+
|
|
|
+ flush();
|
|
|
+
|
|
|
+ // when done, send a newline
|
|
|
+ if ($done == $total) {
|
|
|
+ echo "\n";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // get config name (optionally pass to script, 1st arg)
|
|
|
+ $config = !empty($argv[1]) ? $argv[1] : "";
|
|
|
+
|
|
|
+ // get validity time (optionally pass to script, 2nd arg)
|
|
|
+ $ts = !empty($argv[2]) ? $argv[2] : date('Y-m-d H:i:s', $time);
|
|
|
+
|
|
|
+ // include channel list
|
|
|
+ //include "SDS_status_channels.php";
|
|
|
+ $username = getenv("PHP_ADEI_USERNAME");
|
|
|
+ $password = getenv("PHP_ADEI_PASSWORD");
|
|
|
+
|
|
|
+ // the user needs write access to KDB!
|
|
|
+ $kdb_username = getenv("PHP_KDB_USERNAME");
|
|
|
+ $kdb_password = getenv("PHP_KDB_PASSWORD");
|
|
|
+
|
|
|
+ // ** Katrin numbers referring to IE electrode segments ** //
|
|
|
+ $relationKatrinNumbers = array(
|
|
|
+ array( // 22 rows: 2x11 electrode rings (inner+outer)
|
|
|
+ "434-EEL-3-0210-0002", // WestRing 02 outer
|
|
|
+ "434-EEL-3-0211-0002", // WestRing 02 inner
|
|
|
+ "434-EEL-3-0310-0002", // WestRing 03 outer
|
|
|
+ "434-EEL-3-0311-0002", // WestRing 03 inner
|
|
|
+ "434-EEL-3-0410-0002", // WestRing 04 outer
|
|
|
+ "434-EEL-3-0411-0002", // WestRing 04 inner
|
|
|
+ "434-EEL-3-0510-0002", // WestRing 05 outer
|
|
|
+ "434-EEL-3-0511-0002", // WestRing 05 inner
|
|
|
+ "434-EEL-3-0610-0002", // WestRing 06 outer
|
|
|
+ "434-EEL-3-0611-0002", // WestRing 06 inner
|
|
|
+ "434-EEL-3-0710-0002", // WestRing 07-11 outer
|
|
|
+ "434-EEL-3-0711-0002", // WestRing 07-11 inner
|
|
|
+ "434-EEL-3-1210-0002", // WestRing 12 outer
|
|
|
+ "434-EEL-3-1211-0002", // WestRing 12 inner
|
|
|
+ "434-EEL-3-1310-0002", // WestRing 13 outer
|
|
|
+ "434-EEL-3-1311-0002", // WestRing 13 inner
|
|
|
+ "434-EEL-3-1410-0002", // WestRing 14 outer
|
|
|
+ "434-EEL-3-1411-0002", // WestRing 14 inner
|
|
|
+ "434-EEL-3-1510-0002", // WestRing 15 outer
|
|
|
+ "434-EEL-3-1511-0002", // WestRing 15 inner
|
|
|
+ "434-EEL-3-1610-0002", // WestRing 16 outer
|
|
|
+ "434-EEL-3-1611-0002", // WestRing 16 inner
|
|
|
+ // ^^............ means ring index (02..16)
|
|
|
+ // ^........... means west (=1) or east (=2) dipole
|
|
|
+ // ^.......... means outer (=0) or inner (=1) layer
|
|
|
+ ) ,
|
|
|
+ array( // 22 rows: 2x11 electrode rings (inner+outer)
|
|
|
+ "434-EEL-3-0220-0002", // EastRing 02 outer
|
|
|
+ "434-EEL-3-0221-0002", // EastRing 02 inner
|
|
|
+ "434-EEL-3-0320-0002", // EastRing 03 outer
|
|
|
+ "434-EEL-3-0321-0002", // EastRing 03 inner
|
|
|
+ "434-EEL-3-0420-0002", // EastRing 04 outer
|
|
|
+ "434-EEL-3-0421-0002", // EastRing 04 inner
|
|
|
+ "434-EEL-3-0520-0002", // EastRing 05 outer
|
|
|
+ "434-EEL-3-0521-0002", // EastRing 05 inner
|
|
|
+ "434-EEL-3-0620-0002", // EastRing 06 outer
|
|
|
+ "434-EEL-3-0621-0002", // EastRing 06 inner
|
|
|
+ "434-EEL-3-0720-0002", // EastRing 07-11 outer
|
|
|
+ "434-EEL-3-0721-0002", // EastRing 07-11 inner
|
|
|
+ "434-EEL-3-1220-0002", // EastRing 12 outer
|
|
|
+ "434-EEL-3-1221-0002", // EastRing 12 inner
|
|
|
+ "434-EEL-3-1320-0002", // EastRing 13 outer
|
|
|
+ "434-EEL-3-1321-0002", // EastRing 13 inner
|
|
|
+ "434-EEL-3-1420-0002", // EastRing 14 outer
|
|
|
+ "434-EEL-3-1421-0002", // EastRing 14 inner
|
|
|
+ "434-EEL-3-1520-0002", // EastRing 15 outer
|
|
|
+ "434-EEL-3-1521-0002", // EastRing 15 inner
|
|
|
+ "434-EEL-3-1620-0002", // EastRing 16 outer
|
|
|
+ "434-EEL-3-1621-0002", // EastRing 16 inner
|
|
|
+ // ^^............ means ring index (02..16)
|
|
|
+ // ^........... means west (=1) or east (=2) dipole
|
|
|
+ // ^.......... means outer (=0) or inner (=1) layer
|
|
|
+ ) ,
|
|
|
+ );
|
|
|
+
|
|
|
+ // ** Katrin numbers referring to IE power supply channels ** //
|
|
|
+ $relationTargetNumbers = array(
|
|
|
+ array( // IE offset channels West side
|
|
|
+ // 22 rows: 3x7 offset channels + IE common
|
|
|
+ "436-EHV-0-0003-0102", // WestCh 00 / not used
|
|
|
+ "436-EHV-0-0003-0202", // WestCh 01 / not used
|
|
|
+ "436-EHV-0-0003-0302", // WestCh 02 / Patch 00
|
|
|
+ "436-EHV-0-0003-0402", // WestCh 03 / Patch 01
|
|
|
+ "436-EHV-0-0003-0502", // WestCh 04 / Patch 02
|
|
|
+ "436-EHV-0-0003-0602", // WestCh 05 / Patch 03
|
|
|
+ "436-EHV-0-0003-0702", // WestCh 06 / Patch 04
|
|
|
+ "436-EHV-0-0003-0802", // WestCh 07 / Patch 05
|
|
|
+ "436-EHV-0-0005-0102", // WestCh 08 / Patch 06
|
|
|
+ "436-EHV-0-0005-0202", // WestCh 09 / Patch 07
|
|
|
+ "436-EHV-0-0005-0302", // WestCh 10 / Patch 08
|
|
|
+ "436-EHV-0-0005-0402", // WestCh 11 / Patch 09
|
|
|
+ "436-EHV-0-0005-0502", // WestCh 12 / Patch 10
|
|
|
+ "436-EHV-0-0005-0602", // WestCh 13 / Patch 11
|
|
|
+ "436-EHV-0-0005-0702", // WestCh 14 / Patch 12
|
|
|
+ "436-EHV-0-0005-0802", // WestCh 15 / Patch 13
|
|
|
+ "436-EHV-0-0007-0102", // WestCh 16 / Patch 14
|
|
|
+ "436-EHV-0-0007-0202", // WestCh 16 / Patch 15
|
|
|
+ "436-EHV-0-0007-0302", // WestCh 17 / Patch 16
|
|
|
+ "436-EHV-0-0007-0402", // WestCh 18 / Patch 17
|
|
|
+ "436-EHV-0-0007-0502", // WestCh 19 / Patch 18
|
|
|
+ "436-EHV-0-0007-0602", // WestCh 20 / Patch 19
|
|
|
+ "436-EHV-0-0007-0702", // WestCh 21 / Patch 20
|
|
|
+ "436-EHV-0-0007-0802", // WestCh 22 / Patch 21
|
|
|
+
|
|
|
+ "436-EHV-0-0002-0101", // IE dipole west
|
|
|
+ "436-EHV-0-1003-0002", // IE common
|
|
|
+ ) ,
|
|
|
+ array( // IE offset channels East side
|
|
|
+ // 22 rows: 3x7 offset channels + IE common
|
|
|
+ "436-EHV-0-0004-0102", // EastCh 00 / not used
|
|
|
+ "436-EHV-0-0004-0202", // EastCh 01 / not used
|
|
|
+ "436-EHV-0-0004-0302", // EastCh 02 / Patch 00
|
|
|
+ "436-EHV-0-0004-0402", // EastCh 03 / Patch 01
|
|
|
+ "436-EHV-0-0004-0502", // EastCh 04 / Patch 02
|
|
|
+ "436-EHV-0-0004-0602", // EastCh 05 / Patch 03
|
|
|
+ "436-EHV-0-0004-0702", // EastCh 06 / Patch 04
|
|
|
+ "436-EHV-0-0004-0802", // EastCh 07 / Patch 05
|
|
|
+ "436-EHV-0-0006-0102", // EastCh 08 / Patch 06
|
|
|
+ "436-EHV-0-0006-0202", // EastCh 09 / Patch 07
|
|
|
+ "436-EHV-0-0006-0302", // EastCh 10 / Patch 08
|
|
|
+ "436-EHV-0-0006-0402", // EastCh 11 / Patch 09
|
|
|
+ "436-EHV-0-0006-0502", // EastCh 12 / Patch 10
|
|
|
+ "436-EHV-0-0006-0602", // EastCh 13 / Patch 11
|
|
|
+ "436-EHV-0-0006-0702", // EastCh 14 / Patch 12
|
|
|
+ "436-EHV-0-0006-0802", // EastCh 15 / Patch 13
|
|
|
+ "436-EHV-0-0008-0102", // EastCh 16 / Patch 14
|
|
|
+ "436-EHV-0-0008-0202", // EastCh 16 / Patch 15
|
|
|
+ "436-EHV-0-0008-0302", // EastCh 17 / Patch 16
|
|
|
+ "436-EHV-0-0008-0402", // EastCh 18 / Patch 17
|
|
|
+ "436-EHV-0-0008-0502", // EastCh 19 / Patch 18
|
|
|
+ "436-EHV-0-0008-0602", // EastCh 20 / Patch 19
|
|
|
+ "436-EHV-0-0008-0702", // EastCh 21 / Patch 20
|
|
|
+ "436-EHV-0-0008-0802", // EastCh 22 / Patch 21
|
|
|
+
|
|
|
+ "436-EHV-0-0002-0102", // IE dipole east
|
|
|
+ "436-EHV-0-1003-0002", // IE common
|
|
|
+ ) ,
|
|
|
+
|
|
|
+ );
|
|
|
+
|
|
|
+ function flatten(array $array) {
|
|
|
+ $return = array();
|
|
|
+ array_walk_recursive($array, function ($a) use (&$return) {
|
|
|
+ $return[] = $a;
|
|
|
+ });
|
|
|
+ return $return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // set time zone to local German time
|
|
|
+ date_default_timezone_set("Europe/Berlin");
|
|
|
+
|
|
|
+ $errorcount = 0;
|
|
|
+ $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>";
|
|
|
+
|
|
|
+ // read ADEI data from file
|
|
|
+ if (! file_exists("patchpanel/data/activeIEconfig.txt")) {
|
|
|
+ $errorcount++;
|
|
|
+ $errormessage = $errormessage . "File 'activeIEconfig.txt' does not exist.<br>";
|
|
|
+ }
|
|
|
+
|
|
|
+ $check = array( 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
|
|
|
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 );
|
|
|
+
|
|
|
+ $handle = fopen("patchpanel/data/activeIEconfig.txt", "r");
|
|
|
+ if ($handle) {
|
|
|
+ $id = 0;
|
|
|
+ while (($buffer = fgets($handle, 4096)) !== false)
|
|
|
+ {
|
|
|
+ $buffer = trim($buffer);
|
|
|
+ if ($buffer == 'IE')
|
|
|
+ $check[$id++] = 22;
|
|
|
+ else
|
|
|
+ $check[$id++] = intval($buffer) - 2;
|
|
|
+ }
|
|
|
+ fclose($handle);
|
|
|
+ }
|
|
|
+
|
|
|
+ $json = array('relation' => array());
|
|
|
+
|
|
|
+ assert( sizeof($relationKatrinNumbers) == 2 );
|
|
|
+ assert( sizeof($relationTargetNumbers) == 2 );
|
|
|
+ $ch = 0;
|
|
|
+ for ($eastwest = 0; $eastwest < 2; $eastwest++) {
|
|
|
+ // loop over each half of the array
|
|
|
+ assert( sizeof($relationKatrinNumbers[$eastwest]) == 22 );
|
|
|
+ assert( sizeof($relationTargetNumbers[$eastwest]) >= 22 );
|
|
|
+ foreach ($relationKatrinNumbers[$eastwest] as $kn) {
|
|
|
+ $json['relation'][$kn] = array();
|
|
|
+ $json['relation'][$kn]['ValidityStart'] = $ts;
|
|
|
+ $json['relation'][$kn]['Comment'] = "Patchpanel configuration: " . $config;
|
|
|
+
|
|
|
+ $index = $check[$ch++];
|
|
|
+ if ($index >= 22)
|
|
|
+ $json['relation'][$kn]['AssociateNumber'] = end($relationTargetNumbers[$eastwest]); // last entry = IE common
|
|
|
+ else
|
|
|
+ $json['relation'][$kn]['AssociateNumber'] = $relationTargetNumbers[$eastwest][$index];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ echo "Request payload (JSON):" . PHP_EOL;
|
|
|
+ var_dump($json);
|
|
|
+
|
|
|
+ // build HTTP context
|
|
|
+ $context = stream_context_create([
|
|
|
+ 'http' => [
|
|
|
+ 'method' => 'POST',
|
|
|
+ 'header' => "Authorization: Basic " . base64_encode("$kdb_username:$kdb_password") . "\r\n" .
|
|
|
+ "Content-type: application/json" . "\r\n" .
|
|
|
+ "Connection: close" . "\r\n",
|
|
|
+ 'content' => json_encode($json),
|
|
|
+ ],
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $KDB_API_URL = "https://kdb-test.kaas.kit.edu/kdb-api.fcgi/json/write";
|
|
|
+ //$KDB_API_URL = "http://localhost:9999/json/write";
|
|
|
+
|
|
|
+ echo "Updating database." . PHP_EOL;
|
|
|
+ // new kdb.kaas.kit.edu added and optimized readout parameters
|
|
|
+ $fileip = file_get_contents($KDB_API_URL, false, $context);
|
|
|
+
|
|
|
+ echo($fileip);
|
|
|
+
|
|
|
+ //show_status($id+1,sizeof($adeiChannel));
|
|
|
+ if (substr($fileip, 0, 5) == "ERROR") {
|
|
|
+ $errorcount++;
|
|
|
+ $errormessage = $errormessage . "Error querying database<br>";
|
|
|
+ }
|
|
|
+
|
|
|
+ $json = json_decode($fileip, true);
|
|
|
+ echo "Database result (JSON):" . PHP_EOL;
|
|
|
+ var_dump($json);
|
|
|
+
|
|
|
+ if ($errorcount > 0) {
|
|
|
+ echo $errormessage;
|
|
|
+ }
|
|
|
+
|
|
|
+ //echo "All loops done.".PHP_EOL;
|
|
|
+
|
|
|
+ ?>
|