Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:frontends:meter_readings

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
software:frontends:meter_readings [2019/04/30 12:40] – angelegt jausoftware:frontends:meter_readings [2023/01/29 21:02] schwaneberg
Zeile 2: Zeile 2:
 Um **Monatswerte** des Stromzählers zum Vergleich zu dokumentieren, ist es sinnvoll an jedem 1sten des Monats den absoluten Zählerwert zu notieren. Um **Monatswerte** des Stromzählers zum Vergleich zu dokumentieren, ist es sinnvoll an jedem 1sten des Monats den absoluten Zählerwert zu notieren.
  
-<note>Diese nachfolgende Aussage bezieht sich auf ältere Versionen des Volkszählers und ist überholt. Zwischenzeitlich werden die aktuellen Zählerstände im Frontend dargestellt und können auch [[/development/api/reference#parameter|über die API]] abgefragt werden.</note>+<note>Diese nachfolgende Aussage bezieht sich auf ältere Versionen des Volkszählers und ist überholt. Zwischenzeitlich werden die aktuellen Zählerstände im Frontend dargestellt und können auch [[/development/api/reference#parameter|über die API]] abgefragt werden.\\ 
 +Der Code ist auch nicht mit aktuellen PHP-Versionen kompatibel.</note>
 {{ :hardware:channels:meters:power:edl-ehz:vz_read_strom.png|}} {{ :hardware:channels:meters:power:edl-ehz:vz_read_strom.png|}}
 Um den **absoluten Stromzähler Wert** auszulesen, muss man die Datenbank abfragen. Damit das komfortabel über einen Web Browser gemacht werden kann, hier ein PHP Script (Version 5.6!) dafür. Nach dem Aufruf im Web Browser erscheint eine Ausgabe, siehe **Bild** rechts. Ohne Auswahl von Monat und Jahr wird der Zähler Wert zum 1sten des aktuellen Monats angezeigt. Durch Auswahl von Monat und Jahr und anklicken des Knopfes **submit** wird der entsprechende Wert angezeigt. Um den **absoluten Stromzähler Wert** auszulesen, muss man die Datenbank abfragen. Damit das komfortabel über einen Web Browser gemacht werden kann, hier ein PHP Script (Version 5.6!) dafür. Nach dem Aufruf im Web Browser erscheint eine Ausgabe, siehe **Bild** rechts. Ohne Auswahl von Monat und Jahr wird der Zähler Wert zum 1sten des aktuellen Monats angezeigt. Durch Auswahl von Monat und Jahr und anklicken des Knopfes **submit** wird der entsprechende Wert angezeigt.
  
-Zum eigenen Gebrauch müssen noch die **Datenbank Variablen** angepasst werden: $username, $password, $channel_id.+Zum eigenen Gebrauch müssen noch die **Datenbank Variablen** angepasst werden: $username, $password, $db_server, $channel_id.
  
 Der File muss auf dem Web Server in den Volkszaehler Pfad im Ordner **htdocs** gespeichert werden. Der File muss auf dem Web Server in den Volkszaehler Pfad im Ordner **htdocs** gespeichert werden.
  
-Web Adresse im lokalen Netzwert: <IP-Adresse>/vz_read_strom.php+Web Adresse im lokalen Netzwerk: <IP-Adresse>/summary.php 
 +<code php> 
 +<?php // program "vz_read_strom.php", 2014-05-09 RudolfReuter  
 +// Version Zaehler EMH eHZ 
 +?> 
 +<h3>Zählerstände auslesen</h3> 
 +<?php 
 +if (isset($_GET['year'])) { 
 +    $year = $_GET['year']; 
 +
 +else { 
 +    $month = date("m"); 
 +    //echo "actual date \n"; 
 +    $year = date("Y"); 
 +
 +?> 
 + 
 +<?php 
 +    setlocale(LC_MONETARY, 'de_DE'); 
 +    $months = array(1 => "Januar", 2 => "Februar", 3 => "März", 4 => "April", 5 => "Mai", 6 => "Juni", 7 => "Juli", 8 => "August", 9 => "September", 10 => "Oktober", 11 => "November", 12 => "Dezember"); 
 +    $start_year = 2016; 
 +    $current_year = date("Y"); 
 + 
 +    // Generating Year list to the current data 
 +    echo '<form id="user_form" action="summary.php" method="get">'; 
 +    echo '<fieldset>'; 
 +    echo '<select name="year">'; 
 + 
 +    for ($i = $start_year; $i <= $current_year; $i++) { 
 +        echo '<option value="' . $i . '">' . $i . '</option>'; 
 +    } 
 + 
 +    echo '</select>'; 
 +    echo '<input type="submit" name="submit" value="submit">'; 
 +    echo '</fieldset>'; 
 +    echo '</form>'; 
 + 
 +    $username="pi"; 
 +    $password="raspberry"; 
 +    $db_server="localhost"; 
 +    $channel_id_electric="6"; 
 +    $channel_id_heat="11"; 
 +    try { 
 +      $conn = new PDO("mysql:host=" . $db_server . ";dbname=volkszaehler", $username, $password); 
 +      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
 +    } catch(PDOException $e) { 
 +      echo "Error: " . $e->getMessage(); 
 +    } 
 + 
 +    echo "<h3>" . $year . "</h3><br>"; 
 +    echo "<table>"; 
 +    echo "<tr><th>Monat</th><th>Stromzählerstand</th><th>Wärmezählerstand</th></tr>"; 
 +    foreach ($months as $month => $month_name) { 
 +        // This example fetches two meters using different time windows, as the heater is read less frequently 
 +        $str_from_electric = "$year-$month-01 22:00:00"; 
 +        $str_from_heat = "$year-$month-01 0:00:00"; 
 +        $date1 = new DateTime($str_from_electric); 
 +        $time_from = $date1->getTimestamp() * 1000; 
 +        $date1 = new DateTime($str_from_heat); 
 +        $time_from_heat = $date1->getTimestamp() * 1000; 
 + 
 +        $str_to = "$year-$month-01 23:59:59"; 
 +        $date2 =  new DateTime($str_to); 
 +        $time_to = $date2->getTimestamp() * 1000; 
 + 
 +        $str_sql_electric = "SELECT value FROM data WHERE channel_id=$channel_id_electric AND timestamp BETWEEN $time_from AND $time_to"; 
 +        $str_sql_heat = "SELECT value FROM data WHERE channel_id=$channel_id_heat AND timestamp BETWEEN $time_from_heat AND $time_to"; 
 + 
 +        $sql_res = $conn->prepare($str_sql_electric); 
 +        $sql_res->execute(); 
 +        $rows_electric = $sql_res->fetchAll(); 
 +        $sql_res = $conn->prepare($str_sql_heat); 
 +        $sql_res->execute(); 
 +        $rows_heat = $sql_res->fetchAll(); 
 +        echo "<tr><td>" . $month_name . "</td><td>" . number_format(end($rows_electric)["value"]/1000, 0, ',', '.') . "</td><td>" . number_format(end($rows_heat)["value"]/1000, 0, ',', '.') . "</td></tr>"; 
 +    } 
 +    echo "</table>"; 
 +?> 
 +</code> 
 + 
 +Frühere Version mit Web Adresse im lokalen Netzwerk: <IP-Adresse>/vz_read_strom.php
 <code php> <code php>
 <?php // program "vz_read_strom.php", 2014-05-09 RudolfReuter  <?php // program "vz_read_strom.php", 2014-05-09 RudolfReuter 
software/frontends/meter_readings.txt · Zuletzt geändert: 2023/01/30 18:52 von schwaneberg