Ready-to-Use Grafana Dashboards! - Beta Test / Feedback

I think you'd have to poll like the devil to get anywhere near those numbers... :slight_smile:

1 Like

I have a clound instance setup of both influxdb and grafana on the free tiers and have had it running for some time. Atleast for simple stuff it isn't a problem.

Only a 14 day retention for the free plan? Does that mean it only hangs onto the last 14 days of data?

My understanding is that it is 30 days, but yes. It means your graphs won't go back further then that.

That is the biggest drawback as i see it in that if you wanted to keep data for months or even a year it may be hard to use that plan. Most people though will want to be able to look at current data and not go back that far. I do go back further on occasion, but not frequently.

Here is my dashboard on my Grafana cloud instance which is accessing INfluxdb Cloud that has 30 days of data to be graphed. It isn't as nice as using grafana, but it shows the 30 day limit. The graph is set to 90 days to show he limit

Somewhere along the lines, I changed the auto refrsh to 5 seconds. Probably a bit excessive. what are you guys using?

Ok, maybe I didn't need to tidy it up too much.... :slight_smile: It's a fairly long post, so might compress it up...

Setup

Note, I'm using the old version of Grafana / InfluxDB, I baulked at the change in query language that one of them introduced, and haven't bothered to upgrade. InfluxDB and Grafana are running on a rpi4.

It does still have an issue that I never got to the bottom of, the Master Bedroom doesn't display as an actual chart for some reason, in this example, but it only happens randomly and not all the time...

I'm basically using the Stat Panel chart repeated using a variable, which is also used to filter the sensors that are selected.

The variable is setup as a hard-coded list of device names from HE:

The chart is setup using the Stat Panel (I think it may have been a plugin). The query uses the variable in the filtering of the temperature / humidity readings. It also includes the repeat option, using a vertical repeat.

I talk here about embedding these charts in a HE dashboard using Tile Master. I don't use this anymore, but if I do it again I would use one of the more recent iFrame drivers to do this.

Here is the JSON Model if it's useful:

JSON Model

{
"annotations": {
"list": [
{
"$$hashKey": "object:35",
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": 6,
"iteration": 1701458296280,
"links": ,
"panels": [
{
"datasource": null,
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"decimals": 1,
"displayName": "$Sensor",
"mappings": ,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 24
},
{
"color": "red",
"value": 26
}
]
},
"unit": "celsius"
},
"overrides":
},
"gridPos": {
"h": 2,
"w": 6,
"x": 0,
"y": 0
},
"id": 2,
"interval": "",
"links": ,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "8.0.5",
"repeat": "Sensor",
"repeatDirection": "v",
"targets": [
{
"alias": "$tag_deviceName",
"groupBy": [
{
"params": [
"deviceName"
],
"type": "tag"
}
],
"measurement": "temperature",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT "value" AS "Temperature" FROM "temperature" WHERE $timeFilter GROUP BY "deviceName"",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [
"Temperature"
],
"type": "alias"
}
]
],
"tags": [
{
"key": "deviceName",
"operator": "=~",
"value": "/^$Sensor$/"
},
{
"condition": "AND",
"key": "deviceName",
"operator": "!=",
"value": "Third Bedroom Sliding Door Sensor"
},
{
"condition": "AND",
"key": "deviceName",
"operator": "!=",
"value": "Bathroom Window Sensor on HELIGHTS01"
},
{
"condition": "AND",
"key": "deviceName",
"operator": "!=",
"value": "Garage Door Sensor"
},
{
"condition": "AND",
"key": "deviceName",
"operator": "!=",
"value": "Garage Exterior Door Sensor"
},
{
"condition": "AND",
"key": "deviceName",
"operator": "!=",
"value": "Garage Window Sensor"
},
{
"condition": "AND",
"key": "deviceName",
"operator": "!=",
"value": "Master Bedroom Sliding Door Sensor on HELIGHTS01"
},
{
"condition": "AND",
"key": "deviceName",
"operator": "!=",
"value": "Master Bedroom Window Sensor on HELIGHTS01"
},
{
"condition": "AND",
"key": "deviceName",
"operator": "!=",
"value": "Study Window Sensor on HELIGHTS01"
},
{
"condition": "AND",
"key": "deviceName",
"operator": "!=",
"value": "Third Bedroom Sliding Door Sensor on HELIGHTS01"
},
{
"condition": "AND",
"key": "deviceName",
"operator": "!=",
"value": "Study Button on HELIGHTS01"
},
{
"condition": "AND",
"key": "deviceName",
"operator": "!=",
"value": "Garage Window Sensor on HELIGHTS01"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"type": "stat"
},
{
"datasource": null,
"fieldConfig": {
"defaults": {
"decimals": 1,
"displayName": "$Sensor",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 60
}
]
},
"unit": "humidity"
},
"overrides": []
},
"gridPos": {
"h": 2,
"w": 6,
"x": 6,
"y": 0
},
"id": 3,
"interval": "",
"links": [],
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "8.0.5",
"repeat": "Sensor",
"repeatDirection": "v",
"targets": [
{
"alias": "$tag_deviceName",
"groupBy": [
{
"params": [
"deviceName"
],
"type": "tag"
}
],
"measurement": "humidity",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT "deviceName", "value" AS "Temperature" FROM "temperature" WHERE ("deviceName" = 'Study Temperature') AND $timeFilter GROUP BY "deviceName"",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [
"Temperature"
],
"type": "alias"
}
]
],
"tags": [
{
"key": "deviceName",
"operator": "=~",
"value": "/$Sensor$
/"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"type": "stat"
}
],
"refresh": "",
"schemaVersion": 30,
"style": "dark",
"tags": ,
"templating": {
"list": [
{
"allValue": null,
"current": {
"selected": true,
"text": [
"Kitchen / Dining",
"Master Bedroom",
"Study",
"Third Bedroom",
"Front Balcony",
"Garage",
"Ceiling 2"
],
"value": [
"Kitchen / Dining",
"Master Bedroom",
"Study",
"Third Bedroom",
"Front Balcony",
"Garage",
"Ceiling 2"
]
},
"description": null,
"error": null,
"hide": 1,
"includeAll": true,
"label": null,
"multi": true,
"name": "Sensor",
"options": [
{
"selected": false,
"text": "All",
"value": "$__all"
},
{
"selected": false,
"text": "Ceiling",
"value": "Ceiling"
},
{
"selected": true,
"text": "Ceiling 2",
"value": "Ceiling 2"
},
{
"selected": false,
"text": "Courtyard",
"value": "Courtyard"
},
{
"selected": true,
"text": "Kitchen / Dining",
"value": "Kitchen / Dining"
},
{
"selected": true,
"text": "Master Bedroom",
"value": "Master Bedroom"
},
{
"selected": true,
"text": "Study",
"value": "Study"
},
{
"selected": true,
"text": "Third Bedroom",
"value": "Third Bedroom"
},
{
"selected": true,
"text": "Front Balcony",
"value": "Front Balcony"
},
{
"selected": true,
"text": "Garage",
"value": "Garage"
},
{
"selected": false,
"text": "SensorPush (Temperature Sensor - Living Room)",
"value": "SensorPush (Temperature Sensor - Living Room)"
},
{
"selected": false,
"text": "SensorPush (Humidity Sensor - Living Room)",
"value": "SensorPush (Humidity Sensor - Living Room)"
}
],
"query": "Ceiling,Ceiling 2,Courtyard,Kitchen / Dining,Master Bedroom, Study,Third Bedroom,Front Balcony,Garage,SensorPush (Temperature Sensor - Living Room),SensorPush (Humidity Sensor - Living Room)",
"queryValue": "",
"skipUrlSync": false,
"type": "custom"
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "browser",
"title": "Hubitat Climate Charts Guages",
"uid": "Rfj4fmkgk",
"version": 41
}

1 Like

Well since you are on the cloud I wouldn't set it any lower then the smallest interval you will get data. So if you collect everything like me probably around 1 min minimum. It just prevents calls that may count against your rate limits for cloud usage and not collect any data.

I also have a local server so on that one I do it every 30 seconds because i don't really worry about load on it :stuck_out_tongue:

1 Like

well at first I did, then i backed some off. havent added back yet. Some how i had it down to 5 seconds. 1 minutes seems a bit more reasonable.

1 Like

Curious, for those who use InfluxDB, do you use a single bucket with a single instance of InfluxDB Logger @ HE? Or are you typically using a single bucket across each of your dashboards?

Just trying to think through the advantages/disadvantages....

I send all my hub stats from all hubs to the same bucket. I dont think there is much reason to put different device types into different buckets.

2 Likes

Forgive me if I missed it, as I remember some discussion but can't find anything. Did anyone put together a dash or even add a graph to the (absolute great, btw) sensors dashboard that tracks power as reported by power monitors and/or outlets with monitoring?

Single HE bucket for me.

I also do not see much use in different buckets.

However, with regard to different instances of InfluxDB-Logger, there are several reasons that you may wish to do this:

  • Separating devices/variables that need keep-alive events (softpoll) from those that don't, or that need different keep-alive times. This is highly recommended.
  • Separating devices that need Advanced attribute selection from those that don't.
  • Having different batch time and size limits, and different backlog size limits.

Sorry if this goes a bit outside your question. :slight_smile:

1 Like

No, not at all. It's definitely part of what I was thinking about. Based on the input here (thanks everyone), I'm going with one Influx bucket, and multiple InfluxDB Logger instances, using @dennypage's direction above.

1 Like

Question, any idea why all of a sudden after week the size of my text is out of whack? I haven't changed anything, changing the zoom or font doesn't change anything at all, any ideas?

Did you by chance zoom in on the browser on accident? Check the menu on the right (hamburger) and see if there is a zoom option in there.

I did notice I was getting odd scroll bars on the bar charts after updating Grafana a few weeks ago, and found the setting to fix it. But it was not effecting everything like you have shown.

image

Fix is this setting:
image

1 Like

It’s at 100%. That’s the first thing I thought of. Even if I take below 100% to like 60 or 70% it’s stays the same.

Was looking for the same thing today....

Have you tried another browser?

ewwweeeee..... No, I hadn't I don't like to venture out of Brave too much, it makes me feel, dirty ... I'll try it when I get home...

1 Like