LightTools  

Developer: Durosity     Like this plugin? Show your appreciation!
Category: Lighting
Github: Github Repo
License: MIT License
Assistance: Get help!   
Plugin ID: com.durosity.indigoplugin.lighttools
Latest release: v1.9.15 released on Nov. 9, 2026
Release downloaded: 2 times
Requires: Indigo v2024.2.0 or higher
(Check the Releases tab below for older releases that may have different requirements)
  Download latest release

LightTools

An Indigo Domotics plugin that bundles a handful of small, independent lighting utilities: linking a dimmer to a variable (handy for HomeKit-published brightness controls), technology-agnostic scenes with state tracking, a relay-to-dimmer/fan converter, a virtual dimmer that mirrors a group of real devices, a sunrise/sunset ramp simulator, and a flash/strobe action for alerts.

None of these need each other — pick and use whichever pieces are useful to you.

Requirements

  • Indigo Domotics (Server API 3.6 or later)
  • No third-party Python dependencies

Installation

  1. Download the latest LightTools_vX_Y_Z_indigoplugin.zip from the Releases page.
  2. Unzip it and double-click the .indigoplugin bundle — Indigo will offer to install and enable it.
  3. Optionally, open Plugins → LightTools → Configure... and set a logging level (see Logging below).

Features

  • Variable Linked Dimmer — publish a dimmer whose brightness drives (and is driven by) an Indigo variable
  • Scene Controller — save a snapshot of several devices' states and detect when reality matches (or drifts from) it
  • Scene Monitor — a device that's ON only when none of your scenes are currently active
  • Relay to Dimmer Converter — two relays presented as a 4-level (0/33/66/100%) dimmer
  • Relay to Fan Converter — two relays presented as a 4-speed (Off/Low/Medium/High) fan
  • Multi-Device Virtual Dimmer — one dimmer that mirrors brightness (or on/off, via threshold) across a group of dimmers and relays
  • Sunrise/Sunset Simulator — gradually ramps a group of dimmers between two brightness levels over a chosen duration and curve
  • Flash Lamps action — flash one or more devices a set number of times, then restore them
  • Cancel All Flashes action — immediately stop every running flash sequence

Device Types

Variable Linked Dimmer

A simple dimmer device whose brightness is tied to an Indigo variable. Originally built to publish a HomeKit-controllable brightness value for wall-mounted iPad kiosks (e.g. GlennNZ's Kiosk Home app), but works for any case where you want a variable to move in lockstep with a dimmer.

  • Linked Variable — the Indigo variable to read from and write to
  • Variable Scale Minimum / Maximum — maps the dimmer's 0–100% range onto whatever range your variable expects (e.g. 0 to 1 for a fractional brightness value: setting the dimmer to 70% writes 0.7 to the variable)

The plugin polls the linked variable and keeps the dimmer and variable in sync in both directions. Out-of-range or invalid variable values are detected and corrected automatically (with a log warning).

Scene Controller

A relay-type device representing a "scene" — a saved snapshot of the state of a group of other devices (dimmers, relays, thermostats). The scene shows as ON when every device currently matches the saved snapshot, and OFF as soon as any of them drifts.

  • Scene Devices / Scene Variables — what to include in the snapshot
  • Save Current State of Selected Devices — button that captures the present state of everything selected as the target snapshot
  • Compare Current State of Selected Devices — button that checks current state against the saved snapshot without changing anything
  • Ignore HVAC Mode when comparing thermostats — thermostats often report mode changes that shouldn't break scene matching; tick this to ignore mode when comparing
  • Restore previous state when manually turned OFF — if enabled, turning the scene off manually restores whatever the devices were doing before the scene was activated, rather than just leaving them as-is
  • ON/OFF Action Group — optional action groups to run on activation/deactivation

Turning the scene ON applies the saved snapshot to every device in it. A short grace period after activation (and a brief settle window after a triggering change) avoids false "scene broke" flickers while devices are still catching up.

Scene Monitor

A relay device that inverts scene activity: it's ON when none of your monitored scenes are active, and OFF as soon as any one of them is. Useful for driving "no mood lighting is currently set" indicators or automations that should only run in the absence of any scene.

  • Monitored Scenes — which Scene Controller devices to watch
  • Bounce Delay — seconds to wait after all scenes go inactive before flipping ON, to avoid flapping during scene-to-scene transitions (default and recommended: 5s)
  • ON/OFF Action Group — optional action groups on each transition

Relay to Dimmer / Fan Converter

Two small devices that turn a pair of ordinary relays into a multi-level control:

  • Relay to Dimmer Converter — 4-level dimmer: both relays off = 0%, Relay 1 only = 33%, Relay 2 only = 66%, both on = 100%.
  • Relay to Fan Converter — same idea, presented as a 4-speed fan (Off/Low/Medium/High), for controlling multi-speed fans wired to two relays.

Both watch the underlying relays continuously and update their own state (and vice versa) whenever either side changes, with a short debounce so rapid relay toggles don't fight the device the other way.

Multi-Device Virtual Dimmer

A single virtual dimmer device that keeps a group of underlying dimmers and relays in sync with each other. Set the virtual dimmer's brightness and every controlled device follows: real dimmers mirror the brightness value exactly, and relays turn ON/OFF based on a configurable threshold.

  • Controlled Devices — the dimmers and/or relays to keep in sync
  • Relay Threshold (%) — relays in the group turn ON at or above this brightness, OFF below it

The plugin also watches the controlled devices for changes made outside the virtual dimmer (a wall switch, another automation, HomeKit, etc.) and syncs the rest of the group to match, with a short cooldown after each sync to avoid feedback loops between the devices it's actively controlling and the ones reporting state back.

v1.9.5: fixed an issue where a device that was simply slow to physically settle after a command could be mistaken for a fresh manual change once the sync cooldown ended, causing the group to oscillate on and off. See the v1.9.5 release notes for details.

Sunrise/Sunset Simulator

Gradually ramps a group of dimmers from a starting brightness to a target brightness over a configurable duration, either linearly or with an ease-in/ease-out curve — useful for wake-up lighting or gentle evening wind-downs.

  • Starting / Target Brightness — the simulator figures out sunrise vs. sunset automatically from which is higher
  • Duration — how long the full ramp should take
  • Brightness Curve — Linear or Ease-in/Ease-out
  • Reset devices to starting brightness — if checked, every controlled device snaps to the starting brightness immediately when the simulation begins; if unchecked, each device starts wherever it currently is and joins the ramp once the simulated brightness catches up to it (handy for lights that are already partway on)
  • Controlled Dimmer Devices — the devices to ramp
  • Start / Complete / Stop Action Group — optional action groups to fire at each stage

Can be started, paused/resumed, and stopped via device actions (sunriseStart, sunrisePause, sunriseStop) as well as by turning the device on/off directly.

v1.9.5: manually adjusting a light mid-ramp now cancels the simulation (running the Stop Action Group, if set) instead of being silently overridden on the next update. See the v1.9.5 release notes for details.

Flash Lamps / Cancel All Flashes

Two plugin actions (not devices) for alerting via lights:

  • Flash Lamps — flashes a chosen set of dimmers/relays a set number of times, with configurable flash duration and gap between flashes, then restores each device to its original state. Optional Flash To Brightness / Flash To Minimum let you control the on/off brightness levels used for dimmers during the flash (defaults: 100% / 0%).
  • Cancel All Flashes — immediately stops every currently-running flash sequence and restores the affected devices, in case you need to abort one early.

Logging

Configurable in Plugins → LightTools → Configure...:

Level What it logs
None Errors only
Informational High-level events — plugin start, scene saves, flash starts
Detailed (default) Adds per-device action results, e.g. "Turning OFF relay X"
Debug Adds monitor decision reasoning — per-tick change detection
Extended Debug Full state dumps every monitor cycle (very verbose — use only while actively troubleshooting)

License

Released under the MIT License — see LICENSE for details.

Credits

Mike — @durosity. Thanks to everyone in the Indigo Domotics forums who offered help and testing, particularly DaveL17.

Release details
Released on: Nov. 9, 2026
Requires: Indigo v2024.2.0+
Downloaded: 2 times 
Changes in this release

v1.9.15

The headline feature here is a brand new device: the Auto-Off Timer.

Added

  • Auto-Off Timer — watches a target dimmer or relay, and when it turns ON starts a countdown; when the countdown reaches zero, it turns the target back OFF automatically. Built to replace the kind of multi-trigger-plus-script setup people have historically cobbled together (Indigo timer device + variable + several triggers) for things like an electric blanket, a bathroom fan, or any "on for a while, then off" fixture.
    • Duration set as a fixed number of minutes, or read from an Indigo variable (re-read fresh every time the timer starts, so you can change it on the fly)
    • Resume from where it was last stopped (optional) — turning the target off early and back on continues the same countdown instead of starting over; a timer that runs all the way down always starts fresh next time regardless of this setting
    • Fully bidirectional — turn the Auto-Off Timer device itself on/off/toggle and it controls the target directly; turning it ON always restarts the countdown fresh, even if the target was already on
    • A new Reset Timer action, for wiring to your own native Indigo trigger (e.g. a "device turns on" trigger on the target) so the timer resets to a full fresh duration even when the target is switched on again while it's already on — something the plugin can't reliably detect on its own without risking false resets from unrelated device chatter
    • States: onOffState (timer running), timeRemainingDisplay (human-readable countdown, shown as the device's primary state), durationMinutes (the duration actually used for the current/last run), timeRemainingSeconds/Minutes/Hours/Days (straight unit conversions), and timeLeftDays/Hours/Minutes/Seconds (broken down together as a clock, e.g. 173822 seconds remaining reports as 2 / 0 / 17 / 2)
    • Survives an Indigo/plugin restart mid-countdown — it stores the actual end time rather than just elapsed seconds, so it either picks the countdown back up correctly or, if it should have expired while the plugin was down, catches up and turns the target off immediately on restart

Fixed

  • Sunrise/Sunset Simulator — manually adjusting a light mid-transition no longer gets silently overridden on the next update tick. The simulator now detects the manual change and cancels the simulation (running the Stop Action Group, if set) instead of fighting you for control of the light.
  • Multi-Device Virtual Dimmer — fixed a feedback loop that could cause grouped devices to oscillate on/off indefinitely if one was a little slower than the others to physically settle after a command (common with Z-Wave/relay hardware). The plugin now re-baselines to each device's actual reported state when its sync cooldown ends, instead of assuming the commanded target was reached.

Note on upgrading

If you installed an earlier 1.9.6–1.9.10 build and already created an Auto-Off Timer device, you'll need to delete and recreate it after updating to 1.9.15 — the device's underlying type changed (from relay to custom) to get Indigo to correctly show the live countdown instead of a plain on/off state in the device list, and Indigo doesn't let an existing device instance switch type in place. Nothing else about how it's configured or used changes.

No other devices or actions need any changes - just install over your existing copy and restart the plugin.

Release details
Released on: Sept. 28, 2026
Requires: Indigo v2024.2.0+
Downloaded: 44 times 
Changes in this release

v1.9.5

Two bug fixes, both in the "monitoring" devices that watch other devices and try to react sensibly when something changes underneath them.

Fixed

  • Sunrise/Sunset Simulator — manual adjustments now cancel the simulation instead of being overridden. Previously, if you manually changed the brightness of a lamp partway through a sunrise/sunset, the simulator would just steamroll it on the next update tick and keep pushing its own calculated brightness. It now detects that the light no longer matches what it last commanded and treats that as your intent to take over — it cancels the simulation (running the Stop Action Group, if you've set one) and leaves the light alone from that point on, rather than fighting you for control of it.
  • Multi-Device Virtual Dimmer — fixed a feedback loop that could cause grouped devices to oscillate on/off indefinitely. If you turned off a device in a group and one of the paired devices was a little slower to physically settle (common with Z-Wave/relay hardware), the plugin could misread that lag as a new manual change once its 5-second sync cooldown expired. That would re-trigger a sync using the stale, not-yet-settled value as the new target — flipping the other device (the one that had already updated correctly) back the wrong way. Rinse and repeat, and you'd get exactly the "one turns back on, then the other turns off, then..." ping-pong some of you have reported. The plugin now re-baselines to each device's actual reported state when the cooldown ends, instead of assuming the commanded target was reached, so a device that's just slow to catch up no longer restarts the whole cycle.

Both fixes are internal to plugin.py — no device or config changes, no action needed beyond updating. Existing Sunrise/Sunset Simulator and Multi-Device Virtual Dimmer devices will pick up the new behaviour automatically.

Upgrading

Download LightTools_v1_9_5_indigoplugin.zip below, unzip, and double-click the .indigoplugin bundle to install over your existing copy. Restart the plugin (or Indigo) if it doesn't reload automatically.

Release details
Released on: Dec. 9, 2025
Requires: Indigo v2024.2.0+
Downloaded: 104 times 
Changes in this release

First public release of Indigo-LightTools