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.
Je ‘Elektriciteit’ device toont wel waardes in Domoticz? Daarvan interpreteer je nl. de data. Als ik issue heb met een (nieuw) LUA script dan voeg ik altijd veel logging toe om te analyseren wat er fout gaat. Dit doe je met ‘print’ in LUA.
Het LUA script heb ik alleen maar gemaakt om het totale verbruik in 1 keer te kunnen zien. De aparte waardes van ‘Gebruik 1’ en ‘Gebruik 2’ slaat hij in Domoticz al op in Influx, maar ik vond dat niet handig. Daarom heb ik dit scriptje gemaakt om deze bij elkaar op te slaan en in een aparte dummy switch in te vullen. Die kun je dan nl. weer in Influx opslaan.
Ik heb dit inderdaad zo gedaan, maar ik zie geen waardes in de dummy terug komen, deze is volledig leeg. In grafana heb ik een aantal waardes, maar lang niet wat ik allemaal zou willen. Op dit moment dan ook alleen huidig verbruik in wattage, meer niet.
Enig idee hoe ik totaal verbruik, totaal per dag etc er in kan krijgen? Thanks 🙂
Ik denk dat je zelf m.b.v. ‘print’ statement in LUA aan de slag moet om te debuggen waar het fout bij je gaat. Dat kan ik zo niet bepalen.
Allright, ga ik dat doen 🙂
Heb dit ondertussen voor elkaar gekregen met de waardes uit de P1 in Grafana:
Heb je toevallig een artikel over het gebruiken van print met LUA? Nog nooit eerder gebruikt en kon er zo 123 niks over vinden.
Fijne avond!
Ziet er al goed uit.
Over print valt eigenlijk weinig te zeggen. Dat is redelijk eenvoudig. Een paar voorbeelden helpen wellicht:
In je logfile kun je dan deze output inspecteren.
Op de volgende link vind je nog een aantal leuke LUA voorbeelden.
Ik heb zover ik kan beoordelen alle stappen gevolgd zoals omschreven.
Als ik echter de data op wil vragen blijft alles leeg.
Zowel Domoticz als Influx draaien op dezelfde server.
Als ik influx open om een grafiek te maken dan kan ik wel de database en de betreffende velden selecteren die ik in Domoticz heb geconfigureerd .
Maar er lijkt geen data te worden weggeschreven…
Alvast bedankt voor het meedenken.
Wat toont: SHOW MEASUREMENTS
(op deze manier kun je kijken of de tables zijn aangemaakt)
> SHOW MEASUREMENTS
name: measurements
name
—-
Counter
Usage-current
>
Het lijkt er dus op dat Domoticz niks naar jou Influx Database stuurt.
Hierbij de instellingen in Domoticz
Ik heb ‘Doel Type’ als ‘direct’ staan, maar dat zou hier niet mogen uitmaken aangezien deze waarde toch wel veranderd. Verder heb ik mijn Influx database op mijn remote Debian Server draaien en dus een expliciet IP-adres ingevuld voor Remote Address. Kun je daar eens hard het ip-adres invullen op het systeem waarop je Influx DB hebt geinstalleerd. Weet je verder zeker dat user-naam/paswoord correct is. Verder kun je wellicht debug hier onderaan aanzetten om te kijken wat er aan de hand is.
Type zou inderdaad niet uit moeten maken.
Maar heb desondanks beide geprobeerd.
localhost maar ook IP adres geprobeerd; geen resultaat.
username / wachtwoord, hoe zou ik dat nog controleren?
Als ik debug aan zet waar kan ik de gegevens terug lezen.
Wat ik vreemd vindt is dat ik in grafana wel de velden kan zien (zie afbeelding).
Grafana haalt deze toch op uit influx en niet uit Domoticz.
Dus dan zou je zeggen dat er toch iets naar influx word geschreven..
Ook aan de settings van Grafana kan ik niets ondekken..
Klopt, dat is goed nieuws. Dus er is communicatie tussen Domoticz en Influx. De debug informatie kun je in de log file van Domoticz controleren.
Top verhaal, inmiddels is het gelukt om Domoticz waardes in Grafana te tonen. Ik ga je lua script nog proberen. Heb je enig idee hoe je historische waarden uit Domoticz ook in InfluxDB kunt krijgen? Mijn Domoticz rPI draait nu een jaar, maar grafana nog maar een paar dagen.
Theoretisch moet het mogelijk zijn om je je historische waardes ook in Influx te krijgen, maar dat is nog niet eenvoudig. Je moet daarvoor weten in welke database/tables je moet lezen/schrijven van/in Domoticz/Influx. Verder moet je dit dan ook nog in correcte formaat doen. Dit zou je met een script voor elkaar moeten kunnen krijgen, maar ik heb mij daar nog nooit aan gewaagd 😉 .
Beginners vraag: ik krijg een fout melding op het ingegeven password.
Heb geprobeerd met en zonder aanhalingstekens en haken.
Op welke manier voer je dit in onderstaande commando in?
influx
CREATE USER admin WITH PASSWORD ‘your-password’ WITH ALL PRIVILEGES
exit
influx -username admin -password your-password
CREATE DATABASE Domoticz
exit
Zie hier voor meer informatie. Heb je wellicht een onbedoelde type-fout gemaakt met invoeren?
Ik was al een tijd op zoek naar iets dergelijks, omdat ik eerder al met Kibana had gewerkt. Duidelijke beschrijving. Helemaal top!
Kunt u ook uw grafana dashboard (json) delen? Dan heb ik een voorbeeld hoe zaken zijn opgezet met de queries. Ziet er echt vet uit.
Hierbij in de attachments mijn dashboard voor monitoren van mijn Debian Server (zelf even .TXT renamen naar .JSON)
Gelukt 😉
Waar ik nu nog “op blijf hangen” is om data in de Grafana grafiek te krijgen.
Het filmpje waarnaar je verwijst is welliswaar van de maker(?), maar blinkt niet uit in duidelijkheid.
De database is getest en OK. De eenheden, labels en header van de grafiek kan ik ook ingeven, alleen zie ik geen data in de grafiek. Duurt dat een bepaalde tijd voordat die zichtbaar is? En ik kan zo gauw ook niet “Query opslaan” vinden?
Kijk eens met SELECT statement of je wel gegevens in je database hebt staan.
Voorbeeld hieronder:
Ik blijk er nog een paar oude databases van vorige probeersels er in te hebben staan.
Bij de Grafana Test database krijg ik echter een OK.
Ik wil nu werken met database “Domoticz” (hoofdletter gevoelig?), waarop de OK ook wordt gegeven.
Hoe delete ik mijn oude probeersels?
(Het opslaan van het Dashboard heb ik inmiddels gevonden)
Zie de handleiding van Influx, dat doe je met DROP <database-naam>
Helaas, ik loop vast. Ik krijg – als iemand met geen programmeer ervaring – foutmeldingen waar ik niet mee overweg kan.
Wél weer een hoop geleerd van allerlei commando’s.
Ook bij opnieuw installeren ná een “Dedian” unistall inclusief een purge kwamen er weer/nog foutmeldingen van een dpkg file die niet verwijderd kon worden.
Ter aanvulling nog. In Domoticz heb ik alles “volgens de regels” geconfigureerd en gekozen voor “direct verzenden” dat en niet “als waarde verandert”.
Tip nog: bij testen Database in Grafana moest ik “localhost” veranderen in de IP van mijn Rpi.
Is jouw programmeer volgorde onder de regel:
http://ip-adres:8086 en net boven de tekst Grafana wel goed.
Ik krijg een foutmelding dat er n.l. eerst een Database aangemaakt dient te worden.
Deze volgorde klopt gewoon. Eerst wordt de Influx database engine opgestart. Vervolgens connect je met Influx database engine en kun je databases gaan aanmaken (zoals ik hierna ook beschrijf).
Hé, hé inmiddels toch – via een omweg weliswaar – gelukt Henry.
Ik heb eerst via Docker en later via IOT stack zitten experimenteren om Influxdb en Grafana te installeren en aansluitend te configureren en kan nu mooie grafiekjes “bouwen” 😉 Maar wél op inspiratie van deze blog. Thnx. voor je mooie website en altijd weer inspirerende artikelen hierop.
P.S IOTstack/Docker is leuk, maar niet zaligmakend, omdat als je Domoitcz van hieruit installeert deze zich weer niet makkelijk laat bijwerken naar de laatste Beta.
Waar in welk programma/regel moet ik die user aanmaken?
Ik krijg namelijk een error.
Inmiddels gelukt.
Hoi,
Gave site! veel info en ik kon mijn Domoticz koppelen aan Grafana! top dat je dit gemaakt hebt. Ik gebruik het om mijn slimme meter uit te lezen en deze te presenteren, in combinatie met de watertemperatuur van mijn warmtepomp.
Ik wil nog wel een vraag stellen. Kon hier niet heel goed antwoorden vinden.
Ik wil eigenlijk mijn dag (of 24h periode) verbruik in grafiek vorm tonen. Ik gebruik de query voor mijn energie verbruik zoals in een van de posts staat voor het hoogtarief (T1) en laagtarief (T2) (zie post van Knut). Maar het liefste wil ik dus T1 + T2 zien. Kan ik in Grafana twee query’s bij elkaar optellen tot een som query en dan met de differce(max(“value”)) methode het verschil in 24 uur zien?
Bedankt voor jullie antwoord!
hoe kan ik in influx database de ip adres wijzigen. standaard staat deze op localhost:8086
Voor meer informatie over de Influx database verwijs ik je naar de handleiding hiervan.
Ik zie dat Grafana door meer mensen gebruikt wordt om de resultaten van de slimme meter te presenteren. Echter het verloopt allemaal via Domotics. Zelf verzamel ik alle data in een mysql db en van daaruit worden de resultaten weergegeven door Grafana. Alles draait op een PI 3. Ik heb een aantal screenshots bijgevoegd. Als mensen willen weten hoe dit alles gedaan wordt dan wil ik wel eens kijken of ik er een handleiding voor kan maken.
PS Vroeger gebruikte ik Splunk hiervoor. Biedt veel meer mogelijkheden maar vereist een (ontwikkelaars)licentie en een redelijk krachtige computer.
Peter, hier heb ik wel interesse in.
Ik ga hier wat vanop papier zetten (website). Kan even duren voordat ik alle info een beetje netjes heb verzameld. Ik ga er mee aan de slag.
Heb je al wat kunnen verzamelen Peter en waar (website) kunnen we dat dan eventueel vinden. Bedankt voor de moeite die je hier allemaal instopt!
Ik ben bezig maar kost veel tijd om het op een goede manier “op papier” te zetten. Ben op dit moment ook druk met andere dingen dus even wachten. Misschien kan ik een versnelde versie maken zonder al te veel uitleg…
Neem je tijd Peter. Alvast veel dank dat je de moeite neemt om dit te delen!
Hallo
Ik heb eindelijk een eerste opzet. Het is nog niet volledig en er kan nog wel wat aan verbeteren. Zie voor mijn uitlezing van de Slimme Meter : Monitoring Slimme Meter mbv Grafana en MySQL.
Commentaar wordt altijd gewaardeerd!
M.b.v. jou uitleg is het gelukt om InfluxDB en Grafana te installeren op mijn RPi. Alles draait nu en ik heb een simpel dashboard kunnen maken. Waar ik nu tegenaanloop: ik wil graag de opbrengst van mijn zonnepanelen van vandaag (aantal kWh) in het dashboard zien, maar ik krijg het niet voor elkaar…. Heb je misschien tips hoe ik dit moet aanpakken?
Wellicht dat Peter hierboven je kan helpen. Deze heeft mooie overzichten gemaakt en probeert dit binnenkort te delen.
Ik ben bezig maar kost veel tijd om het op een goede manier “op papier” te zetten. Ben op dit moment ook druk met andere dingen dus even wachten. Misschien kan ik een versnelde versie maken zonder al te veel uitleg…
Hallo
Ik heb eindelijk een eerste opzet. Het is nog niet volledig en er kan nog wel wat aan verbeteren. Zie voor mijn uitlezing van de Slimme Meter : Monitoring Slimme Meter mbv Grafana en MySQL.
Commentaar wordt altijd gewaardeerd!
Voor tonen Zonnepanelen (SolarEdge) moet ik nog een beschrijving maken. Maar ja, het kost nogal wat tijd. Het is verbazingwekkend hoeveel tijd je tekort komt als pensionado .:-)