ich habe mir mit meinen mehr als spärlichen Progammierkenntnissen ein Abfrage-Tool für den lokalen Werbserver (bei mir Synology 918+) gebaut um meine Gas, Wasser und Stromzähler abzulesen.
Es hat keinen Anspruch auf Perfektion, aber vielleicht kann es jemand brauchen oder erweitern für eigene Zwecke.
index.php
Code: Alles auswählen
<html>
<head>
<title>CCU-Check</title>
</head>
<body>
<font face="arial,helvetica">
<h1>CCU-Check aus CCU-Historian</h1>
<form action="auslesen.php" method="post">
<p>
<br><b>Datenpunkt-ID: </b><br><br>
<input type="radio" name="check" value="wasser">Wasser (81)<br>
<input type="radio" name="check" value="strom">Strom (215)<br>
<input type="radio" name="check" value="gas">Gas (17)<br>
<input type="radio" name="check" value="own">eigene Auswahl: <input name="ownid">
</p>
<p>
<br>
<b>Beginn:</b><br>
<input type="date" name="dateFrom" value="<?php echo date('Y-m-d',strtotime('-24 hours')); ?>" />
<input type="time" name="timeFrom" value="00:00" />
</p>
<p>
<b>Ende:</b><br>
<input type="date" name="dateEnd" value="<?php echo date('Y-m-d'); ?>" />
<input type="time" name="timeEnd" value="<?php echo date('H:i'); ?>" />
</p>
<p> <br><input type="submit" name="auswahl"></p>
</form>
</font>
</body>
</html>
auslesen.php
Code: Alles auswählen
<html>
<head>
<title>CCU-Check Auswertung</title>
</head>
<body>
<font face="arial,helvetica">
<?php
// Parameter
$ip = "192.168.133.102";
$port = "8091";
// Datapoint Zuweisung Beginn
if($_POST['auswahl'] == true) {
if($_POST['check'] == "wasser") {
$datapoint ="81";
}
if($_POST['check'] == "strom") {
$datapoint ="215";
}
if($_POST['check'] == "gas") {
$datapoint ="17";
}
if($_POST['check'] == "own") {
$datapoint = $_POST['ownid'];
}
if($_POST['check'] == "") {
echo "<FONT COLOR='#FF0000'><b>Es wurde KEIN Datenpunkt ausgewählt!</b></FONT><br><br><br><br><br>";
}
}
// Datapoint Zuweisung Ende
// Variablen Anfang
$datumanfangHUMAN = date('d.m.Y', strtotime($_POST['dateFrom']));
$zeitanfangHUMAN = date('H:i', strtotime($_POST['timeFrom']));
$datumanfang = date('Ymd', strtotime($_POST['dateFrom']));
$zeitanfang = date('Hi', strtotime($_POST['timeFrom']));
$datumendeHUMAN = date('d.m.Y', strtotime($_POST['dateEnd']));
$zeitendeHUMAN = date('H:i', strtotime($_POST['timeEnd']));
$datumende = date('Ymd', strtotime($_POST['dateEnd']));
$zeitende = date('Hi', strtotime($_POST['timeEnd']));
// Variablen Ende
// Datum leer (Zeitzonen Problem bei fehlender Zeitangabe)
if($_POST['timeFrom'] == "") {
$zeitanfangHUMAN = "00:00";
$zeitanfang = "0000";
}
if($_POST['timeEnd'] == "") {
$zeitendeHUMAN = "00:00";
$zeitende = "0000";
}
// Time Generierung
$timecodeend = $datumende . $zeitende;
$timecodebegin = $datumanfang . $zeitanfang;
// Überschrift Zeitraum
echo "<b>Ausgabe für den Datenpunkt <FONT COLOR='#FF0000'>".$datapoint ."</FONT> für den Zeitraum " .$datumanfangHUMAN . ", " . $zeitanfangHUMAN . " Uhr bis " .$datumendeHUMAN . ", " . $zeitendeHUMAN ." Uhr: </b>";
echo "<br>";
// Erstellung Query-Zeile Minimum
$query = "http://".$ip .":".$port."/query/text.gy?dp=".$datapoint."&b=".$timecodebegin."&e=".$timecodeend."&ag=min";
$minimum = round(file_get_contents($query), 3);
// echo "<br>URL: " . $query;
// $mittelwert = file_get_contents('http://192.168.133.102:8091/query/text.gy?dp=35&b=-24h&ag=min');
// Erstellung Query-Zeile Maximum
$query = "http://".$ip .":".$port."/query/text.gy?dp=".$datapoint."&b=".$timecodebegin."&e=".$timecodeend."&ag=max";
$maximum = round(file_get_contents($query), 3);
// Erstellung Query-Zeile Differenz
$query = "http://".$ip .":".$port."/query/text.gy?dp=".$datapoint."&b=".$timecodebegin."&e=".$timecodeend."&ag=diff";
$diff = round(file_get_contents($query), 3);
// Erstellung Query-Zeile Durchschnitt
$query = "http://".$ip .":".$port."/query/text.gy?dp=".$datapoint."&b=".$timecodebegin."&e=".$timecodeend."&ag=avg";
$avg = round(file_get_contents($query), 3);
// Wieder Zeitzonen ANpassung bei fehlender ANgabe Uhrzeit
if($_POST['timeFrom'] == "") {
$zeitanfanggas = "00:00:00";
} else {
$zeitanfanggas = date('H:i:s', strtotime($_POST['timeFrom']));
}
if($_POST['timeEnd'] == "") {
$zeitendegas = "00:00:00";
} else {
$zeitendegas = date('H:i:s', strtotime($_POST['timeEnd']));
}
$gasanfang = strtotime(date('Ymd', strtotime($_POST['dateFrom'])) ." " . $zeitanfanggas);
$gasende = strtotime(date('Ymd', strtotime($_POST['dateEnd'])) ." " . $zeitendegas);
echo "<br>";
$zeitdiff= ($gasende - $gasanfang)/3600 . " hours";
echo "Zeitdifferenz: " . $zeitdiff;
$verbrauchgas=$avg/100*15*$zeitdiff;
// Grafik-Link generieren
$img = "http://".$ip .":".$port."/query/trend.gy?i=".$datapoint."&b=".$timecodebegin."&e=".$timecodeend."&w=1280&h=480";
// echo $img; // Testweise den Link für die Grafik ausgeben
// echo "<br>Minimum: " . $minimum;
// echo "<br>Maximum: " . $maximum;
// echo "<br>Differenz: " . $diff;
// echo "<br>Durchschnitt: " . $avg;
?>
<!-- PHP Ende -->
<br>
<br>
<!-- Ergebnisse ausgeben -->
<table border="1" >
<table border width=15% height=200>
<tr>
<td>
Minimum:
</td>
<td>
<?php echo $minimum; ?>
</td>
</tr>
<tr>
<td>
Maximum:
</td>
<td>
<?php echo $maximum; ?>
</td>
</tr>
<tr>
<td>
Mittelwert:
</td>
<td>
<?php echo $avg; ?>
</td>
</tr>
<tr>
<td>
Differenz:
</td>
<td>
<?php echo $diff; ?>
</td>
</tr>
<tr>
<td>
Verbrauch (nur Gas):<br>in kWh
</td>
<td>
<?php
if($datapoint == "17") {
echo $verbrauchgas;
} else {
echo "--";
}
?>
</td>
</tr>
</table>
</table>
<br>
<br>
<!-- Grafik ausgeben -->
<img src= "<?php echo $img; ?>">
</body>
</html>
Viele Grüße
duffy6