Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:emh_pv-anlage

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
howto:emh_pv-anlage [2015/12/11 11:07] – [vzlogger konfigurieren] udo1howto:emh_pv-anlage [2022/04/21 20:29] (aktuell) – vzlogger kann nur noch daemon, Logfile Ort geändert jau
Zeile 10: Zeile 10:
 {{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:modulfeld.jpg?100x75|Generatorfeld}}{{:hardware:channels:meters:power:edl-ehz:wechselrichter.jpg?100x75|Wechselrichter}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:zaehlerschrank.jpg?100|Zählerschrank}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:zweirichtungszaehler1.jpg?100|Zweirichtungszähler Anzeige Bezug}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:zweirichtungszaehler2.jpg?100|Zweirichtungszähler Anzeige Lieferung}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:erzeugungszaehler.jpg?100x75|Erzeugungszähler}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:anlagenschema.jpg?100x75|Anlagenschema}} {{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:modulfeld.jpg?100x75|Generatorfeld}}{{:hardware:channels:meters:power:edl-ehz:wechselrichter.jpg?100x75|Wechselrichter}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:zaehlerschrank.jpg?100|Zählerschrank}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:zweirichtungszaehler1.jpg?100|Zweirichtungszähler Anzeige Bezug}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:zweirichtungszaehler2.jpg?100|Zweirichtungszähler Anzeige Lieferung}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:erzeugungszaehler.jpg?100x75|Erzeugungszähler}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:anlagenschema.jpg?100x75|Anlagenschema}}
  
-====== Aufbau des Loggers ======+===== Aufbau des Loggers =====
  
 Das Loggen der Daten erfolgt auf einem Laptop Dell Latitude D800 (Pentium M). Auf dem Laptop wurde [[http://www.ubuntu.com/|Ubuntu 12.10]] mit [[http://www.mysql.de/|MySql]], [[http://php.net/|PHP]] und [[http://www.lighttpd.net/|Lighttpd]] installiert. Statt Lightpd kann man auch [[http://httpd.apache.org/|Apache]] nehmen. Ich habe Lighttpd gewählt, weil das Loggen später einmal meine [[http://dns323.kood.org|D-Link DNS-323 NAS]] übernehmen soll. Für die gibt es die Möglichkeit ein Linux auf ihr zu installieren und in dem zur Zeit installierten [[http://wolf-u.li/1426/fun_plug-05-auf-dem-conceptronic-ch3snas-bzw-d-link-dns-323-installieren/|fun_plug 0.5]] ist als Webserver eben der Lighttpd enthalten. Da wollte ich schon mal Erfahrungen sammeln. Das Loggen der Daten erfolgt auf einem Laptop Dell Latitude D800 (Pentium M). Auf dem Laptop wurde [[http://www.ubuntu.com/|Ubuntu 12.10]] mit [[http://www.mysql.de/|MySql]], [[http://php.net/|PHP]] und [[http://www.lighttpd.net/|Lighttpd]] installiert. Statt Lightpd kann man auch [[http://httpd.apache.org/|Apache]] nehmen. Ich habe Lighttpd gewählt, weil das Loggen später einmal meine [[http://dns323.kood.org|D-Link DNS-323 NAS]] übernehmen soll. Für die gibt es die Möglichkeit ein Linux auf ihr zu installieren und in dem zur Zeit installierten [[http://wolf-u.li/1426/fun_plug-05-auf-dem-conceptronic-ch3snas-bzw-d-link-dns-323-installieren/|fun_plug 0.5]] ist als Webserver eben der Lighttpd enthalten. Da wollte ich schon mal Erfahrungen sammeln.
Zeile 19: Zeile 19:
 ====== Installation der Volkszähler Software ====== ====== Installation der Volkszähler Software ======
  
-Installation wie im [[software:middleware/installation#software|Installationsleitfaden]] beschrieben.+Installation wie im [[software:middleware:installation#software|Installationsleitfaden]] beschrieben.
  
-====== Installation von libsml und vzlogger ======+===== Installation von libsml und vzlogger =====
  
-<note important>Dieser Teil ist obsolete. Die Installation bitte nach diesen Anleitungen vornehmen:\\+<note important>Dieser Teil ist obsolete. Deshalb gelöscht. Die Installation bitte nach diesen Anleitungen vornehmen:\\
 [[software:controller:vzlogger:installation_cpp-version|vzlogger]] [[software:controller:vzlogger:installation_cpp-version|vzlogger]]
 und [[software:middleware:installation|middleware]]\\ und [[software:middleware:installation|middleware]]\\
-Oder gleich das fertige Image für die Raspi-Varianten nehmen: [[https://demo.volkszaehler.org/downloads/volkszaehler_25_11_2015_jessie.rar|Image-Quelle]] </note>+Oder gleich das fertige Image für die Raspi-Varianten nehmen: [[https://demo.volkszaehler.org/downloads/volkszaehler_latest.zip|Image-Quelle]] </note>
  
-Beide Zähler senden ihre Daten SML kodiert. Daher benötigt man die libsml1 [[http://packages.volkszaehler.org/vz/]] und vzlogger [[http://packages.mysmartgrid.de/]]. 
  
-Beide Quellen zusammengefasst ergibt dann: +===== USB-IR-Leseköpfe konfigurieren =====
- +
-<code> +
-# apt-key adv --keyserver pool.sks-keyservers.net --recv-keys B1A0345B +
-# echo "deb http://packages.volkszaehler.org/vz/ wheezy main" >> /etc/apt/sources.list +
-# echo "deb http://packages.mysmartgrid.de/ubuntu/precise precise mysmartgrid" >> /etc/apt/sources.list +
-# echo "deb-src http://packages.mysmartgrid.de/ubuntu/precise precise mysmartgrid" >> /etc/apt/sources.list +
-# apt-get update +
-# apt-get install libsml1 vzlogger php5-curl +
-</code> +
- +
-====== USB-IR-Leseköpfe konfigurieren ======+
  
 Eigentlich ist an den USB-IR-Leseköpfen nichts zu konfigurieren. Wie in [[hardware:controllers:ir-schreib-lesekopf-usb-ausgang#linux-support|USB-IRLesekopf Linux Support]] beschrieben, kann es passieren, dass die Leseköpfe nicht immer den gleichen Devicenamen bekommen. Aber das udev System bietet da Abhilfe an. Wir sagen dem udev System, dass es anhand der Seriennummer des Lesekopfes immer einen sym. Link zum richtigen Device anlegen soll. Wir benutzen dann in der Konfiguration immer die sym. Links. Eigentlich ist an den USB-IR-Leseköpfen nichts zu konfigurieren. Wie in [[hardware:controllers:ir-schreib-lesekopf-usb-ausgang#linux-support|USB-IRLesekopf Linux Support]] beschrieben, kann es passieren, dass die Leseköpfe nicht immer den gleichen Devicenamen bekommen. Aber das udev System bietet da Abhilfe an. Wir sagen dem udev System, dass es anhand der Seriennummer des Lesekopfes immer einen sym. Link zum richtigen Device anlegen soll. Wir benutzen dann in der Konfiguration immer die sym. Links.
Zeile 66: Zeile 54:
 Davon interessiert uns **ID_SERIAL_SHORT=0061E011**. Das ist die Seriennummer des Lesekopfes. Das wiederholt man für den zweiten Lesekopf, der unter "/dev/ttyUSB1" zu finden sein wird. Davon interessiert uns **ID_SERIAL_SHORT=0061E011**. Das ist die Seriennummer des Lesekopfes. Das wiederholt man für den zweiten Lesekopf, der unter "/dev/ttyUSB1" zu finden sein wird.
  
-Man erstellt jetzt eine Datei /etc/udev/rules.d/99-usb-ir-lesekopf.rules“ mit folgendem Inhalt.+Man erstellt jetzt eine Datei ''/etc/udev/rules.d/99-usb-ir-lesekopf.rules'' mit folgendem Inhalt.
  
-<code>+<code 99-usb-ir-lesekopf.rules>
 SUBSYSTEM=="tty", ENV{ID_SERIAL_SHORT}=="0061E011", SYMLINK+="usb-ir-lesekopf0" SUBSYSTEM=="tty", ENV{ID_SERIAL_SHORT}=="0061E011", SYMLINK+="usb-ir-lesekopf0"
 SUBSYSTEM=="tty", ENV{ID_SERIAL_SHORT}=="0061DF28", SYMLINK+="usb-ir-lesekopf1" SUBSYSTEM=="tty", ENV{ID_SERIAL_SHORT}=="0061DF28", SYMLINK+="usb-ir-lesekopf1"
Zeile 81: Zeile 69:
 </code> </code>
  
-bringt das udev System dazu die neue Regel anzuwenden und die beiden sym. Links anzulegen. Die beiden Leseköpfe sind ab sofort immer unter "/dev/usb-ir-lesekopf0und "/dev/usb-ir-lesekopf1ansprechbar.+bringt das udev System dazu die neue Regel anzuwenden und die beiden sym. Links anzulegen. Die beiden Leseköpfe sind ab sofort immer unter ''/dev/usb-ir-lesekopf0'' und ''/dev/usb-ir-lesekopf1'' ansprechbar.
  
 <code> <code>
Zeile 91: Zeile 79:
 Anschliessend kann man dann gleich mal testen, ob die neuen Device sym. Links auch funktioieren. [[hardware:controllers:ir-schreib-lesekopf-usb-ausgang#testmoeglichkeiten_unter_linux|Testmoeglichkeiten unter Linux]] Anschliessend kann man dann gleich mal testen, ob die neuen Device sym. Links auch funktioieren. [[hardware:controllers:ir-schreib-lesekopf-usb-ausgang#testmoeglichkeiten_unter_linux|Testmoeglichkeiten unter Linux]]
  
-====== Kanäle in der Middleware erstellen ======+===== vzlogger Lesetest =====
  
-Nun erstellen wir die [[development:definitions#channel|Kanäle]] in der [[development:definitions#middleware|Middleware]]. Dazu mit einem Browser http://localhost/frontend/ aufrufen. +Vzlogger ist der Teil, der die Zähler ausliest und die Daten per Middleware in die MySQL Datenbank speichert. Um eine passende vzlogger.conf zu erstellen, wollen wir jetzt erstmal wissen, was unsere Zähler den so von sich geben. Dazu erstellen wir uns nun eine minimale ''/etc/vzlogger.conf'' die nur das Notwendigste enthält.
-Wir brauchen insgesamt sieben Stück. Vier vom Typ Stromsensor und drei vom Typ Stromzähler. Bei allen Kanälen: Style "steps" einstellen, sowie öffentlich, aktiv und Cookie aktivieren. Bei den Kanälen 1, 3 und 5 kann man unter Kosten noch die Vergütung bzw. den Strompreis angeben. Wird z.B. der Direktverbrauch mit 0,1236 €/kWh vergütet, trägt man 0.0001236 unter Kosten ein. Bekommt man 0,2874 €/kWh für Einspeisung, dann 0.0002874 bei Kanal 5 eintragen und kostet die kWh vom Energieversorger 0,2575 €, dann 0.0002575 bei Kanal 3 eingeben. +
- +
-  * Kanal 1: Direktverbrauch, Typ Stromsensor +
-  * Kanal 2: Gesamtverbrauch, Typ Stromsensor +
-  * Kanal 3: Haus 1.8.0 (Bezug +A), Typ Stromzähler, Auflösung 1000 +
-  * Kanal 4: Haus 16.7.0 (Leistung), Typ Stromsensor +
-  * Kanal 5: Haus 2.8.0 (Lieferung -A), Typ Stromzähler, Auflösung 1000 +
-  * Kanal 6: PV 2.7.0 (Leistung), Typ Stomsensor +
-  * Kanal 7: PV 2.8.1 (Erzeugung -A), Typ Stromzähler, Auflösung 1000 +
- +
-{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:kanal-stromsensor.jpg?100x75|Kanal-Stromsensor}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:kanal-stromzaehler.jpg?100x75|Kanal-Stromzähler}} +
- +
-Beim Erstellen der Kanäle werden automatisch auch die [[http://de.wikipedia.org/wiki/Universally_Unique_Identifier|UUID]]s der Kanäle in der MySQL Datenbank angelegt. Diese UUIDs brauchen wir später noch. Es aber nicht nötig die jetzt zu notieren, da wir da jederzeit leicht ran kommen. Neben den erstellten Kanälen finden wir dieses Zeichen {{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:information.png?15|}}, mit dem wir die UUID später abrufen können. +
- +
-Die Namen der Kanäle können selbstverständlich frei gewählt werden. Ich habe mich jedoch an den [[http://de.wikipedia.org/wiki/OBIS-Kennzahlen|OBIS-Kennzahlen]], die meine Zähler ausgeben orientiert. Wie man die ermittelt, dazu komme ich noch. +
-====== vzlogger konfigurieren ====== +
- +
-Kommen wir nun zum vzlogger. vzlogger ist der Teil, der die Zähler ausliest und die Daten per Middleware in die MySQL Datenbank speichert. Um eine passende vzlogger.conf zu erstellen, wollen wir jetzt erstmal wissen, was unsere Zähler den so von sich geben. Dazu erstellen wir uns nun eine minimale /etc/vzlogger.test die nur das Notwendigste enthält. +
- +
-<file> +
-/** +
- * vzlogger configuration +
- *  +
- * use proper encoded JSON with javascript comments +
- * +
- * take a look at the wiki for detailed information: +
- * http://wiki.volkszaehler.org/software/controller/vzlogger#configuration +
- */+
  
 +<code base vzlogger.conf>
 { {
-"retry"30,                   /* how long to sleep between failed requests, in seconds */ +"retry"0,                   /* how long to sleep between failed requests, in seconds */
-"daemon": false,                /* run periodically */+
 "verbosity" : 15,               /* between 0 and 15 */ "verbosity" : 15,               /* between 0 and 15 */
-"log" : "/var/log/vzlogger.log",/* path to logfile, optional */+"log" : "/var/log/vzlogger/vzlogger.log",/* path to logfile, optional */
  
 "local" : { "local" : {
         "enabled" : false,      /* should we start the local HTTPd for serving live readings? */         "enabled" : false,      /* should we start the local HTTPd for serving live readings? */
-        "port"8080,            /* the TCP port for the local HTTPd */+        "port"8081,            /* the TCP port for the local HTTPd */
         "index" : true,         /* should we provide a index listing of available channels? */         "index" : true,         /* should we provide a index listing of available channels? */
         "timeout" : 30,         /* timeout for long polling comet requests, 0 disables comet, in seconds */         "timeout" : 30,         /* timeout for long polling comet requests, 0 disables comet, in seconds */
Zeile 148: Zeile 108:
 ]} ]}
  
-</file>+</code>
  
 Wenn wir jetzt Wenn wir jetzt
  
 <code> <code>
-vzlogger -c /etc/vzlogger.test+sudo systemctl start vzlogger
 </code> </code>
  
-aufrufen, dann sollte eine Ausgabe in folgender Art auf dem Bildschirm erscheinen.+aufrufen, dann sollte im logfile ''/var/log/vzlogger/vzlogger.log'' sowas in der Art stehen:
  
 <code> <code>
Zeile 196: Zeile 156:
 </code> </code>
  
-Nun sehen wir alle OBIS-Kennzahlen die unsere Zähler ausgeben. mtr0 ist der Zähler an /dev/usb-ir-lesekopf0 (im Beispiel der Zweirichtungszähler) und mtr1 der Zähler an /dev/usb-ir-lesekopf1 (Erzeugungszähler). Nun ist auch ersichtlich, warum ich die Kanäle so benannt habe, wie ich es tat.+Vzlogger kann dann wieder beendet werden:
  
-Nun kann man die korrekte /etc/vzlogger.conf erstellen. Für die Beispielanlage brauchte ich+<code> 
 +sudo systemctl stop vzlogger 
 +</code> 
 + 
 +Nun sehen wir alle OBIS-Kennzahlen die unsere Zähler ausgeben. mtr0 ist der Zähler an ''/dev/usb-ir-lesekopf0'' (im Beispiel der Zweirichtungszähler) und mtr1 der Zähler an ''/dev/usb-ir-lesekopf1'' (Erzeugungszähler)Nun ist auch ersichtlich, warum ich die Kanäle so benannt habe, wie ich es tat. 
 + 
 +Für die Beispielanlage brauchte ich
  
 Vom Zweirichtungszähler Vom Zweirichtungszähler
Zeile 211: Zeile 177:
   * 2.8.1 = Wirkarbeit Lieferung -A   * 2.8.1 = Wirkarbeit Lieferung -A
  
-Nun, das sind fünf Kanäle, die aus den Zählern in der Datenbank landen, warum aber wurden sieben Kanäle angelegt? Dazu kommen wir späterGeduld!+Nun, das sind fünf Kanäle, die aus den Zählern in der Datenbank landen.
  
 Die restlichen OBIS-Kennzahlen, die die Zähler ausgeben werden nicht benötigt Die restlichen OBIS-Kennzahlen, die die Zähler ausgeben werden nicht benötigt
Zeile 221: Zeile 187:
   * 1.7.0 = Wirkleistung Bezug ?   * 1.7.0 = Wirkleistung Bezug ?
  
-Jetzt ist auch der Moment, wo wir die im Abschnitt [[hardware:channels:meters:power:edl-ehz:emh_pv-anlage#kanaele_in_der_middleware_erstellen|"Kanäle in der Middleware erstellen"]] erstellten UUIDs benötigen. Die UUIDs wie oben beschrieben auslesen und an die korrekte Stelle einfügen.+===== Kanäle in der Middleware erstellen =====
  
-{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:uuid-ermitteln.jpg?100|UUID ermitteln}}+Nun erstellen wir die [[development:definitions#channel|Kanäle]] in der [[development:definitions#middleware|Middleware]]. Dazu in einem Browser die IP des Raspi aufrufen. 
 +Wir brauchen insgesamt sieben Stück. Vier mit Leistungswerten und drei Zählerständen. Bei allen KanälenStyle "steps" einstellen, sowie öffentlich, aktiv und Cookie aktivieren. Als Initialzählerstand ist der jeweils aktuelle Stand der drei Zähler einzutragen.\\ 
 +Bei den Kanälen 1, 3 und 5 kann man unter Kosten noch die Vergütung bzw. den Strompreis angeben. Wird z.B. der Direktverbrauch mit 0,1236 €/kWh vergütet, trägt man 0.0001236 unter Kosten ein. Bekommt man 0,2874 €/kWh für Einspeisung, dann 0.0002874 bei Kanal 5 eintragen und kostet die kWh vom Energieversorger 0,2575 €, dann 0.0002575 bei Kanal 3 eingeben.
  
-<file> +  Kanal 1: Haus 1.8.0 (Bezug +A), Typ El. Energie (Zählerstände), Auflösung 1000 
-/*+  Kanal 2: Haus 16.7.0 (Leistung), Typ El. Energie (Leistungswerte) 
-vzlogger configuration +  Kanal 3: Haus 2.8.0 (Lieferung -A), Typ El. Energie (Zählerstände), Auflösung 1000 
-+  Kanal 4: PV 2.7.0 (Leistung), Typ StomEl. Energie (Leistungswerte)sensor 
-use proper encoded JSON with javascript comments +  Kanal 5: PV 2.8.1 (Erzeugung -A), Typ El. Energie (Zählerstände), Auflösung 1000 
-+ 
-* take a look at the wiki for detailed information+{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:kanal_stromsensor.jpg?100x75|Kanal-Stromsensor}}{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:kanal_stromzaehler.jpg?100x75|Kanal-Stromzähler}} 
-http://wiki.volkszaehler.org/software/controller/vzlogger#configuration + 
-*/+Beim Erstellen der Kanäle werden automatisch auch die [[http://de.wikipedia.org/wiki/Universally_Unique_Identifier|UUID]]s der Kanäle in der MySQL Datenbank angelegt. Diese UUIDs brauchen wir später noch. Es aber nicht nötig die jetzt zu notieren, da wir da jederzeit leicht ran kommen. Neben den erstellten Kanälen finden wir dieses Zeichen {{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:information.png?15|}}, mit dem wir die UUID später abrufen können. 
 + 
 +Die Namen der Kanäle können selbstverständlich frei gewählt werden. Ich habe mich jedoch an den [[http://de.wikipedia.org/wiki/OBIS-Kennzahlen|OBIS-Kennzahlen]], die meine Zähler ausgeben orientiert. 
 + 
 +===== vzlogger konfigurieren ===== 
 + 
 +Nun kann man die korrekte ''/etc/vzlogger.conf'' erstellen. Die UUIDs wie oben beschrieben auslesen und an die korrekte Stelle einfügen. 
 + 
 +{{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:uuid-ermitteln.jpg?100|UUID ermitteln}}
  
 +<code base vzlogger.conf>
 { {
-"retry"30, /* how long to sleep between failed requests, in seconds */ +"retry"0, /* how long to sleep between failed requests, in seconds */
-"daemon": false, /* run periodically */+
 "verbosity" : 15, /* between 0 and 15 */ "verbosity" : 15, /* between 0 and 15 */
-"log" : "/var/log/vzlogger.log", /* path to logfile, optional */+"log" : "/var/log/vzlogger/vzlogger.log", /* path to logfile, optional */
  
 "local" : { "local" : {
 "enabled" : false, /* should we start the local HTTPd for serving live readings? */ "enabled" : false, /* should we start the local HTTPd for serving live readings? */
-"port"80, /* the TCP port for the local HTTPd */+"port"8081, /* the TCP port for the local HTTPd */
 "index" : true, /* should we provide a index listing of available channels if no UUID was requested? */ "index" : true, /* should we provide a index listing of available channels if no UUID was requested? */
 "timeout" : 30, /* timeout for long polling comet requests, 0 disables comet, in seconds */ "timeout" : 30, /* timeout for long polling comet requests, 0 disables comet, in seconds */
Zeile 281: Zeile 257:
 } }
 ]} ]}
-</file> 
- 
-Speichern als "/etc/vzlogger.conf".Testen dann mit 
- 
-<code> 
-# vzlogger 
 </code> </code>
  
-Nach erfolgreichem Test noch "daemon": false, in "daemon": true, und "verbosity" : 15, in "verbosity" : 1, ändern. Nach der Änderung kann man vzlogger dann als Daemon starten.+Speichern als ''/etc/vzlogger.conf''. Testen dann mit
  
 <code> <code>
-# service vzlogger start+sudo systemctl start vzlogger
 </code> </code>
  
-Mein vzlogger hat da immer gemeckert +Nach erfolgreichem Test noch "verbosity" : 15, in "verbosity" 0, ändern.  
- +<note warning>Ein dauerhaft hohes Loglevel lässt das Logfile sehr schnell sehr groß werden und verursacht Probleme.</note>
-<code> +
-# service vzlogger start +
-#/etc/init.d/vzlogger: 15: /etc/init.d/vzlogger: server: not found +
-</code> +
- +
-Einfach in /etc/init.d/vzlogger +
- +
-<code> +
-DESC=smartmeter server for volkzaehler.org +
-</code> +
- +
-in +
- +
-<code> +
-DESC="smartmeter server for volkzaehler.org" +
-</code> +
- +
-ändern. +
- +
- +
-====== Script für Gesamt- und Direktverbrauch ======+
  
 +===== Gesamt- und Direktverbrauch =====
  
 Nun ist neben dem Bezug und der Lieferung auch der Gesamt- und Direktverbrauch von Interesse. Diese Werte können jedoch nicht aus den Zählern ausgelesen werde. Sie können nur durch Berechnung ermittelt werden. Nun ist neben dem Bezug und der Lieferung auch der Gesamt- und Direktverbrauch von Interesse. Diese Werte können jedoch nicht aus den Zählern ausgelesen werde. Sie können nur durch Berechnung ermittelt werden.
  
-  * Gesamtverbrauch = Bezug + Erzeugung - Lieferung 
   * Direktverbrauch = Erzeugung - Lieferung   * Direktverbrauch = Erzeugung - Lieferung
 +  * Gesamtverbrauch = Bezug + Erzeugung - Lieferung
  
 +Da alle für die Berechnung notwendigen Werte vorliegen erstellt man 2 virtuelle Kanäle vom Typ "Verbrauchsensor (virt.)".
  
-Da alle für die Berechnung notwendigen Werte vorliegen erstellt man ein Script (gefunden im [[http://www.photovoltaikforum.com/volkszaehler-org-raspberrypi-loggen-t85872.html|Photovoltaikforum]] und etwas erweitert) und lässt es kontinuierlich durch [[http://de.wikipedia.org/wiki/Cron|Cron]] ausführen. +{{:software:frontends:frontend:virtuellen_kanal_erstellen.png?100x75|Virtueller Kanal}}
- +
-Folgendes Script z.B. als /var/www/volkszaehler.org/htdocs/direktverbrauch.php speichern und die richtigen UUIDs eintragen. //(Script geändert, es werden nun keine Nullen mehr bei Null Direktverbrauch in die Datenbank geschrieben)// +
- +
-<file> +
-<?php +
-    $urlBase='http://localhost/middleware.php/data/'; +
-    $uuIds=array( 'Bezug' => 'a2fc7c10-5c06-11e2-a9fd-07ec3529dbce', +
-                  'Lieferung' => '295f8cd0-5c07-11e2-833b-39e13950d0c2', +
-                  'Erzeugung' => '83cd0400-5c1a-11e2-a8b1-41ba0e4e3b55', +
-                ); +
-     +
-    $uuIdTarget=array('Gesamtverbrauch' => '72c08b30-5da7-11e2-ae92-c3c944e97303', +
-                      'Direktverbrauch' => '75bc5f20-5dab-11e2-97e3-035e5f4fa046' +
-                     ); +
- +
-    $urlEnd='.json?from=30%20seconds%20ago'; +
- +
-function curl_file_get_contents($URL) +
-    { +
-    $c = curl_init(); +
-    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); +
-    curl_setopt($c, CURLOPT_URL, $URL); +
-    $contents = curl_exec($c); +
-    curl_close($c); +
- +
-    if ($contents) return $contents; +
-    else return FALSE; +
-    } // function curl_get_file_contents +
- +
-function getTimestamp() { +
-    $seconds = microtime(true); // false = int, true = float +
-    return round( ($seconds * 1000) ); +
-    } +
- +
-for ($i=1; $i<5 ; $i++) { +
-    $minTimestamp = getTimestamp(); +
-    $maxTimestamp = $minTimestamp; +
-    foreach($uuIds as $index=>$value) { +
-      $url=$urlBase . $value . $urlEnd; +
-      $content = curl_file_get_contents($url); +
-      $content=json_decode($content); +
-      if (!empty($content->data->tuples)) { +
- +
-         $lastTuple = end($content->data->tuples); +
-         $minTimestamp = min($minTimestamp,$lastTuple[0]); +
-         $maxTimestamp = max($maxTimestamp,$lastTuple[0]); +
-         print_r($lastTuple); +
-         $lastValue = $lastTuple[1]; +
-      } else { +
-        $lastValue=0; +
-    } // if +
-    echo "$value / $index$lastValue\n<br>"; +
- +
-    $values[$index]=$lastValue; +
-    } // foreach +
- +
-    $diffGV= $values['Bezug'] + $values['Erzeugung'] - $values['Lieferung']; +
-    echo "Gesamtverbrauch = Bezug + Erzeugung - Lieferung$diffGV \n<br>"; +
-    $timestamp = round($minTimestamp + ( ($maxTimestamp - $minTimestamp) / 2 )); +
-    $linkGV=$urlBase . $uuIdTarget['Gesamtverbrauch'] . '.json?operation=add&value=' . $diffGV . '&ts=' . $timestamp; +
-    $dummy=curl_file_get_contents($linkGV); +
-    echo "$linkGV \n<br>"; +
-     +
-    $diffDV= $values['Erzeugung'] - $values['Lieferung']; +
-    echo "Direktverbrauch = Erzeugung - Lieferung $diffDV \n<br>"; +
-    if ($diffDV>0) { +
-        $linkDV=$urlBase $uuIdTarget['Direktverbrauch'] . '.json?operation=add&value=' . $diffDV . '&ts=' . $timestamp; +
-        $dummy=curl_file_get_contents($linkDV); +
-        echo "$linkDV \n<br>"; +
-    } +
-    sleep(15); +
-// for +
-?> +
-</file> +
- +
-Zum testen mit +
- +
-<code> +
-# php /var/www/volkszaehler.org/htdocs/direktverbrauch.php +
-</code> +
- +
-aufrufen. Die Ausgabe sollte dann so aussehen. Jeweils 4 mal mit 15 s Pause. +
- +
-<code> +
-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / Bezug: 653.358 +
-<br>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / Lieferung: 0 +
-<br>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / Erzeugung: 0 +
-<br>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / Gesamtverbrauch:+
-<br>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / Direktverbrauch:+
-<br>Gesamtverbrauch = Bezug + Erzeugung - Lieferung: 653.358  +
-<br>Direktverbrauch = Erzeugung - Lieferung: 0  +
-</code> +
- +
-Fehlt nur noch der Crontab Eintrag. Unbedingt als letzte Zeile eine Leerzeile machen. Sonst funktioniert Cron nicht. +
- +
-<code> +
-# crontab -e +
- +
-MAILTO="" +
-* * * * * /usr/bin/php /var/www/volkszaehler.org/htdocs/direktverbrauch.php > /dev/null +
-# Hinter diesem Text noch eine Leerzeile einfuegen, sonst funktioniert cron nicht! +
- +
-</code>+
  
 +  * Kanal 6:
 +    * Einheit: W
 +    * Regel: val(in1) - val(in2)
 +    * Eingang 1: UUID von Kanal 5 (PV 2.8.1)
 +    * Eingang 2: UUID von Kanal 3 (Haus 2.8.0)
 +  * Kanal 7:
 +    * Einheit: W
 +    * Regel: val(in1) + val(in2) - val(in3)
 +    * Eingang 1: UUID von Kanal 1 (Haus 1.8.0)
 +    * Eingang 2: UUID von Kanal 5 (PV 2.8.1)
 +    * Eingang 3: UUID von Kanal 3 (Haus 2.8.0)
  
 ====== Ergebnis der Bemühungen ====== ====== Ergebnis der Bemühungen ======
  
-Wurde alles korrekt eingerichtet, dann sollte sich unter http://localhost/frontend/ folgendes Bild bieten. Man beachte die enorme Erzeugung und den ebenso enormen Direktverbrauch. :-) Das Modulfeld war an dem Tag zugeschneit. :-(+Wurde alles korrekt eingerichtet, dann sollte sich unter ''http://localhost/'' folgendes Bild bieten. Man beachte die enorme Erzeugung und den ebenso enormen Direktverbrauch. :-) Das Modulfeld war an dem Tag zugeschneit. :-(
  
 {{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:ansicht.jpg?600|Ansicht}} {{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:ansicht.jpg?600|Ansicht}}
  
-Danke für die Aufmerksamkeit. +Wer es optisch mag kann in den Kanal-Eigenschaften den Füllgrad noch etwas höher setzen.
- +
-Hier noch ein kleines Tuning an der Darstellung[[http://www.cd-k.de/2013/01/pimp-my-volkszahler-diagramm-gefullte-flachen-anzeigen/|Gefüllte Flächen im Diagramm]]+
  
 {{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:ansicht-gefuellt.jpg?600|Ansicht gefüllte Flächen}} {{:hardware:channels:meters:power:edl-ehz:emh_pv-anlage:ansicht-gefuellt.jpg?600|Ansicht gefüllte Flächen}}
howto/emh_pv-anlage.1449828453.txt.gz · Zuletzt geändert: 2015/12/11 11:07 von udo1