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.
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.
Fibaro Keyfob support in MSR? (thru Hassio & Z-wave JS)
I 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
Compared to this similar rule, but the time limits is under contraints instead?
I 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:
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).
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 theprimary_attributes: true
Reactor latest-22178 bare metal
Edit: Solved in build 22179
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?
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.
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?
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
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
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?
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; ignoring
I'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?
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.
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.6M
If I run df on the docker container I get this. Disk space is not critical
[SOLVED] Will Pulse work for retrying a ruleset if the device hasn't responded as expected
I've read and reread the docs re Pulse and am running about 50/50 on thinking I understand it AND that it will work for my needs.
Scenario: Honeywell API gets cranky and doesn't like taking temp change posts for both upstairs and downstairs stats reliably. I've created "correction" rulesets.
At each trigger I've put in Conditions to basically check for the expected match. In this scenario, the temp should be
58and the stat mode
heat. If either one of those criteria aren't met, the correction ruleset kicks off.
Sometimes, though, the retry doesn't take, either, on the first attempt. This is where Pulse and I need to be better acquainted. My goal here is to have the first retry happen and if it fails have the Pulse see the conditions still as
trueand, after waiting a bit, retry up to three more times.
I haven't checked logs yet to see if they support my theory that this isn't working - esp hard to nail down this time of year as the weather has the temps going all over the place to the house HVAC goes from heat to neutral to cooling and back again all thru the day.
Seems like you're on the right track. Repeating commands when states aren't what they are supposed to be is definitely one application for pulsed output, and I use it that way myself (like you, I have devices controlled by hit-and-miss cloud APIs). I also use it on my router's power switch -- if the Internet is down for more than a certain period, it begins power cycling the router at intervals to attempt recovery.
On your "Down" group, if the conditions have the same "sustained for" timing, then the timing could be done on the group rather than individual conditions within it -- makes things a little tidier to maintain in the long run.
Looks good to me!
@toggledbits I thought about putting that at the group level but then wondered if it would require both to trigger so I went more granular.
@toggledbits I'm admitting to some confusion. Shouldn't I see the Upstairs trigger that's showing "65", which is "<>60", blinking green and showing the count-up timer showing how much of the 300 secs are remaining?
The trigger is true, 65 is not 60 and, as such, should fire off the 300 second period where it waits for that condition to change. If it doesn't, then the
Reactionshould run and, if that fails, the
Pulsekicks in to refire the
Reactiona couple three times.
What am I missing?
toggledbits last edited by toggledbits
It depends and when and how you are doing this. After doing a lot of editing, and in particular where you may be saving along the way as you make changes, things can get into states that they would not be in once the logic edits are finished and all the timing options are applied. That's why there's a "reset" button for the rule... to clear out all the state and start it fresh. Recommended.
@toggledbits I think i figured it out AND something else to boot.
So to the ask above, I happened to catch it running this morning. I'm used to basing on "if the thing should be true but it's false" in my
triggerAND doing so at the individual condition level (vs
groupwhich you recommended I try - and I have.) Setting at the
grouplevel means the status timer shows in the group bar, not at the individual condition level like I was used to.
Now on to something I did notice that is, in reality, the reason it appears like this isn't working...
Multiple HVAC rulesets per mode, ie Heat sans Night, Heat at Night, Neutral, Cooling sans Night, Cooling at Night. Three Arm For rulesets drive which one should be sending to the Honeywell API based on outdoor temps from the wx station. Works like a champ.
The course correction rulesets, however, don't turn on and off - they're constantly looking to see if the conditions are met or not, even if that mode isn't the active one. Example, the Neutral correction ruleset is still "running" even if the house is actually in Heating sans Night.
pulseis to provide back-up to the initial correction because sometimes Honeywell just isn't ready yet when the correction first runs. Works brilliantly... except, I've noticed that the pulse is just continuing to run if I leave it at
0(as expected, unmetered retries). I can set it to a count, that's fine - but the count runs out due to running even when that mode isn't active creating a scenario wherein there are no more pulses/retries when that mode IS active.
THIS is why it appears not to be working - it's run itself out even when not on active duty, if you will.
This is the Neutral correction ruleset. Right now the house is in Heating sans Night because Arm For Heating is active, Arm For Neutral and Arm For Cooling are not. You'll see the conditions set to
trueare correct, the temps are not
58- obviously, because the heat is set to
65upstairs. However, this is making the correction ruleset run unnecessarily which, if my thinking is right, means it's wasting CPU/memory/etc. and may be hitting the API (though I've seen no burst of green around the ruleset to show me it is running.)
Not a bit. Sorry. What am I look at/for?
@toggledbits I guess first thing, am I correct in that the
pulserunning on the rulesets is wasting system resources if those rulesets aren't "eligible" for running?
Trying to think how to rephrase this... ALL of the correction rulesets are running all the time if I implement
pulse. If I implement metered
pulsethen they run themselves out and when they're needed they're already done.
These are the Arm For rulesets:
Only one "runs" at a time, obviously, triggering one of these rulesets:
If, due to the aforemented API hit-or-miss sometimes, one of these runs but doesn't get accepted by the API then the appropriate correction runs:
My issue seems to be that all of the corrections are running all of the time if I enable
0. If I meter the
pulsethen they run
Xtimes and are done - and when the time comes for them to really run, they're spent already.
pulserunning isn't putting an unnecessary load on the system, then I'll set them to
0and leave it be. So... are they?
I guess first thing, am I correct in that the pulse running on the rulesets is wasting system resources if those rulesets aren't "eligible" for running?
No. That's not the case. Unless the underlying condition is true, no pulse train is running. Nothing is happening. I come from the days of room-filling million-dollar computers with 256K (yes, K) of RAM. I don't like wasted cycles.
What is true is that whatever the state of the current pulse may be when it is active is not changed by you editing the rules/condition options at the same time. It is not until the current pulse expires that your new pulse rules will take effect. So if you have a condition that is active right now in the middle of a 120 second pulse, and you edit the timing down to 15 seconds, that 120 second pulse is going to finish; it will not be cut short, it will not stop. When it finishes, the next pulse after will be on your new timing. Likewise, if it's timing a break and the underlying condition is still true, the break timing will finish.
This is why I say, you have to reset the rule after editing it. Your earlier screen shot clearly shows a condition where you edited in the middle of a 120 second pulse break, going from 0 repeats back to 3, and the 120 second pulse break timer is still running. The rule reset function is provided for exactly this circumstance -- to dump existing states and timers. If you don't do the reset, you're going to see really confusing results as Reactor finishes what it was doing before it starts to follow your new instructions.
And if the pulse is "running all the time" then there is a true state on your logic to make it do that. It does not run otherwise.
@toggledbits The first sentence I can totally wrap my head around
The last sentence is what's driving this. If you look at the correction ruleset you'll see it's kinda backward from normal in that the
triggeris when something is NOT a certain temp or HVAC mode. This results in it always being in a
truestate as other rulesets are in effect.
When Heating or Cooling rulesets are controlling things, Neutral correction shows
true- because it is. This results in
pulsealways running (or, if metered, running out of retries.)
I see what you're getting at. That's simply a problem with your condition structure. The inner groups can't know how any enclosing groups are going to interpret their output, so of course the pulses run, as well they should -- you've told them to. If that's not what you want, a slight restructure of your logic fixes that.
@toggledbits Def not what I want but it's the direct path. "If after running Neutral the conditions don't match, run the correction."
toggledbits last edited by toggledbits
Def not what I want but it's the direct path. "If after running Neutral the conditions don't match, run the correction."
I'm not sure what that means.
I think all you need to do is create an enclosing group, put all of the conditions/subgroups, including the Rule State condition, into it, and then move the pulse configuration to that upper enclosing group, removing it from the interior groups. The Rule State condition will then gate the pulse train.
@toggledbits So this took a major rewrite, esp for the Neutral because you could be going from Heat to Neutral, from Cooling to Neutral, and back again. The goal here, now, is to have it so that something must go
trueand there are far more options to cover than triggering on something going
false. This is what I've arrived at - a second+ set of eyes on my work would be appreciated.
I stared at it 'til I'm cross-eyed!
I'm thinking still not right. The group with the pulse output needs to be a wrapper group for EVERYTHING else, including the Rule State condition, to my way of looking at it.
@toggledbits Like this:
What's the reasoning behind bumping that up one more level?
Yes, I think this is closer to what you really want. This keeps the pulses from firing unless the Rule State condition is also true, so that you can (again) use the limited count of pulses, because pulses won't be firing unless all of the conditions AND the rule state are all true. That is, pulses will only happen when the devices aren't set properly for "Neutral" (for a while) and Neutral is the active mode.
You also have to think about your "sustained for" timing. That is also done in the interior, meaning it is done irrespective of whether the Neutral mode is active or not, and that, too, is probably not what you want. The effect is that your correction will fire immediately if the Neutral conditions haven't been met for a while at the time the system is switched into Neutral mode. I imagine you actually want a delay there, since it probably takes a couple of seconds for the transition into Neutral mode to make the round trip through the cloud and devices and be reported back. You need to give it a chance to work/catch up. A simple fix there is to simply add a sustained for delay to the Rule State (is Neutral active) condition, so your logic overall becomes "if the mode has been Neutral for at least 300 seconds and the devices haven't been set properly for at least 300 seconds".
@toggledbits HA, funny you bring that last part up because the sun has gone down so the system races thru Neutral to Heating as the temps drop quickly. I did notice the 300 seconds was being ignored, seemingly, and the correction fired on the heels of the change.
I did move the 300 seconds up to the next group level. Since
Downboth are sub-groups within the larger group I thought it made sense to raise that a level - do correct me if I'm wrong here.
Looking into the tweak you noted in your response.
I thought it made sense to raise that a level - do correct me if I'm wrong here.
This is a good rule of thumb. Well done!
@toggledbits QQ, all of these 300 second sustains... they're working concurrently, not consecutively, yes?