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_water
    Deze tabel wordt 4x per uur gevuld met de watermeter stand mbv script watermeter.php. De watermeter is een fyseke add-on op de bestaande waterweter (zie HomeWizard )
  • p1_wateruur
    Het waterverbruik per uur. Wordt gevuld mbv script uur_water.php
  • p1_waterverbruik
    Het waterverbruik per dag. Wordt bijgewerkt met het cron-script updatevandaag.sh ’s nachts om 00:10. Het script voert een sql-file uit : watervandaag.sql
  • 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_elecverbruik hierboven.
  • p1_maandverbruik
    Het electricteits- en gasverbruik per maand. Wordt gevuld mbv script maandverbruik.sh en maandverbruik.sql.
  • p1_maandverbruik_water
    Het waterverbruik per maand. Wordt gevuld mbv script maand_verbruik_water.sh en maand_verbruik_water.sql
  • maandverbruik_normaal
  • maandverbruik_laag
  • maandretour_normaal
  • maandreour_laag
  • maandverbruik_water
  • maandverbuik_gas
    In deze zes 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_verbruik_gas.php
    • mnd_grafana_verbruik_laag.php
    • mnd_grafana_verbruik_normaal.php
    • mnd_grafana_verbruik_water.php
    • mnd_grafana_retour_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… ,solar_power en netsol* tabellen. Dit zijn de tabellen voor de opbrengst van de zonnepanelen. De tabellen netsol en netsoljaar bevatten de gegevens van hoeveel elctriciteit van de zonnepanelen direct gebruikt worden en welk deel er van de grid gebruikt worden. Deze laat ik voor nu even buiten beschouwing. Kom ik later op terug.
    Ik heb wel de scripts bijgevoegd, dus als je Solaredge omvormer hebt kun je al aan de slag.
  • p1_temp Temperatuur tabel. Hierin staat de data zoals geleverd door een kleine Arduino (ESPRESSIF ESP32). Deze meet de buitentemperatuur en vochtigheid. Kom ik later op terug. Ik heb wel het script bijgevoegd.
  • tarieven
    Hierin staan per tijdsperiode (maand) de tarieven van electriciteit en gas. Tarief van water moet nog geïmplementeerd worden.
  • p1_kosten
    De kosten per maand voor electriciteit en gas. Wirdt gevuld dmv script bouw_kosten.php.
  • maand_kosten
    Wordt gevuld dmv script mnd_kosten.php
  • p1_kleur
    Hulptabel voor de kleur voor aangeven wat de beste tijd is om electricteit te gebruiken. De informatie wordt mbv script kleurtijd.php middels een api opgehaald bij Stedin (https://eklok.nl /api/pricedetail . Zie voor meer info hierover Stedin E-klok
  • deco
    Decoderingstabel voor Kosten

Zoals eerder genoemd, alleen de p1_log tabel wordt gevuld rechtstreeks vanuit de slimme meter en de p1_water vanuit de HomeWizard watermeter addon. 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.
Opm. Ik heb de scripts voor de zonnepanelen en temperatuur in cron gedisabled in onderstaand.

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
#0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/peter/bin/gettemp.sh >/tmp/gettemp.log 2>&1
#2,17,32,47 * * * * /home/peter/bin/solar.php > /tmp/cronsolarnow.log 2>&1
#3,18,33,48 * * * * /home/peter/bin/solar15m.php > /tmp/cronsolar15m.log 2>&1
#4,19,34,49 * * * * /home/peter/bin/solaredgeinverter.php > /tmp/cronsolaredgeinverter.log 2>&1
#6,21,36,51 * * * * /home/peter/bin/mnd_solar.php > /tmp/cronsolarmnd.log 2>&1
#53 * * * * /home/peter/bin/solarday.php > /tmp/cronsolarday.log 2>&1
#49 23 * * * /home/peter/bin/solaredgemonth.sh > /tmp/cronsolarmonth.log 2>&1
#Vul tabel p1_maandverbruik aan vanuit p1_log
56 23 * * * /home/peter/bin/maandverbruik.sh > /tmp/cronmaandverbruik.log 2>&1
#Vul tabel p1_maandverbruik_water aan vanuit p1_water
57 23 * * * /home/peter/bin/maandverbruik_water.sh > /tmp/cronmaandverbruik_water.log 2>&1
#Vul aan p1_elecverbruik en p1_gasperdag en p1_waterverbruik
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
# Schrijf meterstand watermeter weg
2,17,32,47 * * * * /home/peter/bin/watermeter.php >/tmp/cronwater.log 2>&1
#Haal info stedin op voor klok
7,22,37,52 * * * * /home/peter/bin/kleurtijd.php >/tmp/kleurtijd.log 2>&1
#Schrijf min, max meterstand en verbruik per uur van water weg
8 * * * * /home/peter/bin/uur_water.php >/tmp/uur_water.log 2>&1
# Bepaal welk deel rechtstreeks van zonnepanelen komt
#20 0 * * * /home/peter/bin/bouw_netsol.php > /tmp/net_sol.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
ln -s mnd_grafana.php mnd_grafana_verbruik_water.php

Opm. Ik heb het script make_ln.sh toegevoegd die dit voor je uitvoert.

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
sudo apt install php8.5-curl

Opm. Je moet even nagaan wat de actuele versie van php-curl is. Op dit moment ( 26-11-2024 ) is dat 8.5. Het script mnd_grafana.sh zal een error geven als de tabel p1_maandverbruik leeg is.

Controleer mbv Heidi of de tabellen gevuld worden.