Met InfluxDB is het mogelijk om de data van je zonnepanelen en slimme meter + combinatie voor langere tijd te bewaren. Het is mogelijk om over deze gegevens grafieken te tekenen en te presenteren met een bijzondere performance.
Influxdb opzetten
Als je al een Influx database hebt draaien, dan ga ik er van uit dat je weet wat je doet. Weet in ieder geval dat Omnik Datalogger nu alleen nog de v1 API ondersteund. Ik zal uitleggen hoe je omnikdatalogger kunt aansluiten op InfluxDB 1.7 (oude versie) en hoe het werkt bij InfluxDB 2.0 (huidige actuele versie).
InfluxDB 1.7 opzetten
Dit how-to maakt gebruik van Docker. Het installeren van Docker zelf laat ik buiten beschouwing. Het is ook mogelijk om Docker Desktop te installeren op Windows 10.
Waar je uiteindelijk je configuratie bestanden en data opslaat is aan jou, maar een SSD werkt wel het beste. Met docker moet je mappen die je hiervoor gebruik via volumes koppelen.
Ik er er gemakshalve even vanuit dat onder Linux werken, dat kan ook de Ubuntu client zijn binnen Windows 10 met WSL2.
Vanuit de homedir (~) maken we 2 submappen aan onder de map ~/infuxdb, ~/infuxdb/data en ~/infuxdb/config.
mkdir ~/influxdb ~/influxdb/data ~/influxdb/config
Nu maken we een initiële configuratie aan in ~/influxdb/config/influxdb.conf
docker run --rm influxdb:1.7 \
influxd config | sudo tee ~/influxdb/config/influxdb.conf > /dev/null
We maken nu een container met de naam influxdb die we op de gemaakte mappen koppelen.
docker run -d -p 8086:8086 \
--name influxdb \
-v $PWD/influxdb/data:/var/lib/influxdb \
-v $PWD/influxdb/config:/etc/influxdb \
influxdb:1.7
Nu influx draait kunnen we een database aanmaken. Daarvoor openen we een BASH shell (command prompt) in de container, geven het commando influx
en maken vervolgens een database aan met de naam omnik
. Uiteraard kun je de database ook een andere naam geven. Als we klaar zijn verlaten we met exit weer de shell. Met SHOW DATABASES
kun je de bestaande databases opvragen.
docker exec -it influxdb /bin/bash
root@3f765a94ec6c:/# influx Connected to http://localhost:8086 version 1.7.11 InfluxDB shell version: 1.7.11 > SHOW DATABASES name: databases name ---- _internal
> CREATE DATABASE omnik
> exit
root@3f765a94ec6c:/# exit
Nu kan er data worden gelogd naar de database omnik
(zonder authenticatie). Met Influx DB 1.7 is authenticatie niet verplicht, maar wel aan te raden. Ik zal dit deel hier verder niet uitleggen.
InfluxDB 2.0 opzetten
Dit how-to maakt gebruik van Docker. Het installeren van Docker zelf laat ik buiten beschouwing. Het is ook mogelijk om Docker Desktop te installeren op Windows 10.
Waar je uiteindelijk je configuratie bestanden en data opslaat is aan jou, maar een SSD werkt wel het beste. Met docker moet je mappen die je hiervoor gebruik via volumes koppelen.
Ik er er gemakshalve even vanuit dat onder Linux werken, dat kan ook de Ubuntu client zijn binnen Windows 10 met WSL2.
Vanuit de homedir (~) maken we 2 submappen aan onder de map ~/infuxdb2, ~/infuxdb2/data en ~/infuxdb2/config.
mkdir ~/influxdb2 ~/influxdb2/data ~/influxdb2/config
Nu maken we een initiële configuratie aan in ~/influxdb2/config/config.yml.
docker run --rm influxdb:latest \
influxd print-config | sudo tee ~/influxdb2/config/config.yml \
> /dev/null
We maken nu een container met de naam influxdb2 die we op de gemaakte mappen koppelen.
docker run -d -p 8086:8086 \
--name influxdb2 \
-v $PWD/influxdb2/config:/etc/influxdb2 \
-v $PWD/influxdb2/data:/var/lib/influxdb2 \
influxdb:latest
Nu influx draait kunnen we een initiële database en admin account aanmaken. In dit voorbeeld gebruik ik de gebruikersnaam admin
en wachtwoord pwd4odl!
en organisatie jbsoft
als voorbeeld, pas dit aan!
In Influxdb 2.0 wordt niet meer over databases gesproken maar
buckets
.
docker exec -it influxdb2 influx setup \
--username admin \
--password pwd4odl! \
--org jbsoft \
--bucket omnik
Nu verschijnt de vraag of je akkoord bent met de voorgestelde aanpassing. Bevestig met [ENTER]
en y
:
Welcome to InfluxDB 2.0!
Please type your retention period in hours.
Or press ENTER for infinite: {ENTER}
You have entered:
Username: admin
Organization: jbsoft
Bucket: omnik
Retention Period: infinite
Confirm? (y/n): y
Config default has been stored in /etc/influxdb2/influx-configs.
User Organization Bucket
admin jbsoft omnik
Je kunt nu https://localhost:8086
openen in je browser en met het admin account inloggen. Voor de nieuwe gebruiker is ook een token aangemaakt (dit is wat anders dan het jwt_token
uit Influxdb 1.7.). Dit token is te gebruiken voor algemene admin toegang vanaf andere applicaties. Het advies is om tokens voor externe applicaties alleen de rechten te geven die strict nodig zijn.
Omnik data logger kan nog geen gebruik maken van deze nieuwe token authenticatie en gebruikt nog de API van versie 1. Om toch data te kunnen loggen moeten we basic authenticatie inrichten en een retentie policy mapping aanmaken. Daarvoor hebben we eerst het bucket ID nodig van de zojuist aangemaakte bucket.
~$ docker exec -it influxdb2 influx bucket list ID Name Retention Shard group duration Organization ID d440efcf4c4af65d _monitoring 168h0m0s 24h0m0s 173dad67c9c4a4f2 a2a540de5d9d3cd7 _tasks 72h0m0s 24h0m0s 173dad67c9c4a4f2 8dc395acb8164833 omnik infinite 168h0m0s 173dad67c9c4a4f2
In het voorbeeld is ons bucket ID 8dc395acb8164833. Nu kunnen we een account met schrijfrechten en een retentie policy mapping aanmaken. Als account gebruiken we gebruiker omnik
met wachtwoord Datal0ggerPwd!
Wijzig dit!
docker exec -it influxdb2 \
influx v1 auth create -o jbsoft --username omnik \
--password Datal0ggerPwd! --write-bucket 8dc395acb8164833
docker exec -it influxdb2 \
influx v1 dbrp create --bucket-id 8dc395acb8164833 \
--db omnik --rp infinite
Nu kan er data worden gelogd naar de database omnik
(met basic authenticatie gebruiker omnik
met wachtwoord Datal0ggerPwd!
)
Omnikdatalogger configureren
Een voorbeeld configuratie voor influxdb (via de v1 API) ziet er als volgt uit (voorbeeld gaat uit van tcpclient, maar dat kan ook localproxy of solarmanpv zijn). In het voorbeeld is basic authenticatie gebruikt:
omnikdatalogger:
module: omniklogger
class: HA_OmnikDataLogger
timezone: Europe/Amsterdam
city: Amsterdam
interval: 360
persistant_cache_file: C:/users/{gebruikersnaam}/.omnik/persistant_cache.json
loglevel: DEBUG
plugins:
client: tcpclient
output:
- influxdb
client.tcpclient:
plant_id_list:
- '123'
plant.123:
inverter_address: 192.168.1.100
logger_sn: 501234567
inverter_sn: NLDN302123456789
influxdb:
host: 127.0.0.1
port: 8086
username: omnik
password: Datal0ggerPwd!
database: omnik
use_temperature: true
Als een slimme meter aanwezig is, dan wordt elke 10 seconden een update gelogd. Elke keer wanneer er een update is van de zonnepanelen wordt er ook een update gestuurd van de gecombineerde data, zoals werkelijk verbruik e.d.