Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:controller:vzlogger:conf_parameter

vzlogger.conf

Eine Beschreibung der Konfigurationsdatei von vzlogger, der Übersichtlichkeit halber in Abschnitte aufgeteilt.

Formatiert ist sie nach JSON; kompakt, manuell lesbar und einfach zu parsen. Entgegen dem Standard unterstützt vzlogger auch Kommentare /*…*/ oder // innerhalb der Konfigurationsdatei.
Korrekte Kommata und Klammerung ist zwingend. Der vzlogger.conf-Editor hilft dabei. Er bietet auch eine meter- und channel-Vorauswahl und blendet dann Schlüssel aus die nicht benötigt werden.
Zeichenketten (String) müssen in Klammern gesetzt werden, Ganzzahlen (Integer) und Logische Ausdrücke (Bool) dürfen nicht. Gruppen {} und Schlüssel dürfen in root nur einmalig verwendet werden, in Arrays [] aber mehrmals.

root

Im Wurzelverzeichnis haben wir die allgemeinen Einstellungen.

{
  "retry": 0,
  "daemon": true,
  "verbosity": 0,
  "log": "/var/log/vzlogger.conf",

retry

Wartezeit in Sekunden nach einer fehlgeschlagenen Anfrage.

Typ Integer
Wert 0-?
Empfehlung 0

deamon

Verschiebt vzlogger als Dienst (deamon) in den Hintergrund.

Typ Bool
Wert true/false
Empfehlung true

verbosity

Ausführlichkeit des Fehlerlogs.

Typ Integer
Wert 0 = Alarme
1 = Fehler
3 = Warnungen
5 = Informationen
10 = Diagnose
15 = Dateilinformationen
Empfehlung 15 zu Beginn
0 wenn alles fehlerfrei läuft

log

Speicherort des Fehlerlogs.

Typ String
Wert Muss eine vorhandenes Verzeichnis sein auf dem schreibender Zugriff erlaubt ist.
Empfehlung „/var/log/vzlogger.log“ im Regelfall
„“ wenn S0-Impulse in schneller Folge geloggt werden da Schreibzugriffe auf SD-Karte das loggen stören können

push

Empfangsort des VZ-Push-Servers.
Über den Dienst ist es zum Beispiel möglich Daten an die VZ-Middleware zu schicken die zwar dargestellt, aber nicht gespeichert werden sollen. Es muss parallel dazu der Push-Server der Middleware aktiviert werden.

  "push": [
    {
      "url": ""http://127.0.0.1:5582""
    }

push

Typ Array
Empfehlung [] - nicht aktiv

url

Zielort an dem die Daten in Empfang genommen werden.

Typ String
Wert eine gültige URL
Empfehlung http://127.0.0.1:5582“ für VZ

local

HTTP-Dienst (httpd) für Daten-Pull. Stellt die Daten der konfigurierten meter zu manuellen Kontrolle oder für andere Anwendungen bereit. Erspart einem z.B das Parsen des SML-Telegramms von einem eHz.

  "local": {
    "enabled": false,
    "port": 8080,
    "index": false,
    "timeout": 0,
    "buffer": 0
  },

local

Typ Gruppe

enabled

Aktiviert den httpd.

Typ Bool
Wert true/false
Empfehlung false

port

Der Port an dem der Dienst auf Anfragen hört. Wenn auf der selben Maschine bereits ein httpd arbeitet ist darauf zu achten das der Port nicht doppelt verwendet wird! Für HTTP ist der Standard-Port 80.

Typ Integer
Wert ?
Empfehlung 8080

index

Normal sollte die Anfrage die UUID des gewünschten channel enthalten, wird der Index aktiviert werden alle channel dargestellt.

Typ Bool
Wert true/false
Empfehlung false bei Systemen die von öffentlichen Netzwerken aus verfügbar sind

timeout

?

Typ Integer
Wert 0-?
Empfehlung 0

buffer

?

Typ Integer
Wert 0-?
Empfehlung 0

meters

Hier werden die Datenquellen (Zähler, Sensoren) definiert mit denen der vzlogger kommunizieren soll. Jede Quelle ist eine Gruppe von Schlüsseln, es sind also mehrere Meter möglich.
Nicht alle Paramter sind in allen Konfigurationen erforderlich oder sinnvoll. Erst werden die Allgemeinen, dann die speziellen Parameter, in Abhängigkeit von protocol, beschrieben.

Typ Array

Allgemein

  "meters": [
    {
      "enabled": false,
      "allowskip": false,
      "aggtime": -1,
      "aggfixedinterval": false,
      "channels": [],
      "protocol": "s0",
      "device": "",

enabled

Den betreffenden Meter (z.B. für Diagnosezwecke) an- oder abstellen.

Typ Bool
Wert true/false
Empfehlung true

allowskip

Schlägt das öffnen des Meter fehl bricht vzlogger ab oder ignoriert ihn und setzt mit dem nächsten konfigurierten Meter fort.

Typ Bool
Wert true/false
Empfehlung true - der Meter wird im Fehlerfall übersprungen

aggtime

Vzlogger kann Messwerte sammeln und zusammenfügen (aggregieren) bevor sie an die MW gesendet werden. Hier wird die Sammelzeit in Sekunden definiert. Es ist darauf zu achten das die aggtime nicht kürzer ist als interval.

Typ Integer
Wert 0-?
-1 deaktiviert die Funktion sicher
Empfehlung -1

aggfixedinterval

Für eine optisch schönere Darstellung im Frontend ist es möglich alle aggregierten Kanäle dieses Meters mit identischem Timestamp an die Middleware zu senden.

Typ Bool
Wert true/false
Empfehlung -

channels

So ziemlich die wichtigste Gruppe. Hier erfolgt die Zuordnung der von vzlogger gelesenen Daten zu den Kanälen der Middleware. Es sind mehrere channels in jedem meter möglich.

Bei Inbetriebnahme kann man die channels erstmal leer lassen, verbositiy = 15 setzen und im log oder dump_file schauen was für Daten und unter welchen identifier die meter zur Verfügung stellen.
      "channels": [
        {
          "uuid": "",
          "identifier": "",
          "api": "volkszaehler",
          "middleware": "http://localhost/middleware.php",
          "host": "127.0.0.1",
          "secretKey": "",
          "type": "device",
          "scaler": 1,
          "aggmode": "none",
          "duplicates": 0
        }

uuid

Über die UUID werden die Kanäle der Middleware identifiziert. Sie wird beim Erstellen eines Kanals von der Middleware generiert.

Typ String
Wert z.B. „57acbef0-88a9-11e4-934f-6b0f9ecd95a8“

identifier

Über diesen String werden die Werte zu diesem channel aus den Daten des meter identifiziert. Wie der String aussieht hängt vom protocol ab.

Typ String
protocol Wert
s0 „Impulse“ oder „Impulse_neg“ für Impulse
s0 „Power“ oder „Power_neg“ dabei werden die Impulse auf Basis der resolution von Arbeit (kWh) in Leistung (W) umgerechnet
d0 z.B. „1-0:1.8.0“ OBIS-Codes
sml z.B. „1-0:1.8.0“ OBIS-Codes
random „“ bleibt immer leer
file „“ oder per $i definiert z.B. $i = $v ⇒ Temperatur = 10 ⇒ Identifier „Temperatur“, Value = 10
exec „“ oder per $i definiert z.B. $i = $v ⇒ Temperatur = 10 ⇒ Identifier „Temperatur“, Value = 10
fluksov2 z.B. „Consumption“ oder „Power“ wie bei FlukSo zu -ChannelId und +ChannelId zugewiesen
ocr z.B. „wert“ wie unter meter, identifier parametriert
oms z.B. „1.8.0“ OBIS-Codes
1-wire z.B. „28-00000450cbbd“ ID des Sensors

api

Hier wird die Programmierschnittstelle definiert über die der vzlogger Kontakt aufnehmen soll.

Typ String
Wert „volkszaehler“ für die VZ-Middleware
„mysmartgrid“ vzlogger kann auch mySmartGrid mit Daten beliefern
„influxdb“ vzlogger kann auch InfluxDB mit Daten beliefern
„none“ wenn die Werte nur über den integrierte httpd bereitgestellt werden sollen
Empfehlung „volkszaehler“

middleware

Die URL über welche die api zu erreichen ist.

Typ String
Wert z.B. „http://localhost/middleware.php“ für eine VZ-Middleware auf der selben Maschine (Raspberry Image)
z.B. „https://demo.volkszaehler.org/middleware.php“ für den VZ Demo Server
Empfehlung http://localhost/middleware.php

host

Die URL über welche die InfluxDB api zu erreichen ist.

Typ String
Wert z.B. „127.0.0.1“ für eine InfluxDB auf der selben Maschine
Empfehlung „127.0.0.1“
Für InfluxDB gibt es eine Reihe weiterer, optionaler Parameter. Siehe dazu den vzlogger.conf-Editor oder die Beipielkonfguration im Git

secretKey

Schlüssel für die Kommunikation mit der mySmartGrid-api

Typ String
Wert ?
Empfehlung „“

type

Art des meter, nur für mySmartGid-api

Typ String
Wert „device“
„sensor“
Empfehlung „“

scaler

Faktor für die Werte, nur für mySmartGid-api

Typ String
Wert 0-?

aggmode

Mathematische Art der Aggregation die der vzlogger vornehmen soll. Nur wirksam in Verbindung mit aggtime größer als 0.

Typ String
Wert „avg“ Durchschnitt, zu verwenden bei Aktualwerte wie Strom, Spannung oder Temperatur
„max“ Maximal, zu verwenden bei Zählerständen
„sum“ Summe, zu verwenden bei Impulsen
„none“ keine Aggreagtion vornehmen
Empfehlung „none“

duplicates

Zeit in Sekunden in denen wiederholende, identische Werte (z.B. unveränderte Zählerstände) nicht an die api weitergeleitet werden sollen.

Typ Integer
Wert 0-?
Empfehlung 0, insbesondere bei s0-Impulsen!

protocol

Das Protokoll mit dem der Meter sendet. Der JSON-Editor hilft bei der korrekten Wahl.

Typ String
Wert „s0“ Impulssignale
„d0“ Zeilenbasierter Klartext nach DIN EN 62056-21
„sml“ SML wie es bei EDL-21, eHz und SyM2 verwendet wird
„random“ Zufallsgenerator
„file“ Auswerten einer bestehenden Datei, wird mittels format weiter parametriert
„exec“ Programmausgaben parsen
„fluksov2“ Protokoll der Flukso-Meter
„ocr“ Bilderkennung
„oms“ Open Metering System, ein Ableger von M-Bus
„w1therm“ 1-Wire-Temperatursensoren an Busmaster DS2482
Empfehlung -

device

Das Linux-Device über den der Meter angebunden ist.

Typ String
Wert „“ oder
„/dev/ttyUSB0“ und andere gültige Device mit Schreib- und Leserecht.
Empfehlung „/dev/ttyUSB0“ für einen IR-Schreib-Lesekopf mit USB-Ausgang, unnötig bei s0 an GPIO oder d0/sml über TCP/IP.

protocol-spezifische Schlüssel

Jedes protocol hat eine eigene Reihe erforderlicher und optionaler Schlüssel.

s0

      "gpio": -1,
      "mmap": "",
      "gpio_dir": -1,
      "configureGPIO": true,
      "resolution": 1000,
      "send_zero": false,
      "debounce_delay": 30,
      "nonblocking_delay": 100000,

gpio

Bestimmt den GPIO am RaspberryPi an dem der Meter angeschlossen ist.

Typ Integer
Wert 4, 17, 18, 22, 23, 27, je nach verwendeter Erweiterung und Eingang.
Empfehlung -

mmap

Für hochfrequente Impulssignale können die GPIO des RaspberryPi auf Memory-Mapping umgestellt werden. Die Ports müssen manuell als Eingänge konfiguriert werden. Nur für Impulssignale!

Typ String
Wert „“ deaktiviert
„rpi1“ Raspberry A?
„rpi2“ Raspberry B?
Empfehlung „“

gpio_dir

Es kann zwischen steigender und fallender Flanke unterschieden werden.

Typ Integer
Wert 0 fallende Flanke ?
1 steigende Flanke ?
-1 deaktiviert die Funktion sicher
Empfehlung -1

configureGPIO

Vzlogger kann die E/A-Konfiguration des GPIO übernehmen.

Typ Bool
Wert true/false
Empfehlung true

resolution

Impulse/kWh, wird bei api:mysmartgrip benötigt.

Typ Integer
Wert 1-?
Empfehlung Entsprechend den Angaben auf dem Zähler

send_zero

Wenn keine Impulssignale eintreffen wird der vzlogger auch keinen Datentupel an die MW senden. Ist send_zero aktiv wird jede Sekunde ein Tuple gesendet auch wen keine Impulse registriert wurden. In Verbindung mit aggtime kann der Zeitraum vergrößert werden.

Typ Bool
Wert true/false
Empfehlung false

debounce_delay

Bei mechanischen Impulsquellen (Reedkontakten) kann es zu Kontaktprellen kommen. Hier wird definiert wie viele Millisekunden nachfolgende Signalflanken ignoriert werden.

Typ Integer
Wert 0-?
Empfehlung 0 für elektronische Signalquellen. 30 oder mehr für mechanische.

nonblocking_delay

Zeitverzögerung in Nanosekunden bei aktiviertem mmap.

Typ Integer
Wert 0-?
Empfehlung 10000, bei 5000 können auf einem RaspberryPi 2 Impulse mit bis zu 30kHz geloggt werden.

d0

Manche Zähler senden ihre Daten unaufgeforder alle paar Sekunden (Push), andere müssen dazu aufgefordert werden (Pull). Ob es sich um einen Pull- oder Push-Meter handelt kann mit einer Digitalkamera an der IR-Diode geprüft werden. Vielleicht ist dein Zählertyp aber auch schon im Wiki dokumentiert.

      "interval": -1,
	  "host": "",
	  "dump_file": "",
      "pullseq": "",
      "ackseq": "auto",
      "baudrate": 300,
      "baudrate_read": 300,
      "parity": "7e1",
      "wait_sync": "off",
      "read_timeout": 10,
      "baudrate_change_delay": 0

interval

Verzögerung zwischen Zugriffen auf Pull-Meter in Sekunden. Es ist darauf zu achten das der Meter genug Zeit hat zu antworten, z.B. wenn er seriell mit nur 300bd sendet.

Typ Integer
Wert 0-?
-1 deaktiviert die Funktion sicher
Empfehlung -1 bei Push-Meter
Nach Bedarf

host

Für Meter die nicht lokal sondern übers TCP/IP-Netz angebunden sind.

Typ String
Wert „“ eine gültige URL mit Port
Empfehlung „“

dump_file

Das Datentelegramm kann zu Dignosezwecken zusätzlich in eine Datei ausgegeben werden.

Typ String
Wert „“ Muss eine vorhandenes Verzeichnis sein auf dem schreibender Zugriff erlaubt ist.
Empfehlung „~/d0-dump.txt“ z.B. Sollte nach der Fehlersuche aber abgestellt werden: „“

pullseq

Initialisierungssequenz für Pull-Meter.

Typ String
Wert z.B. „2F3F210D0A“
Empfehlung „“ bei Push-Meter
„2F3F210D0A“ bei Pull-Meter

ackseq

Nach der Initilisierungssequenz antwortet ein Pull-Meter mit einem Einzeiler, um das Datentelegramm zu erhalten ist eine Startsequenz nötig. Ev. wird dabei auch die Baudrate umgestellt. Ist aber stark vom Zähler abhängig.

Typ String
Wert „auto“
z.B. „063030300d0a“ für 300bd
z.B. „063035300d0a“ für 9600bd
Empfehlung „auto“

baudrate

Die serielle Geschwindigkeit mit der der Meter kommuniziert.

Typ Integer
Wert 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, u.A.
Empfehlung 300

baudrate_read

Pull-Meter erlauben teilweise auch mehr als 300bd. Diese muss in der ackseq angefordert und hier dem vzlogger mitgeteilt werden.

Typ Integer
Wert 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, u.A.
Empfehlung 300 geht eigentlich immer. Je nach Länge des Datentelegramms kann die zeitliche Auflösung aber zu wünschen übrig lassen weil interval recht groß sein muss.

parity

Frameformat der seriellen Kommunikation.

Typ String
Wert „7e1“, „8n1“, „7o1“, „7n1“
Empfehlung „7e1“

wait_sync

Manche Zähler schicken kein Synchronisationssignal „!“ sondern weiter Datentelegramme ohne auf eine pullseq zu warten.

Typ String
Wert „off“ ?
„end“ ?
Empfehlung „off“

read_timeout

Zeit in Sekunden nach denen der vzlogger die Kommunikation für beendet erachtet. Ist erforderlich falls der Zähler kein Synchronisationssignal sendet, die Startsequenz fehlt schlägt oder sonstwie Zeichen verloren gehen. Die Zeit darf aber nicht zu kurz sein sonst wird mitten im Datentelegramm abgebrochen.

Typ Integer
Wert 1-?
Empfehlung 10

baudrate_change_delay

Zeit in ms nach ackseq bevor die Baudrate auf baudrate_read umgestellt wird.

Typ Integer
Wert 0-?
Empfehlung 0, da vor umstellen der Baudrate der UART sowieso geleert wird

sml

Manche Zähler senden ihre Daten unaufgeforder alle paar Sekunden (Push), andere müssen dazu aufgefordert werden (Pull). Ob es sich um einen Pull- oder Push-Meter handelt kann mit einer Digitalkamera an der IR-Diode geprüft werden. Vielleicht ist dein Zähler aber auch schon im Wiki dokumentiert.

      "interval": -1,
      "host": "",
      "pullseq": "",
      "baudrate": 9600,
      "parity": "8n1"

interval

Verzögerung zwischen Zugriffen auf Pull-Meter in Sekunden. Es ist darauf zu achten das der Meter genug Zeit hat zu antworten, z.B. wenn er seriell mit nur 300bd sendet.

Typ Integer
Wert 0-?
-1 deaktiviert die Funktion sicher
Empfehlung -1 bei Push-Meter
Nach Bedarf

host

Für Meter die nicht lokal sondern übers TCP/IP-Netz angebunden sind.

Typ String
Wert „“ eine gültige URL mit Port
Empfehlung „“

Initialisierungssequenz für Pull-Meter.

Typ String
Wert z.B. „2F3F210D0A“
Empfehlung „“ bei Push-Meter
„2F3F210D0A“ bei Pull-Meter

baudrate

Die serielle Geschwindigkeit mit der der Meter kommuniziert.

Typ Integer
Wert 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, u.A.
Empfehlung 9600

parity

Frameformat der seriellen Kommunikation.

Typ String
Wert „7e1“, „8n1“, „7o1“, „7n1“
Empfehlung „8n1“

random

Zufallsgenerator


file

Auswerten einer bestehenden Datei, wird mittels format weiter parametriert


exec

Programmausgaben parsen


fluksov2

Protokoll der FlukSo-Meter


ocr

Bilderkennung


oms

Open Metering System, ein Ableger von M-Bus


w1therm

Für 1-Wire-Temperatursensoren am Busmaster DS2482 sind keine weiteren Parameter nötig.


Schluss

Und ganz wichtig: Klammern schließen!

     }
  ]
}
software/controller/vzlogger/conf_parameter.txt · Zuletzt geändert: 2017/04/07 23:03 von jau