DSMR-logger schrijft nu rechtstreeks in InfluxDB / Grafana

[ 86 views ]

Door de jaren heen had ik mijn Slimme Meter uitgelezen met een USB P1 kabel en een Raspberry PI, echter een Raspberry PI moet regelmatige geupdate worden, SD kaartjes gaan kapot, Home Automation software moet regelmatig bijgewerkt worden om van nieuwe functies gebruik te kunnen maken.

Ik was dus op zoek naar een betrouwbare en draadloze manier om mijn Slimme Meter uit te lezen, geheel onafhankelijk van mijn home automation, dat was mijn doel vorig jaar. Toen ik eind vorig jaar de DSMR-logger oplossing van Willem Aandewiel ontdekte was ik gelijk enthousiast. Het project voldeed aan al mijn wensen, een open hardware en open source Slimme Meter uitlees oplossing, die ik zelf naar inzicht kon gaan uitbreiden.

Kort nadat ik het DSMR-logger v4.0 in elkaar gesoldeerd had en de firmware gedownload en gecompileerd en operationeel had was het eerste wat ik deed mijn mindergas.nl integratie (die ik ook al eens gemaakt had voor Domiticz) ontwikkelen voor DSMR-logger. Zo begon mijn eerste bijdrage aan de DSMR firmware, het was even wennen, een actieve bijdrage aan een project is net weer wat anders dan het gebruiken van een project. Na mijn initiële hack van DSMR heb ik met Willem contact opgenomen om hem te vragen of hij de nieuwe integratie in zijn firmware wilde opnemen. Willem reviewde mijn mindergas integratie en vroeg me om het te verbeteren door middel van een Finite State Machine implementatie.
Die kwam uiteindelijk in de code terecht. Door de tijd heen heb ik diverse kleine bijdragen geleverd aan het prachtige project van Willem.

Met release v2.0 is de REST API versie van de DSMR-logger firmware (DSMRloggerAPI) beschikbaar gekomen en daarmee is de eenvoudige integratie op basis van een REST API mogelijk geworden, integratie met de meeste home automation is nu nog verder vereenvoudigd. Daarnaast blijft de MQTT integratie een essentiële optie. Zelf maak ik tegenwoordig gebruik van home assistant en om grafieken te maken van al mijn sensors in mijn huis maak ik gebruik van de combinatie InfluxDB en Grafana. Een zeer krachtige combinatie van een time-series database en een visualisatie tool die me in staat stelt om eenvoudig een dashboard te maken. Het dashboard hieronder heb ik gemaakt in Grafana, waar ik ook de opgewekte energie, alswel de informatie uit de DSMR-logger zichtbaar maak.

Dit is mijn huidige energie monitor dashboard, waarin gegevens samenkomen uit verschillende bronnen.

Sinds kort beschik ik ook over zonnepanelen met een converter van SolarEdge, het opwekken van energie en het terugleveren aan het inzichtelijk maken is vrij eenvoudig in Grafana, mits je daar de bron informatie in weet te krijgen. Na wat configuratie werk was het zover, een eerste grafiek van mijn opgewekte energie.

Om dit mogelijk te maken heb ik DSMR-logger gegevens via MQTT hub, naar Home Assistant gestuurd, vandaar uit gaat het door InfluxDB, om uiteindelijk in Grafana te visualiseren. Overduidelijk waren er dus meerdere tussenstappen nodig om de informatie op mijn dashboard te krijgen. En zo ontstond het idee om de DSMR-logger een extra feature te geven, en wel de mogelijkheid om rechtstreeks in de influxdb database te laten schrijven. Het bleek een kleine uitbreiding op de DSMRloggerAPI firmware te zijn en intussen logt mijn DSMR-logger alweer een poosje rechtstreeks data naar InfluxDB.

Na overleg met Willem heb ik besloten om op mijn eigen fork van het project DSMRloggerAPI, door te ontwikkelen. De fork is een zelfstandig doorontwikkeling van de firmware, onder de naam DSMRlogger-Next. Het is mijn bedoeling om de firmware nog verder uit te breiden met nieuwe features, te verbeteren en eventuele bugs die ik tegenkom op te lossen.

De influxdb writer feature is te vinden in de nieuwe fork die ik ga onderhouden. Momenteel ben ik mijn influxdb aan het duurtesten en te checken of alles wat ik aangepast heb goed werkt. Naast de nieuwe feature heb ik ook een bug opgelost die ik ontdekte met mijn Slimme Meter met DSMR spec v4.2, zodat ik nu weer om de 10 seconden een telegram kan ontvangen.

Ik heb momenteel mijn eerste release candidate (rc0) hier gepubliceerd:

Als je mij wilt helpen, dan zou ik het prettig vinden als anderen dan de nieuwe feature gaan testen. Bij mij werkt het intussen betrouwbaar met mijn InfluxDB server. Dat wil niet zeggen dat ik niets over het hoofd zie, voorlopig ga ik nog even door met testen van de huidige release candidate.

Deze branch met de feature influxdb writer is na compilatie via de Adruino IDE, eenvoudig te installeren via de OTA update mogelijkheid die ingebouwd is in de DSMR-logger firmware. Zie de documentatie van Willem hierover. Na het inlezen en hernieuwd opstarten zal je de influxdb writer moeten configureren, dat doe je als volgt.

Opmerking: Dit is geen handleiding hoe je InfluxDB en Grafana installeert. Er zijn hier voldoende zeer uitgebreide blogs en video’s op YouTube over te vinden. De volgende beschrijving gaat dus in op hoe je InfluxDB en de DSMRloggerAPI moet configureren.

Eerst de InfluxDB configureren:

  1. Configureren van een lege influxdb database voor DSMR-logger Ga naar het webinterface van je influxdb (meestal Chornograf), log eerst in, en ga naar InfluxDB Admin.
  2. In de InfluxDB Admin pagina, maak je een nieuwe (lege) database aan:
  3. Voer de naam van de nieuwe database in. Het is handig om de hostnaam van de DMSR-logger te gebruiken (te vinden op het instellingen scherm van je logger) en klik op het groen vinkje:
  4. Je zult dan ter bevestiging de database aangemaakt zien:
  5. Belangrijk om te onthouden, dit is de Influxdb database. De naam die je gebruikt hebt is “case-senstive”. Deze naam gebruik je later in je DSMR-logger instellingen op exact dezelfde manier.

Bij versie 1.x van InfluxDB is het niet nodig om wachtwoorden en gebruikers aan te maken voor data schrijvers. Je mag dus altijd naar een InfluxDB schrijven, lezen daarentegen is wel afgeschermd met gebruikersnaam en wachtwoorden.

Daarmee is de InfluxDB klaar voor gebruik. Nu de DSMR-logger configureren voor
gebruik:

  1. In de DSMR Logger software ga je naar de instellingen door op het tandwieltje: rechts boven in het scherm te klikken.
  2. In het instellingen scherm zijn drie nieuwe InfluxDB instellingen te zien, namelijk:
    – Hostname
    – Port
    – Database name
  3. In het plaatje hierboven zie je een IP nummer, maar een hostname van je InfluxDB server mag ook. De default poort voor influxDB versie 1.x is 8086. En zoals je bovenaan hebt kunnen zien, heb ik een database aangemaakt met de naam “dsmr-api” (let op: dit is hoofdletter gevoelig, vul dus exact dezelfde naam in als je gedaan hebt bij het aanmaken van de InfluxDB).
  4. Sla de nieuwe instellingen op, door bovenaan op te klikken.

En dat is het al… na enkele seconden zal InfluxDB beginnen met het ontvangen van de Telegram waarden. Alleen de meetgegevens worden doorgestuurd en als je in influxDB gaat kijken, dan zul je daar automatisch gegenereerde tags/labels zien verschijnen met data. Na ontvangst van elk nieuwe telegram zal influxDB ook die nieuwe waarde ontvangen, naast het eventueel gebruiken van MQTT of de REST API. Die blijven gewoon werken zoals voorheen.

Nu de gegevens in de influxDB database stromen, kan je ze gebruiken in Grafana om de meetgegevens te tonen in je eigen dashboard.

Ik hoor graag van jullie of dit een nuttige uitbreiding op de firmware is voor de DSMR-logger. Mocht je hiermee aan de slag gaan, laat je eigen ervaringen hieronder in de comment sectie weten. Dit is mijn eerste release candidate, dus ontdekt je bugs, of problemen, laat het me vooral weten als een issue op mijn github repo als een issue .

Feedback is welkom… dus graag hieronder jullie opmerkingen.

This entry was posted in Arduino, ESP8266, Uncategorised and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


The maximum upload file size: 4 MB.
You can upload: image, other.
Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded.

This site uses Akismet to reduce spam. Learn how your comment data is processed.