Optolink mit Volkszähler

  • Hallo


    Habe jetzt erfolgreich einen VZ-Logger mit Ferrarislesekopf am laufen, funzt tadellos.

    Jetzt möchte ich das weiter ausbauen und auch noch die Daten meiner Heizung loggen.


    Hat hier im Forum schon jemand Erfahrungen damit die Daten einer Viessmann Heizung über die Optolink Schnittstelle über den VZ-Logger einzulesen und zu visualisieren?


    Meine konkrete Frage wäre, wie binde ich den "vclient und Vcontrold" in das VZ-Installation ein?

    Die Artikel im Netz die ich gefunden habe erläutern dies nicht im Detail, leider.


    Bin für jede Hilfe dankbar


    Gruß

    HappyUser20

  • Habe mich jetzt ein wenig damit beschäftig, vcontrold und volkszähler laufen jetzt auf dem Raspi.


    Mein Problem ist gerade das ich im frontend nicht angezeigt bekomme. Hab zu testzwecken erstmal die Ausßentemperatur konfiguriert.


    wenn ich folgendes ausführe "vclient -h 192.168.1.22:3002 -c getTempA

    bekomme ich einen Wert der richtig ist


    hier mal meine vzlogger.conf


    {

    // General settings

    "daemon": false, // run periodically

    "verbosity": 5, // log verbosity (0=log_alert, 1=log_error, 3=log_warning, 5=log_info, 10=log_debug, 15=log_finest)

    "log": "/var/log/vzlogger.log", // log file, optional

    "retry": 30, // http retry delay in seconds


    // Build-in HTTP server

    "local": {

    "enabled": false, // enable local HTTPd for serving live readings

    "port": 8080, // TCP port for local HTTPd

    "index": true, // provide index listing of available channels if no UUID was requested

    "timeout": 30, // timeout for long polling comet requests in seconds (0 disables comet)

    "buffer": -1 // HTTPd buffer configuration for serving readings, default -1

    // >0: number of seconds of readings to serve

    // <0: number of tuples to server per channel (e.g. -3 will serve 3 tuples)

    },


    // realtime notification settings

    "push": [

    {

    "url": "http://127.0.0.1:5582" // notification destination, e.g. frontend push-server

    }

    ],

    // Meter configuration

    "meters": [{

    "enabled": true,

    "skip": false,

    "protocol": "exec",

    "command": "vclient -h 192.168.1.22:3002 -c getTempA",

    "format": "$i $v", // $i MUSS verwendet werden. Broken: Null<>Nil Strings zur Channelzuordnung

    "interval":10 ,

    "channels": [{

    "uuid": "05857b40-18aa-11e9-a98b-6fb795e796f5",

    "identifier":"getTempA.value", // WIE $i im format String von der munin Ausgabe

    "middleware": "http://localhost/middleware.php"

    "aggmode": "none",

    "duplicates": 10

    },{

    "uuid": "... uuid für getTempWWist",

    "identifier":"getTempWWist.value",

    "middleware": "http://.../middleware.php"

    }]

    }]

    }


    könnt Ihr mir helfen?

  • Logfile?

    Ausgaben an der Konsole?

    Mit Hellsehen klappt bei mir nämlich nicht so gut.


    "push": [

    {

    "url": "http://127.0.0.1:5582" // notification destination, e.g. frontend push-server

    }

    ],

    Nutzt du Push? Falls nein, raus damit.



    Hab zu testzwecken erstmal die Ausßentemperatur konfiguriert.

    Sicher? Weil:

    "identifier":"getTempWWist.value",


    "uuid": "... uuid für getTempWWist",

    Das ist ein Syntaxfehler und müsste eigentlich zum Abbruch des vzloggers führen.


    "daemon": false, // run periodically

    Den solltest du auf true setzen. Funktioniert für einfache Tests, es werden aber keine Daten an die Middleware gesendet. Und wenn du den vzlogger dann auch noch über systemctl startest hast du gleich doppelt verloren.



    mfg JAU

    No Shift - No Service

  • Hab jetzt ein wenig mit dem Logfile gekämpft, wurde immer nichts geloggt.


    habe noch ein wenig mit der vzlogger.conf gespielt und habe jetzt was im Logfile. Und zwar folgendes:


    [Jan 15 16:13:42] Opened logfile /var/log/vzlogger.log

    [Jan 15 16:13:42][push] No pushDataServer defined.

    [Jan 15 16:13:42][] ===> Start meters

    [Jan 15 16:13:42][exec] MeterExec::open: MeterExec protocol cannot be run with root privileges!

    [Jan 15 16:13:42][exec] If you really want this, compile vzlogger with:

    [Jan 15 16:13:42][exec] 'cmake -D METEREXEC_ROOTACCESS=true .'

    [Jan 15 16:13:42][mtr0] Cannot open meter

    [Jan 15 16:13:42][] Startup failed: Meter open failed.


    Ich lese daraus Probleme mit MeterExec, nach Tante Google, muss ich den Vzlogger neu kompalieren!?


    Muss ich dazu alles neu installieren oder kann das "'cmake -D METEREXEC_ROOTACCESS=true" einfach so ausführen?

    Wie muss ich da genau vorgehen?


    Gruß

    HappyUser20

  • Statt mit systemctl kannst du vzlogger auch von der Konsole starten.


    Ändere in der Konfig:

    Code
    1. "log": "/home/pi/vzlogger.log",


    Und starte vzlogger mal von der Konsole mit

    Code
    1. vzlogger

    Mal sehen was raus kommt wenn vzlogger mit Userrechten pi läuft statt als root.



    mfg JAU

    No Shift - No Service

  • dann bekomme ich das


    pi@raspberrypi:~ $ cd ~

    pi@raspberrypi:~ $ sudo nano /etc/vzlogger.conf

    pi@raspberrypi:~ $ vzlogger

    [Jan 15 17:06:08][main] vzlogger v0.6.1 based on heads/master-0-gd3381ce6ba from Sat, 9 Dec 2017 15:49:37 +0100 started.

    [Jan 15 17:06:08][mtr0] Creating new meter with protocol exec.

    [Jan 15 17:06:08][exec] MeterExec::MeterExec: Parsed format string "$i $v" => "%2$ms %1$lf"

    [Jan 15 17:06:08][mtr0] Meter configured, enabled.

    [Jan 15 17:06:08] New meter initialized (protocol=exec)

    [Jan 15 17:06:08] Configure channel.

    [Jan 15 17:06:08][chn0] New channel initialized (uuid=...e796f5 api=volkszaehler id=getTempA.value)

    [Jan 15 17:06:08] Have 1 meters.

    [Jan 15 17:06:08][main] log level is 15

    [Jan 15 17:06:08][main] daemon=1, local=0

    [Jan 15 17:06:08] Daemonize process...

    pi@raspberrypi:~ $



    im frontend aber immer noch nichts


    das bekomme ich bei


    pi@raspberrypi:~ $ vclient -h 192.168.1.22:3002 -c getTempA

    getTempA:

    2.400000 Grad Celsius

    pi@raspberrypi:~ $


    MfG

    HappyUser


  • das sagt das neue Logfile


    Jan 15 17:06:08][main] vzlogger v0.6.1 based on heads/master-0-gd3381ce6ba from Sat, 9 Dec 2017 15:49:37 +0100 started.

    [Jan 15 17:06:08][mtr0] Creating new meter with protocol exec.

    [Jan 15 17:06:08][exec] MeterExec::MeterExec: Parsed format string "$i $v" => "%2$ms %1$lf"

    [Jan 15 17:06:08][mtr0] Meter configured, enabled.

    [Jan 15 17:06:08] New meter initialized (protocol=exec)

    [Jan 15 17:06:08] Configure channel.

    [Jan 15 17:06:08][chn0] New channel initialized (uuid=...e796f5 api=volkszaehler id=getTempA.value)

    [Jan 15 17:06:08] Have 1 meters.

    [Jan 15 17:06:08][main] log level is 15

    [Jan 15 17:06:08][main] daemon=1, local=0

    [Jan 15 17:06:08] Daemonize process...

    [Jan 15 17:06:08] Opened logfile /home/pi/vzlogger.log

    [Jan 15 17:06:08][push] No pushDataServer defined.

    [Jan 15 17:06:08][] ===> Start meters

    [Jan 15 17:06:08][exec] MeterExec::open: Testing command line 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA': Bad file descriptor

    [Jan 15 17:06:08][mtr0] Meter connection established

    [Jan 15 17:06:08][mtr0] Meter thread started

    [Jan 15 17:06:08][mtr0] Meter is opened. Starting channels.

    [Jan 15 17:06:08][mtr0] Number of readers: 32

    [Jan 15 17:06:08][chn0] Logging thread started

    [Jan 15 17:06:08][mtr0] Config.daemon: 1

    [Jan 15 17:06:08][] [Jan 15 17:06:08][mtr0] Config.local: 0

    Startup done.

    [Jan 15 17:06:08][exec] MeterExec::read: Calling 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:06:08][chn0] Start logging thread for volkszaehler-api. Running as daemon: yes

    [Jan 15 17:06:08][chn0] Using default volkszaehler api.

    [Jan 15 17:06:08][exec] MeterExec::read: Closing process 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:06:08][mtr0] Got 0 new readings from meter:

    [Jan 15 17:06:08][mtr0] Next reading in 120 seconds

    [Jan 15 17:06:08][chn0] ==> number of tuples: 0

    [Jan 15 17:06:08][chn0] JSON request body is null. Nothing to send now.

    [Jan 15 17:08:08][exec] MeterExec::read: Calling 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:08:08][exec] MeterExec::read: Closing process 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:08:08][mtr0] Got 0 new readings from meter:

    [Jan 15 17:08:08][mtr0] Next reading in 120 seconds

    [Jan 15 17:08:08][chn0] ==> number of tuples: 0

    [Jan 15 17:08:08][chn0] JSON request body is null. Nothing to send now.

    [Jan 15 17:10:08][exec] MeterExec::read: Calling 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:10:08][exec] MeterExec::read: Closing process 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:10:08][mtr0] Got 0 new readings from meter:

    [Jan 15 17:10:08][mtr0] Next reading in 120 seconds

    [Jan 15 17:10:08][chn0] ==> number of tuples: 0

    [Jan 15 17:10:08][chn0] JSON request body is null. Nothing to send now.

    [Jan 15 17:12:08][exec] MeterExec::read: Calling 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:12:08][exec] MeterExec::read: Closing process 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:12:08][mtr0] Got 0 new readings from meter:

    [Jan 15 17:12:08][mtr0] Next reading in 120 seconds

    [Jan 15 17:12:08][chn0] ==> number of tuples: 0

    [Jan 15 17:12:08][chn0] JSON request body is null. Nothing to send now.

    [Jan 15 17:14:08][exec] MeterExec::read: Calling 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:14:08][exec] MeterExec::read: Closing process 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:14:08][mtr0] Got 0 new readings from meter:

    [Jan 15 17:14:08][chn0] ==> number of tuples: 0

    [Jan 15 17:14:08][chn0] JSON request body is null. Nothing to send now.

    [Jan 15 17:14:08][mtr0] Next reading in 120 seconds

    [Jan 15 17:16:08][exec] MeterExec::read: Calling 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:16:08][exec] MeterExec::read: Closing process 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:16:08][mtr0] Got 0 new readings from meter:

    [Jan 15 17:16:08][chn0] ==> number of tuples: 0

    [Jan 15 17:16:08][chn0] JSON request body is null. Nothing to send now.

    [Jan 15 17:16:08][mtr0] Next reading in 120 seconds

    [Jan 15 17:18:08][exec] MeterExec::read: Calling 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:18:08][exec] MeterExec::read: Closing process 'vclient -h 192.168.1.22:3002 --munin -c 'getTempA'

    [Jan 15 17:18:08][mtr0] Got 0 new readings from meter:

    [Jan 15 17:18:08][chn0] ==> number of tuples: 0

    [Jan 15 17:18:08][chn0] JSON request body is null. Nothing to send now.

    [Jan 15 17:18:08][mtr0] Next reading in 120 seconds



    Gruß

    HappyUser20

  • Ok, ist mal ein Anfang.


    Um vzlogger zu beenden musst du nun entweder einen Systemneustart machen oder

    Code
    1. ps -A | grep vz

    In der Antwort ganz links ist die Prozess-Id, z.B. 123

    Code
    1. sudo kill 123

    Dann ist vzlogger aus und kann (bei Bedarf) neu gestartet werden.



    Für mein Verständnis (hab noch nie mit meterexec gearbeitet) führe mal bitte

    Code
    1. vclient -h 192.168.1.22:3002 -c 'getTempA,getTempWWist'

    aus und poste das Ergebnis.


    Werde heute Abend aber voraussichtlich nicht mehr Antworten, hab noch was vor.



    mfg JAU

    No Shift - No Service