My guide to grafana / influxdb
adapted from SmartThings Data Visualisation using InfluxDB and Grafana
Influxdb
apt-get install influxdb influxdb-cli influxdb-client service influxdb start systemctl enable influxdb influx
you can also surf to http://db-01.edgarbv.int:8083/ to check if it works
Back in the cli (influx) enter
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring. Connected to http://localhost:8086 version 1.0.2 InfluxDB shell version: 1.0.2 > create database "honeywell" > create user "grafana" with password 'password'
Filling influxdb using evologger For Honeywell Evohome
Evohome client readme Evohome client github Freeranger evologger
apt install git apt-get install python-pip cd /opt/ git clone https://github.com/freeranger/evologger.git get clone https://github.com/watchforstock/evohome-client.git pip install ./evohome-client pip install influxdb
now cd /evologger
vi config.ini and fill in the usernames and influxdb stuff (port 8806)
To check if the data is being entered, use the influx cli
use honeywell > show measurements name: measurements ------------------ name zone_temp.actual zone_temp.delta zone_temp.target select * from "zone_temp.actual"
should give you some results.
NB this method takes all the data at the time of polling from the honeywell API instead of incrementally adding to it as Domoticz does.
To get it to run as a service
vi /opt/evologger.sh
#!/bin/bash pushd /opt/evologger ./evologger.py
chmod 744 /opt/evologger.sh touch /var/log/evologger vi /usr/lib/systemd/system/evologger.service
[Unit] After=grafana.service [Service] ExecStart=/opt/evologger/evologger.sh >& /var/log/evologger [Install] WantedBy=default.target
systemctl enable evologger systemctl start evologger
vi /etc/logrotate.d/evologger
/var/log/evologger { daily missingok rotate 7 compress delaycompress notifempty }
Filling influxdb using domoticz
For Honeywell Evohome
Under Setup -> More Options -> InfluxDB
Under Edit Link select the Device Name, value (Status / Temperature / Set Point), target type (direct: it sends everything it knows periodically / On value change: only when the value changes it will be sent)
Note for target type: for Set Point and Status you will need to set direct, to populate the database with the first data points. Once influxdb has been populated, you can change it to on value change) and click Add. It will appear in the table above.
Under general settings fill in database name and port 8086 :)
Under database in the format: honeywell-domoticz&u=USERNAME&p=PASSWORD
Also fill in username and password
Turn on Debug to test if data is being sent. You can find the log in Setup -> log. It will show entries like
InfluxLink: value Temperature,idx=1,name=Huisje:-Living-room value=21.0
Save.
Now let it run for a (long) while. Then you can use the influx cli to
> show measurements name: measurements ------------------ name Set-point Status Temperature >select * from "Set-point"
Grafana
Installation
The Grafana download page debian installation page for grafana Configuration page for grafana
apt-get install libfontconfig1 apt-transport-https
vi /etc/apt/sources.list
deb https://packages.grafana.com/oss/deb stable main
now you can install
dselect update apt-get install grafana systemctl daemon-reload systemctl enable grafana-server mv /var/lib/grafana/ /home/ ln -s /home/grafana /var/lib/grafana systemctl start grafana-server
Verify it works by visiting
http://monitor.edgarbv.int:3000
admin / admin
change password
vi /etc/grafana/grafana.ini
;allow_sign_up = false
Now you can add a data source, which is an influxdb, with name set to Honeywell, URL set to http://db-01.edgarbv.int:8086/ and Influxdb database name, user and password filled in. You can then save and test.
NOTE the URL for data access is port 8086!
Dashboards
Getting started with Grafana guide
If you want to mass search and replace something you can copy the whole JSON model to an editor, change it and paste it back in the Dashboard Settings
https://play.grafana.org has loads of example dashboards to explore and copy
To rename your dashboard, in the settings under General you can change the name
Variables
To simplify your life you can get the keys from influxdb and use them as variables. You can then use them for repeating graphs or to put all the variables into a single graph. In order to do that in the dashboard settings you can create a new variable. Set the name to Room, type to Query. Choose the datasource and put in the query. For the honeywell evo the query is
show tag values with key = "zone"
which will give you all the rooms / zones. Under selection options, you turn on multi-value and include all option.
To use the variables, when you create a new panel, don't choose to add a visualisation, but choose to Add Query.
To show all the zones in a single graph
By clicking next to the rooms, you can then select which rooms you want to see.
Query considerations
(Honeywell Evohome) Because you are using Temperatures and you don't want an average temp but the real temp shown, in the SELECT part of the query, change from mean() to last() (which is under selectors).
Because our time is not regular updates, we keep GROUP_BY at time($__interval)
In order to fill up where lines don't meet, in GROUP BY fill(previous). If you don't do this with a gauge and you are using a fixed time interval
If you want to change the name of the line in the legend, fill in ALIAS BY with the label you want to use
To show a specified time range on the dashboard (eg you are looking for a page with graphs that immediately shows the last day, week and month) you fill in all the way below the queries the Relative Time box with 1d, 7d, 4w, etc.