OK. Technically, that's not supported (defining a function in a global variable for use in another), and the fixes for other issues now exclude that explicitly (although you should not have received a runtime exception because of it). But, I will have a workaround for you in a (near, today) future build.
Global Moderators
Forum wide moderators
Posts
-
Define function issue in latest-25304 -
Define function issue in latest-25304Sorry... not caffeinated enough yet. Is that expression a dependency of any other?
-
Define function issue in latest-25304Can you show me
testHere? -
Strange behavior in MSR latest-25304 with disabled groups in Reaction@therealdb said in Strange behavior in MSR latest-25304 with disabled groups in Reaction:
When pressing the button,
Can you explain what this means? And please show the entire rule.Edit 2: Never mind. I was focused on the variable and the interpretation of the value, but I see now, that's not what you're looking at... one moment please...
Edit 3: OK. That's not a 25304-specific issue... goes back to forever. Will be fixed in next build (soon/today).
-
Strange behavior in MSR latest-25304 with disabled groups in ReactionI have a scene controller where I basically "commented" (aka disabled) actions because I was testing new things.
When pressing the button, every group is executed. The first is correct, the others two not. Removing them is obviously working.
newsceneis a simple variable gettinggetEntity( "mqtt>shelly_masterbedroom_scenecontroller_2" ).attributes.button.state.I'm not sure if this is new, but I think it's not expected.
-
Do you Matter?I got a bad impression of Zwave from Vera, quite incorrectly. Should have stuck with it but actually dumped it. Mostly Shelly now, and its Gen 4 modules are Matter capable.
-
[Reactor] Variables not updating correctly in latest-25201-2aa18550@tunnus OK. We got that one, too! Thanks for sticking with that process and getting me a lot of good information.
Build 25304 is now fully released for all platforms and architectures. Please see the release announcement for a full list of change.
-
The reaction stopped working (Google Nest max playing a video)@Fanan Build 25304 has the necessary changes to support what has changed in Home Assistant. The following is an example action to play media in the new model:
The first example in the screen shot below shows how to format the object field that Home Assistant needs as JSON. The second example shows how to use YAML for the field.
-
Reactor (Multi-System/Multi-Hub) AnnouncementsReactor build 25304
BARE-METAL USERS: It is recommended that you update package dependencies when installing all Reactor updates. After unpacking the Reactor archive, remove any existing
package-lock.jsonfile from your Reactor install directory, and then runnpm run depsto update package dependencies.ALL USERS: If you are using extension Controllers (like ZWaveJSController) please update them to the latest versions as well. Please refer to the CHANGELOG files for each for information on specific changes. Also don't forget to update any dependent packages for those extensions — dependent packages are maintained separately from Reactor itself and must be updated individually.
- Rules: POTENTIALLY BREAKING CHANGE the evaluation mechanism for rule-based (local) variables has been changed. Users with rules that rely on specific nuances (or bugs) in the old behavior/mechanism may find their variables and rules do not work as expected. However, most users should find that the new mechanism aligns well with their expectations. See the docs for Variables & Expressions - Overview for a complete description.
- The "Force re-evaluation of expressions and conditions" option available in the Set Variable action of Rule Reactions (SET & RESET) has been removed. When a rule-based variable is used in a trigger, and the variable's value changes, the Rule will now re-evaluate itself automatically. This is part of the above changes.
- Rule Reactions (SET & RESET) now have a "Wait for completion" option. When set, the rule will wait for its Reaction to finish before allowing itself to be re-evaluated. When not set (the default), the Rule will not wait and the Reaction runs asynchronously, and therefore a change to the rule state during the Reaction's execution could cause the Reaction to be pre-empted (stopped before completion).
- Rules: fix handling of some very old rule conditions where the changes operator was stored in an older structure (i.e. handling the legacy structure had a bug).
- A new
alarm( interval_seconds )function has been added; it can be used in global expressions (only) to cause periodic re-evaluation of the expression. This is particularly useful for expressions that don't have dependencies on other variables or entities/objects. A running timer can be cancelled by specifying an interval of zero (0). - Expressions: fix an error in which the
sort()function would sort the array in place rather than returning a new, sorted array (this was in conflict with its specification and intended operation, and apparently existed for a long time). - UI/Expression Editor: button coordination in expressions editing has been improved, and the highlighting of error messages has been improved.
- HTTP API: A new endpoint
/api/v1/variable/:name/updatehas been added to force re-evaluation of a global variable's expression and, if changed, set its new value. See docs - HassController HA made a breaking change in 2025.9 (pull 150721) that wasn't declared in their general release notes, affecting the
media_player.play_mediaservice. This service also has a new field and selector type, and two fields previously declared have been removed. - HassController now has ability to filter out entities (i.e. not import entities from HA into Reactor) based on source (integration). see docs
- HassController now supports binding of events directly to Reactions. This is in addition to the existing ability to bind events to entity attributes. Previously, if the user's goal was to run a Reaction in response to an event from HA, the user would need to first bind the event to a new entity and attribute, and then create a Rule triggered by that entity/attribute to launch the Reaction. Now, the Reaction can be launched directly on receipt of the event. See docs.
- DynamicGroupController: A configured group can be disabled by adding
enabled: falseto its configuration. The boolean value false is the only value that will be honored to disable the group (e.g. null and the number 0, while falsy values, will not be honored). - Resolve an issue where some Controller subclass'
systementities could lose track of their default primary attribute when unserialized (reloaded from storage at startup). - UI: The rule search tool on the Rule Set left navigation offcanvas also finds Rule IDs that match the entered text (i.e. you can search by name and ID).
- UI: Fix an error that was thrown when using search on the Rule Sets navigation offcanvas list and some existing Reaction had no name.
- UI/Entities: Refresh all displayed entities when a structure event is received from the API (such as when reconnecting after a restart), to ensure the data displayed is the most current.
- UI/Expressions: page will now refresh all expression values when a structure event is received (e.g. after a restart of Reactor), as the Engine start and update of global variables often occurs before clients reconnect to the service, so clients can easily miss the update events from those objects.
- UI/Client API: fix an issue where a group entity could be assigned the wrong entity class.
- UI/Rules: Fix column not wrapping on large value for Rule-based expressions (rule detail card).
- UI/Reaction Editor: the single-action try button (for Entity Actions) now correctly omits optional fields that contain no data, rather than sending blank data and expecting the Controller instance to sort it out.
- UI/Entity Picker: click handler now covers an empty area when no entity has been selected.
- UI/modal dialogs: the ESC key will now dismiss most dialogs; if the dialog is a confirmation, the dismissal is equivalent to hitting "Cancel".
- Pushover Notifier: remove extraneous debug message.
- Developers of Controller subclasses: the Controller method
removeControllerGroup()is now deprecated. To replace its functionality, you should now set the class static propertycreateControllerGrouptofalse. See docs. The old method will continue to be available until October 2026, but will generate a warning to the log, unless the class property is also set, in which case the warning is reduced to informational level (i.e. you can do both for compatibility until next year). - Tools: added a new trivial backup script.
- Docker images: now built with nodejs LTS (22.20 as of this entry) on Alpine 3.21
- HassController: Bless Hass to 2025.10.4
-
[Reactor] Variables not updating correctly in latest-25201-2aa18550@tunnus said in [Reactor] Variables not updating correctly in latest-25201-2aa18550:
this issue of scrolling a long rule
That is a huge rule. I'm not going to address this now. I may look at it later, but I think this case is a true outlier and the juice may not be worth the squeeze. jQuery determines when to draw the objects on screen, and that's causing the scroll shifts as it adds new objects and the browser adds them to the display. I can't prevent the scroll shift when new objects are added; that's between jQuery and the browser. The only thing I could reasonably do is prevent jQuery drawing anything at all until the entire structure has been created off-screen, then draw it all at once. My desktop is an i9-9900K, so pretty fast even by today's standards, and it takes almost 15 seconds in Brave to create the entire page structure. That means you'd have 15 seconds of a blank page (or maybe a spinner and a "Please wait...") while it works at it. I don't really feel like much is gained by doing that, because your real goal is to be able to start looking through the rule while it's still drawing.
This rule is begging to be broken up. For what it's worth, I'm also working on changes to support parameterized rules and reactions that could make logic like this more modular and less "verbose" and repetitious in terms of their structure.

