Recommended tool/API for automatic dashboard creation from python?

Dear all,

I am working on code that is written in python and talks to Homematic IP smart home installations. The software collects data for each of the rooms in the Homematic IP sites and stores them in an influxdb database. I would like to automate the process of generating a dashboard in grafana for each site that has a panel for each room, with the panel showing temperature set value, measured temperature and radiator valve control values in %. I have existing panels that I have generated manually for some rooms, so maybe I could use these as templates through some JSON magic…

The python application, grafana and influxdb all run under a local server with debian bookworm.

What tool/API would people recommend? Thanks and best wishes,

Christian

have you looked into the repeat option

Hm. That is an interesting approach. It does not yet solve how I do this programmatically for each Homematic IP instance (create a dashboard for each). One question comes to mind - in my case each room is a “measurement”. Can I query a list of all measurements in an influxdb to create a variable? Or would it be better to have one measurement in influx and differentiate between the different rooms using tags?

Thanks, Christian

1 Like

yep that is the idea, can you share sample line protocol of your data? are you using flux query language or influxql?

Hi Yosiasz,

thanks, here is an example:

> SELECT * FROM Konfiraum GROUP BY * ORDER BY DESC LIMIT 1
name: Konfiraum
time                KR HT1.valvePosition KR HT2.valvePosition KR HT3.valvePosition KR HT4.valvePosition actualTemperature humidity setPointTemperature vaporAmount
----                -------------------- -------------------- -------------------- -------------------- ----------------- -------- ------------------- -----------
1739014783422583000 0.04                 0.04                 0.04                 0.05                 18.3              34       18                  5.303992175622818

Konfiraum is the measurement and name of the room. There are no tags. Just fields.

If needed (or if that would be better for other reasons), I could convert to having one measurement (e.g. hm_ip_rooms) and differentiate between rooms using tags. I am using influxql.

Thanks for your advice,

Christian

Hello @chanlists
If you can wait until May, this session at GrafanaCON 2025 might be of interest to you.

If you are using Flux, I would have one measurement and differentiate between the different rooms using tags.