| Developer: | VTMikel's Plugins Like this plugin? Show your appreciation! |
| Category: | Reporting/UI/Control Pages |
| Github: | Github Repo |
| Assistance: | Get help! Check the online documentation |
| Plugin ID: | com.vtmikel.grafana |
| Latest release: | v2026.8.0 released on Aug. 8, 2026 |
| Release downloaded: | 10 times |
| Requires: | Indigo v2024.2.0 or higher |
| (Check the Releases tab below for older releases that may have different requirements) | |
| Download release v2026.7.0 |
An Indigo plugin that logs device and variable states to InfluxDB for visualization with Grafana. Create beautiful time-series dashboards to track your home automation data over time.
docker run -p 8086:8086 -v /path/to/data:/var/lib/influxdb influxdb:1.8brew install influxdb@1docker run -p 3000:3000 grafana/grafanabrew install grafana.indigoPlugin file to installConfigure the connection to your InfluxDB server in the plugin configuration:
localhost, 192.168.1.100)Control which devices and states are logged:
How it works: 1. Excluded devices will never have any information sent to InfluxDB 2. Included devices will have ALL states sent to InfluxDB 3. All other devices will have only the global include states sent
Global Include States: These states will be logged for all devices (unless excluded). Default states include:
- onState, state.onOffState
- energyCurLevel, energyAccumTotal
- sensorValue, value.num
- batteryLevel
- HVAC states (coolSetpoint, heatSetpoint, state.hvac_state)
Minimum Update Frequency: Configure how often to send updates even if values haven't changed. This prevents gaps in graphs for infrequently changing devices. Options: 5, 10, 15, 30, or 60 minutes.
Create sophisticated filtering rules to prevent bad data from reaching InfluxDB:
Access via: Plugins → Grafana Home Dashboard → Configure data filters (advanced)
Utility tools to help you understand what data is available:
Access via: Plugins → Grafana Home Dashboard → Explore device/state
http://your-influxdb-host:8086device_changes measurement for device datavariable_changes measurement for variable dataSELECT "energyCurLevel" FROM "device_changes"
WHERE "name" = 'Living Room Light'
AND time >= now() - 24h
device_changesname, folderId, folder (if in a folder)Every device point also carries, automatically and regardless of your inclusion criteria:
| Field | Meaning |
|---|---|
lastSuccessfulComm |
Unix timestamp of the device's last successful communication |
secondsSinceLastSuccessfulComm |
How long ago that was, in seconds |
lastChanged |
Unix timestamp of the device's last state change |
secondsSinceLastChanged |
How long ago that was, in seconds |
These let you tell a device that has stopped communicating from one that is merely quiet. Without them, a device that dropped off the network months ago looks identical in Grafana to a thermostat holding steady overnight — both are a flat line, because the plugin keeps re-sending the last known value as a heartbeat so your graphs don't gap.
Alert on secondsSinceLastSuccessfulComm, not lastChanged — a quiet-but-healthy device also has
a frozen lastChanged. A useful "offline device" panel:
SELECT last("secondsSinceLastSuccessfulComm") FROM "device_changes"
WHERE $timeFilter GROUP BY "name"
Sort descending and set the unit to seconds. Anything much larger than a few times your Minimum Update Frequency is worth investigating.
A device can keep communicating normally while one of its readings is stuck — a sensor that still answers polls but always reports the same temperature, for example. Indigo considers such a device healthy, so both timestamps stay current and the liveness fields will not flag it.
That failure mode is a value problem, not a communication problem, and it is best detected in Grafana by asking whether a reading has moved at all over a long window:
SELECT spread("sensorValue") FROM "device_changes"
WHERE time > now() - 24h GROUP BY "name"
A spread of exactly 0 over 24 hours, for a reading that ought to vary, means the value is stuck
even though the device looks alive. Use the liveness fields for "is it there?" and a spread check
for "is it still telling me anything?".
Two things to get right before alerting on this, or it will cry wolf and be ignored:
spread over 24h is 0 and its spread over the previous 30 days was greater than 0.Scope it to readings that physically vary — sensorValue on sensors, for example. Across 31
temperature sensors over 24 hours on the author's system, exactly one was flat while every other
swung 1.2–21.7 °F, so the separation is clean where the check applies.
⚠️ Do not add
lastChangedorlastSuccessfulCommto your include-states list. They are already sent on every point. Adding them to the include list makes every change to them generate its own data point, which can multiply your write volume dramatically. For this reason they are hidden from the include-states picker.
Devices that have never communicated (virtual devices, device groups, some plugin-backed devices) simply omit these fields rather than reporting as maximally stale.
variable_changesvarnamename, value, value.num (if numeric)state.<name> or <name>.num, and filters where the previous value was zero, silently passed everything throughBREAKING CHANGES: - Removed bundled InfluxDB and Grafana servers - Plugin now requires external InfluxDB 1.7/1.8 server - Updated to Indigo SDK 2025.1 (Python 3.11+)
Improvements: - Upgraded all Python dependencies to latest versions - Simplified architecture: InfluxDB client only - Removed ~500 lines of server management code - Switched to pip requirements.txt for dependency management - Calendar versioning adopted (2025.0.0)
Important: Version 2025.0.0 is a breaking change that removes the bundled InfluxDB and Grafana servers. You must set up external servers before upgrading.
Migrate existing data (if you have existing data from v2.x): ```bash # On your Indigo server, export data from old plugin location influxd backup -portable -database indigo /path/to/backup
# On new InfluxDB server, restore data influxd restore -portable -db indigo /path/to/backup ``` 3. Install Grafana separately (see Requirements section) 4. Update plugin to v2025.0.0 5. Configure connection to your external InfluxDB server 6. Reconfigure Grafana to point to new InfluxDB server
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
This plugin is provided as-is with no warranty. While it has been tested with Indigo 2025.1, use at your own risk. Always backup your Indigo database before installing plugins.
| Released on: | Aug. 8, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 10 times |
| Download this release | |
Every device data point now carries four extra fields, automatically and regardless of your inclusion criteria:
| Field | Meaning |
|---|---|
lastSuccessfulComm |
Unix timestamp of the device's last successful communication |
secondsSinceLastSuccessfulComm |
How long ago that was, in seconds |
lastChanged |
Unix timestamp of the device's last state change |
secondsSinceLastChanged |
How long ago that was, in seconds |
These let you tell a dead device from a merely quiet one. Previously a sensor that died months ago looked identical in Grafana to a thermostat holding steady overnight — both a flat line, because the plugin keeps re-sending the last known value as a heartbeat so your graphs don't gap.
A "dead sensor" panel is now one query:
SELECT last("secondsSinceLastSuccessfulComm") FROM "device_changes"
WHERE $timeFilter GROUP BY "name"
Sort descending, set the unit to seconds, and threshold at a few times your Minimum Update
Frequency. Alert on secondsSinceLastSuccessfulComm rather than lastChanged — a quiet-but-healthy
device also has a frozen lastChanged.
This adds no additional data points, only extra fields on points that were already being written. Devices that never communicate (virtual devices, device groups) omit these fields rather than reporting as maximally stale.
What these fields do not catch: a device can keep communicating normally while one of its readings is stuck — a sensor that still answers polls but always reports the same temperature. Indigo considers such a device healthy, so both timestamps stay current. That is a value problem rather than a communication problem; the README documents a spread-based check for it, including the two traps that make a naive version useless (constant-by-design readings like setpoints and battery levels, and values stuck with dither).
⚠️ Do not add
lastChangedorlastSuccessfulCommto your include-states list — they are already sent on every point, and including them would make every change to them generate its own data point. They are now hidden from the include-states picker for this reason.
"Percent changed" filters were ignored during the periodic minimum-frequency update. A bad value the filter had correctly blocked could still reach InfluxDB 15 minutes later on the next heartbeat, because the periodic update had no previous value to compare against. It now falls back to the last value the plugin actually wrote.
The "lock minimum frequency updates after filter failure" option could lock a device permanently. The lock was recorded against one key and the unlock looked for another, so the unlock never fired — a locked device would have silently stopped sending data for the life of the plugin process. Two related faults in the same path are fixed alongside it, one of which would have caused a lock to be undone by the very update that set it.
"Percent changed" filters silently passed everything through in two cases: when the state was
written as state.<name> or <name>.num, and when the previous value was zero. Both raised an
internal error that was caught and treated as "let the value through".
A locked device is no longer invisible. Filter blocks that lock a device now say so in the filter log, and the device announces itself in the Indigo event log while it stays locked, instead of only under debug logging. A lock suppresses every state for a device, so it produces no data at all — which otherwise looks exactly like a device that is simply quiet.
The filter property dropdown accumulated duplicate entries — it gained a fresh copy of every state name every 15 minutes.
Also: the filter evaluation debug line no longer prints a meaningless range (0.0, 0.0) for
percent-changed filters; it now prints the configured maximum percent.
No configuration changes are required and no preferences are migrated, so downgrading is simply a matter of reinstalling the previous version.
If you use percent-changed filters with the lock option enabled, note that this option has not previously been able to take effect. Consider unchecking it for a day or two after upgrading and reviewing the filter log to confirm you agree with the blocks before letting it suppress whole devices.
| Released on: | July 19, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 18 times |
| Download this release | |
| Released on: | Nov. 7, 2025 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 28 times |
| Download this release | |
This version contains a major architectural change. The plugin no longer bundles InfluxDB and Grafana servers. You must now provide your own external servers, but this is easy with homebrew (https://brew.sh)
All Python dependencies upgraded to latest versions:
- influxdb==5.3.2 (InfluxDB 1.x client)
- requests==2.32.5 (HTTP library)
- msgpack==1.1.2 (MessagePack serialization)
- pytz==2025.2 (Timezone support)
If you're upgrading from v2.0.x and want to run the InfluxDB / Grafana servers on your Mac:
(install homebrew)
Install InfluxDB 1.7 or 1.8 (not 2.0+):
docker run -p 8086:8086 influxdb:1.8brew install influxdb@1Install Grafana (separate installation):
docker run -p 3000:3000 grafana/grafanabrew install grafanaUpdate plugin configuration:
| Released on: | June 9, 2022 |
| Requires: | Indigo v2022.1.0+ |
| Downloaded: | 26 times |
| Download this release | |
fix for influx stop.
| Released on: | Dec. 21, 2020 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 31 times |
| Download this release | |
Upgrade Grafana to v7.3.6
| Released on: | Aug. 4, 2020 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 51 times |
| Download this release | |
Upgrade Grafana to 7.1.1
| Released on: | June 6, 2020 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 34 times |
| Download this release | |
Upgrade Grafana to 7.0.3
| Released on: | Dec. 24, 2019 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 33 times |
| Download this release | |
Upgrade of Grafana Bump of plugin version
| Released on: | Nov. 28, 2019 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 36 times |
| Download this release | |
Upgrades to the Grafana and Influx Servers
| Released on: | July 3, 2019 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 36 times |
| Download this release | |
Upgrade of Grafana to v6.2.5 Bump plugin version
| Released on: | May 12, 2019 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 37 times |
| Download this release | |
Updates Grafana to 6.1.6 Updates InfluxDB to 1.7.6
| Released on: | Feb. 25, 2019 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 34 times |
| Download this release | |
Upgrade of Grafana to v6 Upgrade of Discrete panel to latest Upgrade of Piechart panel to latest Removed automatic updates of the plugin Bumped plugin version to v1.0.11
| Released on: | Feb. 2, 2019 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 35 times |
| Download this release | |
bug fixes and improvements
| Released on: | Jan. 20, 2019 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 36 times |
| Download this release | |
Added missing dependencies.
| Released on: | Jan. 6, 2019 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 38 times |
| Download this release | |
Update to Grafana 5.4.2 Update to InfluxDB 1.7.2
| Released on: | Nov. 25, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 38 times |
| Download this release | |
Updated Grafana and InfluxDB to latest stable versions.
| Released on: | Sept. 13, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 31 times |
| Download this release | |
Upgrades to the Grafana and Influx server
| Released on: | July 19, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 34 times |
| Download this release | |
Updated Grafana to v5.2.1 Fixed bug with configuration dialog where it becomes slow after the plugin has ran for a long period of time
| Released on: | June 26, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 33 times |
| Download this release | |
Addresses a problem with the performance of the configuration dialog Updates Grafana to v5.1.4 Updates InfluxDB to v1.5.4
| Released on: | June 7, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 38 times |
| Download this release | |
Updated Discrete panel fixed a bug that refreshes the config dialogs migrated the plugin update function
| Released on: | May 29, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 38 times |
| Download this release | |
Fixed a bug with the config dialog when adding devices to the include list upgraded Grafana to 5.1.3 upgraded InfluxDB to 1.5.3
| Released on: | May 17, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 28 times |
| Download this release | |
Initial release to the Indigo Plugin Store
| Released on: | May 16, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 33 times |
| Download this release | |
Adds a menu option to review logs of data filter failures Overall stability improvements
| Released on: | May 15, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 31 times |
| Download this release | |
Enhancements to data filters
| Released on: | May 13, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 38 times |
| Download this release | |
Upgrade to Grafana 5.1.2 Implementation of advanced filter rules
| Released on: | May 8, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 31 times |
| Download this release | |
improvements to configuration dialog only.
| Released on: | May 7, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 28 times |
| Download this release | |
Minor upgrade of Influx server. Fixes to the configuration validation code.
| Released on: | May 7, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 35 times |
| Download this release | |
added logic to automatically save your plugin preferences when the validation routine discovers a missing state, or device. This will reduce the number of warnings given.
| Released on: | May 4, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 35 times |
| Download this release | |
Upgrade to Grafana 5.1. Upgrade Discrete panel to v0.0.8. PhantomJS now works.
| Released on: | April 20, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 31 times |
| Download this release | |
| Released on: | April 14, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 31 times |
| Download this release | |
Improvements to first time setup, in particular the data directories.
| Released on: | April 7, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 33 times |
| Download this release | |
Improvements to the initial setup process, and upgrade process SSL for remote InfluxDB servers
| Released on: | April 6, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 33 times |
| Download this release | |
Adds plugin update function Adds menu items to rebuild the servers manually RC2
| Released on: | April 6, 2018 |
| Requires: | Indigo v7.0.2 thru v2022.2 |
| Downloaded: | 35 times |
| Download this release | |
Fixes missing files from previous release for Grafana server