-
EDIT: 2022.07.01
So I will try to remake this thread to some kind of guide for future use, or in worst case a documentation of my failure. At least that could also be useful for letting someone know what didn't work...
I have zero knowledge of programming, so every time I need to edit a config file in HomeAssistant or similar it requires a good portion of googletime and read, re-reading instructions.
Also is english not my native language, so bear with me.Two goals!
1: Get MSR to take notice (and then actions of course) of pressed buttons on remotes.
2: Document what I do in hope I can help someone else in the future.I will use a Fibaro Keyfob as described below, but what I understand from Togglebits answers most type of remotes should work in similar ways.
Original thread:
Fibaro Keyfob support in MSR? (thru Hassio & Z-wave JS)
HiI just bought a Fibaro Keyfob FGKF-601 and plan to give this to my son so he can control some stuff in his own room. Primary some lightning and Sonos, maybe blinds in the future.
As the noob I am it will, of course, not work as I expected.👶🏻
The remote handle 1x, 2x, 3x clicks per button (six of them) and "release button"
I thought that it would appear like some "scene controller" in HA and that I could make Rules in MSR depending on what scene-entety that was triggered.
So is not the case, and if that is because of HA, Z-wave JS or MSR I have no idea.
I found a HA Blueprint that works in HA, but of course I would prefer to keep all automation in MSR.
I guess a workaround could be using HA virtual switches "Helpers" that I suppose will come up as an on/off trigger in MSR, but before going this way I would like to check with the wisdom of your guys if there is a better way of doing this.I am using:
MSR 22168 on windows.
Home Assistant Core 2022.6.7
Home Assistant Supervisor 2022.05.3
Home Assistant OS 7.6
Z-Wave JS version: 0.1.64 -
Need to ask, have thougth about this since the move from Rector to MSR I think.
What is the difference between putting constraints under trigger groups, like this
23b4a249-3292-41cd-9927-7f49c9bf1d07-image.pngCompared to this similar rule, but the time limits is under contraints instead?
ee596c9f-f52b-4a39-9605-f5932f3d9ed5-image.pngI think the Constraints parts in manual is still to be done because I can only find in the chapter menu, but it is not mentioned anywhere else.
-
-
Running MSR 22123 in Docker container and trying to use "condition must occur after" option. Will update to the latest build and log a PR if needed, but wanted to poll first if anyone is using this option successfully?
I have the following rules:
Screenshot 2022-06-28 at 15.18.50.png
Notification activity connected to "Alarm disabled" rule did not trigger. I also did another test with quite simple rules and that didn't work either (FWIIW - when observing that test in "real-time", I didn't see any timer running on the second rule while the first rule was true).
As said, before going further with debug/logs, nice to know if someone is using this option/restriction (successfully).
-
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. -
Before updating to 22178 there was a primary value echoed in MQTTControllers echo capability, can I tell the controller which value to put as primary from HASS sensors after this change as it now is null? or is it a bug?
I have not changed the
primary_attributes: trueReactor latest-22178 bare metal
Hass 2022.6.7Edit: Solved in build 22179
-
Hi!
I have a system that I consider pretty stable, running in a VM Ubuntu 20.04, it has some communication failures, but I think more by HE than by the OS/MSR.
I'm thinking of taking the next step to get more advantages from the system, and I'm thinking of using InfluxDB maybe for queries or to extend rules.
The question is, I would like practical examples of what really helps to install InfluxDB? What would you be doing that really makes a difference with this installation? Can you post examples of features or information?
Thanks
-
Hi Everyone,
MSR had a docker image file naming convention change, and I am not exactly sure how to swap the image out. I'm sure it's not rocket science, I've just never done this before.
I am using a Synology NAS, and under the environment tab there is a "REACTOR_IMAGE" variable. Can I just change the image name to the new image naming convention and clear the container, or should I launch a new container and populate the volume location from the previous reactor?
Thanks in advance
-
Please can anyone give me advice on a cheap way to run MSR (both initial cost and ongoing electricity cost). I currently run it on my QNAP network drive (which works very well incidentally). However, this draws a constant 35Watts (£90/yr @ 30p/kWh) and given the recent rise in fuel costs I am evaluating the best way forwards. Note, I only really need to turn my QNAP on for an hour a week to back-up my computer data. I understand that MSR can run on a Raspberry PI, but I am not competent with Linux! Thanks.
-
I have made good progress setting up a new Raspberry PI 4 with the latest OS (64bit) and latest Reactor images in Docker. However I am not able to copy my configuraiton files (.yml) and reactor reactions over. I am not yet that confident with linux commands, so I have tired to drag and drop the files from a USB drive to the working folders in my new Raspberry PI. I am getting a popup in the GUI stating 'The file operation was completed with errors.' and Errors occured: "rule-xxxxxx.json: Error opening file "/home/pi/reactor/....................................json":Permission denied.
I suspect it's something to do with permissions?
Is there an easier way to copy my configuration over??
-
Hello All -
I'm gradually moving away from Vera to Home Assistant. I've recently gotten the Alexa and Mini Media Player setup in Home Assistant and everything is working well.
Is there a way to call this service from Reactor? My goal is to send TTS requests to HAAS upon certain events within Reactor (e.g. "Front Door Opened")
-
I have a Tripp-Lite UPS (https://www.tripplite.com/smartpro-lcd-120v-1500va-900w-line-interactive-ups-avr-tower-lcd-usb-10-outlets~smart1500lcdt) that connected by a USB cable to my computer, reports various power supply and failure information, as shown in the panel below.
b9f0ea34-d654-4b26-b968-4f8cf0a4e0c1-image.png
afa73913-5318-42c6-af9a-02d36e2e6ea1-image.png
The application I installed runs Java and opens the console to send the information.
Has anyone tried to bring the information into the MSR? Or even a VeraPlus?
Thanks.
-
-
It appears that in the Manual, under Management>Network Status is for Reactor on Vera. Is the Internet check functionality available with MSR and if so is there updated instructions? I do see a variable reactor_system.internet.ok but the value is null.
I am looking for a way to check for internet status with MSR before installing an extra app on a hub to get the information.Synology Docker latest-22149
-
Windows Server 2022 Build 20348
Nodejs v16.14.0
Currently running Reactor (Multi-hub) stable-22119-ae7212f
Linked to Hass 2022.0.5.4 (on a different box)
Windows server is dedicated to MSR and doesn't do anything else.I'd like to upgrade to 22136 to take advantage of the SSL feature added recently, and also to bring my current version of Hass into the 'supported' column with MSR.
Following the instructions here: link text, section "Upgrade Windows Bare Metal"
Stop Reactor Service Extract the zip, overwriting the reactor folder in c:\reactor\reactor There is no package-lock.json file so I skip that. Run "npm install --no-save --omit dev"Next step is to start the service. I start the service and it immediately stops. "Windows could not start the Reactor service on Local Computer. Error 1067: The process terminated unexpectedly".
Tried rebooting, service won't stay running.
I suspect I'm missing something, it's probably obvious but I've not been able to figure it out.
I rolled back the reactor folder version (Windows Shadow copies) and then the service starts fine.
Anyone else running Windows and know what I'm missing?
Tail of log file from running OK version, before upgrade attempt [stable-22119]2022-06-01T22:20:19.081Z <Rule:INFO> Lounge Billy Ambient Lighting - Turn On (Rule#rule-l0ki453b) evaluation complete [stable-22119]2022-06-01T22:20:19.082Z <httpapi:NOTICE> HTTP API v1 22021 base URL http://172.16.128.6:8111; listening [stable-22119]2022-06-01T22:20:19.228Z <app:NOTICE> HTTP server running; registering proxy endpoints. [stable-22119]2022-06-01T22:20:19.228Z <app:NOTICE> Starting WSAPI... [stable-22119]2022-06-01T22:20:19.229Z <wsapi:NOTICE> wsapi: starting version 21334 [stable-22119]2022-06-01T22:20:19.656Z <Engine:INFO> [Engine]Engine#1 master timer tick, local time "6/2/2022, 8:20:19 AM" (TZ offset 600 mins from UTC) [stable-22119]2022-06-01T22:27:54.788Z <wsapi:INFO> wsapi: connection from ::ffff:172.16.128.5 Tail of log file from failed to start after upgrade (is identical, ii.e. nothing has been appended to it) [stable-22119]2022-06-01T22:20:19.081Z <Rule:INFO> Lounge Billy Ambient Lighting - Turn On (Rule#rule-l0ki453b) evaluation complete [stable-22119]2022-06-01T22:20:19.082Z <httpapi:NOTICE> HTTP API v1 22021 base URL http://172.16.128.6:8111; listening [stable-22119]2022-06-01T22:20:19.228Z <app:NOTICE> HTTP server running; registering proxy endpoints. [stable-22119]2022-06-01T22:20:19.228Z <app:NOTICE> Starting WSAPI... [stable-22119]2022-06-01T22:20:19.229Z <wsapi:NOTICE> wsapi: starting version 21334 [stable-22119]2022-06-01T22:20:19.656Z <Engine:INFO> [Engine]Engine#1 master timer tick, local time "6/2/2022, 8:20:19 AM" (TZ offset 600 mins from UTC) [stable-22119]2022-06-01T22:27:54.788Z <wsapi:INFO> wsapi: connection from ::ffff:172.16.128.5 reactor.wrapper.log (log file the failed to start event points to) 2022-06-02 08:19:23 - Stopping reactor.exe 2022-06-02 08:19:23 - ProcessKill 3628 2022-06-02 08:19:25 - Shutdown exception Message:A system shutdown is in progress. Stacktrace: at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) at System.Management.ManagementScope.InitializeGuts(Object o) at System.Management.ManagementScope.Initialize() at System.Management.ManagementObjectSearcher.Initialize() at System.Management.ManagementObjectSearcher.Get() at winsw.WrapperService.GetChildPids(Int32 pid) at winsw.WrapperService.StopProcessAndChildren(Int32 pid) at winsw.WrapperService.StopIt() at winsw.WrapperService.OnShutdown() 2022-06-02 08:20:11 - Starting C:\Program Files\nodejs\node.exe C:\reactor\reactor\node_modules\node-windows\lib\wrapper.js --file C:\reactor\reactor\app.js --scriptoptions= --log "Reactor wrapper" --grow 0.25 --wait 1 --maxrestarts 3 --abortonerror n --stopparentfirst undefined 2022-06-02 08:20:11 - Started 3272 2022-06-02 08:30:54 - Stopping reactor.exe 2022-06-02 08:30:54 - ProcessKill 3272 2022-06-02 08:30:54 - Found child process: 3280 Name: conhost.exe 2022-06-02 08:30:54 - Found child process: 3504 Name: node.exe 2022-06-02 08:30:54 - Stopping process 3280 2022-06-02 08:30:54 - Send SIGINT 3280 2022-06-02 08:30:54 - SIGINT to 3280 failed - Killing as fallback 2022-06-02 08:30:54 - Stopping process 3504 2022-06-02 08:30:54 - Send SIGINT 3504 2022-06-02 08:30:54 - SIGINT to 3504 failed - Killing as fallback 2022-06-02 08:30:54 - Stopping process 3272 2022-06-02 08:30:54 - Send SIGINT 3272 2022-06-02 08:30:54 - SIGINT to 3272 failed - Killing as fallback 2022-06-02 08:30:54 - Finished reactor.exe 2022-06-02 08:33:41 - Starting C:\Program Files\nodejs\node.exe C:\reactor\reactor\node_modules\node-windows\lib\wrapper.js --file C:\reactor\reactor\app.js --scriptoptions= --log "Reactor wrapper" --grow 0.25 --wait 1 --maxrestarts 3 --abortonerror n --stopparentfirst undefined 2022-06-02 08:33:41 - Started 4184 2022-06-02 08:36:57 - Starting C:\Program Files\nodejs\node.exe C:\reactor\reactor\node_modules\node-windows\lib\wrapper.js --file C:\reactor\reactor\app.js --scriptoptions= --log "Reactor wrapper" --grow 0.25 --wait 1 --maxrestarts 3 --abortonerror n --stopparentfirst undefined 2022-06-02 08:36:57 - Started 3100 Windows event log event: Child process [4184 - C:\Program Files\nodejs\node.exe C:\reactor\reactor\node_modules\node-windows\lib\wrapper.js --file C:\reactor\reactor\app.js --scriptoptions= --log "Reactor wrapper" --grow 0.25 --wait 1 --maxrestarts 3 --abortonerror n --stopparentfirst undefined] finished with 1 -
-
Hello Patrick,
On the status page rule history is there any adjustably on length of the history shown? I had an occasion where it would have been helpful to go a few notches farther back than it does as currently configured.
I don't know if this is a log parser or if it is a separate smaller data set. If it is a log parser, any chance for maybe something like a "more" button?
Thanks,
Mike -
I can't find any posts or reference in docs for this log message
<EzloController:NOTICE> EzloController#ezlo received notice of new device, but auto-rediscover is OFF; ignoringI've restarted MSR and hard refreshed browser but the new entity is not added. Can I set auto-rediscover to ON or how do I get the new device added into Reactor?
Edit:
Bare metal latest-22142
The device is a Xiaomi Mini Switch, it's publishing correct values in ezmqtt.Edit 2: The Xiaomi Aqara Mini Switch is now mapped in build 22149.
-
334ccd7a-9499-4dea-8a4a-2347609dce62-image.png
For the life of me I cannot figure this out.
when I run the du -hs command (from the host) for the mapped volume I get 25M
(/home/seth/ReactorConfig maps to /var/reactor)Inside the container I ran du -hs for each of the folders that the ui is complaining about
/opt/reactor = 71.2M
/var/reactor/storage = 2.9M
/var/reactor/logs = 17.6MIf I run df on the docker container I get this. Disk space is not critical
1f5d230c-0792-468b-b3b7-9f45e31581c5-image.pngWhat gives?
Logic loop? Throttling...
-
Hi Patrick! @toggledbits
I don't remember before version 21277 receiving this kind of message.
This is in the log, this warning appears hundreds of times, every 1 second it repeats.
[latest-21281]2021-10-10T16:13:46.107Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-10T16:13:46.482Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-10T16:13:46.835Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...As you can see, the rule that has generated this warning is run on demand at 10am, where the information is loaded into local variables, and then I use it to send the information by Telegram, only once a day.
I started using this matchEntities() instruction recently when it was made available, and I see you have been making recent adjustments. Wouldn't this situation of continuing to evaluate be related?
I will turn the rule off, so as not to generate this situation that surely damages the functioning of the MSR, and I look forward to your comments please.
Thanks
-
Update to 21281. It would be great if everyone would make sure they are on the latest release before reporting problems.
-
@toggledbits master I am already with version 21281, the error started at 21277.
-
Sigh. Sorry, I'm running fast today... way too fast, much on my plate.
So looking at what you've done... I would not do it this way. Put those expressions in the variables they are meant to manipulate.
Also, your
matchEntities()
forBatterySensor
, you should not includelevel
. That is an attribute of the capabilitybattery_power
, and since we're matching capabilities, it won't match anything and creates needless work. You can list capabilities here, but not attributes. All attributes of the capability come with the capability. Same forFaultSensor
: removefailed
; it's an attribute, not a capability.And please, when posting log snippets, showing me just the error is one line away from showing me nothing. I need to see several dozen lines from before the error for context.
-
@toggledbits master, as you instructed, I believe this is the correct way to do it, and apparently, the error is gone.
Thanks!
-
LOL! OK. Yes, this is better structure-wise. It is much less efficient to use
SetVariable
to accomplish what is effectively the same as putting the expressions on the variables as you have now done.I did replicate your prior structure on my system to try it out, but I was unable to replicate the throttling. Nonetheless, I think I understand why it would have happened... and I'm guessing you have significantly more devices on your system than I have on my development system (maybe, I've got about 100 across the four hubs I use for development). I can see why it would throttle, I just could not make it do it. Nonetheless, I'm going to see what I can do about preventing it, based on my assumption about how it happened for you.
Another thing... mentioned in another thread is a small step up you could take in efficiency in
BatteryMSG
: you are doinggetEntity()
twice on the same ID. You can improve on that by using a temporary variable inside the loop to store thegetEntity()
result, and use that temporary variable in the string assembly:join( each id in BatteryLow: do e = getEntity( id ), e.name + " " + int( e.attributes.battery_power.level * 100 ) + "%" done, ', ' )
The
do...done
block looks like a single expression toeach
. The result of ado...done
block is the result of the last expression executed within it. That block contains two expressions, the first being thee = getEntity()
which does the lookup and stores the value in a temporary variable, and the second which uses the temporary variable to build the result string for the entity. This saves you the cycles looking up the same entity twice. -
@toggledbits hi my friend!
The warning message has appeared again.
Looking at the log, it is not an error, this message appears several times intermittently, only being interrupted when another action occurs.
[latest-21281]2021-10-12T13:30:35.222Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-12T13:32:10.561Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-12T13:32:10.695Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-12T13:32:11.054Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-12T13:32:12.810Z Rule:INFO Internal Motion (Rule#rule-kpq9tnbr) SET!
[latest-21281]2021-10-12T13:32:22.152Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-12T13:33:15.364Z Rule:INFO Internal Motion (Rule#rule-kpq9tnbr) RESET!
[latest-21281]2021-10-12T13:33:55.112Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-12T13:34:29.630Z Rule:INFO Internal Motion (Rule#rule-kpq9tnbr) SET!
[latest-21281]2021-10-12T13:35:27.808Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-12T13:35:40.960Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-12T13:35:41.809Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-12T13:35:50.185Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...Here is another cut of the log, 45 minutes later the warnings follow.
[latest-21281]2021-10-12T14:16:04.876Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-12T14:16:05.201Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...
[latest-21281]2021-10-12T14:16:05.389Z Rule:WARN Rule#rule-ku32lfti (Warning (93) Devices) update rate 61/min exceeds limit (60/min)! Logic loop? Throttling...I will stop the task again, I am concerned, even though a safe warning is consuming MSR processing.
A topic that catches my attention. The action is scheduled to run on my schedule from 8:00am to 8:05am (-5), and because it is a local variable, it should not be updated outside this time, is my understanding.
If it is a global variable, the update is recurrent, because it is active 24 hours, now why is an action with a defined time, and local variable still being executed in a loop?
-
@wmarcolin said in Logic loop? Throttling...:
A topic that catches my attention. The action is scheduled to run on my schedule from 8:00am to 8:05am (-5), and because it is a local variable, it should not be updated outside this time, is my understanding.
That's incorrect. Any changes to a watched device will cause the rule to re-evaluate. The first step in re-evaluating the rule is re-evaluating all of the rule's expressions; only after that are the conditions then evaluated, because the conditions may reference the rule's variables. This is documented behavior. So given that you may be doing a
getEntity()
on several dozen, or hundred, devices, you are making that rule subject to re-evaluation any time any of those devices changes, for any reason. Reactor does not "see through" to the attribute you are eventually referring to; it does not and could not (reasonably) do that.To reduce the evaluation rate of the rule, you'd have to make your expressions global. There is (currently) no throttling on the evaluation of global expressions, and they evaluate/update much faster than rules. I suggest you move all of your expressions that perform
getEntity()
on the result ofmatchEntities()
into global expressions; specifically, I meanBatterySensor
which creates the battery-operated device array, andBatteryLow
which checks and evaluates (usinggetEntity()
) the battery level of each matching device inBatterySensor
, andBatteryMSG
which builds the text fromBatteryLow
. You can then use an Expression Value condition in your rule to check the value ofBatteryMSG
for a non-empty string. This will be the most efficient setup for the potentially large number of devices these expressions have to sift through.The same method should be applied to
FaultSensor
and its progeny.I would also update to 21286.
-
@toggledbits ok master, I will download version 21286, move these expressions to global variables, and come back tomorrow after operating 24 hours with the changes.
I really worry about not having actions that are exhaustively generating processing.
-
When you train a rule or expression on a large number of devices, you're going to get activity when those devices change, and that can be a lot. There's more activity than you know, normally. Not everything gets logged at the default level. 21286 does contain a bit more logging.
-
@toggledbits your suggestion worked perfectly!!
With the version updated to 21286, moving all rules to the Global variable, the warnings ended, and I can see in the log that the action started to be invoked only at the given times, and the variable update as Global occurs only when there is an effective change in the device.
Great knowledge exercise and one more lesson from you.
Thanks @toggledbits !
-
toggledbits