Browse Source

update database API (new KATRIN numbers)

Jan Behrens 2 years ago
parent
commit
23ae6f114e
1 changed files with 69 additions and 61 deletions
  1. 69 61
      poll_database.php

+ 69 - 61
poll_database.php

@@ -55,67 +55,66 @@
     $password = getenv("PHP_ADEI_PASSWORD");
     $context = stream_context_create(["http" => ["header" => "Authorization: Basic " . base64_encode("$username:$password") , "Connection: close\r\n", ], ]);
 
+    // ** Katrin numbers referring to IE electrode segments ** //
     $relationKatrinNumbers = array(
         array( // 22 rows: 2x11 electrode rings (inner+outer)
-            "436-EHV-0-9006-0002", // WestRing 02 outer
-            "436-EHV-0-9106-0002", // WestRing 02 inner
-            "436-EHV-0-9005-0002", // WestRing 03 outer
-            "436-EHV-0-9105-0002", // WestRing 03 inner
-            "436-EHV-0-9004-0002", // WestRing 04 outer
-            "436-EHV-0-9104-0002", // WestRing 04 inner
-            "436-EHV-0-9003-0002", // WestRing 05 outer
-            "436-EHV-0-9103-0002", // WestRing 05 inner
-            "436-EHV-0-9002-0002", // WestRing 06 outer
-            "436-EHV-0-9102-0002", // WestRing 06 inner
-            "436-EHV-0-9001-0002", // WestRing 07-11 outer
-            "436-EHV-0-9101-0002", // WestRing 07-11 inner
-            "436-EHV-0-9012-0002", // WestRing 12 outer
-            "436-EHV-0-9112-0002", // WestRing 12 inner
-            "436-EHV-0-9013-0002", // WestRing 13 outer
-            "436-EHV-0-9113-0002", // WestRing 13 inner
-            "436-EHV-0-9014-0002", // WestRing 14 outer
-            "436-EHV-0-9114-0002", // WestRing 14 inner
-            "436-EHV-0-9015-0002", // WestRing 15 outer
-            "436-EHV-0-9115-0002", // WestRing 15 inner
-            "436-EHV-0-9016-0002", // WestRing 16 outer
-            "436-EHV-0-9116-0002", // WestRing 16 inner
-            //         ^............ means this is a HV relation number (9 = west)
-            //          ^........... means outer (=0) or inner (=1) layer
-            //           ^.......... means source (=0) or detector (=1) side
-            //            ^......... means ring index (0..6), counted from central segment
-
+            "436-EEL-0-0001-0001", // WestRing 02 outer
+            "436-EEL-0-0001-0101", // WestRing 02 inner
+            "436-EEL-0-0001-0201", // WestRing 03 outer
+            "436-EEL-0-0001-0301", // WestRing 03 inner
+            "436-EEL-0-0001-0401", // WestRing 04 outer
+            "436-EEL-0-0001-0501", // WestRing 04 inner
+            "436-EEL-0-0001-0601", // WestRing 05 outer
+            "436-EEL-0-0001-0701", // WestRing 05 inner
+            "436-EEL-0-0001-0801", // WestRing 06 outer
+            "436-EEL-0-0001-0901", // WestRing 06 inner
+            "436-EEL-0-0001-1001", // WestRing 07-11 outer
+            "436-EEL-0-0001-1101", // WestRing 07-11 inner
+            "436-EEL-0-0001-1201", // WestRing 12 outer
+            "436-EEL-0-0001-1301", // WestRing 12 inner
+            "436-EEL-0-0001-1401", // WestRing 13 outer
+            "436-EEL-0-0001-1501", // WestRing 13 inner
+            "436-EEL-0-0001-1601", // WestRing 14 outer
+            "436-EEL-0-0001-1701", // WestRing 14 inner
+            "436-EEL-0-0001-1801", // WestRing 15 outer
+            "436-EEL-0-0001-1901", // WestRing 15 inner
+            "436-EEL-0-0001-2001", // WestRing 16 outer
+            "436-EEL-0-0001-2101", // WestRing 16 inner
+            //         ^............. means this is a HV relation number (9)
+            //          ^^........... means ring index (2..16)
+            //            ^.......... means outer (=0) or inner (=1) layer
         ) ,
         array( // 22 rows: 2x11 electrode rings (inner+outer)
-            "436-EHV-0-8006-0002", // EastRing 02 outer
-            "436-EHV-0-8106-0002", // EastRing 02 inner
-            "436-EHV-0-8005-0002", // EastRing 03 outer
-            "436-EHV-0-8105-0002", // EastRing 03 inner
-            "436-EHV-0-8004-0002", // EastRing 04 outer
-            "436-EHV-0-8104-0002", // EastRing 04 inner
-            "436-EHV-0-8003-0002", // EastRing 05 outer
-            "436-EHV-0-8103-0002", // EastRing 05 inner
-            "436-EHV-0-8002-0002", // EastRing 06 outer
-            "436-EHV-0-8102-0002", // EastRing 06 inner
-            "436-EHV-0-8001-0002", // EastRing 07-11 outer
-            "436-EHV-0-8101-0002", // EastRing 07-11 inner
-            "436-EHV-0-8012-0002", // EastRing 12 outer
-            "436-EHV-0-8112-0002", // EastRing 12 inner
-            "436-EHV-0-8013-0002", // EastRing 13 outer
-            "436-EHV-0-8113-0002", // EastRing 13 inner
-            "436-EHV-0-8014-0002", // EastRing 14 outer
-            "436-EHV-0-8114-0002", // EastRing 14 inner
-            "436-EHV-0-8015-0002", // EastRing 15 outer
-            "436-EHV-0-8115-0002", // EastRing 15 inner
-            "436-EHV-0-8016-0002", // EastRing 16 outer
-            "436-EHV-0-8116-0002", // EastRing 16 inner
+            "436-EEL-0-0002-0001", // EastRing 02 outer
+            "436-EEL-0-0002-0101", // EastRing 02 inner
+            "436-EEL-0-0002-0201", // EastRing 03 outer
+            "436-EEL-0-0002-0301", // EastRing 03 inner
+            "436-EEL-0-0002-0401", // EastRing 04 outer
+            "436-EEL-0-0002-0501", // EastRing 04 inner
+            "436-EEL-0-0002-0601", // EastRing 05 outer
+            "436-EEL-0-0002-0701", // EastRing 05 inner
+            "436-EEL-0-0002-0801", // EastRing 06 outer
+            "436-EEL-0-0002-0901", // EastRing 06 inner
+            "436-EEL-0-0002-1001", // EastRing 07-11 outer
+            "436-EEL-0-0002-1101", // EastRing 07-11 inner
+            "436-EEL-0-0002-1201", // EastRing 12 outer
+            "436-EEL-0-0002-1301", // EastRing 12 inner
+            "436-EEL-0-0002-1401", // EastRing 13 outer
+            "436-EEL-0-0002-1501", // EastRing 13 inner
+            "436-EEL-0-0002-1601", // EastRing 14 outer
+            "436-EEL-0-0002-1701", // EastRing 14 inner
+            "436-EEL-0-0002-1801", // EastRing 15 outer
+            "436-EEL-0-0002-1901", // EastRing 15 inner
+            "436-EEL-0-0002-2001", // EastRing 16 outer
+            "436-EEL-0-0002-2101", // EastRing 16 inner
             //         ^............ means this is a HV relation number (8 = east)
             //          ^........... means outer (=0) or inner (=1) layer
             //           ^.......... means source (=0) or detector (=1) side
             //            ^......... means ring index (0..6), counted from central segment
-
         ) ,
     );
 
+    // ** Katrin numbers referring to IE power supply channels ** //
     $relationTargetNumbers = array(
         array( // IE offset channels West side
             // 22 rows: 3x7 offset channels + IE common
@@ -140,9 +139,9 @@
             "436-EHV-0-0007-0502", // WestCh 19
             "436-EHV-0-0007-0602", // WestCh 20
             "436-EHV-0-0007-0702", // WestCh 21
-            "436-EHV-0-1003-0002"
-            // IE common
 
+            "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
@@ -167,9 +166,9 @@
             "436-EHV-0-0008-0502", // EastCh 19
             "436-EHV-0-0008-0602", // EastCh 20
             "436-EHV-0-0008-0702", // EastCh 21
-            "436-EHV-0-1003-0002"
-            // IE common
 
+            "436-EHV-0-0002-0102", // IE dipole east
+            "436-EHV-0-1003-0002", // IE common
         ) ,
 
     );
@@ -193,14 +192,14 @@
 
         $starttime = time();
 
-        echo "Polling database." . PHP_EOL;
-
         /// TODO (1) get current relations for HV rings (KATRIN number mapping)
         /// TODO (2) write channel mapping to file used by monitor ("patchpanel/data/activeIEconfig.txt")
         ///     => (a) the file contains one line per IE channel (44 total: 11 rings x inner/outer x west/east)
         ///     => (b) each line contains the power supply index (values 0 .. 21; 22 = through IE)
         /// TODO (3) resolve ADEI channels for each relation (?)
         /// TODO (4) update ADEIchannels array (?)
+
+        //echo "Polling database." . PHP_EOL;
         // new kdb.kaas.kit.edu added and optimized readout parameters
         $fileip = file_get_contents("https://kdb.kaas.kit.edu/kdb-api.fcgi/json?relations&kn=" . join(",", flatten($relationKatrinNumbers)) . "&only_recent=1", false, $context);
 
@@ -215,7 +214,8 @@
         }
 
         $json = json_decode($fileip, true);
-        var_dump($json);
+        //echo "Database result (JSON):" . PHP_EOL;
+        //var_dump($json);
 
         $patchpanelMap = array();
 
@@ -237,17 +237,25 @@
             $errorcount++;
         }
 
-        echo "Writing patchpanel database data to file." . PHP_EOL;
+        //echo "Writing patchpanel database data to file." . PHP_EOL;
         $strFileContent = "";
 
-        for ($eastwest = 0;$eastwest < 2;$eastwest++) {
+        assert( sizeof($relationKatrinNumbers) == 2 );
+        assert( sizeof($relationTargetNumbers) == 2 );
+        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) {
                 $index = 22; // default to IE common
+                $target = "(default)";
                 if (array_key_exists($kn, $patchpanelMap)) {
                     $target = $patchpanelMap[$kn];
                     $index = array_search($target, $relationTargetNumbers[$eastwest]);
+                    if ($index > 22)
+                        $index = 22;
                 }
+                echo "\t" . $kn . " => " . $target . " [" . $index . "]" . PHP_EOL;
                 $strFileContent .= $index . "\n";
             }
         }
@@ -264,13 +272,13 @@
 
         // write log file
         $log_message = "";
-        $log_message = date(DATE_RFC850) . ": ADEI data polled: loop " . $counter;
+        $log_message = date(DATE_RFC850) . ": database polled: loop " . $counter;
         $log_message .= ", poll time " . ($stoptime - $starttime) . " s";
         if ($stoptime - $starttime > 10) {
             $log_message .= ", delayed readout";
         }
         $log_message .= PHP_EOL;
-        $file_log = fopen("logs/poll_adei_data.log", "a");
+        $file_log = fopen("logs/poll_database.log", "a");
         fwrite($file_log, $log_message);
         fclose($file_log);