Hi,
these are the steps to install vzlogger on an Orange Pi Zero by using a volkszaehler TTL device as interface to get the measures of the electricity meter. Connect the Output to the Pin 10/GPIO199/UART1_RX
First of all install Armbian .
Enable UART1. Open /boot/armbianEnv.txt and add the device tree overlay.
overlay_prefix=sun8i-h3 overlays=uart1
Reboot the PC. If the volkszaehler TTL interface is already connected you can check if data are received.
Install python serial and start python
root@debdev ~ # apt install python3-serial root@debdev ~ # python3
Enter the following code
import serial # Serielle Schnittstelle konfigurieren ser = serial.Serial('/dev/ttyS1', 9600, timeout=1) while True: data = ser.read(16) # Read 16 Bytes if data: print(data.hex()) # print Bytes as Hex
This should be shown something like this:
77070100100700ff0101621b52005900 000000000000060177070100240700ff 0101621b520059000000000000000601 77070100380700ff0101621b52005900 0000000000000001770701004c0700ff 0101621b520059000000000000000001 77070100200700ff0101622352ff6900 000000000009490177070100340700ff 0101622352ff69000000000000094a01 77070100480700ff0101622352ff6900 0000000000094701770701001f0700ff 0101622152fe69000000000000000401
Download, build and install vzlogger
root@debdev ~ #apt-get install extrace git-core cmake libtool dh-autoreconf uuid-dev libmicrohttpd-dev \ build-essential pkg-config libgnutls28-dev libssl-dev libmosquitto-dev libgcrypt20-dev libcurl3-dev \ libunistring-dev libssl-dev libsasl2-dev libcurl4-openssl-dev uuid-dev libtool libltdl-dev root@debdev ~ # mkdir ~/software root@debdev ~ # cd ~/software root@debdev ~ # export CMAKE_INSTALL_PREFIX=/usr/local root@debdev ~ # wget https://raw.github.com/volkszaehler/vzlogger/master/install.sh root@debdev ~ # bash install.sh vzlogger libjson libsml mqtt
Create a user vzlogger and add it to the dialout group to get access to the serial device(s)
root@debdev ~ # useradd -r -s /sbin/nologin vzlogger root@debdev ~ # usermod -a -G vzlogger vzlogger root@debdev ~ # usermod -a -G dialout vzlogger
Edit /etc/systemd/system/vzlogger.service and adjust as seen below
vi /etc/systemd/system/vzlogger.service [Unit] Description=vzlogger After=syslog.target network.target [Service] User=vzlogger Group=vzlogger ExecStart=/usr/local/bin/vzlogger -c /etc/vzlogger.conf ExecReload= StandardOutput=null ExecStartPre=-/usr/bin/mkdir -p /var/log/vzlogger ExecStartPre=-/usr/bin/chown vzlogger:vzlogger/var/log/vzlogger [Install] WantedBy=multi-user.target
Add als the following lines to /etc/rc.local (before exit 0 :-))
/usr/bin/mkdir -p /var/log/vzlogger /usr/bin/chown volkszaehler:volkszaehler /var/log/vzlogger
then you have to define your Smartmeter/electricity meter config. For me a EFR SGM-C8.
Create a file /etc/vzlogger.conf
{ "retry" : 0, /* how long to sleep between failed requests, in seconds */ "verbosity" : 15, /* between 0 and 15 */ "log" : "/var/log/vzlogger/vzlogger.log",/* path to logfile, optional */ "local" : { "enabled" : true, /* should we start the local HTTPd for serving live readings? */ "port" : 8081, /* the TCP port for the local HTTPd */ "index" : true, /* should we provide a index listing of available channels? */ "timeout" : 30, /* timeout for long polling comet requests, 0 disables comet, in seconds */ "buffer" : 600, /* how long to buffer readings for the local interface, in seconds */ }, // mqtt client support (if ENABLE_MQTT set at cmake generation) "mqtt": { "enabled": true, // enable mqtt client. needs host and port as well "host": "10.10.254.100", // mqtt server addr "port": 1883, // 1883 for unencrypted, 8883 enc, 8884 enc cert needed, "cafile": "", // optional file with server CA "capath": "", // optional path for server CAs. see mosquitto.conf. Specify only cafile or capath "certfile": "", // optional file for your client certificate (e.g. client.crt) "keyfile": "", // optional path for your client certficate private key (e.g. client.key) "keypass": "", // optional password for your private key "keepalive": 30, // optional keepalive in seconds. "topic": "home/stromzaehler", // optional topic dont use $ at start and no / at end "id": "", // optional static id, if not set "vzlogger_<pid>" will be used "user": "user", // optional user name for the mqtt server "pass": "mqttpw", // optional password for the mqtt server "retain": false, // optional use retain message flag "rawAndAgg": false, // optional publish raw values even if agg mode is used "qos": 0, // optional quality of service, default is 0 "timestamp": false // optional whether to include a timestamp in the payload }, "meters" : [ { // EFR SGM-C8 "enabled" : true, /* disabled meters will be ignored */ "protocol" : "sml", /* use 'vzlogger -h' for list of available protocols */ "device" : "/dev/ttyS1", // Serial device "parity": "8N1", "baudrate": 9600, "interval": 10, "aggtime":30, // aggrate for 30sec and then send "use_local_time": true, "channels": [ { "uuid": "034a512b-3958-4d74-a58b-caa297c6f28c", //Powershell [system.guid]::NewGuid().Guid | Set-Clipboard "identifier": "1-0:1.8.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "e0d53b6d-45d7-483e-b3f0-da6832c9843b", "identifier": "1-0:2.8.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "c0398814-e358-405c-8ae7-1ea1ccf34882", "identifier": "1-0:16.7.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "26d47a34-ca49-4941-8459-ba82a6427f40", "identifier": "1-0:36.7.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "3460a86e-de8b-4168-b058-57933e8995ca", "identifier": "1-0:56.7.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_co> "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "2bd577a9-5b61-445d-aaaf-47ad664e8a94", "identifier": "1-0:76.7.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "9d6c3b8b-c4b8-469d-94d8-fb85c4e8caba", "identifier": "1-0:32.7.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "3008ee57-06c6-4f47-a426-2996126e5fb9", "identifier": "1-0:52.7.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "3d05b927-45a1-4dd8-bc29-b57d07fb6c11", "identifier": "1-0:72.7.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "9bfc0a8b-7a4e-420a-a8fb-c8a125c1b4aa", "identifier": "1-0:31.7.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "3739a365-96f7-4e4c-bfa5-c4e7c6766430", "identifier": "1-0:51.7.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "3cae1182-b5ae-43b0-b924-52cf17a21853", "identifier": "1-0:71.7.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "3e9463b5-7319-403e-a597-0b02b580f0c4", "identifier": "1-0:81.7.1", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "c9520c8b-8341-437d-af88-c82a2325c9c2", "identifier": "1-0:81.7.2", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "270d1a11-f458-4a43-8f1c-301578eed7dd", "identifier": "1-0:81.7.4", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "ee2140ec-a9a7-423b-b565-26ddefe20303", "identifier": "1-0:81.7.15", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "7a2c975a-af19-41c7-887e-6097d0590f70", "identifier": "1-0:81.7.26", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 }, { "uuid": "60aef602-d242-4bf2-af0d-86b7077ca917", "identifier": "1-0:14.7.0", "api": "null", // Nur MQTT https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#channels "middleware": "http://localhost", "aggmode": "max", // Possible avg, max, none "duplicates": 60 } ] } ] }
Enable and start vzlooger
root@debdev ~ # systemctl enable vzlogger root@debdev ~ # systemctl start vzlogger