Dashboard for thermostats
Posted: Sun Dec 02, 2018 3:09 pm
Written for my 14 Heatmiser thermostats so wanted to use variables to pick and choose which to display, and also enable me to build one and get it to repeat for all chosen thermostats.
Displays temp, setpoint, heatison and preheat. heatison and preheat are 100% for on, 0 for off, and shown below the temperature graphs.
You need to create a variable first called Room which contains static list of your thermostat names. I also have heatmiser controlling towerl rail timers, so have an exclusion for those.
Attached is the variable settings, and example.
Grafana is awesome! Full marks to VTMikeL (and racarter for the Heatmiser plugin)
Displays temp, setpoint, heatison and preheat. heatison and preheat are 100% for on, 0 for off, and shown below the temperature graphs.
You need to create a variable first called Room which contains static list of your thermostat names. I also have heatmiser controlling towerl rail timers, so have an exclusion for those.
Attached is the variable settings, and example.
Grafana is awesome! Full marks to VTMikeL (and racarter for the Heatmiser plugin)
- Code: Select all
{
"aliasColors": {
"Heat": "#bf1b00",
"PreHeat": "#e0752d",
"Temp": "#bf1b00"
},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "Indigo",
"fill": 1,
"gridPos": {
"h": 10,
"w": 12,
"x": 0,
"y": 0
},
"id": 2,
"legend": {
"avg": false,
"current": true,
"max": false,
"min": false,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"repeat": "Room",
"repeatDirection": "h",
"seriesOverrides": [
{
"alias": "TwinsTRV - Valve",
"yaxis": 2
},
{
"alias": "TRV Valve",
"yaxis": 2
},
{
"alias": "PreHeat",
"yaxis": 2
},
{
"alias": "Heat",
"yaxis": 2
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Stat SP",
"groupBy": [
{
"params": [
"name"
],
"type": "tag"
}
],
"hide": false,
"measurement": "thermostat_changes",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT \"state.temperatureInput1\" FROM \"thermostat_changes\" WHERE $timeFilter GROUP BY \"name\"\n",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"heatSetpoint"
],
"type": "field"
}
]
],
"tags": [
{
"key": "name",
"operator": "=~",
"value": "/$Room/"
},
{
"condition": "AND",
"key": "name",
"operator": "!~",
"value": "/Rail/"
}
]
},
{
"alias": "Temp",
"groupBy": [
{
"params": [
"name"
],
"type": "tag"
}
],
"measurement": "thermostat_changes",
"orderByTime": "ASC",
"policy": "default",
"refId": "D",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"state.temperatureInput1"
],
"type": "field"
}
]
],
"tags": [
{
"key": "name",
"operator": "=~",
"value": "/$Room/"
},
{
"condition": "AND",
"key": "name",
"operator": "!~",
"value": "/Rail/"
}
]
},
{
"alias": "PreHeat",
"groupBy": [
{
"params": [
"name"
],
"type": "tag"
}
],
"measurement": "thermostat_changes",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"state.preHeat.num"
],
"type": "field"
}
]
],
"tags": [
{
"key": "name",
"operator": "=~",
"value": "/$Room/"
},
{
"condition": "AND",
"key": "name",
"operator": "!~",
"value": "/Rail/"
}
]
},
{
"alias": "Heat",
"groupBy": [
{
"params": [
"name"
],
"type": "tag"
}
],
"measurement": "thermostat_changes",
"orderByTime": "ASC",
"policy": "default",
"refId": "C",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"state.heatIsOn.num"
],
"type": "field"
}
]
],
"tags": [
{
"key": "name",
"operator": "=~",
"value": "/$Room/"
},
{
"condition": "AND",
"key": "name",
"operator": "!~",
"value": "/Rail/"
}
]
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "$Room Heating",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "celsius",
"label": "Temp",
"logBase": 1,
"max": null,
"min": "-10",
"show": true
},
{
"format": "percentunit",
"label": "Heat On",
"logBase": 1,
"max": "4",
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
},
"minSpan": 12,
"scopedVars": {
"Room": {
"text": "Living Room",
"value": "Living Room",
"selected": false
}
}
}