InfluxDB+Grafana persistence and graphing

Store your openHAB item states in an InfluxDB time-series datastore and create highly customizable diagrams with Grafana. These diagrams can in return be included in your sitemap as images.

Following this guide, you will install InfluxDB and Grafana, make openHAB store data in an InfluxDB database, make Grafana fetch data from the InfluxDB database and draw diagrams. Finally you can include these diagrams in your openHAB sitemap.

Table of Content

Starting Point

This guide is based on and was last tested with the following components:

  • openHAB 2.0
  • On the same system or on a system in the same network
    • x64 Debian/Ubuntu derivative (called monitoring-host)
    • InfluxDB (v1.3.2)
    • Grafana (v4.4.3)

Installation on a Raspberry Pi is also possible, installation instructions are given here.

Installation inside a docker image is described here.

Attention rrd4j users: A script to transfer your existing data from rrd4j to InfluxDB (by @Dangar) can be found here:

InfluxDB Installation and Setup

Following the installation instructions, start by adding the InfluxData repository and installing InfluxDB on your monitoring-host.

After successful installation, let’s connect to the InfluxDB command line interface and create users and databases for our needs. You may alternatively also use the web frontend to do so, the steps are nearly the same. We will create one database for your openHAB installation and an admin, an openhab and a grafana user. The user openhab will only receive privileges for his database, the grafana user will only be allowed to read. Be sure to store your selected passwords.

You may skip the extra security steps for Authentication and Authorization, depending on the reachability of your monitoring-host. In this case, you only need to create the database.

$ influx
Connected to http://localhost:8086 version 0.13
InfluxDB shell version: 0.13
> CREATE DATABASE openhab_db
> CREATE USER openhab WITH PASSWORD 'AnotherSuperbPassword456-'
> CREATE USER grafana WITH PASSWORD 'PleaseLetMeRead789?'
> GRANT ALL ON openhab_db TO openhab
> GRANT READ ON openhab_db TO grafana
> exit

Additional CLI commands can be found in the InfluxDB documentation.

Enable authentication in the [http] section of the configuration file /etc/influxdb/influxdb.conf:

enabled = true  
bind-address = ":8086"      # change to a specific interface if needed 
auth-enabled = true         # will enforce authentication

Finally, restart the InfluxDB service: sudo systemctl restart influxdb.service.

The CLI interface will now also ask for authentication:

influx -username admin -password SuperSecretPassword123+ -host localhost

If you ran into any problems, please refer to the InfluxDB documentation and use google to find more in-detail tutorials.

This is a good time to start injecting data into your InfluxDB for later testing with Grafana. I’ve provided a small Python script here. If you are not familiar with Python, please have a look at a short tutorial, e.g. this one. Configure and execute the script on your openHAB host to get a sine wave data series stored in the database.

Grafana Installation and Setup

Follow the installation instructions, to install Grafana on your monitoring-host.

After successful installation you should be able to reach the Grafana dashboard at http://monitoring-host:3000 with the default login admin:admin - be sure to change the password now!

Disable user signup and enable anonymous access (for later image export) in the configuration file /etc/grafana/grafana.ini:

# disable user signup / registration
allow_sign_up = false
# enable anonymous access
enabled = true

If you ran into any problems, please refer to the Grafana documentation and use google to find more in-detail tutorials.

Connecting Grafana to InfluxDB

Logged in to the Grafana dashboard, go to “Data Sources” and create a new source pointing to your InfluxDB database, providing the credentials you chose earlier. Example:

Finally, create a new dashboard, create a graph panel, select the freshly created data source and build your first query, presenting the previously injected sine wave time series.

Connecting openHAB to InfluxDB

If everything is set up right and you were able to inject the sine wave into your database, it’s time to do the same from within openHAB. You need to first install the InfluxDB persistence service (via apt, PaperUI or addons.cfg - depending on your system and preferences).

Next, add your InfluxDB connection details to the persistence service config file /etc/openhab2/services/influxdb.cfg:

# The database URL, e.g. or .
# Defaults to:

# The name of the database user, e.g. openhab.
# Defaults to: openhab

# The password of the database user.

# The name of the database, e.g. openhab.
# Defaults to: openhab

# The retention policy to be used, needs to configured in InfluxDB
# Till v0.13: 'default', since v1.0: 'autogen'

Finally add a persistence job so openHAB sends your item states to InfluxDB. Add all items or item groups you want to persist including fitting strategies to /etc/openhab2/persitence/influxdb.persist:

Strategies {
    everyMinute : "0 * * * * ?"
    everyHour   : "0 0 * * * ?"
    everyDay    : "0 0 0 * * ?"

Items {
    gHeatAct*, gHeatSet*, gHeatValve*   : strategy = everyChange, everyHour
    Presence_Phone                      : strategy = everyChange

Regarding strategies: a meaningful usage of these is dependent on the nature of your items and how often they are changed. everyChange is a good strategy with most items (like the power consumption of a washing machine), you might however additionally add a every... for items, that might not be changed for longer times (for example the preset temperature of a room). This is especially important, as Grafana will (by default) only draw graphs for times it has data for. If the preset temperature didn’t change for three hours, there will be no graph for the last three hours :wink:

If everything went well, you should be able, to start selecting your items for a query inside Grafana (after a few minutes to send first values).

Building openHAB Diagrams in Grafana

Grafana offers different panel types and countless displaying options. Your first reference for these should be:

That said, I want to point out a few options probably interesting for you.

Selection/Aggregation Functions

InfluxDB provides a set of functions that influence what is returned and therefore presented by Grafana. To understand these, you first need to understand the concept behind “GROUP BY”.

Simplified, this means Grafana is asking for a summarized portion of your data over time. Why? Imagine you have an item with a new data point every 5 minutes and a Grafana graph of the with of 300px. What will be be presented in a graph covering the time windows of one full year? With 300 pixels you do not even have one pixel per day, not to mention a few minutes. InfluxDB and Grafana solve this task by breaking down your data into time intervals, represented by $interval in Grafana.

By the help of functions, you can decide which or how data inside one time interval is supposed to be handled. I’ll give one example representing power consumed by a fridge:

Looking at the graph, you can see the red line, using the default mean() aggregation function suffers of irritating peaks. While not being wrong, it’s easy to filter them out and by that flattening the visually visible graph. The two possibilities percentile(80) and min() are shown with good success in this example, other data series might behave differently under them.

Another query shows the usage of moving_average(500) . I found this useful in the example as the steps in the consumption, created by the on-off-on-off behavior of the fridge, are quite irritation when mixed with other consumptions by other devices.

Usage of all these options is of course up to you.

Display Options

Under Display there are a few options to modify how your metrics will be presented.

A short selection discussed:

  • Staircase: By default, data points are connected by a point-to-point line. This option will draw constant horizontal lines with a step at the next data point, making this option important for all kinds of discrete dataseries (e.g. on-off states or preset temperatures in 1 degree steps)

  • Stack: Data sets will be stacked instead of drawn in front of each other. This is useful for data like power consumption.

Series specific overrides

Under “Display” the series specific overrides option can be found as well. This option allows one to vary display options among series of one graph. Do not underestimate the possibilities.

Left and Right Y-Axis

I want to mention the possibility to use two y-axis to present data series with two independent value ranges and units. The y-axis can be set via series override or (conveniently) by clicking in the colored legend bar of the series:

In the following example you can see this in action. While Downlink and Uplink (in megabit per second) are linked to the left y-axis, ping (in milliseconds) uses the right y-axis.

Two more things can be seen:

  • a series specific override for ping introduces points for this one series, drawing attention to it
  • the y-min and y-max of the right axis have been fixed to 0-100ms, in order to shrink the ping distribution to the mid area of the graph

Showing diagrams in your openHAB sitemap

Item data is stored in an InfluxDB datastore and graphs are drawn by Grafana. To make this guide complete, let’s have a look at how you can export your graphs back into your openHAB system as a sitemap element.

…as ‘Image’ Element

We will be exporting Grafana graphs as .png files and display them by the help of the image element on your sitemap.

To generate the URL to your graphs png file, open the graphs Share dialog:

Followed by clicking the “Direct link rendered image” button.

You will be presented with a static graph only view. The URL in the address bar is the information we are looking for. Pay attention to the fact, that there are a few parameters you can (and should) tune directly in the URL:

                                                     ⁻⁻⁻⁻⁻⁻⁻⁻⁻⁻⁻⁻        ⁻       ⁻⁻⁻        ⁻⁻⁻      ⁻⁻⁻⁻⁻⁻⁻    ⁻⁻⁻
  • dashboardname + panelID: the dashboard and panel to export
  • width + height: resolution of the exported image
  • from + to: the timespan to display.

Hint: Grafana by default generated share URLs with absolute timestamps but relative dates like “now-2d” can be used as well, just like in the frontend time selector!

Our last step is to include the image in our sitemap. It’s as easy as:

Image refresh=60000 url="http://monitoring-host:3000/render/dashboard-solo/db/mydashboard?panelId=5&width=700&height=350&from=now-48h&to=now"

One last remark: If the image is not loaded by openHAB, openHAB probably doesn’t have the permission to do so without login. The easiest solution is to allow anonymous read access, as described above.
Anonymous access is of course only acceptable if you are okay with the public being potentially able to look at your data or if your monitoring-host is in your personal trusted subnet behind a firewall.

If you found a clean solution to allow openHAB to access graphs by the help of login credentials, please let us know!

…as ‘Webview’ Element

Thanks to @pahansen for suggesting this great alternative solution, utilizing a custom html view instead of a pseudo-static image. This solution has a few benefits compared to the ‘Image’ solution above.

Attention: The above solution is known to not work with the openHAB Android app. In order to show the dynamic graph all interfaces you need to set an absolute path as URL. e.g.:

Webview url="http://YOURIP:YOURPORT/static/chartsHour.html"

…as dynamic ‘Webview’ Element with JavaScript library

If you want to display differently parametrized views of graphs, normally a lot of Webview elements are required, which will only be presented based on certain conditions though the visibility[..] expressions. Your browser or client will always load these hidden Webviews, even though they are not visible. As a result, page load times will suffer, especially in combination with weak hardware like the RPi3 or with mobile devices.

@wborn has created a JavaScript library that uses the openHAB 2 REST API and server side events (SSE) to resolve items values to Grafana panel parameters. By that, it’s possible to reduce the number of Webview elements and to make graph generation more customizable directly from inside openHAB.

The code including documentation and an example demo is available at:

…inside HABPanel

Grafana diagrams can of course also be embedded in HABPanel. In fact, you can simply embed a dynamic view of your graphs. Create a new frame widget and use the Embed Sharing option of Grafana to generate the URL to include.

Persistance Data Migration

When you start using InfluxDB to store your data you might want to migrate old data from another persistance service like rrd4j to the new database.
Otherwise the new charts will only start from the time you started using InflluxDB.

@christoph_wempe developed a little bash script, which reads the available data via REST and imports the data to InfluxDB. Find all further details at:


Grafana graphs and configuration tips can be found all over the the internet. Also be sure to scroll through the comments here to find openHAB graphs by other users.

Feel free to post your screenshots! :slight_smile:

InfluxDB database and measurement hacks

Renaming measurements

If you are changing the name of an item that has been persistent by InfluxDB+Grafana or if you replace one with another for the same purpose, you might want to continue using the one measurement time series. Renaming a measurement is not possible but you can do the following:

In your InfluxDB console:

USE openhab_db
SELECT * INTO new_measurement FROM old_measurement
DROP MEASUREMENT old_measurement

/* Check the result */
SELECT * FROM old_measurement
SELECT * FROM new_measurement

Deleting invalid measurements

Deleting parts of a measurements might be useful, for example when the value send by openHAB resulted out of an error and is not a correct measurement.

In your InfluxDB console:

USE openhab_db

/* First search for the measurements you are looking for */
SELECT * FROM my_measurement WHERE value = 0
SELECT * FROM my_measurement WHERE time >= '2016-07-25T00:00:00Z' AND time <= '2016-07-27T00:00:00Z'

/* Delete what you do not like */
/* either by using the search from above (careful) or by using the unique timestamp */
DELETE FROM my_measurement WHERE value = 0
DELETE FROM my_measurement WHERE time = 1469484042447000000
Prettier RRD graphs
Default Persistence Service
BEGINNER Guide to iPhone Presence?
Diagram Door - mySQL 0 and 1
How to view only yesterday rrd4j graph?
Chart, a temperature and a switch
N3 Line Charts in ClassicUI
How to view only yesterday rrd4j graph?
No Datapoints i Grafana - InfluxDB - OH2
Searching for help with grafana with openhabian
Connecting a conventional doorbell to openhab
Show number / graph of energy usage Fibaro wall plug
influxDB stops working
iRobot 9xx on openHAB
[SOLVED] MQTT & influx, no datapoints in grafana
[SOLVED] Failure to install InfluxDB and Grafana on openhabian 1.4.1
[SOLVED] Setting up influx
[SOLVED] Openhab not passing data to InfluxDB
[SOLVED] OH2, Persistance, Charts, Influxdb, mapdb and initial questions
[SOLVED] Graphical Conf of Persistence with RRD4J
[SOLVED] Problem with presistence and cron syntax
Migrate your existing persistence data to InfluxDB
Matrix Theme for HABPanel
[SOLVED] How to graph rain prediction as future values
Basic UI Charts - Font Problem - not readable
Help with RPI Openhab full hang. (WAS Rule for longest ever uptime?)
Help with RPI Openhab full hang. (WAS Rule for longest ever uptime?)
How to Openhab Vent-Axia Sentinel Kinetic
Create Data Source
Problems installing influxDB
Persist data for every item in a group
Animated Weather Condition Icons for OpenWeatherMap
Searching for help with grafana with openhabian
New Add-on bundle for Prometheus health Metrics
What did you build/automated today (with pictures)?
MongoDB Persistence with OpenHAB 2
Openhab2 RPI System Temperature and DS18B20 OneWire Chart with persistence
[SOLVED] [Influx+grafana] Struggling with influx
Where does openHABian get time from?
[MongoDB] Persistence Service cannot connect to MongoDB Atlas (DBaaS)
[SOLVED] Openhab dont want push data to influxdb
[SOLVED] Rrd4j persists issue with strategy "everyChange"
Drayton Wiser Thermostat Binding
Persistence Strategy not working
NodeMCU with several sensors integrating into OpenHab2 with MQTT?
Unable to access openhsb dashboard in linux system
Unable to access openhsb dashboard in linux system
Fronius Primo 5.01 Solar Invertor and OpenHab 2.4
Modify Charts Widget
Grafana + MariaDB Mapping between Item number and Item name
Migrate your existing persistence data to InfluxDB
No habmin chart from some data in openhab2
E3DC with the new modbus binding
MySQL error
How to take Median Value of Ultrasonic Sensor Input?
[SOLVED] Trying to create Database for Home use
Problems with installing InfluxDB and how to set the environment variable
[SOLVED] Persistence with InfluxDB not storing data?
Persistence - Where to start?
Influxdb not saving data
Problem with persistence and graphic
Starting with InfluxDb
OH2 Z-Wave S2 Security and Z-Wave network information
[SOLVED] Pulse Counter Item Help rrd4j persistence and charting?
Secondary axis on charts for displaying temperature and humidity in one chart
Granafa & Influxdb Dashboard/Panels Help/Suggestion needed
Granafa & Influxdb Dashboard/Panels Help/Suggestion needed
Persitence concepts (and later Grafana...)
Problem with OpenHAB + Grafana behind nginx on another computer
Control of Solar& Pellets Heater system - OpenHab Beginners experience
Charts for group items vs the group itself
Browse historical sensor data
Dimmer value in rule seems to be divided by 10
Grafana: No datapoints
Xiaomi Aqara Human Motion Sensor - how to get graph working?
Speedtest-cli Internet Up-/Downlink Measurement Integration
openHABian hassle-free openHAB Setup
[SOLVED] Import homematic diagrams
Examples of HABPanel Solutions
How to persist data average every 5 minutes? [solved]
[SOLVED] Display Influxdb data in table
How to add charts (OPEN)
Help with Persistence DB config
Persistence recommendations
openHABian hassle-free openHAB Setup
Gas meter - daily consumption
Internet Speed Monitoring
Grafana No Data Points
Xiaomi Humidity Temperature Sensor - How to get a working chart?
openHABian hassle-free openHAB Setup
Energy rule
Modernizing charts and graphs with Dygraphs?
Show Current Sun Position and Shadow of House (Generate SVG)
InfluxDB persistence not working
Openhab2+Grafana HABdroid Webview
Grafana stops working? Too many open files
Strange Persistence Behaviour
openHAB integration to Spotify Web Connect API (player)
View rrd4j persistence data
Xiaomi Mi Flora Plant Sensor MQTT Client/Daemon
Create txt File
Best Persistance for HABpanel and graphs
[SOLVED] InfluxDB openHAB stores no Data
[SOLVED] InfluxDB openHAB stores no Data
OpenHABian - is InfluxDB and Grafana still a separate install?
Comprehensive Wunderground using HTTP Binding Example
Dashboard UI suitable for tablets
Setup Questions and Usage - Are the UI's really used?
Switch, adjust item label depending on current
Can't get influxdb persistence working
Persistence & Graphs - why so complicated?
CalDAV Binding to record presence events and light switch events
Problems with deltaSince in rule
MQTT persistence worked in 2.0.0 snapshot but not 2.1.0 release
Migrate your existing persistence data to InfluxDB
Getting data from emoncms into OpenHab2
New binding - Rego 6xx based heat pumps
How to store / query Influxdb from OH?
Sharing SMA SUNNY TRIPOWER 15000TL integration using bluetooth and a mysql database
Node-RED as a rule/script engine for openHAB
InfluxDb: Openhab2 does not store everyHour, but everyChange
RRD4J Monthly and Yearly not working
Read Write from/to MySQL Database!?
Persistence throws an error while closing OH2
ESXi 6.5 and Zwave Help
Speedtest-cli Internet Up-/Downlink Measurement Integration
Speedtest-cli Internet Up-/Downlink Measurement Integration
Pretty graphing
ITEAD Sonoff switches and sockets - cheap ESP8266 Wifi+MQTT hardware
[SOLVED] InfluxDB (v 1.0) Persistence not saving
Problems Setting up MQTT on Openhab2
How to define rrd4j new defnames in openhab.cfg and use them in openhab 1.8
Influxdb persistence
Influxdb persistence
OH2 RPI3 Influxdb not working after install
Netatmo temperature and chart
Nest Home/Away graph?
OpenHab on Redbrick_InfluxDB
[SOLVED] Graphical Conf of Persistence with RRD4J
Storing serial Data from arduino to database
Problems with Items/Things in Habmin/PaperUI
InfluxDB measurement adding every couple seconds on it own?
Charts: Fixed y-Axis?
Replacement of mapdb by jsondb
Which persistence is good for charting except rrdj4?
Help, I'm ready to give up
InfluxDB + Grafana vs. MySQL + rrd4j
Charts - How to scale them on different devices?
Openhab doesn't write into Influxdb
No Datapoints i Grafana - InfluxDB - OH2
RRD4J charts sum per month
Switch position and temperature on graph
OH2 Chart How to?
Openhab2 - First steps, first questions
Switch / Contact in rrd4
Good Tutorial On Persistence (RRD4J and JDBC-MYSQL)?
OpenHAB powerboard
Openhab2, InfluxDB no longer working
HabDroid not showing a webview
Chart shows float values instead of integers
HABDroid doesn't show chart when placed inside "sub"-frame
New Jeelink Openhab2 Binding
Design Pattern: Group Based Persistence
Node-RED as a rule/script engine for openHAB
How to customise the chart widget?
Db4o alternative for OH2 persitence
Gui to manage schedule?
Control a water heater and ground source heat pump based on cheap hours of spot priced electricity
Grafana InfluxDB - Help with queries and creating graphs and charts
<item>.deltaSince(..) does not provide "delta" for rain counter for Homematic WeatherStation HmIP-SWO-PL
InfluxDB doesn't work after reboot, problem with rights
InfluxDB doesn't work after reboot, problem with rights
Can't get InfluxDB Persistance on OH3
OH3 with InfluxDB (1.8.x) and Grafana - unable to write to database
Migration from RPI to NUC
Docker + InfluxDB + Telegraf + Grafana SMETS2 Smart Meters to openHAB
Presence Simulation
No data into InfluxDB
Move data between Influx databases using telegraf and csv-files
OpenHAB 2 or 3?
Influx Installation from Openhabian Fails
Influxdb configuring on Ubuntu Core OH Snap
Updating openhabian, should i update Influx and Grafana as well?
Influxdb doesn't store item values
Rule to calculate rain amount of the last 12h/day/week/month
Design Pattern: Group Based Persistence
MQTT, InfluxDB and Grafana
Display total usage of a device between one on and off period
Can't install influxdb + Grafana
Where to find grafana.ini on docker installation?
Tutorial - Grafana rendering on Raspberry Pi
Webview (Grafana chart) and item selector for timezone not working properly
Habmin vs. habpanel
Reading Power consumption of the Electricity meter with the IR interface
Reading data from Huawei inverter SUN 2000 (3KTL-10KTL) via modbus TCP and RTU
Speedtest CLI by Ookla - Internet Up-/Downlink Measurement Integration
Speedtest CLI by Ookla - Internet Up-/Downlink Measurement Integration
[SOLVED] Grafana issue
Permission denied - installing InfluxDB addon
The openHAB 2.5.0 Update Process - My Experience
Influx/Grafana Help
Tie multiple instances of openhab together using MQTT?
Energy Usage Monitoring - Options in NA?
Openhab Docker and Grafana Docker - How to interact?
Openhabian-config Influx and grafana, incorrect Influxdb repo
Influxdb and Grafana
Grafana Image Renderer
[SOLVED] Problems with InfluxDB persistence (Grafana link)
[SOLVED] Problems with InfluxDB persistence (Grafana link)
[SOLVED] Retain State when setting Item state in rule file
BasicUI - why does it not have a HOME button?
[SOLVED] Grafana has no panel
Charts in habpanel and habmin
[SOLVED] No data entries InfluxDB
[SOLVED] Grafana - stay logged in / no login
How to get started (there is no step-by-step tutorial)
Array in rules
Any widgets or template for Bar Chart or Pie Chart
InfluxDB not doing anything
Starting with InfluxDb
InfluxDB+Grafana installation error
InfluxDB+Grafana how to configure to have data added?

Great post!
Thanks bro!


Clean so far. now to create my first graph

1 Like

I stepped through it and influxDB still recommend installation via their official downloads (this was for a Pi3)[quote=“ThomDietrich, post:1, topic:13761”]
Finally, restart the InfluxDB service: sudo systemctl restart influxdb.service.
This might be sudo service influxdb restart on raspbian (debian). Either option doesn’t ask for any user/password privileges though so I need to take a few steps back now and check what’s going on.

1 Like

I honestly just referenced one article on that topic. I’m sure there are better articles out there. I’ll post some instructions as soon as I come around to go through the process of installing on RPi myself.

There are more options to choose from. Raspbian Jessie is actually also provided with systemctl (systemd).
I don’t get why you would expect it to prompt for username/password though…?

1 Like

I got the impression from this line, I would be prompted for a username and authentication. shrug

1 Like

Next time you try to connect to the influx cli, yes…

1 Like

I got excited and couldn’t wait to try something out. I Installed both InfluxDB and Grafana via DockerHub. Getting them up an running was a cinch and performing the admin commands to create the DBs and users through the web interface was a little easier than dealing with Docker containers on the command line to get to the CLI.

One thing I’m hesitant to give up though is the data decimation and aggregation that rrd4j provides to manage the size of the DB over time. While Influx isn’t quite as strict about guaranteeing that the DB won’t grow beyond a certain size, it does provide the ability to automatically delete data as it gets beyond a certain age.

I really just followed the following Document on the openHhab_db.

I created a RP that deletes everything after 78 weeks (1.5 years) and set it as the default:


I might play around with a continuous query to decimate the data as it ages as well but this is enough for me for now. I only have a handful of Items that I care to chart and even even those I rarely care about for more than a week.

Great post. I eagerly await the parts on how to put these on the sitemap.


Well this is frustrating. Either my RP has messed something up or I did something else wrong. I followed all the config steps and was able to successfully see the sine wave chart. I configured openHAB I think correctly and there must be some sort of connectivity because Grafana sees all my persisted Items from the influxdb.persist file. A query for SELECT * from “My_Item” returns no results so I know that

However, data is not being published.

I dropped the database and recreated it without the RP and everything seems to work.

I’m too tired to fight this dragon tonight. If anyone else has seen this and knows a fix I would appreciate it. Otherwise I’ll be scrapping my DB and trying it without the RP to see if that makes a difference.

1 Like

Hey @rlkoshak, wow nice to see that I created a bit of an interest :slight_smile:
I’ve played with retention back when I started to use InfluxDB but in the end dropped the idea, simply because I decided to not need it. After a few month of usage, my database is still pretty small and honestly, I like the idea to be able to get “mean values of temperature over the last 4 winters” at some point :wink:

I would still be interested in a working setting, out of interest and to have it here in the guide.
@ben_jones12 do you have a downsampling and retention in place?

Thanks for reminding me, that the InfluxDB web frontend is a good alternative to the CLI. I’ll add it to the guide.

Not sure what’s the exact problem here … What does SHOW DIAGNOSTICS tell you?
Be careful to have your data query and your time window matched up. A wrong combination will leave a graph drawn without content.

1 Like

Nope, much like you I haven’t seen my databases grow to any significant size so never looked into it.

1 Like

I wasnt aware of this thread, but configured Openhab/InfluxDB/Grafana yesterday on my system and it works flawlessly. I love it!
Getting some graphs in the Openhab frontend would be great. Saw you’re space allocation on first reply and was wondering if you already have some insights?
Found this docu (de, but lots of pictures) on how to extract the link that Openhab nmeeds.

1 Like

@waitz_sebastian the link looks promising. Tell us if you got to another result than me.

I’ll hopefully soon get around to write that part of the guide. In short, that’s the format I’m using:

Image label="Room Temperatures" refresh=60000
1 Like

I actually just dropped the DB and the data is flowing into Influx and Grafana now. Clearly I either did something wrong in setting up the RP or RP is not compatible with Grafana. The former is the most likely. I’ll pound on it some more later today and see if I can make it work. For now I can say that what I did above clearly does not work.

Even though we are not talking about a whole lot of data in size (I have it pretty well constrained to just a few Items anyway per my persistence Design Pattern), I like the idea of never needing to do maintenance of the DB even a decade from now. But I might just have to give up on that. After about 8 hours of storing data my DB is about 2.6k. If I project that I’m looking at only around 2-5 Mb for the year. I can live with that.

Still, I don’t like leaving problems like this unanswered.

1 Like

I’m persisting 56 items at the moment and there is a 7MB database for three months (new server, old db not restored) on my server. So…Meh.

But yes sure, i agree it would be nice to have that figured out.


Yep - I just did a quick tally up - 47 items being persisted (most of them ever 5s), for just over 5 months and I am using 53M.

So roughly 2MB per item per year, or 50 items for 10yrs = 1GB. Pretty managable I think in todays world of cheap storage.

1 Like

extremely well written write up! I was just working on setting this up following the instructions from each application separately but yours was so much nicer written and all in one place, that made it so much easier. Also, I’m in love with grafana :slight_smile:

Here’s what I’ve got after a couple minutes of finally getting openhab talking to my PLC properly -

Looks so much better than what I was using before!


Maybe worth to insert in


I got this to work and am rather happy with it. I thought I would post some cliff’s notes on what I did for those who may want to go down the Docker route.

  • I installed both InfluxDB and Grafana using the official Docker images from Docker Hub:

    docker pull influxdb
    docker pull grafana/grafana

  • I next configured them both to run as a service. I do not recycle containers (i.e. a new container gets built every time the service starts) so I mount the config file and a path for the InfluxDB and Grafana database files. Also, as a lesson learned I had to mount /etc/localtime to the containers to make the graphs generated by in the right timezone.



ExecStart=/usr/bin/docker run --name=%n -p 8083:8083 -p 8086:8086 -v /opt/influxdb:/var/lib/influxdb -v /opt/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf:ro -v /etc/localtime:/etc/localtime:ro influxdb -config /etc/influxdb/influxdb.conf
ExecStop=/usr/bin/docker stop -t 2 %n ; /usr/bin/docker rm -f %n




ExecStart=/usr/bin/docker run --name=%n -p 3030:3000 -v /opt/influxdb/grafana.ini:/etc/grafana/grafana.ini -v /opt/influxdb:/var/lib/grafana -v /etc/localtime:/etc/localtime:ro grafana/grafana
ExecStop=/usr/bin/docker stop -t 2 %n ; /usr/bin/docker rm -f %n


NOTE: I had permission problems when I tried to mount the grafana.ini file ro which I haven’t resolved so I mount it rw as you see above.

  • Because I’m running in Docker, it was easier to use the web admin interface for InfluxDB instead of the cli interface. The commands are identical to @ThomDietrich’s above. However, there is a way to run the CLI, see the notes for the Docker image on DockerHub.

  • Grafana is supposed to support passing in changes to the config via environment variables rather than needing to mount the ini file but I couldn’t get it to work.

  • Creating the carts themselves is pretty easy. To put two Items with different scales (e.g. a Switch and a Temperature) on the same graph, you can configure a right hand axis and then move those Items to the right hand access by applying a Series Override in the Display tab.

  • To discover the panelID and see the general format of the URL to the chart press the Label of the graph, choose “Share” and select “Direct Link” at the bottom. This will open just an image of that chart in a separate tab.


  • I still haven’t figured out how to set up the RP
  • I also haven’t figured out how to make Grafana not interpolate certain series (e.g. see the Fan line above which is a Switch)
  • I’ve noticed with the longer timer periods there can be a noticeable delay.

Great tutorial @rlkoshak Thanks. I’ll remember to link it above.

You need to not use the mean aggregator:
I’m using the last selector for switches

SELECT last("value") FROM "switchitem" WHERE $timeFilter GROUP BY time($interval) fill(null)