Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:controller:vzlogger:vzlogger_conf_parameter

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
software:controller:vzlogger:vzlogger_conf_parameter [2017/12/14 23:03] – verschoben von ./conf_parameter jausoftware:controller:vzlogger:vzlogger_conf_parameter [2023/05/31 19:44] (aktuell) – [channels] narc-ontakac2
Zeile 3: Zeile 3:
  
 Formatiert ist sie nach [[https://de.wikipedia.org/wiki/JavaScript_Object_Notation|JSON]]; kompakt, manuell lesbar und einfach zu parsen. Entgegen dem Standard unterstützt vzlogger auch Kommentare **/*...*/** oder **%%//%%** innerhalb der Konfigurationsdatei.\\ Formatiert ist sie nach [[https://de.wikipedia.org/wiki/JavaScript_Object_Notation|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 [[http://volkszaehler.github.io/vzlogger/|vzlogger.conf-Editor]] hilft dabei. Er bietet auch eine meter- und channel-Vorauswahl und blendet dann Schlüssel aus die nicht benötigt werden.\\ +Korrekte Kommata und Klammerung sind zwingend. Der [[http://volkszaehler.github.io/vzlogger/|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.\\+Zeichenketten (String) müssen in Anführungszeichen gesetzt werden, Ganzzahlen (Integer) und Logische Ausdrücke (Bool) hingegen nicht. Gruppen **{}** und Schlüssel dürfen in root nur einmalig verwendet werden, in Arrays **[]** aber mehrmals.\\
  
 +Bestimmte Schlüssel bekommen, wenn sie nicht explizit genannt werden, bei Bedarf einen Standardwert (Default) zugewiesen.
  
 ====== root ====== ====== root ======
Zeile 12: Zeile 13:
 { {
   "retry": 0,   "retry": 0,
-  "daemon": true, 
   "verbosity": 0,   "verbosity": 0,
-  "log": "/var/log/vzlogger.conf",+  "log": "/var/log/vzlogger/vzlogger.log",
 </code> </code>
  
Zeile 22: Zeile 22:
 ^ Wert | 0-? | ^ Wert | 0-? |
 ^ Empfehlung | 0 | ^ Empfehlung | 0 |
- 
-=== daemon === 
-Betreibt vzlogger als Dienst (daemon) in den Hintergrund. 
-^ Typ | Bool | 
-^ Wert | true/false | 
-^ Empfehlung | true | 
  
 === verbosity === === verbosity ===
-Ausführlichkeit des Fehlerlogs.+Ausführlichkeit des Fehlerlogs.\\ 
 +In der höchsten Detailstufe werden auch alle verfügbaren [[/software/obis|OBIS-Codes]] eines [[/software/sml|SML]]-Telegramms gelistet.
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | 0 = Alarme | ^ Wert | 0 = Alarme |
Zeile 37: Zeile 32:
 ^ ::: | 5 = Informationen | ^ ::: | 5 = Informationen |
 ^ ::: | 10 = Diagnose | ^ ::: | 10 = Diagnose |
-^ ::: | 15 = Dateilinformationen |+^ ::: | 15 = Detailinformationen |
 ^ Empfehlung | 15 zu Beginn | ^ Empfehlung | 15 zu Beginn |
 ^ ::: | 0 wenn alles fehlerfrei läuft | ^ ::: | 0 wenn alles fehlerfrei läuft |
Zeile 46: Zeile 41:
 ^ Typ | String | ^ Typ | String |
 ^ Wert | Muss eine vorhandenes Verzeichnis sein auf dem schreibender Zugriff erlaubt ist. | ^ Wert | Muss eine vorhandenes Verzeichnis sein auf dem schreibender Zugriff erlaubt ist. |
-^ Empfehlung | "/var/log/vzlogger.log" im Regelfall |+^ Empfehlung | "/var/log/vzlogger/vzlogger.log" im Regelfall |
 ^ ::: | "" wenn S0-Impulse in schneller Folge geloggt werden da Schreibzugriffe auf SD-Karte das loggen stören können | ^ ::: | "" wenn S0-Impulse in schneller Folge geloggt werden da Schreibzugriffe auf SD-Karte das loggen stören können |
  
Zeile 53: Zeile 48:
 ====== push ====== ====== push ======
 Empfangsort des VZ-[[https://de.wikipedia.org/wiki/Push-Pull-Strategie|Push]]-Servers.\\ Empfangsort des VZ-[[https://de.wikipedia.org/wiki/Push-Pull-Strategie|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 [[software/middleware/push-server|Push-Server der Middleware]] aktiviert werden.+Über den Dienst ist es zum Beispiel möglich Daten an die VZ-Middleware zu schicken die zwar dargestellt, aber nicht gespeichert werden. Es muss parallel dazu der [[software/middleware/push-server|Push-Server der Middleware]] aktiviert werden.
 <code> <code>
   "push": [   "push": [
Zeile 75: Zeile 70:
 ====== local ====== ====== local ======
 HTTP-Dienst (httpd) für Daten-[[https://de.wikipedia.org/wiki/Push-Pull-Strategie|Pull]]. HTTP-Dienst (httpd) für Daten-[[https://de.wikipedia.org/wiki/Push-Pull-Strategie|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.+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.\\ 
 +Es können alle Werte angezeigt werden für die ein ''channel'' angelegt wurde, auch jene die ''"api" : "null"'' konfiguriert wurden.
 <code> <code>
   "local": {   "local": {
     "enabled": false,     "enabled": false,
-    "port": 8080,+    "port": 8081,
     "index": false,     "index": false,
     "timeout": 0,     "timeout": 0,
Zeile 96: Zeile 92:
  
 === port === === port ===
-Der [[https://de.wikipedia.org/wiki/Port_(Protokoll)|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.+Der [[https://de.wikipedia.org/wiki/Port_(Protokoll)|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, PPM bieten wir üblicherweise auf 8080 an.
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | ? | ^ Wert | ? |
-^ Empfehlung | 8080 |+^ Empfehlung | 8081 |
  
 === index === === index ===
-Normal sollte die Anfrage die UUID des gewünschten //channel// enthalten, wird der Index aktiviert werden alle //channel// dargestellt.+Normal sollte die Anfrage auch die UUID des gewünschten ''channel'' enthalten, z.B.: ''http://localhost:8081/c673b290-fdac-11e0-a470-1d9351203a00''. Wird der Index aktiviert werden auf Anfrage ''http://localhost:8081/'' alle ''channel'' ausgegeben.
 ^ Typ | Bool | ^ Typ | Bool |
 ^ Wert | true/false | ^ Wert | true/false |
Zeile 120: Zeile 116:
  
 ---- ----
 +
 +====== mqtt ======
 +Hier kann die Verbindung zum einem MQTT-Broker (Server) eingetragen werden. Die in ''meters''  angegebenen Kanäle werden dann in das entsprechende MQTT-Topic übertragen.
 +<note important>Diese Funktion ist standardmäßig nicht im vzlogger enthalten und muss [[/software/controller/vzlogger/installation_cpp-version?s[]=mqtt#build_von_hand|beim Kompilieren aktiviert werden]].</note>
 +
 +<code>
 +  "mqtt": {
 +    "enabled": false,
 +    "host": "test.mosquitto.org",
 +    "port": 1883,
 +    "id": "vzlogger",
 +    "cafile": "",
 +    "capath": "",
 +    "certfile": "",
 +    "keyfile": "",
 +    "keypass": "",
 +    "keepalive": 30,
 +    "topic": "vzlogger/data",
 +    "id": "",
 +    "user": "",
 +    "pass": "",
 +    "retain": false,
 +    "rawAndAgg": false,
 +    "qos": 0,
 +    "timestamp": false
 +  }
 +</code>
 +
 +=== enabled ===
 +MQTT an- oder abstellen.
 +^ Typ | Bool |
 +^ Wert | true/false |
 +^ Standard | false |
 +^ Empfehlung | true |
 +
 +=== host ===
 +Server-Adresse des MQTT-Brokers.
 +^ Typ | String |
 +^ Wert | eine gültige URL |
 +^ Standard | test.mosquitto.org |
 +
 +=== port ===
 +Port des MQTT-Brokers.
 +^ Typ | Integer |
 +^ Wert | 1883 (unverschlüsselt), 8883 (verschlüsselt), 8884 (verschlüsselt mit Zertifikat) |
 +^ Standard | 1883 |
 +
 +=== cafile ===
 +Optionaler Dateiname der Server CA
 +^ Typ | String |
 +^ Wert | Dateiname |
 +^ Standard | |
 +
 +=== capath ===
 +Optionaler Pfad für Server CAs
 +^ Typ | String |
 +^ Wert | Pfad |
 +^ Standard | |
 +
 +<note important>Es sollten entweder ''cafile'' oder ''capath'' verwendet werden. Weitere Informationen sind in der Datei ''mosquitto.conf'' des MQTT-Brokers</note>
 +
 +=== certfile ===
 +Optionaler Dateiname des Client-Zertifikats (z.B. ''client.crt'')
 +
 +=== keyfile ===
 +Optionaler Pfad zum privaten Schlüssel des Client-Zertifikats (z.B. ''client.key'')
 +^ Typ | String |
 +^ Wert | Dateiname |
 +^ Standard | |
 +
 +=== keypass ===
 +Optionales Passwort des privaten Schlüssels
 +^ Typ | String |
 +^ Wert | Passwort |
 +^ Standard | |
 +
 +=== keepalive ===
 +Optionales Angabe der Sekunden zur Aufrechterhaltung der Verbindung (Keepalive)
 +^ Typ | Integer |
 +^ Wert | 0-? |
 +^ Standard | 30 |
 +
 +=== topic ===
 +Optionale Angabe des MQTT-Topics, in welches die Werte der verschiedenen ''meters'' geschrieben werden sollen. Im angegebenen Topic werden die ''meter'' durch ein Unter-Topic ''chnX'' unterschieden. Der erste ''meter'' ist im Unter-Topic ''chn0'', der zweite ''meter'' im Unter-Topic ''chn1'' usw. zu finden.
 +^ Typ | String |
 +^ Wert | MQTT-Topic |
 +^ Standard | vzlogger/data |
 +
 +<note important>Das Topic darf nicht mit ''$'' beginnen und nicht mit ''/'' enden.</note>
 +
 +=== id ===
 +Optionale statische Client-ID. Bei Nichtangabe wird eine Client-ID nach dem Muster ''vzlogger_<pid>'' verwendet.
 +^ Typ | String |
 +^ Wert | Client-ID |
 +^ Standard | vzlogger_<pid> |
 +
 +=== user ===
 +Optionaler Benutzername zur Anmeldung an den MQTT-Broker.
 +^ Typ | String |
 +^ Wert | Benutzername |
 +^ Standard | |
 +
 +=== password ===
 +Optionales Password zur Anmeldung an den MQTT-Broker.
 +^ Typ | String |
 +^ Wert | Passwort |
 +^ Standard | |
 +
 +=== retain ===
 +Optionale Anweisung zum Zwischenspeichern der MQTT-Nachricht, um bei Neuverbindung sofort darauf zugreifen zu können (Retain-Flag). Bei der Angabe von ''false'' ist der Wert erst sichtbar, wenn der Wert an den MQTT-Broker gesendet wird.
 +^ Typ | Boolean |
 +^ Wert | true/false |
 +^ Standard | false |
 +
 +=== rawAndAgg ===
 +Optionale Veröffentlichung der Rohdaten selbst wenn der Zusammenfassungs-Modus (''aggmode'') verwendet wird.
 +^ Typ | Boolean |
 +^ Wert | true/false |
 +^ Standard | false |
 +
 +=== qos ===
 +Optionale Angabe des Quality of Service.
 +^ Typ | Integer |
 +^ Wert | 0/1 |
 +^ Standard | 0 |
 +
 +=== timestamp ===
 +Optionale Angabe, ob ein Zeitstempel im Payload mit angegeben werden soll.
 +^ Typ | Boolean |
 +^ Wert | true/false |
 +^ Standard | false |
  
 ====== meters ====== ====== 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.\\ 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.+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 | ^ Typ | Array |
  
Zeile 135: Zeile 262:
       "aggtime": -1,       "aggtime": -1,
       "aggfixedinterval": false,       "aggfixedinterval": false,
-      "channels": [], 
       "protocol": "s0",       "protocol": "s0",
       "device": "",       "device": "",
 +      "channels": [],
 </code> </code>
  
Zeile 144: Zeile 271:
 ^ Typ | Bool | ^ Typ | Bool |
 ^ Wert | true/false | ^ Wert | true/false |
 +^ Standard | false |
 ^ Empfehlung | true | ^ Empfehlung | true |
  
Zeile 150: Zeile 278:
 ^ Typ | Bool | ^ Typ | Bool |
 ^ Wert | true/false | ^ Wert | true/false |
 +^ Standard | false |
 ^ Empfehlung | true - der Meter wird im Fehlerfall übersprungen | ^ Empfehlung | true - der Meter wird im Fehlerfall übersprungen |
  
 === aggtime === === 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//.+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, dass die aggtime nicht kürzer ist als ''interval''.\\ 
 +''aggtime'' arbeitet zusammen mit ''aggmode''.
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | 0-? | ^ Wert | 0-? |
-^ ::: | -1 deaktiviert die Funktion sicher |+^ ::: | -1 deaktiviert die Funktion sicher (Bitte auch ''aggmode'' auf "none" setzen, um undefiniertes Verhalten zu vermeiden) | 
 +^ Standard | -1 |
 ^ Empfehlung | -1 | ^ Empfehlung | -1 |
  
Zeile 163: Zeile 294:
 ^ Typ | Bool | ^ Typ | Bool |
 ^ Wert | true/false | ^ Wert | true/false |
 +^ Standard | false |
 ^ Empfehlung | - | ^ Empfehlung | - |
 +
 +=== protocol ===
 +Das Protokoll mit dem der Meter sendet. Der [[http://volkszaehler.github.io/vzlogger/|JSON-Editor]] hilft bei der korrekten Wahl.
 +^ Typ | String ||
 +^ Wert | "s0" | Impulssignale |
 +^ ::: | "d0" | Zeilenbasierter Klartext nach DIN EN 62056-21 |
 +^ ::: | "sml" | [[software: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 [[https://www.flukso.net/about|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 [[hardware:controllers:ir-schreib-lesekopf-usb-ausgang|IR-Schreib-Lesekopf mit USB-Ausgang]], unnötig bei s0 an GPIO oder d0/sml über TCP/IP. |
  
 ---- ----
  
 ===== channels ===== ===== 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. +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. 
-<note>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.</note>+<note>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.</note>
 <code> <code>
       "channels": [       "channels": [
Zeile 181: Zeile 335:
           "type": "device",           "type": "device",
           "scaler": 1,           "scaler": 1,
 +          "timeout" : 30,
           "aggmode": "none",           "aggmode": "none",
           "duplicates": 0           "duplicates": 0
Zeile 192: Zeile 347:
  
 === identifier === === identifier ===
-Über diesen String werden die Werte zu diesem //channel// aus den Daten des //meter// identifiziert. +Über diesen String werden die Werte zu diesem ''channel'' aus den Daten des ''meter'' identifiziert. 
-Wie der String aussieht hängt vom //protocol// ab.+Wie der String aussieht hängt vom ''protocol'' ab.
 ^ Typ | String | ^ Typ | String |
  
-//protocol// ^ Wert ^ Hinweise +''protocol'' ^ Wert ^ Hinweise 
-//s0// | "Impulse" oder "Impulse_neg" | für Impulse | +''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 | +''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" | [[software:obis|OBIS-Codes]] | +''d0'' |z.B. "1-0:1.8.0" | [[software:obis|OBIS-Codes]] | 
-//sml// |z.B. "1-0:1.8.0" | [[software:obis|OBIS-Codes]] | +''sml'' |z.B. "1-0:1.8.0" | [[software:obis|OBIS-Codes]] | 
-//random// | "" | bleibt immer leer | +''random'' | "" | bleibt immer leer | 
-//file// | "" oder per $i definiert | z.B. $i = $v => Temperatur = 10 => Identifier "Temperatur", Value = 10 | +''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 | +''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 | +''fluksov2'' | z.B. "Consumption" oder "Power" | wie bei FlukSo zu -ChannelId und +ChannelId zugewiesen | 
-//ocr// | z.B. "wert" | wie unter //meter////identifier// parametriert | +''ocr'' | z.B. "wert" | wie unter ''meter''''identifier'' parametriert | 
-//oms// | z.B. "1.8.0" | [[software:obis|OBIS-Codes]] | +''oms'' | z.B. "1.8.0" | [[software:obis|OBIS-Codes]] | 
-//1-wire// | z.B. "28-00000450cbbd" | ID des Sensors |+''w1therm'' | z.B. "28-00000450cbbd" | ID des Sensors |
  
   
Zeile 216: Zeile 371:
 ^ ::: | "mysmartgrid" vzlogger kann auch [[https://www.mysmartgrid.de|mySmartGrid]] mit Daten beliefern | ^ ::: | "mysmartgrid" vzlogger kann auch [[https://www.mysmartgrid.de|mySmartGrid]] mit Daten beliefern |
 ^ ::: | "influxdb" vzlogger kann auch [[https://en.wikipedia.org/wiki/InfluxDB|InfluxDB]] mit Daten beliefern | ^ ::: | "influxdb" vzlogger kann auch [[https://en.wikipedia.org/wiki/InfluxDB|InfluxDB]] mit Daten beliefern |
-^ ::: | "null" wenn die Werte nur über den integrierten //httpd// oder //push// bereitgestellt werden sollen |+^ ::: | "null" wenn die Werte nur über den integrierten ''httpd'', ''push'' oder ''mqtt'' bereitgestellt werden sollen 
 +^ Standard| "volkszaehler" |
 ^ Empfehlung | "volkszaehler" | ^ Empfehlung | "volkszaehler" |
 +Achtung: Der Wert ist ggfs. "null", nicht null.
  
 === middleware === === middleware ===
-Die [[https://de.wikipedia.org/wiki/Uniform_Resource_Locator|URL]] über welche die //api// zu erreichen ist.+Die [[https://de.wikipedia.org/wiki/Uniform_Resource_Locator|URL]] über welche die ''api'' zu erreichen ist.
 ^ Typ | String | ^ Typ | String |
 ^ Wert | z.B. "http://localhost/middleware.php" für eine VZ-Middleware auf der selben Maschine (Raspberry Image) | ^ Wert | z.B. "http://localhost/middleware.php" für eine VZ-Middleware auf der selben Maschine (Raspberry Image) |
Zeile 227: Zeile 384:
  
 === host === === host ===
-Die [[https://de.wikipedia.org/wiki/Uniform_Resource_Locator|URL]] über welche die InfluxDB //api// zu erreichen ist.+Die [[https://de.wikipedia.org/wiki/Uniform_Resource_Locator|URL]] über welche die InfluxDB ''api'' zu erreichen ist.
 ^ Typ | String | ^ Typ | String |
 ^ Wert | z.B. "127.0.0.1" für eine  InfluxDB auf der selben Maschine | ^ Wert | z.B. "127.0.0.1" für eine  InfluxDB auf der selben Maschine |
Zeile 235: Zeile 392:
  
 === secretKey === === secretKey ===
-Schlüssel für die Kommunikation mit der mySmartGrid-//api//+Schlüssel für die Kommunikation mit der mySmartGrid-''api''
 ^ Typ | String | ^ Typ | String |
 ^ Wert | ? | ^ Wert | ? |
Zeile 241: Zeile 398:
  
 === type === === type ===
-Art des //meter//, nur für mySmartGid-//api//+Art des ''meter'', nur für mySmartGid-''api''
 ^ Typ | String | ^ Typ | String |
 ^ Wert | "device" | ^ Wert | "device" |
Zeile 248: Zeile 405:
  
 === scaler === === scaler ===
-Faktor für die Werte, nur für mySmartGid-//api// +Faktor für die Werte, nur für mySmartGid-''api'' 
-^ Typ | String |+^ Typ | Integer |
 ^ Wert | 0-? | ^ Wert | 0-? |
 +
 +=== timeout ===
 +Zeit in Sekunden für die Zustellung per Curl nach der die Verbindung als misslungen betrachtet wird.
 +^ Typ | Integer |
 +^ Standard | 30 |
  
 === aggmode === === aggmode ===
-Mathematische Art der Aggregation die der vzlogger vornehmen soll. Nur wirksam in Verbindung mit //aggtime// größer als 0.+Mathematische Art der Aggregation die der vzlogger vornehmen soll. Nur wirksam in Verbindung mit ''aggtime'' größer als 0.\\ 
 +Wenn ''aggtime'' auf -1 steht (deaktiviert), dann bitte auch ''aggmode'' auf "none" setzen, um undefiniertes Verhalten zu vermeiden.
 ^ Typ | String | ^ Typ | String |
 ^ Wert | "avg" Durchschnitt, zu verwenden bei Aktualwerten wie Strom, Spannung oder Temperatur | ^ Wert | "avg" Durchschnitt, zu verwenden bei Aktualwerten wie Strom, Spannung oder Temperatur |
Zeile 259: Zeile 422:
 ^ ::: | "sum" Summe, zu verwenden bei Impulsen | ^ ::: | "sum" Summe, zu verwenden bei Impulsen |
 ^ ::: | "none" keine Aggreagtion vornehmen | ^ ::: | "none" keine Aggreagtion vornehmen |
 +^ Standard | "none" |
 ^ Empfehlung | "none" | ^ Empfehlung | "none" |
  
 === duplicates === === duplicates ===
-Zeit in Sekunden in denen wiederholende, identische Werte (z.B. unveränderte Zählerstände) nicht an die //api// weitergeleitet werden sollen.+Zeit in Sekunden in denen wiederholende, identische Werte (z.B. unveränderte Zählerstände) nicht an die ''api'' weitergeleitet werden sollen.
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | 0-? | ^ Wert | 0-? |
-^ Empfehlung | 0, insbesondere bei //s0//-Impulsen! +^ Empfehlung | 0, insbesondere bei ''s0''-Impulsen! |
- +
-=== protocol === +
-Das Protokoll mit dem der Meter sendet. Der [[http://volkszaehler.github.io/vzlogger/|JSON-Editor]] hilft bei der korrekten Wahl. +
-^ Typ | String || +
-^ Wert | "s0" | Impulssignale | +
-^ ::: | "d0" | Zeilenbasierter Klartext nach DIN EN 62056-21 | +
-^ ::: | "sml" | [[software: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 [[https://www.flukso.net/about|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 [[hardware:controllers:ir-schreib-lesekopf-usb-ausgang|IR-Schreib-Lesekopf mit USB-Ausgang]], unnötig bei s0 an GPIO oder d0/sml über TCP/IP. |+
  
 ---- ----
  
 ===== protocol-spezifische Schlüssel ===== ===== protocol-spezifische Schlüssel =====
-Jedes //protocol// hat eine eigene Reihe erforderlicher und optionaler Schlüssel.+Jedes ''protocol'' hat eine eigene Reihe erforderlicher und optionaler Schlüssel.
  
 ==== s0 ==== ==== s0 ====
Zeile 321: Zeile 463:
  
 === gpio_dir === === gpio_dir ===
-Es kann zwischen steigender und fallender Flanke unterschieden werden.+Es kann die Zählrichtung umgekehrt werden.
 ^ Typ | Integer | ^ Typ | Integer |
-^ Wert | 0 fallende Flanke ? +^ Wert | 0 Zählung positiv 
-^ ::: | 1 steigende Flanke ? |+^ ::: | 1 Zählung negativ |
 ^ ::: | -1 deaktiviert die Funktion sicher | ^ ::: | -1 deaktiviert die Funktion sicher |
 ^ Empfehlung | -1 | ^ Empfehlung | -1 |
Zeile 335: Zeile 477:
  
 === resolution === === resolution ===
-Impulse/kWh, wird bei //api//:mysmartgrip benötigt.+Impulse/kWh, wird bei ''api'':mysmartgrip und ''identifier'':Power benötigt.
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | 1-? | ^ Wert | 1-? |
-^ Empfehlung | Entsprechend den Angaben auf dem Zähler |+^ Standard | 1000 | 
 +^ Empfehlung | Entsprechend der Angabe auf dem Zähler |
  
 === send_zero === === 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.+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 | ^ Typ | Bool |
 ^ Wert | true/false | ^ Wert | true/false |
 +^ Standard | false |
 ^ Empfehlung | false | ^ Empfehlung | false |
  
Zeile 350: Zeile 494:
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | 0-? | ^ Wert | 0-? |
 +^ Standard | 30 |
 ^ Empfehlung | 0 für elektronische Signalquellen. 30 oder mehr für mechanische. | ^ Empfehlung | 0 für elektronische Signalquellen. 30 oder mehr für mechanische. |
  
 === nonblocking_delay === === nonblocking_delay ===
-Zeitverzögerung in Nanosekunden bei aktiviertem //mmap//.+Zeitverzögerung in Nanosekunden bei aktiviertem ''mmap''.
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | 0-? | ^ Wert | 0-? |
 +^ Standard | 10000 |
 ^ Empfehlung | 10000, bei 5000 können auf einem RaspberryPi 2 Impulse mit bis zu 30kHz geloggt werden. | ^ Empfehlung | 10000, bei 5000 können auf einem RaspberryPi 2 Impulse mit bis zu 30kHz geloggt werden. |
  
Zeile 363: Zeile 509:
 <code> <code>
       "interval": -1,       "interval": -1,
-   "host": "", +      "host": "", 
-   "dump_file": "",+      "dump_file": "",
       "pullseq": "",       "pullseq": "",
       "ackseq": "auto",       "ackseq": "auto",
Zeile 380: Zeile 526:
 ^ Wert | 0-? | ^ Wert | 0-? |
 ^ ::: | -1 deaktiviert die Funktion sicher | ^ ::: | -1 deaktiviert die Funktion sicher |
 +^ Standard | -1 |
 ^ Empfehlung | -1 bei Push-Meter | ^ Empfehlung | -1 bei Push-Meter |
 ^ ::: | Nach Bedarf | ^ ::: | Nach Bedarf |
Zeile 390: Zeile 537:
  
 === dump_file === === dump_file ===
-Das Datentelegramm kann zu Dignosezwecken zusätzlich in eine Datei ausgegeben werden.+Das Datentelegramm kann zu Diagnosezwecken zusätzlich in eine Datei ausgegeben werden.
 ^ Typ | String | ^ Typ | String |
 ^ Wert | "" Muss eine vorhandenes Verzeichnis sein auf dem schreibender Zugriff erlaubt ist. | ^ Wert | "" Muss eine vorhandenes Verzeichnis sein auf dem schreibender Zugriff erlaubt ist. |
 +^ Standard | "" |
 ^ Empfehlung | "~/d0-dump.txt" z.B. Sollte nach der Fehlersuche aber abgestellt werden: "" | ^ Empfehlung | "~/d0-dump.txt" z.B. Sollte nach der Fehlersuche aber abgestellt werden: "" |
  
Zeile 399: Zeile 547:
 ^ Typ | String | ^ Typ | String |
 ^ Wert | z.B. "2F3F210D0A" | ^ Wert | z.B. "2F3F210D0A" |
 +^ Standard | "" |
 ^ Empfehlung | "" bei Push-Meter | ^ Empfehlung | "" bei Push-Meter |
 ^ ::: | "2F3F210D0A" bei Pull-Meter | ^ ::: | "2F3F210D0A" bei Pull-Meter |
Zeile 408: Zeile 557:
 ^ ::: | z.B. "063030300d0a" für 300bd | ^ ::: | z.B. "063030300d0a" für 300bd |
 ^ ::: | z.B. "063035300d0a" für 9600bd | ^ ::: | z.B. "063035300d0a" für 9600bd |
 +^ Standard | "" |
 ^ Empfehlung | "auto" | ^ Empfehlung | "auto" |
  
Zeile 414: Zeile 564:
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, u.A. | ^ Wert | 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, u.A. |
 +^ Standard | 9600 |
 ^ Empfehlung | 300 | ^ Empfehlung | 300 |
  
 === baudrate_read === === baudrate_read ===
-Pull-Meter erlauben teilweise auch mehr als 300bd. Diese muss in der //ackseq// angefordert und hier dem vzlogger mitgeteilt werden.+Pull-Meter erlauben teilweise auch mehr als 300bd. Diese muss in der ''ackseq'' angefordert und hier dem vzlogger mitgeteilt werden.
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, u.A. | ^ 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. |+^ Standard | wie unter ''baudrate'' eingestellt| 
 +^ 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 === === parity ===
Zeile 426: Zeile 578:
 ^ Typ | String | ^ Typ | String |
 ^ Wert | "7e1", "8n1", "7o1", "7n1" | ^ Wert | "7e1", "8n1", "7o1", "7n1" |
 +^ Standard | "7e1" |
 ^ Empfehlung | "7e1" | ^ Empfehlung | "7e1" |
  
 === wait_sync === === wait_sync ===
-Manche Zähler schicken kein Synchronisationssignal "!" sondern weiter Datentelegramme ohne auf eine //pullseq// zu warten.+Manche Zähler schicken kein Synchronisationssignal "!" sondern weiter Datentelegramme ohne auf eine ''pullseq'' zu warten.
 ^ Typ | String | ^ Typ | String |
 ^ Wert |  "off" ? | ^ Wert |  "off" ? |
 ^ ::: | "end" ? | ^ ::: | "end" ? |
 +^ Standard | "off" |
 ^ Empfehlung | "off" | ^ Empfehlung | "off" |
  
Zeile 439: Zeile 593:
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | 1-? | ^ Wert | 1-? |
 +^ Standard | 10 |
 ^ Empfehlung | 10 | ^ Empfehlung | 10 |
  
 === baudrate_change_delay === === baudrate_change_delay ===
-Zeit in ms nach //ackseq// bevor die Baudrate auf //baudrate_read// umgestellt wird.+Zeit in ms nach ''ackseq'' bevor die Baudrate auf ''baudrate_read'' umgestellt wird.
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | 0-? | ^ Wert | 0-? |
 +^ Standard | 0 |
 ^ Empfehlung | 0, da vor umstellen der Baudrate der UART sowieso geleert wird | ^ Empfehlung | 0, da vor umstellen der Baudrate der UART sowieso geleert wird |
  
Zeile 464: Zeile 620:
 ^ Wert | 0-? | ^ Wert | 0-? |
 ^ ::: | -1 deaktiviert die Funktion sicher | ^ ::: | -1 deaktiviert die Funktion sicher |
 +^ Standard | -1 |
 ^ Empfehlung | -1 bei Push-Meter | ^ Empfehlung | -1 bei Push-Meter |
 ^ ::: | Nach Bedarf | ^ ::: | Nach Bedarf |
Zeile 472: Zeile 629:
 ^ Wert | "" eine gültige URL mit Port | ^ Wert | "" eine gültige URL mit Port |
 ^ Empfehlung | "" | ^ Empfehlung | "" |
- +
 === pullseq === === pullseq ===
 Initialisierungssequenz für Pull-Meter. Initialisierungssequenz für Pull-Meter.
 ^ Typ | String | ^ Typ | String |
 ^ Wert | z.B. "2F3F210D0A" | ^ Wert | z.B. "2F3F210D0A" |
 +^ Standard | "" |
 ^ Empfehlung | "" bei Push-Meter | ^ Empfehlung | "" bei Push-Meter |
 ^ ::: | "2F3F210D0A" bei Pull-Meter | ^ ::: | "2F3F210D0A" bei Pull-Meter |
Zeile 484: Zeile 642:
 ^ Typ | Integer | ^ Typ | Integer |
 ^ Wert | 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, u.A. | ^ Wert | 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, u.A. |
 +^ Standard | 9600 |
 ^ Empfehlung | 9600 | ^ Empfehlung | 9600 |
  
Zeile 490: Zeile 649:
 ^ Typ | String | ^ Typ | String |
 ^ Wert | "7e1", "8n1", "7o1", "7n1" | ^ Wert | "7e1", "8n1", "7o1", "7n1" |
 +^ Standard | "8n1" |
 ^ Empfehlung | "8n1" | ^ Empfehlung | "8n1" |
  
 === use_local_time === === use_local_time ===
-Nutzt zur Erstellung des Timestamp die aktuelle Uhrzeit des Rechners statt des Zählers.\\ +Nutzt zur Erstellung des Timestamp die aktuelle Uhrzeit des Rechners ("true"statt des Zählers ("false").\\ 
-Wenn ein Zähler im Datenstrom eine Uhrzeit mitliefert wird diese verwendet um Zeitverschiebungen durch FiFo-Puffer auszuschließen. Es sind allerdings Zähler im Umlauf bei denen vergessen wurde die Zeit bei Inbetriebnahme einzustellen, in diesen Fällen sollte der vzlogger die lokale Rechnerzeit verwenden.+Die meisten Zähler liefern im Datenstrom die Echtzeit mit. Wenn diese bei der Inbetriebnahme korrekt eingestellt wurde, verwenden wir sie um z.B. mögliche Zeitverschiebungen durch FiFo-Puffer auszuschließen. Sind die Timestamp falsch oder fehlen sogar ganz muss der vzlogger die lokale Rechnerzeit heranziehen.
 ^ Typ | Bool | ^ Typ | Bool |
 ^ Wert | true/false | ^ Wert | true/false |
 +^ Standard | false |
 ^ Empfehlung | false | ^ Empfehlung | false |
 ---- ----
Zeile 504: Zeile 665:
 ---- ----
 ==== file ==== ==== file ====
-Auswerten einer bestehenden Datei, wird mittels //format// weiter parametriert+Auswerten einer bestehenden Datei, wird mittels ''format'' weiter parametriert
  
 ---- ----
 ==== exec ==== ==== exec ====
-Programmausgaben parsen+ 
 +In einem exec-Kanal wird für jede Abfrage das im Parameter ''command'' angegebene Shellkommando aufgerufen und die Standard-Ausgabe dieses Kommandos geparst. Dabei kann das erwartete Format mit Hilfe des ''format'' Parameters spezifiziert werden. 
 + 
 +  * exec-Kanäle sind nicht möglich, wenn der vzlogger als ''root'' ausgeführt wird. Durch einen Compiler-Parameter lässt sich diese Sicherheitsmaßnahme ausschalten. Es wird allerdings empfohlen, den vzlogger besser nicht als ''root'' auszuführen. In vielen Standard-Images ist dies nicht der Fall. 
 +  * Es wird für den Aufruf eine Shell verwendet, damit sind Pipes etc in vollem Umfang möglich 
 +  * Enthält der Formatstring kein $t, wird die aktuelle Uhrzeit als Timestamp verwendet 
 + 
 +=== command === 
 + 
 +Dieses Kommando wird ausgeführt; seine Ausgabe geparst 
 + 
 +^ Typ | string | 
 +^ Wert | Shell-Kommando | 
 +^ Beispiel | Siehe Wikiseiten zum [[hardware:channels:solar_inverters:kostal_pico|Kostal Piko]] oder zum [[hardware:channels:meters:power:dzg_dvh4013_modbus|DZG DVH 4013 Modbus]] | 
 + 
 +=== format === 
 + 
 +Jede Zeile der Ausgabe des ''command'' wird mit diesem Formatstring geparst und für jede Zeile ein eigener Datensatz erzeugt. Somit können sowohl mehrere Werte (z.B. verschiedene Register, die mit einem einzigen Aufruf des ''command'' ausgelesen wurden) als auch Werte unterschiedlicher Zeitstempel (z.B. man fragt die Quelle alle 30 Sekunden ab, möchte aber aus Gründen immer Batches von sechs Werten gleichzeitig in die Datenbank schreiben) mit einem einzelnen Aufruf eingetragen werden. 
 + 
 +^ Typ | string | 
 +^ Wert | Formatstring | 
 +^ Beispiel | '$t: $i = $v' für Ausgaben wie '1559656949: Gesamtenergie = 23294' | 
 + 
 +  * $t: timestamp (in Sekunden) 
 +  * $i: identifier (beliebiger String, taucht im Channel unter ''identifier'' wieder auf) 
 +  * $v: value 
 + 
 +Werte ohne identifier-Angabe landen beim Channel mit '"identifier": ""'
 + 
 +Weitere Dokumentation könnte man in den Mailinglistenarchiven, z.B. [[https://demo.volkszaehler.org/pipermail/volkszaehler-dev/2016-March/004933.html|hier ff.]], finden.
  
 ---- ----
software/controller/vzlogger/vzlogger_conf_parameter.1513289000.txt.gz · Zuletzt geändert: 2017/12/14 23:03 von jau