Monitoring Slimme Meter

Monitoring Slimme Meter

mbv Grafana en MySQL

Vullen andere tabellen

Tijd voor het vullen van de ander tabellen. We hebben de volgende tabellen gedefinieerd :

  • p1_log
    Dit is de enige tabel die gevuld wordt vanuit de slimme meter.
  • p1_elecverbruik
    Dit is het elektriciteitsgebruik per dag. Zowel hoog als laag tarief en (indien zonnepanalen) hoog en laag retour. Wordt bijgewerkt met het cron-script updatevandaag.sh ’s nachts om 00:10. Het script voert een sql-file uit : elecvandaag.sql
    Opm. Aangezien de tijd op de slimme meter wordt bijgehouden als UTC tijd moet in de scripts de tijd “omgebouwd”worden naar de normale wintertijd of zomertijd. Dat maakt dat de scripts wat ingewikkelder zijn dan eigenlijk nodig zou zijn. Het handigst zou het zijn als de tabel met de juiste zomer- of wintertijd gevuld zou worden.
  • p1_gasperdag
    Gasverbruik per dag. Wordt bijgewerkt met het cron-script updatevandaag.sh ’s nachts om 00:10. Het script voert een sql-file uit : gasvandaag.sql . Zie verder p1_elecverbuik hierboven.
  • p1_maandverbruik
    Het electricteits- en gasverbruik per maand. Wordt gevuld mbv script maandverbruik.sh en maandverbruik.sql.
  • p1_maandverbruik_normaal
  • p1_maandverbruik_laag
  • p1_maandretour_normaal
  • p1_maandreour_laag
    In deze vier tabellen wordt per jaar , per maand de verbruik/retour statistieken bijgehouden. Dit wordt door het script mnd_grafana.sh iedere dag om …. bijgewerkt. Dit script roept de volgende php-programma’s aan:
    • mnd_grafana_retour_laag.php
    • mnd_grafana_retour_normaal.php
    • mnd_grafana_verbruik_gas.php
    • mnd_grafana_verbruik_laag.php
    • mnd_grafana_verbruik_normaal.php
      In feite zijn dit links allemaal naar het zelfde programma mnd_grafana.php. Afhankelijk van de aanroep wordt een bepaalde tabel gevuld. Er is een extra script die al deze aanroepen uitvoert : mnd_grafana.sh.
  • p1_solaredge… tabellen. Dit zijn de tabellen voor de opbrengst van de zonnepanelen. Deze laat ik voor nu even buiten beschouwing. Kom ik later op terug.
  • p1_temp Temperatuur tabel. Hierin staat de data zoals geleverd door een kleine Arduino (ESPRESSIF ESP32). Kom ik later op terug.

Zoals eerder genoemd, alleen de p1_log tabel wordt gevuld rechtstreeks vanuit de slimme meter. De andere tabellen worden middels cron gevuld met gegevens uit de p1_log tabel. Voordeel is dat Grafana niet al het rekenwerk hoeft te doen. Dit zou een te grote belasting zijn voor het programma.

De crontab entries zijn :
# Check of gegevens van slimme meter worden weggeschreven naar p1_log
1,6,11,16,21,26,31,36,41,45,51,57 * * * * /opt/p1/check_P1.sh >/tmp/p1_cron.log 2>&1
# Vul tabel p1_maandverbruik aan vanuit p1_log
56 23 * * * /home/peter/bin/maandverbruik.sh > /tmp/cronmaandverbruik.log 2>&1
# Vul aan p1_elecverbruik en p1_gasperdag.
10 0 * * * /home/peter/bin/updatevandaag.sh > /tmp/cronupdatevandaag.log 2>&1
# Bouw de tabellen maand…. op
1 3 * * * /home/peter/bin/mnd_grafana.sh > /tmp/cronmnd_grafana.log 2>&1

Deze entries kun je toevoegen aan de crontab van de gebruiker waaronder je de gegevens inleest, in ons geval monitor, door het commando

crontab -e

Vervang wel /home/peter/bin door de directory waar je scripts staan. De scripts (scripts_part1.tar) zelf kun je hier downloaden. Denk erom dat je in de scripts nog username/wachtwoord etc moet vervangen door je eigen gegevens. Dit wordt in de scripts in de eerste regels aangegeven.
Verder zul je na het uitpakken van de scripts in dezelfde directory nog een aantal links moeten aan maken:

ln -s mnd_grafana.php mnd_grafana_retour_laag.php
ln -s mnd_grafana.php mnd_grafana_retour_normaal.php
ln -s mnd_grafana.php mnd_grafana_verbruik_laag.php
ln -s mnd_grafana.php mnd_grafana_verbruik_normaal.php
ln -s mnd_grafana.php mnd_grafana_verbruik_gas.php

Voor de werking van de scripts zul je eerst php moeten installeren als dat nog niet aanwezig op je rekentuig.

sudo apt install php
sudo apt install php-mysqli

Opm. mnd_grafana.sh zal een error geven als de tabel p1_maandverbruik leeg is.

Controleer mbv Heidi of de tabellen gevuld worden.