Influxdb

Terug naar index

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.

Terug naar index