@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
-
Build 21243
- HubitatController: Resolve exception thrown when attempting to set mode.
- HassController: Blessed Hass version 2021.8.8
-
Build 21256
- Fix issue with HTTP Request action post body causing exception;
- The maximum wait time for controllers to become available when Reactor starts is now configurable via the
startup_wait
key in theengine
section ofreactor.yaml
. Users of the similarly-namedstartup_delay
, which is a fixed delay, are encouraged to usestartup_wait
instead. - The Rule detail display in the Rule Sets list was not correctly showing some non-primitive values (objects and arrays) correctly.
- HassController: Blessed Hass version 2021.9.6
-
Build 21258
- Warning and clear when changing operator on condition that would clear condition options.
- Fix Vera importer geotag handling.
- VeraController: add binary
x_vera_geotag.in_region
attribute. - HassController: implement
x_hass_system.call_service
on system entities.
-
Build 21267
- Change the evaluation algorithm for global variables to make them reactive. That is, global variables are now automatically reevaluated when dependent global variables or entities (from use
getEntity()
) change. They will also drive evaluation of rules when a rule-based expression or trigger condition references a global variable that changes. - A new version of lexpjs supporting the above changes is being used; this version includes local scope for the interior of most statements, which may break some expressions (in particular, those that breach etiquette and create variables inside loops but access them outside).
- First version with localization capability. Users interested in localizing the user interface for their language/country can read the how-to documentation.
Expressions Changes
This release comes with some significant changes to the operation of global expressions in particular, and some expression tweaks throughout.
First, the expression language has been given the concept of scope; specifically, the statements
each
,first
,do...done
,if then else endif
now have local scopes for their interior expressions. Variables created in the interior of these statements are not visible outside of these statements (they are implicitlylocal
), unless the variable already exists in an enclosing scope. This is probably not going to cause anyone much heartburn on existing expressions with these statements. I don't see many of you pushing the limits in this area of the expression language that would make it an issue. We'll handle exceptions as they come up.Second, and more importantly, Reactor now evaluates and treats global variables differently, and I think you'll agree this is a good change and brings more useful, even expected, behavior. The details:
- Global variables are now reactive; for example, when a global variable that contains a
getEntity()
expression detects that the entity is modified, the global variable's expression is automatically recalculated. In previous versions of MSR, the variable was not re-evaluated until a rule requested the global variable's value. - Global variables are recalculated when they reference another global variable, and that global variable changes (for whatever reason). If, for example, you have a rule that periodically fetches JSON data from a web site and stores the response in a global variable, and other global variables that draw on that data, those dependent variables will be reevaluated when the variable holding the response is modified.
- Rules will be reactive to global variable changes that do not involve entities. Previously, MSR rules would only re-evaluate on a change to a global variable if that variable involved a
getEntity()
expression. In fact, Reactor was not reacting to the variable change, it was reacting to the entity change. Now, Reactor truly reacts to the global variable change, which means it will also respond to the change in values of case #2 above -- if a rule is dependent on a global variable, any change to that global variable for any reason will cause the rule to re-evaluate, and based on its conditions, possibly change state. - You can disable the dependency and auto-recalculation of a global variable, because sometimes its useful to do that.
Given these changes, it is pretty easy to create reference loops. There's nothing stopping you from creating a variable A and compute its value from B, and then create B and have it set its value based on A. This will get you loop errors and a stop on evaluation; it won't be subtle. Similar abuses between global variables and rules and the overzealous use of Set Variable actions can also lead to rule loops throttling. Any time you use Set Variable in a rule-based reaction where that rule also uses the variable in triggers, you are running the risk of such a loop, so be careful.
Reactor for Vera doesn't have global variables, so at the time it was implemented as a new feature of MSR, simplifying assumptions were made. I hope you'll agree this is a useful evolution of their behavior.
Docs are updated, so make sure you check them out.
Localization
This is the first release that has the bulk of my recent work on localization. I'm barely passable at German, certainly not enough so to do a translation, and know enough Spanish to order a beer and get slapped by members of the opposite sex, but that's about it for me for languages (I used to teach Latin in an elementary school, but I doubt there's much demand for that translation). So while the system now recognizes the language configuration of your browser and host system automatically, it won't be able to present in any language other than US English because that's the only string file available. If any native speakers of other languages (including UK and Australian English) would like to step up and do a localization, let me know — that would be your work product to own and distribute as an add-on (e.g. through Github, etc.) to the community, and optionally include in Reactor distributions if you're willing (as a redistributed/third-party work with attribution on the About page). The US English file, which is the reference for all strings and starting point for translations, can be found in this Github repository: https://github.com/toggledbits/msr-localization
- Change the evaluation algorithm for global variables to make them reactive. That is, global variables are now automatically reevaluated when dependent global variables or entities (from use
-
Build 21270
- Fix an issue with EzloController not processing device match expressions correctly on newer lexpjs.
- Add
matchEntities()
function (see docs) - Further localization improvements and fixes.
-
Build 21275
NOTICE: This revision incorporates a breaking change to the recently-introduced
matchEntities()
expression function. See below.- VeraController: Devices of type
...:FloodSensor1
now use theleak_sensor
(specific) capability; they maintain their previous use of the genericbinary_sensor
capability for backward compatiblity with existing automations. - EzloController: Fix a stack overflow that could occur under certain boundary conditions.
- OWMController: Fix a broken context initialization for
lexpjs
causing user-configured "extra data" fields with expressions to throw a soft error and report an incorrect (null) value. - Improve interaction between Engine and UI when global expressions are created: they are now given an initial evaluation and their dependency tree built at that time. Previously, a rule reference or manual UI interaction (e.g. "Try Now" button press) was required to initialize it.
- Improve interaction between Engine and UI when global variables are deleted: the deleted variable is now removed from the Engine's evaluation dependency tree to avoid spurious "Expression Not Found" exceptions in the log for the then-deleted variable. These would stop after a restart, because the dependency tree was rebuilt at that time, but it should not take a restart to fix the tree.
- Fix an error in the parameters of the
isRuleSet
andisRuleEnabled
expression functions that would cause a constructor error when global expressions using these functions were initialized at system startup, before the Engine had loaded the rules. This error was exposed by the changes made to support global variable dependency graphs. - When deleting system objects, wait until all notifications have been given and returned, to assure that the object being deleted is not actually deleted before the notified object has a chance to do whatever it needs to do. The former behavior had no adverse effect; this was a change to gain new behavior necessary to support the global variable dependency tree update on delete mentioned above.
- Fix a bug in the recording of the timestamp of modification of a global variable; it was using real time rather than virtual time, so when the engine was configured for "Test Time", it was recording incorrect (i.e. non-test time) values.
- The check for circular dependencies in the evaluation of global variables was relaxed to allow self-references (e.g.
series = push( series, value )
). - BREAKING: The
matchEntities()
function now returns only a list of canonical IDs for matched entities. You will need to use thegetEntity()
function to fetch current data for the entity if you need it. This was done because the previously-returned list of entity objects could grow "stale" (the data in the objects reflects the state at the time, not ever-changing and ongoing state as attributes change). And yes, this is exactly the kind of thing I said I try to avoid, but sometimes you just don't know all the side-effects until you see the thing in the wild. Sorry, everyone. - New expression functions:
fileExists()
,fileRead()
,fileWrite()
. See the docs. - Incorporates a hotfix made to 21270 for the
SetVariable
action on Vera hubs.
- VeraController: Devices of type
-
Build 21277
- HubitatController: Fix a problem with setting RGB color.
- Fix an issue causing "Object not found" exceptions when evaluating a
getEntity()
call in a subcontext of a rule-based expression (e.g. within aneach
loop). - Fix a number of issues required for localization (thank you, @Crille ).
-
-
Build 21281
- In prior versions, a reference to a variable (rule or global) that does not exist would cause an alert and "fail soft" by returning null. This (old) behavior actually hides such errors and makes them more difficult to locate, and generally speaking, you shouldn't be referring to things that don't exist. The new behavior is to throw an exception during the evaluation, which will more clearly highlight the error and make it easier to find and correct. If for some reason you still need the old behavior, you can set
deprecated_undefined_global_soft_fail
to true in theengine
section ofreactor.yaml
, and such errors will soft-fail as before. The old behavior is deprecated, however, and will be removed in a few months. - PR 0000260: Fix failure of HTTP Request (really underlying variable handling) to notice change in array of objects returned by request.
- PR 0000259: Need to more clearly highlight variables with errors in the expression editor. Failing expressions now receive orange highlight bars.
- Add
typeof()
expression function. - Additional localization changes.
- New HTTP API additions: add alert, dismiss alert
- Bless Home Assistant to 2021.10.0
- In prior versions, a reference to a variable (rule or global) that does not exist would cause an alert and "fail soft" by returning null. This (old) behavior actually hides such errors and makes them more difficult to locate, and generally speaking, you shouldn't be referring to things that don't exist. The new behavior is to throw an exception during the evaluation, which will more clearly highlight the error and make it easier to find and correct. If for some reason you still need the old behavior, you can set
-
Build 21286
- InfluxFeed now supports InfluxDB version 1.8+ and 2.0. InfluxDB versions prior to 1.8 are no longer supported. Please see the documentation for configuration details, as the configuration requirements for 1.x and 2.0 are different. Users of InfluxFeed also need to
npm update --nosave
if they are bare-metal installed. - The behavior of rules when throttled has been improved. Note, however, that any time a rule is throttled, events could be missed (e.g. if a light that is a dependency of a rule is turned on and back off quickly when throttled, the rule may not "see" the on event).
- Ongoing documentation updates.
- Bless Hass to 2021.10.4
- First version to contain a foreign language translation, Swedish! Thank you @Crille for your work on the translation and helping me get localization working.
- Address possible evaluation loop while using SetVariable in a rule reaction on a rule variable, where the value is an expression that contains a
getEntity()
reference. - Documentation updates
- Further i18n fixes (thank you @Crille)
- InfluxFeed now supports InfluxDB version 1.8+ and 2.0. InfluxDB versions prior to 1.8 are no longer supported. Please see the documentation for configuration details, as the configuration requirements for 1.x and 2.0 are different. Users of InfluxFeed also need to
-
Build 21292
- PR 0000262: Fix an error in handling date/time conditions with M/D across new year boundary.
- PR 0000261: HubitatController: Resolve an order of operations issue preventing extended attributes from being assigned as primary in local config.
- PR 0000258: (i18n) Fix string reference for condition option
- HassController: treat controller reporting NOT_RUNNING as an error and disconnect/retry
- Bless Hass to 2021.10.6
-
Build 21294
- PR 000263: Fix spurious log messages after deleting a global expression that contained a
getEntity()
. - Fixed a UI issue with an expression being sorted to the top of the list then ending up at the bottom.
- The expression function
strftime()
is now locale-aware. - Docker containers are now running on nodejs version 16.
- PR 000263: Fix spurious log messages after deleting a global expression that contained a
-
Build 21297
- PR 0000264: Fix an error in the rule editor on a particular value test used in several places that could cause the entered value of a condition option to not be saved (most notable on the "repeats within" field, but also found in two other locations).
- Update to lexpjs 21296 to get
sort()
function for arrays, and user-definable functions from expressions. Default sort in Reactor Engine for the implemention of expressionsort()
function is (host) locale-aware. Please refer to the documentation for details.
-
Build 21306
Note: this release includes changes to package dependencies. Bare-metal users please run
npm update --no-save
to resolve.- HTTP Request action now has explicit control over HTTP auth, with type selection (none, Basic, Digest) and credential fields (username and password).
- PR 0000265: Correct a string that is not translated in the alerts status panel.
- i18n: Found an additional string that was not localizable.
- The HTTP Request action will now suppress all alerts for any error it encounters, not just HTTP errors, if the "no error alerts" option is checked.
- Update lexpjs to get new array set functions:
arrayIntersection()
,arrayUnion()
,arrayDifference()
,arrayExclusive()
andarrayConcat()
.
-
Build 21307
- PR 0000266: An issue introduced at 21306 saves certain substitutions with the wrong data type.
- HubitatController: Resolve (hopefully) a race condition at startup.
-
Build 21313
- Bless Home Assistant to version 2021.11.2
- New system capability
button
to express state of a single button or contact closure. - PR 0000268: Sun condition shows "not between" as "between" in rule detail card.
- Add
/alert/:tag
HTTP API endpoint (DELETE method); this deprecates/alert/:tag/dismiss
.
-
Build 21321
- HassController: Additional updates for event handling (
init
support). - HubitatController: Map additional capabilities.
- Internal support additionals for MQTTController
MQTTController - Build 21321
- Fix incorrect scope reference is tasmota_generic_relay payload.
- Additional helpful debug.
Upgrading MQTTController, which is a standalone/add-on component, is the same procedure as initial installation.
- HassController: Additional updates for event handling (
-
Build 21331
Please note that Hubitat has released version 2.30 of its firmware, but it has not yet been tested with HubitatController and is not yet supported.
- DynamicGroupController: new controller to build dynamic groups. Refer to the docs for configuration information.
- Logger: new
recycle
flag, when true, each startup rotates the log file so the new run starts in a fresh file (makes some debugging easier); the file mode of the logs created can now be set by setting themode
key. - Bump recommended nodejs version to 16.13.0; versions 14 and 15 will continue to be supported through March 31, 2022; docker containers are built with recommended versions, and require no user action, but bare-metal users should check their node version (
node -v
) and if necessary make a plan to upgrade before 3/31. - Update to lexpjs 31330; adds built-in
median( array )
function; provides extendedfirst...in
syntax with (new) optional result expression; refer to docs. - PR 0000270: [HubitatController] Apparently Hubitat needs action pacing like VeraController (that is, it can be overwhelmed if too many actions are sent at once). Pacing is now enabled with a default of 25ms delay between actions.
- PR 0000269: [UI] Rename Reaction dialog for global reactions prepopulates name from start of editor session rather than most recent name given if rename is used several times within one session.
- Bless Home Assistant to version 2021.11.5
MQTTController - Build 21331
- More carefully guard sensors (in templates) from payloads that don't contain the sensor data (i.e. avoid setting null value if an update is published with data missing).
- Additional templates for Tasmota and Shelly.
- Documentation updates and clarifications.
-
Build 21332
- DynamicGroupController: Fix missing initialization in preload for some selectors (blocking bug, no PR in Mantis).
- Documentation build fix so all documents receive correct left navigation.
- Condition operator is [not] EMPTY has been added to ease checking of group member arrays and other values for emptiness; see the docs Entity Attribute conditions for details on what "empty" means in this context.
-
Build 21336
If you have been with Reactor since before 21075 (March 15, 2021), your
logging.yaml
configuration may have a relative path in thename
keys of the default streams (e.g../logs/reactor.log
). These must be changed to just a simple filename (e.g.reactor.log
). Reactor has been warning you at startup (in the log file) about this since 21075, if it applies to you (i.e. your logging config uses a relative path), but if you haven't seen it, you may not have changed it. The time to check it/change it is now, because the next version of Reactor that is released will not allow pathnames (relative or absolute) in this key, and will not run if it finds one.- DynamicGroupController: map actions in known capabilities of selected objects, so that groups can perform actions on their members. For example, performing the
power_switch.off
action on a group will do so on all of its members that support that action. - Logging: Fix support of log streams so that subsystems declaring their own log streams operate correctly; fix a number of long-standing annoyances in the configuration and handling (no changes to user configuration requirements except as noted above); improved "panic mode" (used when no configured stream is writable).
- Dashboard: improved layout for
string_sensor
capability objects. - HubitatController: Bless firmware 2.3.0.113
- HubitatController: extend recent additions to capabilities (
string_sensor
) to the mode and HSM entities. Reduce reliance on the custom/hub-specific extension capability. - HubitatController: New "type guessing", experimental, to try to reduce effort for this hub in particular in determining device types and primary attributes. This is a work in progress (but then, what isn't?).
- PR 0000271: Fix a missing localization in rule detail panel, operator in group titles (reported by @Crille).
- Improvements to
rpi-install.sh
script to handle upgrade of systemd script when upgrading nodejs. - A number of internal fixes related to linting of the code.
- As always, a number of documentation updates.
- DynamicGroupController: map actions in known capabilities of selected objects, so that groups can perform actions on their members. For example, performing the
-
Build 21337
- Document additional keys for logging in the
dist-config
template. There is also existing, but not well-organized, docs on the Logging page of the manual (which at the moment lives under Troubleshooting). - HubitatController: ensure
x_hubitat
andx_hubitat_extra_attribute
capabilites are declared and extended so their attributes can be assigned as primary. - PR 0000272: Localization issue in input fields for date/time condition.
- PR 0000273: Pulse after sustained for delay is shortened by the delay.
- Document additional keys for logging in the