Volkszaehler: Unterschied zwischen den Versionen
K (→JSON für Perl) |
(Überarbeitung) |
||
Zeile 1: | Zeile 1: | ||
[[Datei:volkszaehler.png]] | [[Datei:volkszaehler.png|right]] | ||
Volkszaehler.org ist ein freies SmartMeter Projekt für den Selbstbau ([http://www.volkszaehler.org siehe volkszaehler.org]) Der Nutzer behält dabei die vollständige Kontrolle über die anfallenden Daten seiner Strom-, Wasser- und Gaszähler. | |||
== | ==Features== | ||
* 100% Open-Source | |||
* kostenlos | |||
* offene Protokolle | |||
* erweiterbar | |||
* minmale Anforderungen (LAMP-Stack) | |||
* flexibele Verwaltungsmöglichkeiten | |||
* Verbrauchs & Kostenprognose | |||
* verschiedenste Messgrößen | |||
** Strom | |||
** Wasser | |||
** Gas | |||
** Betriebsstunden | |||
** Temperatur | |||
* Läuft u. a. auf Raspberry Pi ([http://wiki.volkszaehler.org/howto/raspberry_pi_image Installationsbeschreibung)] | |||
== | == Volkszaehler in fhem einbinden == | ||
Das fhem-Modul für Volkszaehler.org bindet diese Daten in fhem ein. Das Modul 23_volkszaehler.pm greift per http auf den Volkszaehler zu und interpretiert die JSON-Antwort in fhem-device-Readings. Daraus können Logs und Plots gebildet werden oder devices mit Kennzahlen aus den Volkszaehler-Daten. | |||
Das fhem-Modul für Volkszaehler.org bindet diese Daten in fhem ein. Das Modul 23_volkszaehler.pm greift per http auf den Volkszaehler zu und interpretiert die JSON - Antwort in fhem-device-Readings. Daraus können | |||
Es ist für Solarstrom-Anlagenbesitzer auch denkbar, bei hoher verfügbarer Sonnenenergie mit fhem Verbraucher einzuschalten, um die Eigenverbrauchsrate zu erhöhen, was die Energiekosten reduziert. | Es ist für Solarstrom-Anlagenbesitzer auch denkbar, bei hoher verfügbarer Sonnenenergie mit fhem Verbraucher einzuschalten, um die Eigenverbrauchsrate zu erhöhen, was die Energiekosten reduziert. | ||
== Installation == | |||
Für die Installation müssen einige Files heruntergeladen und in die richtigen Verzeichnisse kopiert werden. | Für die Installation müssen einige Files heruntergeladen und in die richtigen Verzeichnisse kopiert werden. | ||
===fhem-Modul=== | === fhem-Modul === | ||
Die folgende Beschreibung geht von der Installation auf einer [[FritzBox]] aus. | |||
Meine aktuellen Versionen liegen hier: <code>https://github.com/bgewehr/fhem</code> | |||
Die Datei <code>23_VOLKSZAEHLER.pm</code> kommt ins Verzeichnis <code>\\fritz.box\FRITZ.NAS\fhem\fhem\</code> | |||
Die Datei <code>volkszaehler.gplot</code> kommt ins Verzeichnis <code>\\fritz.box\FRITZ.NAS\fhem\fhem\www\gplot</code> | |||
Nur zur Sicherheit: Um die Dateien auf einem Windows-Rechner lokal zu erstellen, bitte den Text aus der "raw" Ansicht aus Github kopieren und bitte nicht in Notepad, sondern in z. B. [http://www.heise.de/download/notepad.html Notepad++] einfügen und dann unter dem richtigen Dateinamen speichern. Mit Notepad von Microsoft werden falsche Zeilenenden erzeugt, die dann unter Linux nicht funktionieren. | |||
=== JSON für Perl === | |||
===JSON für Perl=== | |||
Das Modul nutzt einen JSON-Interpreter, um die Antwort vom Volkszaehler in eine PERL-Variable zu wandeln. Dazu sind einige zusätzliche PERL Module notwendig. | Das Modul nutzt einen JSON-Interpreter, um die Antwort vom Volkszaehler in eine PERL-Variable zu wandeln. Dazu sind einige zusätzliche PERL Module notwendig. | ||
Zeile 59: | Zeile 52: | ||
\\fritz.box\FRITZ.NAS\fhem\lib\perl5\site_perl\5.12.2\mips-linux\ | \\fritz.box\FRITZ.NAS\fhem\lib\perl5\site_perl\5.12.2\mips-linux\ | ||
Für die Files Converter.pm und Parser.pm | Für die Files Converter.pm und Parser.pm wird ein neues Verzeichnis angelegt: | ||
\\fritz.box\FRITZ.NAS\fhem\lib\perl5\site_perl\5.12.2\mips-linux\JSON\ | \\fritz.box\FRITZ.NAS\fhem\lib\perl5\site_perl\5.12.2\mips-linux\JSON\ | ||
Zeile 65: | Zeile 58: | ||
und die files dann dort abgelegt. | und die files dann dort abgelegt. | ||
Auf anderen Plattformen | Auf anderen Plattformen müssen die Pfade ggf. entsprechend angepasst werden. Im Script startfhem werden die lib-Pfade mit | ||
export xyz=pfad:pfad | export xyz=pfad:pfad | ||
Zeile 71: | Zeile 64: | ||
angegeben, in die man die files ablegen kann, damit sie beim Aufruf gefunden werden. | angegeben, in die man die files ablegen kann, damit sie beim Aufruf gefunden werden. | ||
==Definition der devices== | == Definition der devices == | ||
Die Device Definitionen werden in einer Konfigurationsdatei (üblicherweise fhem.cfg) angelegt | |||
define <name> VOLKSZAEHLER <ip-address> <port-nr> <channel> <state:last/min/max/average/consumption> <poll-delay> | define <name> VOLKSZAEHLER <ip-address> <port-nr> <channel> <state:last/min/max/average/consumption> <poll-delay> | ||
*<name>: Name des neuen fhem-devices | * <name>: Name des neuen fhem-devices | ||
*<ip-address>: IP des Volkszaehlers | * <ip-address>: IP des Volkszaehlers | ||
*<port-Nr>: Port, auf dem der Volkszaehler-http-Server erreichtbar ist | * <port-Nr>: Port, auf dem der Volkszaehler-http-Server erreichtbar ist | ||
*<channel>: UUID des Volkszaehler-Frontend-Channels, der gelesen werden soll | * <channel>: UUID des Volkszaehler-Frontend-Channels, der gelesen werden soll | ||
*<state>: Das Reading, welches als state genommen werden soll, kann im define gewählt werden. Dabei besteht die Auswahl aus | * <state>: Das Reading, welches als state genommen werden soll, kann im define gewählt werden. Dabei besteht die Auswahl aus | ||
**last (letzter geladener Wert, manchmal leer bei zu kleinem poll-delay) | ** last (letzter geladener Wert, manchmal leer bei zu kleinem poll-delay) | ||
**min (kleinster Wert innerhalb des poll-delay, manchmal leer bei zu kleinem poll-delay) | ** min (kleinster Wert innerhalb des poll-delay, manchmal leer bei zu kleinem poll-delay) | ||
**max (größter Wert innerhalb des poll-delay, manchmal leer bei zu kleinem poll-delay) | ** max (größter Wert innerhalb des poll-delay, manchmal leer bei zu kleinem poll-delay) | ||
**average (Durchschnitt der Werte im poll-delay, manchmal leer bei zu kleinem poll-delay) | ** average (Durchschnitt der Werte im poll-delay, manchmal leer bei zu kleinem poll-delay) | ||
**consumption (Verbrauch innerhalb des poll-delays, manchmal leer bei zu kleinem poll-delay) | ** consumption (Verbrauch innerhalb des poll-delays, manchmal leer bei zu kleinem poll-delay) | ||
*<poll-delay>: Zeitraum, der ausgelesen werden soll in Sekunden | * <poll-delay>: Zeitraum, der ausgelesen werden soll in Sekunden | ||
== Beispiele == | |||
Ein vollständiges Beispiel für die erforderlichen Definitionen und das daraus resultierende Ergebnis: | |||
== | === Momentanverbrauch === | ||
Kanal im Volkszaehler, der den Momentanverbrauch per I/R-Lesekopf ermittelt (alle 60 Sekunden, daraus der Mittelwert) | |||
define Verbrauch_aktuell VOLKSZAEHLER 192.168.178.45 80 635481a0-6fcd-11e2-8587-eda25228f8bf average 60 | define Verbrauch_aktuell VOLKSZAEHLER 192.168.178.45 80 635481a0-6fcd-11e2-8587-eda25228f8bf average 60 | ||
attr Verbrauch_aktuell group Strom | attr Verbrauch_aktuell group Strom | ||
attr Verbrauch_aktuell room Volkszaehler | attr Verbrauch_aktuell room Volkszaehler | ||
=== | === Logdatei === | ||
Definition der Logdatei, aus der die Grafik erzeugt werden kann: | |||
define FileLog_Verbrauch_aktuell FileLog ./log/Verbrauch_aktuell-%Y-%m.log Verbrauch_aktuell | define FileLog_Verbrauch_aktuell FileLog ./log/Verbrauch_aktuell-%Y-%m.log Verbrauch_aktuell | ||
attr FileLog_Verbrauch_aktuell group Volkszaehler | attr FileLog_Verbrauch_aktuell group Volkszaehler | ||
Zeile 100: | Zeile 99: | ||
attr FileLog_Verbrauch_aktuell room Z_Log | attr FileLog_Verbrauch_aktuell room Z_Log | ||
=== | === Der Graph dazu === | ||
define FilePlot_Verbrauch_aktuell weblink fileplot FileLog_Verbrauch_aktuell:Volkszaehler:CURRENT | define FilePlot_Verbrauch_aktuell weblink fileplot FileLog_Verbrauch_aktuell:Volkszaehler:CURRENT | ||
attr FilePlot_Verbrauch_aktuell label "Stromverbrauch: $data{currval1}" | attr FilePlot_Verbrauch_aktuell label "Stromverbrauch: $data{currval1}" | ||
attr FilePlot_Verbrauch_aktuell room Volkszaehler | attr FilePlot_Verbrauch_aktuell room Volkszaehler | ||
===Kanal im Volkszaehler, der den Zählerstand per I/R-Lesekopf ermittelt, jede Stunde davon der letzte Wert | === Zählerstand === | ||
Kanal im Volkszaehler, der den Zählerstand per I/R-Lesekopf ermittelt, jede Stunde davon der letzte Wert. | |||
define Zaehlerstand VOLKSZAEHLER 192.168.178.45 80 ebb9c9b0-7058-11e2-b5ed-d12ec87a3a7f last 1800 | define Zaehlerstand VOLKSZAEHLER 192.168.178.45 80 ebb9c9b0-7058-11e2-b5ed-d12ec87a3a7f last 1800 | ||
attr Zaehlerstand group Strom | attr Zaehlerstand group Strom | ||
attr Zaehlerstand room Volkszaehler | attr Zaehlerstand room Volkszaehler | ||
===Kanal im Volkszaehler, der den Zählerstand per I/R-Lesekopf ermittelt, alle 24 Stunden davon der Verbrauch | === Verbrauch === | ||
Kanal im Volkszaehler, der den Zählerstand per I/R-Lesekopf ermittelt, alle 24 Stunden davon der Verbrauch. | |||
define Verbrauch_24h VOLKSZAEHLER 192.168.178.45 80 635481a0-6fcd-11e2-8587-eda25228f8bf consumption 86400 | define Verbrauch_24h VOLKSZAEHLER 192.168.178.45 80 635481a0-6fcd-11e2-8587-eda25228f8bf consumption 86400 | ||
attr Verbrauch_24h group Strom | attr Verbrauch_24h group Strom | ||
attr Verbrauch_24h room Volkszaehler | attr Verbrauch_24h room Volkszaehler | ||
=== | === Ergebnis === | ||
[[Datei:23_volkszaehler.JPG|mini|zentriert|hochkant=3.0|Strom- und Gasverbrauch aus Volkszählerdaten generiert - Beispieldarstellung]] | |||
[[ | == Links == | ||
* Volkszähler [http://www.volkszaehler.org Homepage] | |||
* [https://github.com/bgewehr/fhem FHEM Module] für Volkszähler von "bgewehr" | |||
* Quellen von JSON für Perl: [http://cpansearch.perl.org/src/MAKAMAKA/JSON-1.15/lib/JSON/ CPAN] / [https://github.com/makamaka/JSON/tree/master/lib github] | |||
[[Kategorie:Other Components]] | [[Kategorie:Other Components]] | ||
[[Kategorie:HOWTOS]] | [[Kategorie:HOWTOS]] |
Version vom 2. August 2013, 08:33 Uhr
Volkszaehler.org ist ein freies SmartMeter Projekt für den Selbstbau (siehe volkszaehler.org) Der Nutzer behält dabei die vollständige Kontrolle über die anfallenden Daten seiner Strom-, Wasser- und Gaszähler.
Features
- 100% Open-Source
- kostenlos
- offene Protokolle
- erweiterbar
- minmale Anforderungen (LAMP-Stack)
- flexibele Verwaltungsmöglichkeiten
- Verbrauchs & Kostenprognose
- verschiedenste Messgrößen
- Strom
- Wasser
- Gas
- Betriebsstunden
- Temperatur
- Läuft u. a. auf Raspberry Pi (Installationsbeschreibung)
Volkszaehler in fhem einbinden
Das fhem-Modul für Volkszaehler.org bindet diese Daten in fhem ein. Das Modul 23_volkszaehler.pm greift per http auf den Volkszaehler zu und interpretiert die JSON-Antwort in fhem-device-Readings. Daraus können Logs und Plots gebildet werden oder devices mit Kennzahlen aus den Volkszaehler-Daten.
Es ist für Solarstrom-Anlagenbesitzer auch denkbar, bei hoher verfügbarer Sonnenenergie mit fhem Verbraucher einzuschalten, um die Eigenverbrauchsrate zu erhöhen, was die Energiekosten reduziert.
Installation
Für die Installation müssen einige Files heruntergeladen und in die richtigen Verzeichnisse kopiert werden.
fhem-Modul
Die folgende Beschreibung geht von der Installation auf einer FritzBox aus.
Meine aktuellen Versionen liegen hier: https://github.com/bgewehr/fhem
Die Datei 23_VOLKSZAEHLER.pm
kommt ins Verzeichnis \\fritz.box\FRITZ.NAS\fhem\fhem\
Die Datei volkszaehler.gplot
kommt ins Verzeichnis \\fritz.box\FRITZ.NAS\fhem\fhem\www\gplot
Nur zur Sicherheit: Um die Dateien auf einem Windows-Rechner lokal zu erstellen, bitte den Text aus der "raw" Ansicht aus Github kopieren und bitte nicht in Notepad, sondern in z. B. Notepad++ einfügen und dann unter dem richtigen Dateinamen speichern. Mit Notepad von Microsoft werden falsche Zeilenenden erzeugt, die dann unter Linux nicht funktionieren.
JSON für Perl
Das Modul nutzt einen JSON-Interpreter, um die Antwort vom Volkszaehler in eine PERL-Variable zu wandeln. Dazu sind einige zusätzliche PERL Module notwendig.
JSON für PERL kann von hier geladen werden:
http://cpansearch.perl.org/src/MAKAMAKA/JSON-1.15/lib/JSON/ oder https://github.com/makamaka/JSON/tree/master/lib
Das File JSON.pm muss auf einer Fritzbox 7390 mit fhem im internen Speicher in das Verzeichnis
\\fritz.box\FRITZ.NAS\fhem\lib\perl5\site_perl\5.12.2\mips-linux\
Für die Files Converter.pm und Parser.pm wird ein neues Verzeichnis angelegt:
\\fritz.box\FRITZ.NAS\fhem\lib\perl5\site_perl\5.12.2\mips-linux\JSON\
und die files dann dort abgelegt.
Auf anderen Plattformen müssen die Pfade ggf. entsprechend angepasst werden. Im Script startfhem werden die lib-Pfade mit
export xyz=pfad:pfad
angegeben, in die man die files ablegen kann, damit sie beim Aufruf gefunden werden.
Definition der devices
Die Device Definitionen werden in einer Konfigurationsdatei (üblicherweise fhem.cfg) angelegt
define <name> VOLKSZAEHLER <ip-address> <port-nr> <channel> <state:last/min/max/average/consumption> <poll-delay>
- <name>: Name des neuen fhem-devices
- <ip-address>: IP des Volkszaehlers
- <port-Nr>: Port, auf dem der Volkszaehler-http-Server erreichtbar ist
- <channel>: UUID des Volkszaehler-Frontend-Channels, der gelesen werden soll
- <state>: Das Reading, welches als state genommen werden soll, kann im define gewählt werden. Dabei besteht die Auswahl aus
- last (letzter geladener Wert, manchmal leer bei zu kleinem poll-delay)
- min (kleinster Wert innerhalb des poll-delay, manchmal leer bei zu kleinem poll-delay)
- max (größter Wert innerhalb des poll-delay, manchmal leer bei zu kleinem poll-delay)
- average (Durchschnitt der Werte im poll-delay, manchmal leer bei zu kleinem poll-delay)
- consumption (Verbrauch innerhalb des poll-delays, manchmal leer bei zu kleinem poll-delay)
- <poll-delay>: Zeitraum, der ausgelesen werden soll in Sekunden
Beispiele
Ein vollständiges Beispiel für die erforderlichen Definitionen und das daraus resultierende Ergebnis:
Momentanverbrauch
Kanal im Volkszaehler, der den Momentanverbrauch per I/R-Lesekopf ermittelt (alle 60 Sekunden, daraus der Mittelwert)
define Verbrauch_aktuell VOLKSZAEHLER 192.168.178.45 80 635481a0-6fcd-11e2-8587-eda25228f8bf average 60 attr Verbrauch_aktuell group Strom attr Verbrauch_aktuell room Volkszaehler
Logdatei
Definition der Logdatei, aus der die Grafik erzeugt werden kann:
define FileLog_Verbrauch_aktuell FileLog ./log/Verbrauch_aktuell-%Y-%m.log Verbrauch_aktuell attr FileLog_Verbrauch_aktuell group Volkszaehler attr FileLog_Verbrauch_aktuell logtype text attr FileLog_Verbrauch_aktuell room Z_Log
Der Graph dazu
define FilePlot_Verbrauch_aktuell weblink fileplot FileLog_Verbrauch_aktuell:Volkszaehler:CURRENT attr FilePlot_Verbrauch_aktuell label "Stromverbrauch: $data{currval1}" attr FilePlot_Verbrauch_aktuell room Volkszaehler
Zählerstand
Kanal im Volkszaehler, der den Zählerstand per I/R-Lesekopf ermittelt, jede Stunde davon der letzte Wert.
define Zaehlerstand VOLKSZAEHLER 192.168.178.45 80 ebb9c9b0-7058-11e2-b5ed-d12ec87a3a7f last 1800 attr Zaehlerstand group Strom attr Zaehlerstand room Volkszaehler
Verbrauch
Kanal im Volkszaehler, der den Zählerstand per I/R-Lesekopf ermittelt, alle 24 Stunden davon der Verbrauch.
define Verbrauch_24h VOLKSZAEHLER 192.168.178.45 80 635481a0-6fcd-11e2-8587-eda25228f8bf consumption 86400 attr Verbrauch_24h group Strom attr Verbrauch_24h room Volkszaehler
Ergebnis
Links
- Volkszähler Homepage
- FHEM Module für Volkszähler von "bgewehr"
- Quellen von JSON für Perl: CPAN / github