Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html><head><title>Brunnen Füllstand</title>
- <link rel="icon" href="/favicon.png" sizes="192x192">
- </head><body>
- <?php
- $stats = $argv[1];
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, "http://192.168.0.11/");
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- $output = curl_exec($ch);
- curl_close($ch);
- $outputs = explode("\n",$output);
- // Median statt Mittelwert
- unset($outputs[0]);
- unset($outputs[11]);
- unset($outputs[12]);
- $outputs[0] = $outputs[10];
- unset($outputs[10]);
- sort($outputs, SORT_NUMERIC);
- $output = round(calculate_median($outputs));
- // Median statt Mittelwert
- // Sensor liefert 10 Werte, Mittelwert
- //$mittelwert=0;
- //for ($i=1;$i<=10;$i++) {
- // $mittelwert = $mittelwert + $outputs[$i];
- // }
- //$output = round($mittelwert / 10);
- //Sensor liefert nur einen Wert
- //$output = preg_replace("/[^0-9]/","",$output);
- echo "Signallaufzeit: $output µs<br>";
- //Als "Brunnen ist voll" definieren wir eine Laufzeit von 6600.
- $voll = 6600;
- //Leer am 27.5.2017 bei 10270
- $leer = 10270;
- date_default_timezone_set("Europe/Berlin");
- $timestamp = time();
- $zeit = date("Y-m-d H:i:s",$timestamp);
- $monat = date("m",$timestamp);
- $file = "/volume1/web/data/brunnen_$monat.csv";
- if ($stats == "") {
- $entfernung = round(laufzeitzuabstand($output),1);;
- echo "Abstand Sensor zu Wasseroberfläche: $entfernung cm";
- $prozent = round ( -1 * ( ($output - $leer) / ($leer - $voll) * 100),0);
- echo "<h2>Füllstand Brunnen: $prozent %</h2>";
- echo "Die letzten 48 Stunden aus <a href=\"data/brunnen_$monat.csv\">brunnen_$monat.csv</a>:<br>";
- // die letzten 48 Stunden
- $anzahl = 192;
- $tail = $anzahl+1;
- $content = `tail -n $tail $file`;
- $lines = explode("\n",$content);
- echo "<img src=\"/data/greendot.png\" title=\"Voll\" width=\"4\" height=\"".laufzeitzuhoehe($voll)."\" border=\"0\">";
- for ($i=0;$i<=$anzahl;$i++) {
- $data = explode(",",$lines[$i]);
- //$entfernung = round(laufzeitzuabstand($data[1]),1);
- $prozente = round ( -1 * ( ($data[1] - $leer) / ($leer - $voll) * 100),0);
- // Mitternacht in einer anderen Farbe
- if (strpos($data[0], ' 00:0') !== false) $color = "navydot"; else $color = "bluedot";
- echo "<img src=\"/data/$color.png\" title=\"$data[0]: $prozente %\" width=\"4\" height=\"".laufzeitzuhoehe($data[1])."\" border=\"0\">";
- // Ersten Wert merken zum ausgeben
- if ($i == 0) {$erster = $data[0];}
- }
- // den aktuellen Messwert hellblau anhängen
- $entfernung = laufzeitzuabstand($output);
- echo "<img src=\"/data/lightdot.png\" title=\"Aktuell: $prozent %\" width=\"4\" height=\"".laufzeitzuhoehe($output)."\" border=\"0\">";
- echo "<br>";
- echo "$erster";
- }
- else
- {
- // Logging
- // Ist die Datei älter als ein Monat? Trifft also auf 1 Jahr alte Logfiles zu.
- $age = $timestamp - filemtime($file);
- if ($age > 2592000) {
- `echo -n > $file`;
- }
- $datei = fopen($file,"a");
- fwrite($datei, "$zeit,$output\n");
- fclose($datei);
- }
- function laufzeitzuhoehe($laufzeit) {
- $hoehe = $laufzeit - $voll;
- $hoehe = $hoehe / 80;
- $hoehe = 130 - $hoehe;
- if ($hoehe >= 130) {$hoehe = 1;}
- $hoehe = round($hoehe * 2);
- return $hoehe;
- }
- function laufzeitzuabstand($laufzeit) {
- return($laufzeit / 2 * 0.03432);
- }
- function calculate_median($arr) {
- $count = count($arr); //total numbers in array
- $middleval = floor(($count-1)/2); // find the middle value, or the lowest middle value
- if($count % 2) { // odd number, middle is the median
- $median = $arr[$middleval];
- } else { // even number, calculate avg of 2 medians
- $low = $arr[$middleval];
- $high = $arr[$middleval+1];
- $median = (($low+$high)/2);
- }
- return $median;
- }
- ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement