@toggledbits I understand that you do not perform testing on Mac computers but thought I'd share the following with you in case something can be done.
I started seeing these errors with version 24302. I thought that upgrading to 24343 would have fixed the issue but unfortunately not. I either have to close the browser or clear the cache for the errors to stop popping-up but they slowly come back.
I see these errors on the following browsers:
Safari 16.6.1 on macOS Big Sur Safari 18.1.1 on MacOS Sonoma DuckDuckGo 1.118.0 on macOS Big Sur and Sonoma Firefox 133.0.3 on macOS Big Sur Chrome 131.0.6778 on macOS Big SurHere are the errors
Safari while creating/updating an expression
@http://192.168.0.13:8111/reactor/en-ca/lib/js/reaction-editor.js:543:91 makeExprMenu@http://192.168.0.13:8111/reactor/en-ca/lib/js/reaction-editor.js:537:28 @http://192.168.0.13:8111/reactor/en-ca/lib/js/reaction-editor.js:92:64 @http://192.168.0.13:8111/reactor/en-ca/lib/js/reaction-editor.js:89:68 each@http://192.168.0.13:8111/node_modules/jquery/dist/jquery.min.js:2:3133 @http://192.168.0.13:8111/reactor/en-ca/lib/js/reaction-editor.js:89:35 @http://192.168.0.13:8111/client/MessageBus.js:98:44 forEach@[native code] @http://192.168.0.13:8111/client/MessageBus.js:95:54 @http://192.168.0.13:8111/client/MessageBus.js:106:44 @http://192.168.0.13:8111/client/Observable.js:78:28 signalModified@http://192.168.0.13:8111/reactor/en-ca/lib/js/ee.js:146:21 signalModified@http://192.168.0.13:8111/reactor/en-ca/lib/js/expression-editor.js:40:29 reindexExpressions@http://192.168.0.13:8111/reactor/en-ca/lib/js/expression-editor.js:71:32 @http://192.168.0.13:8111/reactor/en-ca/lib/js/expression-editor.js:608:40 dispatch@http://192.168.0.13:8111/node_modules/jquery/dist/jquery.min.js:2:40040DuckDuckGo while clicking on status
http://192.168.0.13:8111/reactor/en-ca/lib/js/reactor-ui-status.js:789:44 asyncFunctionResume@[native code] saveGridLayout@[native code] dispatchEvent@[native code] _triggerEvent@http://192.168.0.13:8111/node_modules/gridstack/dist/gridstack.js:1401:30 _triggerAddEvent@http://192.168.0.13:8111/node_modules/gridstack/dist/gridstack.js:1383:31 makeWidget@http://192.168.0.13:8111/node_modules/gridstack/dist/gridstack.js:968:30 addWidget@http://192.168.0.13:8111/node_modules/gridstack/dist/gridstack.js:388:24 placeWidgetAdder@http://192.168.0.13:8111/reactor/en-ca/lib/js/reactor-ui-status.js:183:44Firefox while updating a rule
@http://192.168.0.13:8111/reactor/en-ca/lib/js/reaction-editor.js:543:91 makeExprMenu@http://192.168.0.13:8111/reactor/en-ca/lib/js/reaction-editor.js:537:28 @http://192.168.0.13:8111/reactor/en-ca/lib/js/reaction-editor.js:92:64 @http://192.168.0.13:8111/reactor/en-ca/lib/js/reaction-editor.js:89:68 each@http://192.168.0.13:8111/node_modules/jquery/dist/jquery.min.js:2:3133 @http://192.168.0.13:8111/reactor/en-ca/lib/js/reaction-editor.js:89:35 @http://192.168.0.13:8111/client/MessageBus.js:98:44 forEach@[native code] @http://192.168.0.13:8111/client/MessageBus.js:95:54 @http://192.168.0.13:8111/client/MessageBus.js:106:44 @http://192.168.0.13:8111/client/Observable.js:78:28 notifySaved@http://192.168.0.13:8111/reactor/en-ca/lib/js/ee.js:82:21 notifySaved@http://192.168.0.13:8111/reactor/en-ca/lib/js/expression-editor.js:47:26 @http://192.168.0.13:8111/reactor/en-ca/lib/js/reactor-ui-rules.js:1460:39 forEach@[native code] @http://192.168.0.13:8111/reactor/en-ca/lib/js/reactor-ui-rules.js:1459:58Chrome while creating/updating an expression
TypeError: Cannot read properties of undefined (reading 'getEditor') at RuleEditor.makeExprMenu (http://192.168.0.13:8111/reactor/en-ca/lib/js/rule-editor.js:1788:86) at Object.handler (http://192.168.0.13:8111/reactor/en-ca/lib/js/rule-editor.js:2174:54) at http://192.168.0.13:8111/client/MessageBus.js:98:44 at Array.forEach (<anonymous>) at MessageBus._sendToBus (http://192.168.0.13:8111/client/MessageBus.js:95:54) at MessageBus.send (http://192.168.0.13:8111/client/MessageBus.js:106:44) at ExpressionEditor.publish (http://192.168.0.13:8111/client/Observable.js:78:28) at ExpressionEditor.signalModified (http://192.168.0.13:8111/reactor/en-ca/lib/js/ee.js:146:14) at ExpressionEditor.signalModified (http://192.168.0.13:8111/reactor/en-ca/lib/js/expression-editor.js:40:15) at ExpressionEditor.reindexExpressions (http://192.168.0.13:8111/reactor/en-ca/lib/js/expression-editor.js:71:18) ``Thanks to @toggledbits for adding a custom CSS. I've started doing a darker Reactor style.
Here's the file: https://gist.github.com/dbochicchio/825098ac13b7f8cac22012eae37ff7ce
A couple of things are still too bright and I'll eventually catch-up. Just place it under your /config directory, naming the file as customstyles.css. Hard refresh your browser.
Hi
Having to rebuild my Linux Debian box as the SSD failed. And I have forgotten exactly what I did the first time to get it all setup.
I have Debian 12 up and running on the new SSD, I only have console no Desktop GUI.
I am trying to do the bare metal install for MSR. However I am not sure if I am meant to install nodejs whlist logged in as the root user or as the none root user with my name ?
I used putty and connected via SSH and logged in as root and I installed nodejs but I think this was wrong as when logged in as my user name and I do a node -v command it says node is not installed or doesn't show any version number anyway.
But when logged in as root and I do a node -v command it does show me its installed and displays the version number. maybe its a path issue for my username and he can't see node is installed?
So now I am thinking I should of installed node whilst logged in as my user name and not as the root user.
This is how I installed nodejs as whilst logged in as root
ac7bf6c3-23ad-46fc-8ada-44af6704e63e-image.png
Thanks in advance.
Build 21228 has been released. Docker images available from DockerHub as usual, and bare-metal packages here.
Home Assistant up to version 2021.8.6 supported; the online version of the manual will now state the current supported versions; Fix an error in OWMWeatherController that could cause it to stop updating; Unify the approach to entity filtering on all hub interface classes (controllers); this works for device entities only; it may be extended to other entities later; Improve error detail in messages for EzloController during auth phase; Add isRuleSet() and isRuleEnabled() functions to expressions extensions; Implement set action for lock and passage capabilities (makes them more easily scriptable in some cases); Fix a place in the UI where 24-hour time was not being displayed.As the title says, here's my OpenAI Controller for Reactor:
OpenAI Controller per Reactor. Contribute to dbochicchio/reactor-openai development by creating an account on GitHub.
It supports both OpenAI and Azure OpenAI endpoints. You'll need keys/endpoints, according to each service.
The controller supports multiple models, and each one could be mapped as an entity.
It's quite easy to use, and responses can be stored in variables, for easy access. Or sent to another action (Text To Speech, another endpoint, etc).
9013ae50-fd68-42a2-87c3-97479132e465-image.png
80a88eec-7c89-464a-8196-690b4b72d044-image.png
Have fun with LLM into your scenes!
In Home Assistant I have an integration that if I add entities to it, I will get the following error in MSR as certain entity values I'm using in expressions are null for a moment. This is more or less cosmetic issue and happens very rarely as I rarely modify that integration on the hass side.
Screenshot 2024-11-28 at 22.20.41.png
And the expression is
Screenshot 2024-11-28 at 22.38.19.png
Could I "wrap" hass-entity shown above somewhat differently to prevent this error from happening? Using build 24302.
Hello
I am trying to set up Multi System Reactor to automate routines across multiple smart home devices & platforms (e.g., Home Assistant, SmartThings, and Hubitat). While I have successfully linked the systems; I am facing issues with:
-Delays in triggering actions on secondary devices.
-Inconsistent execution of complex logic conditions.
-Synchronization of states between devices when one system updates.
Is there a recommended way to optimize performance & confirm seamless state sharing across systems?
I have checked https://smarthome.community/category/22/multi-system-reactor-msbi guide for reference but still need advice.
Any tips on debugging or log analysis to pinpoint where the issue arises would also be appreciated.
Thank you !
I've managed to use MSR UI on iOS devices to some degree*, so that although UI elements (e.g. rule sets) are not visible in portrait mode, you've seen them in landscape. Now with recents builds (24302) this does not work anymore, elements (rule sets, entities) are not anymore visible in landscape mode.
Does anyone have similar experiences? Using iOS 18 and Safari/Chrome browser.
( *Drag & drop of rule conditions have never worked on a mobile)
@toggledbits Since I have upgraded ZWaveJSController to 24293 from 24257 I am seeing entries related to registering action set_volume, but action is not defined by the capability 143 every time I restart Reactor.
The Siren seems to be doing what it is supposed to do. The volume levels are fine. Should I worry about it?
Reactor version 24302
ZWaveJSController version 24293
Z-Wave JS UI version 9.27.4
zwave-js version 14.3.4
I have the following ACL defined:
groups: admin: users: - admin applications: true api_acls: # This ACL allows users in the "admin" group to access the API - url: "/api" group: admin allow: true log: true # This ACL allows anyone/thing to access the /api/v1/alive API endpoint - url: "/api/v1/alive" allow: trueAnd I have authenticated to MSR as "admin" user. However, I'm getting "access denied" when trying to access http://*******:8111/api/v1/log
So what I'm missing, is my ACL incorrectly defined?
Using build 24302 on Docker.
Hi
I have just connected a bunch of EzloPi controllers to MSR to import some ESP based devices etc.
They all seemed to have worked and imported in to MSR apart from I have one missing device. It is a Digital Gas Sensor device.
This is how that device looks in the Ezlo API.
Devices Info:
_id: "10696001" deviceTypeId: "ezlopi" parentDeviceId: "10696000" category: "level_sensor" subcategory: "" gatewayId: "457a5069" batteryPowered: false name: "Gas Sensor Digital" type: "sensor" reachable: true persistent: true serviceNotification: false armed: false roomId: "" security: "no" ready: true status: "idle" parentRoom: true protectConfig: "default"Items Info:
_id: "20696001" deviceId: "10696001" hasGetter: true hasSetter: false name: "smoke_density" show: true valueType: "substance_amount" scale: "parts_per_million" value: 2.7472610473632812 valueFormatted: "2.75" status: "idle"There is also an Analog Gas sensor that one did import in to MSR OK.
68d63dab-b871-4f44-912b-cf6e0b9eb4c6-image.png
Devices Info:
_id: "10696000" deviceTypeId: "ezlopi" parentDeviceId: "10696000" category: "security_sensor" subcategory: "gas" gatewayId: "457a5069" batteryPowered: false name: "Gas Sensor Analog" type: "sensor" reachable: true persistent: true serviceNotification: false armed: false roomId: "" security: "no" ready: true status: "idle" parentRoom: true protectConfig: "default"Items Info:
_id: "20696000" deviceId: "10696000" hasGetter: true hasSetter: false name: "gas_alarm" show: true valueType: "token" enum: 0: "no_gas" 1: "combustible_gas_detected" 2: "toxic_gas_detected" 3: "unknown" valueFormatted: "no_gas" value: "no_gas" status: "idle"And this is how this MQ2 Gas Sensor looks like on their dashboard:
Digital
cb77dfa3-4af5-4d06-9635-89207a716a89-image.png
Analog
4fb4da1b-e946-4b89-876c-bcd9f5699b6c-image.png
They have an EzloPi website here you can create your own sensor projects using ESP boards, which is very interesting stuff!
And I just wrote on the Ezlo forum here, how to connect an EzloPi controller to MSR.
THANKS.
A couple of things for you @toggledbits, since you mentioned that this release has new features and some tweaks are expected.
Local expressions cannot be deleted. Pushing the X button has no effect for me.
When cloning an entity action, the result is strange (first is cloned one, second is the original action):
a92ea094-9e2c-4aaa-bf47-2d07a6ffdbd0-image.png
When changing the action on the cloned element, the params are added to the original one. See screenshot:
92ac3011-83c8-466b-bd23-47d483ad7a52-image.png
Dark theme has a couple of strange contrasts. One is visible in the previous screenshots (white text on yellow background). Another one is in groups (blue text on blue background):
9b3c4988-53ef-44e6-9672-30e744cacb75-image.png
Overall, I found blue, yellow, red and green (in buttons and forms) to be too bright.
On the bright side:
I love the new script action: thank you! The dark theme is a great start to avoid getting blinded at night I promise I'll try very soon the new features around actions. Thanks!@toggledbits
I just upgraded to version MSR 24293, bare metal running on Fedora. Upon restart, I am getting a error banner:
I followed the new directions about npm
npm i --no-save --no-package-lock --omit dev
Any idea what the issue is?
Seems like switching the UI to the newly added dark mode (thank you for this) does nothing. The UI stays in light mode and only a few buttons turn into dark mode (see screenshot)
Things I have tried:
Hard refresh
Different browser
Different computer
Restarting Reactor
Failed troubleshooting attempts:
No errors in Chrome console
No relevant errors in Reactor log (can still PM the full log file)
Reactor version: latest-24293-ea42a81d
Hardware: Odroid N2+
Linux version: Ubuntu 24.04.1 LTS
3df2806f-9146-485b-9ec1-d056e91cefe5-image.png Dark mode enabled
ff823023-c079-4684-b01f-d6ac6527d31a-image.png Light mode enabled
Good morning,
I have a service MQTT service that needs a restart occasionally. The add-on (Smartbed MQTT) is for the smart bed base for my bed. It has a "safety light" that I can control from HAAS & MSR as a light entity, and also moves the head of the bed to a preset at bedtime, and then lies it back flat in the morning The problem is, from time to time, the light becomes "unavailable" Restarting from the Add-ons tab in HAAS always fixes it, but I should be able to detect when it happens when "light.tempur_pedic_safety_lights" is not true or false, i.e., unavailable.
What I don't know how to do is how to restart that service. Does anybody have experience in restarting add-ons from MSR?
Running:
Reactor (Multi-hub) latest-24212-3ce15e25 ZWaveJSController [0.1.24232]HAAS:
RPi5-64 (8GB) Core 2024.7.3 Supervisor 2024.08.0 Operating System 13.0 Frontend 20240710.0Reactor (Multi-System/Multi-Hub) Announcements
-
Reactor STABLE Update
The
stable
branch of Reactor is now updated to build 24057. For changes, please scroll back and see the changes and advisory listed since the previous stable branch build (which was 23344).IMPORTANT: Bare-metal users will need to update installed packages (see note here) and be aware of the breaking change notification (same link).
NOTE: This will be the last
stable
branch release that supports versions of nodejs < 18. If you haven't yet upgraded nodejs on your system, you will need to do so before the nextstable
update (an even-numbered LTS version is recommended). This applies to bare-metal users only; docker users have compatible versions of nodejs built into the Reactor distribution image. -
Reactor build 24190
BREAKING CHANGE: Home Assistant versions prior to 2023.6 are no longer supported. Going forward, you may expect HassController to support Home Assistant releases made in the last 12 months. Older releases may continue to work, but will rececive a warning at startup, and may cause errors (that I will not troubleshoot or fix/work around). Special workarounds for pecularities of releases older than 24 months will be removed from the code (meaning versions of Home Assistant older than that will almost certainly have issues).
- Access Control: setting the session timeout to 0 in
users.yaml
disables timed-based session expiration. - PR 0000374: Rolling refresh appears not to work (many UI operations don't cause enough activity to stimulate the refresh).
- PR 0000371: Localization for login page submit button.
- Conditions: Ignore excess whitespace in comma-separated list of values for "in" and "not in" condition operators.
- Rule UI: Hovering over a condition's value in a rule detail card now shows info for current and previous value.
- HassController: Bless Hass to 2024.7.0
MQTTController build 24162
- Address an issue with action configuration in a template stomping on the action definition in the parent capability.
- Ensure deep copy of template applied to entity.
- Fix an initialization issue when multiple instances of MQTTController are configured.
- Access Control: setting the session timeout to 0 in
-
EnvisalinkController build 24191
This is the initial release of a Controller for Envisalink EVL4 alarm panel interfaces. The controller currently supports only Honeywell panels, but I'm happy to work with anyone who has an EVL4-connected DSC panel to get that working as well.
Distribution package is available in the
extras
folder of the download site. -
Reactor build 24212
- PR 0000376: Search by name is now available on the Reactions list (similar to Entities list).
- Attribute
security_mode.state
recognizesmax
value. - Action
security_mode.set_mode
now takescode
argument (if not given, the default code in the Controller's configuration will be applied, if available). - Dashboard: support
/dashboard/group/<group-canonical-id>
path for direct display of a group. - PR 0000375: Fix a path where a global variable (expressionless) could have its value modified and not update variables that depend on it.
- HassController: Bless Hass to 2024.7.3
-
Reactor build 24243
POTENTIAL BREAKING CHANGE: The conditions in a Reaction's repeat...while group are meant to be Constraints, not Triggers -- they are stateless, meaning that they are evaluated each time they are run, not when an underlying condition triggers them (such as a timer expiring on a sustained for option). This was always meant to be the case, but an error in the UI implementation permitted certain condition options applicable only to trigger conditions. This is now fixed, and any constraints containing condition options will have those options removed during later editing, and the options will not function (they haven't been working correctly anyway) until that time.
- Shell Command action now supports expression substitution. This makes an already dangerous (security-wise) action even moreso, so it must be enabled explicitly by setting
allow_shell_action_substitution: true
in theengine
configuration section ofreactor.yaml
. It is highly recommended that Shell Command actions only be used on systems that have HTTPS access and Access Control (user authentication) enabled, to reduce the possibility that the action could be a vector for attacking the host system and your network. - PR 0000378: VirtualEntityController: fix configuration collision between virtual entities affecting time-series aggregations.
- PR 0000369: Add
error
attribute forev_charger
system capability documentation. - PR 0000349: Support custom sounds for Pushover notification.
- PR 0000290: Display rule ID in rule editor (convenience).
- HassController: Bless Hass to 2024.8.3
ZWaveJSController 24242
BREAKING CHANGE WARNING: The entity IDs of certain child entities may change to reflect a more deterministic naming style. Entities principally effected would be those created in 2022 and earlier for scene activation. Rules that use these entities will need to be updated.
- Handle notification special events (in Notification CC 113 type 6) for locks for better performance of
keypad
capability attributes (where the device and Z-Wave JS support it). - Update Fibaro FGR222/FGRM222 handling for manufacturer proprietary venetian blind position and tilt
- Creation of child entities is expanded to include all command classes that result in capability/attribute collisions on an entity. That is, if two or more values (from Z-Wave JS) on an endpoint resolve to the same Reactor capability, a new child entity is created.
- Shell Command action now supports expression substitution. This makes an already dangerous (security-wise) action even moreso, so it must be enabled explicitly by setting
-
Reactor build 24257
- System Capabilities: the new
tag
system capability has been introduced to extend data and behavior for RFID tags and similar devices. - HassController: Implement
tag_scanned
event handling, which creates a new entity from the tag ID. This entity is updated whenever Hass reports that the tag is detected any scanning device. This automatic event handling does not preempt or prevent user-configurable event handling for different behavior, if desired. - HassController: Improve the initialization of event-driven entities so they are not cleared every time Reactor is restarted (they will be cleared only if a configuration change is detected).
- HassController: The event processor now ensures that
time_fired
is included in the event data before handling. If not, Reactor will provide it. In addition, since Hass passestime_fired
as a string, Reactor will parse the string to an Epoch time (seconds since midnight Jan 1, 1970 UTC) and provide it intime_fired_epoch
, which can be used in user configuration for events. - HassController: Allow filtering of state attributes to reduce rule re-evaluation traffic for related entities. (see docs)
- HassController: Bless Hass to 2024.9.1
ZWaveJSController build 24257
- Fix an issue with polling rescheduling that can cause polling to take too long to re-poll a node after the initial poll.
- Handle forced-write of attributes when processing events for the Notification Command Class.
MQTTController build 24257
- Code cleanups and minor bug fixes; mostly changes to sync with evolution of various system capabilities.
- System Capabilities: the new
-
Reactor build 24293
BARE-METAL USERS: UPDATE YOUR PACKAGES! You must remove any
package-lock.json
file in your Reactor install directory and runnpm i --no-save --no-package-lock --omit dev
after unpacking the Reactor distribution archive. Failure to do so will result in a non-functioning UI (notably non-working dark mode) and many other issues.POTENTIAL BREAKING CHANGE: The validity of characters in entity IDs is now enforced. Previously, only a warning was written to the log if the ID contained invalid characters; now, the entity will not be allowed to exist. If you use VirtualEntityController, MQTTController, or other Controllers where you can configurably create entities, the IDs you establish for those entities must now contain only valid characters, which are ASCII alphanumerics, dash (
-
), underscore (_
), and the high ASCII ranges 192-214, 216-246, and 248-255 (which covers some letters with diacritics). Other characters, including Unicode characters outside this range, are not permitted.POTENTIAL BREAKING CHANGE: The alert attributes have been moved off of the Reactor System (
reactor_system>system
) entity on to a separate Reactor System Alerts (reactor_system>alerts
) entity. If you have Rules or Reactions that use alert data in conditions, you will need to point them to the new entity/attributes.LOCALIZATION UPDATE: There are several new strings in the reference localization template (new version 24293). See the Github repository for the current reference version and change log.
- Entity action implementations can now return values/results and store them directly to a local (Rule-based) or global variable for further processing. Note that HassController was previously (in build 24115) given this ability in a slightly different form, where the response was written to a single attribute from which it could be retrieved by other expressions. HassController will support both mechanisms for the foreseeable future, but transition to the new mechanism is recommended.
- New Script Action action in Reactions allows you to run an expression/script in-line in a Reaction. This is intended to simplify handing of results from Entity Actions that return results.
- Fixed a bug in the changes operator where, if there were terminal values (values for changes from, to, or both), the output would pulse rather than "stick." The design intent was such that it should stick, because a change with terminal values is predictably persistent (i.e. a condition that watches for an alarm panel state change from
disarmed
toaway
will go true and should stay true as long as the alarm panel remains inaway
state). When there are no terminal values, a change is still signalled with a pulse (i.e. a change from any value to any other value produces a pulse, and is then ready to signal a change to yet another value). - Capabilities may now define user-writable attributes, and the user may set the value of such an attribute on an entity. The intent of this feature is to provide storage for user preference in actions (such as the amount to change the light level when performing
dimming.up
), but could have many other uses. To make an attribute user-writable, the developer must includewritable: true
in the attribute definition. Attributes derived from device data (like switch state or blind position; i.e. where a Controller instance controls the value) are not writable by the user and should not be made user-writable by developers. User-writable attribute values can be set using the new Set Attribute button in Entity list detail cards, or using thereactor_entity.set_attribute
action. - New
reactor_entity
capability is extended to all entities, and contains actions to rename the entity and set its writable attributes. - Additional work to preserve the state of attributes across upgrades/changes to underlying capabilities and implementations. The new Controller methods
refreshCapabilites()
andrefreshCapability()
provide a mechanism for updating an Entity's stored capability data without losing the values of attributes and metadata that exist in both the old and new versions of a capability. - Logger now supports (via
logging.yaml
entry) the rotation of log files on specific intervals. Themaxage: time
configuration can be added, wheretime
is an integer followed bysecs
,mins
,hours
, ordays
. These may be abbreviated to a single character (e.g.1d
or4h
). If thetime
is an integer only, the units are assumed to bedays
. - DynamicGroupController now supports an expanded form of
group_actions
configuration to more narrowly specify which actions are to be made available as group actions. See the Group Actions section of the documentation for DynamicGroupController. - UI now has a dark theme (long-awaited).
- UI (Reaction Editor) for HTTP Request action now shows more clearly that when storing response to a variable, it must wait for the response to complete (i.e. when you choose a target variable, it automatically checks the "Wait for" checkbox in addition to disabling it). The semantics of this have been documented since inception, but the UI now reinforces the concept in its display.
- UI (Entities List) detail cards for Entities now have a Perform dropdown to run actions, rather than a list of links. The selected action is performed immediately if it has no arguments; otherwise, the arguments are requested in a modal dialog as before. This should improve access to actions on entities from this area.
- New expression functions from updated
lexpjs
:isvalue()
,scale()
,constrain()
. See docs for Expressions. - PR 0000380: Resolve an issue with an optional argument in a HAss-specific service requiring a value in the action editor (service climate.set_temperature for example).
- A (very) simple log file viewer/fetcher is now available at
/api/v1/log
. The optionalfile
query parameter can be given to select which log file (by name); by default,reactor.log
is displayed. This endpoint is protected when access control is enabled, so if you are using access control, you may need to modify an existing ACL or create a new one to enable access to it. - HassController: Bless Hass to 2024.10.3
-
Reactor build 24296
UPGRADE NOTICE: If you are upgrading to this version from earlier than 24293, please update your packages! See the notes and instructions for build 24293 above for instructions and other notices.
- Fix a race condition when painting the Status tab when painting a widget that must traverse the ruleset index.
- Make sure errors thrown by widgets show in the widget container, not by popping the exception dialog.
- Fix activation of the Expressions tab so it paints every time (a guard for edit mode was too aggressive, because this tab is always in edit mode).
- Fix a number of reported appearance issues, and some new ones.
-
Reactor build 24302
UPGRADE NOTICE: If you are upgrading to this version from earlier than 24293, please see the notes and instructions for 24293 for additional actions you need to perform during upgrade.
- You may supply a CSS (Cascading Style Sheet) containing customizations for Bootstrap 5.3 in a file called
config/customstyles.css
. This allows you to further adjust theme colors to your liking. For instructions on how to customize Bootstrap styles, refer to its documentation. - PR 0000383 (and 385): The changes operator was not allowing "pulse" output option. It is now allowed (whether terminal values are used or not).
NUTController build 24303
- PR 0000384: Fix an error that may be thrown when the NUT client library fails to get the UPS list from the service. This error prevents the real error from being logged properly.
- You may supply a CSS (Cascading Style Sheet) containing customizations for Bootstrap 5.3 in a file called
-
Reactor STABLE Update
The stable branch of Reactor is now updated to build 24257. For changes, please scroll back and see the changes and advisory listed since the previous stable branch build (which was 24057).
IMPORTANT: Bare-metal users will need to update installed packages (run
npm i --no-save --no-package-lock --omit-dev
in the Reactor install directory).NOTE: This stable branch build no longer supports nodejs versions under 18. If you are installing Reactor bare-metal (i.e. not using docker), please make sure you have upgraded to nodejs 18+. An even-numbered LTS (Long-Term Support) version of nodejs is recommended.
-
Reactor build 24343
BARE-METAL USERS: Please run
npm run deps
from your Reactor install directory to upgrade packages. Remove any existingpackage-lock.json
file first if it exists. These steps are only required for bare-metal installs (does not apply to Docker).NOTE: Notable UI Change: removing widgets on the Status tab now requires you to drag the widget (by its header) to the top navigation bar and release it there. Previously, moving a widget anywhere outside the content panel would remove it, but this was troublesome for small touch displays (too easy to remove items while scrolling).
NOTE: If your Current Alerts widget displays two menu icons in its header, remove the widget (by dragging it to the top nav bar and releasing it), and then create a new replacement Current Alerts widget.
- PR 0000389: Improve mobile device compatibility. Although many aspects of the UI have been tweaked for better presentation on small displays, it will continue to be the case that editing of major system objects (Rules, Reactions, Expressions) is a high-interactivity task, and the design goals do not and will not include "mobile first" compatibility for that.
- PR 0000387: Make VirtualEntityController operation of
reactor_system.set_attribute
action identical to (and in fact, just an alias for)x_virtualentity.set_attribute
. On virtual entities, all attributes are de-facto writable. - PR 0000386: Fix an issue with HubitatController where it could attempt to set
NaN
on an attribute, generating a warning in the log. - The Reaction List has been modified to show a spinner while a Reaction is running, rather than holding a green highlight.
- Fix an issue with the Reaction List not repainting correctly after editing a (global) reaction.
- Additional hard-coded colors in some CSS styles have been removed in favor of CSS variables (Bootstrap- or Reactor-defined). This should help user making custom themes.
- Improve the error message given when a script/expression attempts to set a global variable that is not writable (i.e. it's not expressionless).
- The default action handlers for increasing/decreasing values in
dimming
,position
, andvolume
capabilities has been updated to more consistently move in increments of the related step value. For example, when the current dimming level is 0.55 (55%), thedimming.up
action with a step of 0.1 will move to 0.6 rather than 0.65 as previously implemented. Not all devices/Controllers use the default action handlers for these actions — if the Controller implements its own semantics, this change has no effect. - VirtualEntityController can now do HTTP requests in actions. This allows you to create a virtual entity that functions as an interface for a device that is HTTP-controllable without the need to write a custom Controller instance. See the docs for VirtualEntityController for updated section on actions.
- HassController: Bless Hass to 2024.11.3
I am working on some bigger structural changes to Reactor, and have been for a while now. In the interest of finishing those changes, the rate of
latest
builds is going to go down for a bit. I will, of course, address any serious issues that need fixing during that time.