We're very pleased to announce the release of Indigo 2025.1. The main focus of this update is the new event data mechanism that allows actions to get information about what caused the action to run, support for arbitrary webhooks from external services, a bunch of new Z-Wave definitions, and interface additions and improvements.
For many years, users have been asking if it's possible to know what caused an action to fire - be it a trigger, schedule, action group execution, etc. The plumbing required to implement this functionally is non-trivial, so we've put it off as there are workarounds for most situations. Now, we have made the necessary under-the-hood changes to allow events (both built-in to Indigo and through plugins) to pass through information about the firing event so that conditional scripts and actions can use this data in logic further downstream.
The majority of events that Indigo supports, device changes, variable changes, the new webhook functionality (see below), etc., now pass through data about the trigger that fired the action/script. Schedules now also pass through information about the schedule that fired the event, and action group executions from scripts will now optionally accept an arbitrary dictionary of data to pass through.
Many of the actions that are included in Indigo now support event data, either as new action functionality or via the new substitution markup (%%e:"PATH"%%) where path describes the part of the data requested (https://wiki.indigodomo.com/doku.php?id=indigo_2025.1_documentation:substitutions).
Conditional Python scripts and embedded python scripts will automatically have access to a variable, event_data, that will contain any data passed through the event chain (if available). They can then use that data in any logic necessary for the user's scenario.
3rd party plugins are also allowed to use this extra data. If a plugin provides trigger events, it can provide any data it believes would be useful to users throughout the event chain processing. Likewise, plugins that supply actions can use the event data beyond just substitutions - the full dictionary is passed through if the action code accepts it -- and they can use that data in any way.
This feature is going to allow you to simplify their solutions, and we know you guys will love it.
Another request that we've seen growing over the past couple of years is support for arbitrary webhooks. These hooks, provided by hardware vendors (UniFi Protect, Wireless Tags, etc.) and software vendors (Locative.app, etc.), are unsolicited HTTP requests of varying formats. In the past, if a user could configure the sending payload to something that matches the HTTP API, then they could be directly supported that way. However, most providers have a relatively fixed data format that they send through the webhook.
Our new mechanism will support any kind of webhook (GET, HTTP POST args, HTTP POST JSON), and supports all the standard authentication that the Indigo Web Server supports (Authorization header, api-key on url, etc.).
This feature opens up Indigo to an even broader array of hardware and services. It also lays groundwork for future functionality that, in combination with event data, will really turbocharge integration solutions. We can't wait to see what you guys build!
This release adds/enhances Z-Wave support with the following changes:
A big thank you to Zooz, who sent us several of their new devices to test with. It makes it much faster and easier to add model definitions/code when we have the physical device to test with. Particularly for devices that have significant changes to operation based on how they are configured.
We always do some changes to support the more technical users who we like to call developers (though that can cover users who write scripts as well). For this release:
indigo.utils.str_to_bool() , which will help scripters and developers alike convert various strings to Python booleans (open/closed, locked/unlocked, on/off, yes/no, etc.).indigo.utils.reverse_bool_str_value() which will get the reverse value of a string boolean. For instance, calling it with "open" will return "closed", "no" will return "yes", etc.dict(indigo_obj).event_data parameter to all action handler methods to pass in the new event_data dictionary from the event chain.event_data, to the indigo.actionGroup.execute command to accept an arbitrary dictionary that will be passed through to any actions that support the new Event Data mechanism described above.As usual, we want to recognize our 3rd party developers and a small group of beta testers for helping us with the development of Indigo 2025.1. They provided development support, documentation contributions, extensive testing and significant plugin updates. We're grateful to have a group of dedicated individuals helping us to keep Indigo alive and thriving.
Here's a list of new plugins since the last release:
Here are plugins with updates since the last release:
This release represents some great new functionality that we've been wanting to add for a while. It gives users even more flexibility when integrating other services and simplifying automation logic. Something that we didn't mention above was the significant amount of work that was done to expand our automated testing environment. While this isn't something that users will directly see, this ultimately will make Indigo even more reliable and will make doing significant upgrades more reliable. We have an upcoming Python update as well as moving our software to compile with the new macOS Tahoe and Xcode 26. This is going to require a lot of effort and testing to make sure that we don't introduce bugs as we attempt to keep up with Apple's SDKs. Spending time and effort on even more automated testing will make these tasks a little safer and keeps our releases as reliable as possible.
Note: this release may not be available to all Indigo customers for free. Specifically, if you've allowed your Up-to-Date Subscription to lapse, you won't have access to Indigo 2025.1. Select the Indigo X.X->License Details... menu item in the Indigo Mac client to see the details of your subscription. You can also check the Licenses section of your Indigo Account to see the subscription status and the last version you are eligible to use, or you can go to the new Downloads Page (make sure you're logged in to your Indigo Account) to see which releases you can download and use.
Many expired subscriptions are not yet past their catch-up deadline date, so you may be able to catch up your subscription to get access to Indigo 2025.1 (otherwise you'll need to purchase a new license). As mentioned above, you'll need an active subscription not only to upgrade to 2025.1, but also to use an Indigo Reflector, Alexa integration and API key functionality.
Thanks for your continued support and we hope you'll love all the new features and enhancements of Indigo 2025.1!