Met Domoticz kun je standaard al diverse grafieken tonen. Je bent dan echter wel gebonden aan welke mogelijkheden Domoticz je biedt. Verder kun je in Domoticz zelf geen Dashboard maken waarbij je in één oogopslag een overzicht van al je data ziet. Dit kun je eenvoudig oplossen door de data van Domoticz door te sturen naar een aparte database (Influx). Deze database kun je dan weer met een aparte tool (Grafana) op een mooie manier presenteren.
In deze blog leg ik uit hoe je dit voor elkaar krijgt. In totaal moet je 4 stappen doorlopen:
- Installeer Influx (database)
- Installeer Grafana (presentatie tool)
- Configureer Domoticz om je data naar Influx te sturen
- Configureer Grafana om je data te presenteren
Influx
Ik heb de volgende instructies gevolgd om Influx te installeren op mijn Debian Server:
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - source /etc/os-release echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update && sudo apt-get install influxdb sudo systemctl unmask influxdb.service sudo systemctl start influxdb
Configueer hierna de lokatie voor de configuratie-file van Influx met het volgende commando:
influxd -config /etc/influxdb/influxdb.conf
Je kunt later de file ‘/etc/influxdb/influxdb.conf’ eventueel nog naar jouw behoeften configureren.
Je Influx database zal nu standaard starten op:
http://ip-adres:8086
Als je hier naar toe gaat dan zal deze default ‘404 page not found’ geven, maar dat is voor nu OK.
Creëer nu de database die we straks voor Domotiz gaan gebruiken met de volgende commando’s:
influx CREATE USER admin WITH PASSWORD 'your-password' WITH ALL PRIVILEGES exit influx -username admin -password your-password CREATE DATABASE Domoticz exit
Grafana
Ik heb de informatie van de Grafana site gebruikt om Grafana te installeren.
Voer de volgende commando’s uit:
sudo apt-get install -y apt-transport-https sudo apt-get install -y software-properties-common wget wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt-get update sudo apt-get install grafana
Om Grafana automatisch op te starten tijdens boot moet je de volgende commando’s nog uitvoeren:
sudo systemctl daemon-reload sudo systemctl enable grafana-server
Start the Grafana service met het volgende commando:
service grafana-server start
Hierna zal Grafana draaien op de default port 3000 met default login / paswoord (admin / admin).
http://ip-adres:3000
Verander nu je paswoord en je krijgt het volgende scherm te zien:
Domoticz
In Domoticz moet je nu instellen welke gegevens je naar Influx wilt sturen. Dit doe je in:
Instellingen > Meer Opties > Data Versturen > InfluxDB
Doe dit voor elke waarde die je later wilt tonen in Grafana.
Configureren Grafana
Als eerste moet je een data source toevoegen. Dit is de Influx database die we in stap 1 hebben geconfigureerd. Zie ook het volgende screenshot:
Nadat we een data source hebben toegevoegd kunnen we eindelijk een Dashboard gaan maken. Kies ‘New Dashboard’ en vervolgens ‘Add Query’
Je moet nu je queries gaan maken waarbij je aangeeft welke data je wilt zien en hoe deze gepresenteerd moet worden.
Zie het volgende filmpje met een uitleg over queries in Grafana.
Op internet zijn ontzettend veel filmpjes en tutorials te vinden hoe je met Grafana moet werken. Vooral de volgende link bevat veel informatie om je snel op weg te helpen. Het werkt allemaal erg intuïtief en je hebt al snel resultaten.
Mijn eerste versies van mijn Dashboards, na een middagje hobbyen, zien er nu als volgt uit:
Maar je kunt nog veel meer visualiseren met Grafana. Je kunt dit eventueel ook combineren met data van andere programma’s dan Domoticz. Dat is wellicht iets voor een volgende blog.
Mooi project! Ga ik ook uitvoeren. Jij hebt alles geïnstalleerd op je Debian Server. Kun je alles ook installeren – met de juiste verwijzingen natuurlijk – op hetzelfde SD kaartje als waarop Rpi Buster met Domoticz draait?
Ik verwacht van wel Thomas. Ik heb het natuurlijk niet zelf geprobeerd.
Bedankt voor dit heldere artikel.
Ik krijg het helaas niet voor elkaar om Gas en Stroom per dag inzichtelijk te krijgen, heb jij hier een oplossing voor. ?
In domoticz zie ik de waardes wel staan, maar krijg ze niet één op één over in Grafana, op het actueel verbruik na.
Welke data verstuur je allemaal naar Grafana? Ik heb voor Gas/Electra:
– Electriciteit => Gebruik 1
– Electriciteit => Gebruik 2
– Elektriciteit => Stroom Gebruik
– Elektriciteit Stand => Stroom Gebruik
– Gas => Gas verbruik
Voor Elektriciteit Stand heb ik een Dummy device aangemaakt die waarde met een LUA script vult:
Dank voor de snelle reactie 🙂
Het probleem zit hem bij mij niet zozeer in Domoticz, maar als ik Gebruik 1 laad in Grafana laat hij het totale verbruik ooit gemeten met die teller zien, ipv het dag gebruik.
En in Grafana krijg ik dat nog niet voor elkaar, het actuele verbruik is echter geen probleem dat neemt hij één op één over uit domoticz.
‘Gebruik 1’ en ‘Gebruik 2’ zijn je standen voor piek/dal. Als je actueel gebruik wilt zien dan moet je ‘Stroom Gebruik’ visualiseren in Grafana.
Beetje bij beetje kom ik verder 🙂
Zou jij voor mij kunnen aangeven wat in het door jou gedeelde script moet aanpassen in mijn eigen waardes?
ID van de dummy heb ik al aangepast naar de IDX van de Dummy device, waar jij device_Elektriciteit hebt heb ik dat veranderd naar device_Stroom
En moet ik in Domoticz dit script in de sectie gebeurtenissen als LUA: ALL, Device, Security, Time of User variable zetten ?
Hopelijk kan je me nog helpen 🙂
Dit script heb je alleen nodig als een teller voor je totaal stand (dus dal + piek) wilt zien in Grafana. Ik heb daarvoor dit LUA script geschreven (Device trigger). Het telt dal+piek op en zet dat in het dummy device waarvan ik de waarde dan weer doorstuur naar Influx DB en door Grafana wordt getoond. In mijn screenshot is dat de waarde van ‘Elektriciteit Stand’ (met waarde 21311.21 in mijn voorbeeld)
Eletriciteit verbruik tijdens de dag is ‘Stroom verbruik’. Volgens mij wil jij die ook zien in jouw situatie.
PS: de include heb je niet nodig. Je kunt dus de volgende regel verwijderen:
dofile(‘/home/pi/domoticz/scripts/lua/utils.lua’)
Ik heb het script nu aan de praat, door de dofile regel weg te halen, Dank 🙂
Echter krijg ik de waarde van de dummydevice (dmv LUA) niet in Grafana, op het onderstaande forum lees ik dat een device gecreerd met een LUA script niet uit te lezen is via Grafana.
Maar het is jou blijkbaar wel gelukt? 🙂
Zie bijgevoegd screenshots hoe ik het heb gedaan (naast mijn LUA script).
Na heel wat gepuzzel is het me gelukt, super bedankt. 🙂
Hoe heb jij in Grafana de X-axis in datums ipv tijd gekregen in de Elektriciteit/gas grafieken ?
In principe heb ik daar niks speciaal voor gedaan Mark. Dit afhankelijk van de tijdspanne die je ‘rechtsbovenaan’ kiest. Belangrijk is dat je in je query bij ‘Format As’ je ‘Time Series’ kiest. Dan volgt dit in je grafiek automatisch mooi mee.
Ik heb hetzelfde als Mark. In influx worden de actuele tellerdata vanuit domoticz ingespeeld. Dat zijn geen gebruiksdata. Hoe visualiseer jij het gebruik? Of kun je jouw query en visualisatie in Grafana laten zien (screenshot)? Of de code die je ziet als je op Query inspector klikt?
Dat zou mij een idee geven hoe je het voor elkaar krijgt om de grafiekjes te maken die je in de screenshots in de blog hebt staan.
Alvast bedankt!
Zie attached screenshots hoe mijn queries er in Grafana uitzien.
Top, thnx! Precies wat ik zocht
Voor het vertonen van het verbruik per tijdseenheid, bijvoorbeeld Wh per uur, heb ik de volgende queries gemaakt die het goed doen. Het device Power Total is een dummy device die de vier tellerstanden van de slimme meter verwerkt en de opgwekte energie van de zonnepanelen er weer afhaalt. De usage die uit Domoticz komt is een cumulatieve waarde (teller) die alleen maar oploopt. Door gebruik te maken van Transformations -> Difference in je query, kan je twee opeenvolgende query results van elkaar aftrekken, waardoor je de delta binnen een tijdseeheid overhoud.
Screenshot lukt niet, dus op verzoek query code:
SELECT difference(max(“value”)) FROM “Usage” WHERE (“name” = ‘Omnik-Production’) AND $timeFilter GROUP BY time(1h) fill(none)
Gebruik in de query editor: Transformations -> Difference
Zou je verder kunnen uitleggen hoe je dit doet? Ik heb een dummy aangemaakt en het LUA script, maar dit laat de waardes onder ‘Apparaten’ leeg. Ben al enkele uren aan het sparren met Grafana/Influx/Domoticz maar krijg het maar niet aan de praat.
Thanks!
Heb je de volgende waarde goed ingevuld in jouw script:
Dit moet overeenkomen met jouw dummy device.
Hetzelfde geldt voor:
Correct, ID van dummy was 52 en naam Elektriciteit. Deze heb ik beide in het script aangepast maar nog geen verandering.