<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi,</p>
<p>da sich bei mir einige Geräte im Heimnetz tummeln, die sich per
MQTT mitteilen, wollte ich diese möglichst einfach in VZ speichern
lassen (bzw. in eine InfluxDB).<br>
Z.B. gibt es ein paar Steckdosen, auf denen Tasmota läuft und die
so ihre Werte per MQTT (JSON) übertragen:</p>
<p><tt>{"Time":"2020-03-31T10:12:36","ENERGY":{"TotalStartTime":"2020-02-27T20:27:49","Total":24.950,"Yesterday":0.766,"Today":0.332,"Period":0,"Power":77,"ApparentPower":86,"ReactivePower":39,"Factor":0.89,"Voltage":226,"Current":0.380}}</tt></p>
<p>Da mein MQTT Server auf einem Raspberry neben dem vzlogger läuft
(incl. mosquitto_sub Kommando), dachte ich mir, man kann sicher
das exec Protokoll dafür nutzen.<br>
Für die DB brauche ich nur "Power", also reicht</p>
<p><tt>mosquitto_sub -C 1 -t /SmartHome/Topic/ZumGeraet/SENSOR | jq
-r '.ENERGY.Power'</tt></p>
<p><tt>-C 1</tt> läßt das Kommando einfach warten, bis 1 Antwort
zurück kommt.</p>
<p>Hier die Konfiguration aus vzlogger.conf (influxdb ist optional):</p>
<p><tt> { // MQTT</tt><tt> subscriber<br>
</tt><tt> "enabled": true,</tt><tt><br>
</tt><tt> "allowskip": true,</tt><tt><br>
</tt><tt> "interval": 10,</tt><tt> //Achtung: alle 10
Sekunden, eventuell erhöhen<br>
</tt><tt> "aggtime": -1,</tt><tt><br>
</tt><tt> "aggfixedinterval": false,</tt><tt><br>
</tt><tt> "channels": [</tt><tt><br>
</tt><tt> {</tt><tt><br>
</tt><tt> "api": "volkszaehler",</tt><tt><br>
</tt><tt> "uuid": "96e43280-1234-1122-aabb-g527bd5f1607",</tt><tt><br>
</tt><tt> "identifier": "",</tt><tt><br>
</tt><tt>// "middleware":
<a class="moz-txt-link-rfc2396E" href="http://127.0.0.1/middleware.php">"http://127.0.0.1/middleware.php"</a>,</tt><tt><br>
</tt><tt> "middleware" : <a class="moz-txt-link-rfc2396E" href="http://127.0.0.1:8080">"http://127.0.0.1:8080"</a>,</tt><tt><br>
</tt><tt> "aggmode": "none",</tt><tt><br>
</tt><tt> "duplicates": 0</tt><tt><br>
</tt><tt> },</tt><tt><br>
</tt><tt> {</tt><tt> // nochmal in die InfluxDB, ACHTUNG:
das ist komplett optional und für die meisten unnötig<br>
</tt><tt> "api": "influxdb", // use the InfluxDB api</tt><tt><br>
</tt><tt> "uuid": "</tt><tt><tt>96e43280-1234-1122-aabb-g527bd5f1607</tt>",</tt><tt><br>
</tt><tt> "identifier" : "",</tt><tt><br>
</tt><tt> "host": "127.0.0.1:8086",
// This assumes that InfluxDB is running on localhost</tt><tt><br>
</tt><tt> "database": "volkszaehler",
// Optional: make sure this database exists in InfluxDB</tt><tt><br>
</tt><tt> "measurement_name": "data",
// Optional: It is recommended that all your meters have the
same InfluxDB measurement name</tt><tt><br>
</tt><tt> "tags":
"title=Gefrierschrank,type=powersensor", // Optional:
Additional tags to append when inserting data</tt><tt><br>
</tt><tt> "username": "username",
// Optional: When InfluxDB Auth is enabled you need to set
the correct user and password</tt><tt><br>
</tt><tt> "password": "password",</tt><tt><br>
</tt><tt> //"max_batch_inserts": 4500,
// Optional: Max number of measurements per request. No need
to change this</tt><tt><br>
</tt><tt> //"max_buffer_size": 450000,
// Optional: Max number of measurements to be cached when
InfluxDB is not available</tt><tt><br>
</tt><tt> //"timeout": 30,
// Optional: Time in seconds after which requests to
InfluxDB time out</tt><tt><br>
</tt><tt> //"send_uuid": false,
// Optional: Disables the sending of the UUID to the
InfluxDB server</tt><tt><br>
</tt><tt> //"ssl_verifypeer": false,
// Optional: Disables the certificate verification for https
connections</tt><tt><br>
</tt><tt> "aggmode" : "none"</tt><tt><br>
</tt><tt> } </tt><tt><br>
</tt><tt> ],</tt><tt><br>
</tt><tt> "<b>protocol": "exec",</b></tt><tt><br>
</tt><tt> <b>"command": "mosquitto_sub -C 1 -t </b></tt><b><tt><tt>/SmartHome/Topic/ZumGeraet/SENSOR</tt>
| jq -r '.ENERGY.Power'",</tt></b><tt><br>
</tt><tt> //"format": "$v"</tt><tt><br>
</tt><tt> },</tt><br>
</p>
<p><br>
</p>
<p>Funktioniert sehr gut so weit.<br>
</p>
<p>Viele Grüße<br>
Sirko<br>
</p>
</body>
</html>