Blog › Measured energy

Grafana and Home Assistant: an energy dashboard for a plant room

Home Assistant shows what is happening now. To understand how a plant room works over a week, a month or from one winter to the next, you need Grafana. Here is how to build a dashboard that is actually useful.

February 4, 20266-minute readLeggi in italiano

Anyone who commissions heating systems knows that a single reading says little. The flow is at 34 °C: is that right? It depends on the time of day, the outdoor temperature and how many zones are open. The answers only come from looking at data over time.

Home Assistant records its sensors’ history, but it is designed to show the current state and recent history. To analyse weeks and seasons, the tool to use is Grafana, the open-source charting tool also used in data centres and power grids. A Grafana and Home Assistant energy dashboard is what turns readings into answers, and in Brick the two come installed together.

Grafana dashboard on a dark background with a flow and return temperature chart, three summary values and bars for gas use over the last 14 days
A plant room dashboard: flow and return, running hours, starts, outdoor temperature and daily gas use. Example data.

Which data you need

A good dashboard starts from questions, not from the sensors available. For a plant room the questions are almost always these: does the heat source run when it should? Does it run at the right temperatures? How much does it use, and why more on one day than another?

A few readings are enough to answer them:

  • flow and return temperature of the main circuit and of every mixed circuit;
  • heat source status: on or off, and if possible its output or modulation level;
  • outdoor temperature, from the weather compensation sensor;
  • energy use: gas from a meter with a pulse output, or heat pump electricity from a Modbus meter;
  • zone status: set point, temperature and actuator open or closed.

The right frequency is one reading a minute for temperatures, and a value on every change for states. Any denser is pointless; any sparser and you miss the heat source’s short cycles, which are exactly what you are looking for.

Where to store the data

Home Assistant stores history in its own database, by default for ten days, plus hourly statistics that it keeps for longer. A plant room dashboard needs months and years of per-minute data. So the data also goes into a database built for time series, such as InfluxDB, which Home Assistant feeds through a ready-made integration.

Two precautions avoid trouble later on.

  • Clear, stable names. Name each measurement after its Home Assistant entity: sensor.underfloor_flow, not sensor.temp_3. Rename something after a year and the charts lose its history.
  • A retention policy. Per-minute data for a year, then hourly averages for the years after. Storage stays small and comparisons between winters remain possible.

The dashboard panels

The dashboard we suggest has five panels, arranged to answer the questions in order.

Flow and return. A line chart of the two temperatures over the last 24 hours or the last week. The gap between the lines, the temperature difference, shows how much heat the system is delivering. A very small difference while the heat source is on points to excessive flow or a system that is not taking up heat.

Running hours and starts. Two numbers for today, compared with previous days. Many short starts are the clearest sign of an oversized heat source or a hysteresis set too tight.

Outdoor temperature. A number, and a thin line under the other charts. Without it, no consumption figure can be judged.

Daily consumption. A bar chart of the last 14 or 30 days. Next to it, consumption divided by degree days, which makes a mild day comparable with a cold one.

Zones. A grid with one row per zone and each hour coloured by temperature. At a glance you can see which room struggles and which overheats.

Thresholds and alerts

Grafana can also send alerts. In a plant room only a few alerts are useful, and it pays to keep them few, otherwise people stop reading them.

  1. Flow above the limit: the underfloor flow temperature exceeds the maximum set.
  2. Heat source not starting: there has been a heat demand for over thirty minutes and the flow temperature is not rising.
  3. Silent sensor: a sensor has not sent a value for more than an hour.
  4. Abnormal consumption: consumption per degree day is well above the average of previous weeks.

The most urgent alerts, such as a heat source that won’t start, are best also handled in Node-RED, close to the control logic. Grafana remains the tool for alerts that need data viewed over time.

How to read the dashboard

A dashboard is only useful if someone looks at it. Our advice is to look at it at two moments.

  • In the first two weeks after start-up, every day, to fine-tune the heating curve, hysteresis and schedules. This is when most of the savings are recovered.
  • Then once a month, comparing consumption per degree day with the same month of the previous year.

The second check is what turns the dashboard into a management tool: if consumption per degree day rises for no reason, something in the system has changed and needs finding.

What the first week reveals

Almost every system, shown on a dashboard for the first time, reveals something nobody knew. Three discoveries come up more than any others.

The heat source runs at night for no reason. Night set-back is configured on the zones, but the heat demand stays active because of hot water recirculation or a zone left on Comfort.

The boiler starts dozens of times a day. That is the sign of a boiler oversized for the building, or of a heating curve set so high that it reaches temperature in minutes. Lowering the curve lengthens the cycles and reduces wear.

One zone is always calling. A room that never reaches its set point may have a faulty actuator, a loop closed at the manifold, a badly placed sensor or simply a cold wall. The dashboard does not tell you which of the four, but it tells you where to look.

These discoveries are worth far more than the time spent building the dashboard.

Importing the dashboard

The dashboard from this article can be downloaded as a JSON file and imported into Grafana from the dashboards menu. After importing, connect the data source and adapt the measurement names to your system. The panels use the palette from our articles: sun for warm, sky for cool, blue for the rest.

If the Node-RED zone flow described in the dedicated article writes its data to the same database, the zones row fills itself. And if you want to measure the savings from zone control, as we explained when looking at what the research says, this dashboard is the place to start.

Import the dashboard

The dashboard described in this article, as a JSON file to import into Grafana. Connect your data sources and adapt the measurement names.