====== vzlogger ====== This description is also available in [[/software/controller/vzlogger/overview_en|english]]. **vzlogger**... * ist ein Werkzeug zum Lesen der Messwerte von Sensoren und Smartmeter um sie an die volkszahler.org Middleware weiterzureichen * unterstützt auch [[https://www.mysmartgrid.de/|MySmartGrid]] und [[https://en.wikipedia.org/wiki/InfluxDB|InfluxDB]] * läuft als daemon im Hintergrund * enthält einen kleinen eingebauten httpd um Echtzeitwerte als AJAX-Frontend bereitzustellen * liefert die Daten auch über einen zweiten, zusätzlichen Push-Kanal aus. ===== Features ===== * wertet den Return Code der Middleware aus * puffert die Werte (im RAM) im Falle von: * Netzwerktimeout * ungültigem Middleware Return Code, Fehlern oder Fehlkonfigurationen * "lokales Interface" eingebauter httpd * einfach um weitere Sensoren oder SmartMeter Protokolle zu erweitern * auf Embedded Systemen lauffähig (Mini-Computer, [[/howto/raspberry_pi_image|Raspberry Pi]], Router, Flukso, etc..) * portierbar (entspricht POSIX Standards) ===== Installation ===== Vzlogger wird über Github bereitgestellt [[https://github.com/volkszaehler/vzlogger]]. ==== Installationsanleitung ==== Die Anleitung findet ihr auf einer getrennten Seite: [[/software/controller/vzlogger/installation_cpp-version]]. ===== Zähler & Protokolle ===== Die folgende Tabelle enthält eine Übersicht der von vzlogger unterstützen Protokolle: ^ID^Beschreibung^Status^Beispiel & Anwendung^Links & Referenzen^ |''file''|lesen von Datei oder fifo|**implemented**|[[http://owfs.org/|OWFS]], ''/proc/'' Dateisystem|[[http://linux.die.net/man/3/exec|read(3)]]| |''exec''|Programmausagben parsen|**untested**|[[http://www.digitemp.com/|digitemp]]|[[http://linux.die.net/man/3/exec|exec(3)]]| |''sml''|SML wie von EDL-21, eHz and SyM2 Zählern genutzt|**implemented**| |[[software:sml|SML]]| |''s0''|S0-Zähler an UART, GPIO oder indirekt über USB angeschlossen|**implemented**|[[/hardware/controllers/raspberry_pi_erweiterung_mit_schaltausgaengen_rev.1|Rpi-Erweiterung Rev.1]] oder [[/hardware/controllers/raspberry_pi_erweiterung_klein|klein]]| |''d0''|DLMS/D0 zeilenbasiertes Textformat|**implemented**| | [[development:standards|DIN EN 62056-21]]| |''w1therm''| 1Wire-Sensoren basierend auf DSxxxxx|**implemented**| |1Wire Busmaster DS2482 ist Voraussetzung| |''ocr''|OCR (Bilderkennung) z.B. über USB-Cam|**implemented**| |[[http://wiki.volkszaehler.org/meterocr_konfigurieren]]| |''random''|Zufallsgenerator für Werte via [[http://en.wikipedia.org/wiki/Random_walk|random walk]]|**implemented**|für Test- und Demonstrationszwecke| | |''oms''|Open Metering System, based on M-Bus communication|**implemented**| |[[development:standards#oms_group|OMS Group]]| |''fluksov2''|auslesen des Flukso onboard SPI fifo|**implemented**| | |''fluksousb''|USB-Adapterplatine für S0 und Stromwandler auslesen|**planned**|[[hardware:controllers:fluksousb|]]|[[https://github.com/comsound/flukso|'Bart's Protokoll']]| |''vsm103''|Voldcraft VSM-103 Drehstromzähler|**planned**| |[[hardware:channels:meters:power:vsm-103|VSM-103]]| |''kd302''|Energiekostenmessgerät KD 302|**planned**| |[[hardware:channels:meters:power:kd_302|KD 302]]| |''ccost''|Wetterstation vergleichbar mit kommerziellen SmartMeter Systemen|**planned**| |[[http://www.currentcost.co.uk/powermeter/|CurrentCost]], [[http://umweltsuende.wordpress.com/2010/09/16/klein-aber-fein/|Umweltsünde]], [[http://www.jibble.org/currentcost/|Jibble]]| |''tweetawatt''|KillAWatt mod mit XBee wireless Kommunikation|**planned**| |[[https://github.com/adafruit/Tweet-a-Watt|Sourcecode]], [[http://www.ladyada.net/make/tweetawatt/|Blog]]| |''ansi''|ANSI Standard der ein Protokoll beschreibt wie es für Zweiwegekommunkation mit Stromzählern in Nordamerika genutzt wird.|**planned**| |[[development:standards#ansi|ANSI C12]]| ===== APIs ===== Vzlogger ist in der Lage die erfassten Daten an verschiedene Endsysteme, zur weiteren Verabeitung oder Speicherung, zu schicken. Das geschieht über den `api` Parameter, der für jeden channel konfiguriert wird. Vzloggers Standard-Endsystem ist die Middleware eines volkszaehler. Weitere Endsysteme sind MySmartGrid, InfluxDB und eine 'null' API. ===== Konfiguration ===== Die Standardkonfiguration ist nicht funktional, die ''meter'' sind alle deaktiviert Die Konfiguration erfolgt über eine Datei die nach JSON kodierte Einstellungen enthält. Überlicherweise zu finden unter ''/etc/vzlogger.conf''. Einige grundlegende Parameter lassen sich auch über [[#Kommandozeilenparameter|Kommandozeile]] bestimmen. Es sind ein oder mehr meter in der Konfiguration erforderlich. Channels sind optional. Ein meter kann mehrere channel enthalten und damit auch mehrere Middlewares bedienen. Alle Zählerprotokolle haben gesonderte Eigenschaften die hier im Detail nicht weiter beschrieben werden. Zu jedem Protokoll gibt es eine kommentierte Beispielkonfiguration. Einzusehen bei github: https://github.com/volkszaehler/vzlogger/blob/master/etc/ Die einzelnen Parameter sind hier im Wiki nochmal in deutsch beschrieben: [[software/controller/vzlogger/vzlogger_conf_parameter]] Konfigurationen diverser Nutzer finden sich im Bereich [[//howto|HowTo]]. Spezifische Beispiele für einzelne Zähler im Bereich [[/hardware/channels/meters/power/edl-ehz]]. Als Unterstützung bei der Syntax dient der [[http://volkszaehler.github.io/vzlogger/|vzlogger.conf-Editor]]. ==== Identifier ==== Je nach Zähler oder Sensor stehen ein oder mehre Werte zur Verfügung. Um diese den Channels zuordnen zu können sind eindeutige Identifier notwendig. Diese werden zum Teil vom Protokoll oder auch durch die Hardware bestimmt. ^ Meter ^ Identifier ^ Bemerkung ^ | SML, D0 | [[software:obis|Obis-Codes]] z.B. 1-0:1.8.0 | Welche Obis-Codes/Identifier gesendet werden ist abhängig vom Gerät | | OMS | [[software:obis|Obis-Codes]] 1.8.0, 2.8.0, 1.7.0, 2.7.0 | max. die 4 Obis-Codes, abhängig vom Gerät | | S0 | "Impulse" und "Impulse_neg" | Anzahl Impulse (pro Sekunde) | | S0 | "Power" und "Power_neg" | Impulse pro Zeiteinheit umgerechnet in "Leistung" (per Parameter resolution) | | 1Wire | ID des 1-Wire-Sensors | Pro gefundenem Sensor ein Identifer mit Temp. als Wert | | FluksoV2 | 2 pro Channel mittels ChannelId und -ChannelId | Consumption = -ChannelId, Power = +ChannelId | | File, Exec | (leer) oder per $i erkannter Identifier | z.B. $i = $v => Temperatur = 10 => Identifier "Temperatur", Value = 10 | | OCR | konfigurierbar | siehe Config Option "identifier" | | Random | | kein Identifier Name, nur Wert und Zeit | ===== Kommandozeilenparameter ===== ^Parameter^^Beispiel (Default)^Beschreibung^ ^lang^kurz| | | |%%--%%config|-c|/etc/vzlogger.conf|Konfigurationsdatei| |%%--%%log|-o|/var/log/vzlogger/vzlogger.log|Logfile| |%%--httpd%%|-l|//off//|lokales Interface aktivieren (kleiner httpd für Echtzeitwerte)| |%%--httpd-port%%|-p|8081|TCP-Port des httpd| |%%--%%help|-h| |Kurzhilfe| |%%--%%verbose|-v//level//|0|tiefe der Ausgabe erhöhen (0-15; 0 = log_alert, 1 = log_error, 3 = log-warning, 5 = log_info, 10 = log-debug, 15 = log_finest)| |%%--%%version|-V| |Version des vzlogger ausgeben| ===== Exit-Codes ===== Da vzlogger als Hintergrunddienst konzipiert ist wird primär über das Logfile diagnostiziert. In Fällen bei denen dies nicht möglich ist werden Standard Exit-Codes ausgegeben.\\ Z.B. bei Aufruf von ''systemctl status vzlogger'' in der Form: ''Main process exited, code=exited, status=1/FAILURE'' ^Code^Text^Bedeutung^ |1|FAILURE|generischer Fehler, dieser tritt auch auf wenn die Konfiguration unlogisch ist und vzlogger ohne definierte Aufgaben (Beispielconfig im git) beendet wird| |64|USAGE|Kommandozeilenargument war nicht ausführbar| |71|OSERR|die Verschiebung in den Hintergrund (daemon) schlug fehl| |73|CANTCREAT|vzlogger hat nicht die nötigen Rechte das Logfile an der konfigurierten Stelle zu schreiben| |78|CONFIG|Syntaxfehler in der Konfiguration oder Datei nicht vorhanden| ===== Links ===== * [[https://github.com/volkszaehler/vzlogger/|Quellcode]] auf github.com * [[https://github.com/volkszaehler/libsml|libsml]]