I don't know if I'm the only one, but managing more than one Reactor installs, the need to have some sort of copy&paste for rules has grown on me.
While I understand the technical challenges, I'm wondering if a "god mode" where I could copy the raw JSON rule and paste it into another rule could be an advanced, flag only feature that could benefit power users.
I know I can copy the JSON file and proceed, but I must stop Reactor and when doing maintenance, it's more clicks to do.
Just an idea
I'm slowly migrating all my stuff to MQTT under MSR, so I have a central place to integrate everything (and, in a not-so-distant future, to remove virtual devices from my Vera and leave it running zwave only).
Anyway, here's my reactor-mqtt-contrib package:
https://github.com/dbochicchio/reactor-mqtt-contrib
Simply download yaml files (everything or just the ones you need) and you're good to go.
I have mapped my most useful devices, but I'll add others soon. Feel free to ask for specific templates, since I've worked a lot in the last weeks to understand and operate them.
The templates are supporting both init and query, so you have always up-to-date devices at startup, and the ability to poll them. Online status is supported as well, so you can get disconnected devices with a simple expression.
Many-many thanks to @toggledbits for its dedication, support, and patience with me and my requests
I’ve added a couple of Shelly Wave i4 as scene controllers and I’m planning to add more, since I can just use standard buttons instead of battery-powered scene controllers, which also looks better aesthetically.
That said, I’m struggling to figure out how to write a simple rule that cycles between states every time I press a button.
Example: Light 1 ON → OFF, then Light 2 ON → OFF.
The part I can’t get right is handling the case where Light 1 or Light 2 might already be ON independently of the rule.
Maybe it’s just too much sun and relaxation clouding my brain, but any hint would be appreciated.
Use case:
When performing home maintenance, such as air conditioning, I want all rules involving air conditioning to be disabled.
To do this, to day, I have a virtual switch that I placed within all rules involving air conditioning, meaning that if I turn it off, none of them work.
Then another situation: the water pump system and garden irrigation, another switch.
In short, I had to create several virtual switches in Hubitat to disable rules in MSR.
Unfortunately, however, I was unable to cover all scenarios, so I wondered if it would be possible for MSR to support a virtual MSR switch, which, when configured in the reactor settings, would function as a general on/off switch for MSR.
If it is configured and turned off, the entire rules and actions in MSR stops working, except for the status change reading process, specifically for this switch, which, when turned on, would restart the MSR.
Would it be possible to do something like this? Any recommendations from the experts?
Probably a really dumb question.
Currently I am using the owntracks_sensor for tracking phones being in region in MSR and it works great.
Digging around with Home Assistant and toying with some dashboards, is there any way of exposing that sensor to HA trivially? I could set MSR to trip a virtual switch in OpenLuup which can then be exposed to HA (with all my other Vera devices) but that feels a bit in-elegant if I can do it directly.
Any thoughts?
Apologies if the ask is not clear/
TIA
C
As there are statements about compatibility for home assistant versions in MSR new version announcements (e.g. "HassController: Bless Hass to 2025.7.3"), I thought it would be good idea to track other controllers as well.
As an example, I can confirm that build "latest-25208-c53e8513" works with Hubitat Elevation C-8 platform version 2.4.2.134 using Maker API.
Updates: (the latest versions first in the list)
OK: build "latest-25264-2fbe9217" with Hubitat C-8 platform v. 2.4.3.123
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.
I foolishly let my system wipe all cookies this morning and with it my settings for my MSR home page.
Once logged back in I can no longer remove errant panes nor is the + available to add new ones.
Brave Browser v1.80.122 (Jul 16, 2025)
What have I done?!
Will check other browsers on my M1.
UPDATE: Safari exhibits same behaviour.
I've tried both sans last-four public key entry and with - no change.
@toggledbits, not sure if this is a feature request or I'm using the search tool wrong. You have a "Search for rule" in the Rules Set tab in MSR. It works nicely to find a rule and bring up said rule, but can it/could it be used for as a "where used?" global search? For instance, I have a fairly large set of rules, divided up into 10 different rulesets. There's easily a hundred individual rules, and many of the rules have Rule State triggers, which of course refer to other rules. Amongst my troubleshooting today, I came across what may have been a duplicate or troubleshooting attempt, but I can't tell if it's actually used as a Rule State in another rule without opening each rule that I suspect it may be a part of.
Thanks.
I'm running MSR build 25139 on Docker, using MQTT controller 24293, and everything working as expected. But if I try to upgrade to MQTTController build 25139, I'm getting the following errors on MSR UI:
An Entity Attribute condition in "Lay-Z-Spa auto heating off" (Terrace) failed because the referenced entity "Lay-Z-Spa States" (mqtt>layzspa_states) does not have attribute value_sensor.god
Last 11:20:37
An Entity Attribute condition in "Lay-Z-Spa auto heating off" (Terrace) failed because the referenced entity "Lay-Z-Spa States" (mqtt>layzspa_states) does not have attribute temperature_sensor.green
Last 11:20:37
An Entity Attribute condition in "Lay-Z-Spa filter pump auto off" (Terrace) failed because the referenced entity "Lay-Z-Spa States" (mqtt>layzspa_states) does not have attribute temperature_sensor.red
Last 11:20:37
An Entity Attribute condition in "Lay-Z-Spa filter pump auto run" (Terrace) failed because the referenced entity "Lay-Z-Spa States" (mqtt>layzspa_states) does not have attribute value_sensor.pump
Last 11:20:37
An Entity Attribute condition in "Lay-Z-Spa watchdog" (Terrace) failed because the referenced entity "Lay-Z-Spa States" (mqtt>layzspa_states) does not have attribute value_sensor.status
Last 11:20:37
My MQTT configuration (local_mqtt_devices.yaml) for the related entity is:
layzspa_message:
type: ValueSensor
capabilities: ["temperature_sensor", "value_sensor", "power_sensor"]
primary_attribute: power_sensor.value
events:
"layzspa/message":
"power_sensor.value":
json_payload: true
if_expr: '! isnull( payload?.PWR )'
expr: "float(payload.PWR)"
"value_sensor.air":
json_payload: true
if_expr: '! isnull( payload?.AIR )'
expr: "float(payload.AIR)"
"value_sensor.pump":
json_payload: true
if_expr: '! isnull( payload?.FLT )'
expr: "float(payload.FLT)"
"value_sensor.god":
json_payload: true
if_expr: '! isnull( payload?.GOD )'
expr: "float(payload.GOD)"
"value_sensor.lock":
json_payload: true
if_expr: '! isnull( payload?.LCK )'
expr: "float(payload.LCK)"
"value_sensor.unit":
json_payload: true
if_expr: '! isnull( payload?.UNT )'
expr: "float(payload.UNT)"
"value_sensor.error":
json_payload: true
if_expr: '! isnull( payload?.ERR )'
expr: "float(payload.ERR)"
"temperature_sensor.green":
json_payload: true
if_expr: '! isnull( payload?.GRN )'
expr: "float(payload.GRN)"
"temperature_sensor.red":
json_payload: true
if_expr: '! isnull( payload?.RED )'
expr: "float(payload.RED)"
"temperature_sensor.target":
json_payload: true
if_expr: '! isnull( payload?.TGT )'
expr: "float(payload.TGT)"
"temperature_sensor.value":
json_payload: true
if_expr: '! isnull( payload?.TMP )'
expr: "float(payload.TMP)"
"temperature_sensor.virtual":
json_payload: true
if_expr: '! isnull( payload?.VTM )'
expr: "round(float(payload.VTM), 1)"
"temperature_sensor.ambient":
json_payload: true
if_expr: '! isnull( payload?.AMB )'
expr: "float(payload.AMB)"
"layzspa/Status":
"value_sensor.status":
if_expr: '! isnull( payload )'
expr: "payload"
"layzspa/button":
"value_sensor.button":
if_expr: '! isnull( payload )'
expr: "payload"
and in reactor.yaml I have:
"layzspa_states":
name: "Lay-Z-Spa States"
friendly_name: 'Lay-Z-Spa States'
include: layzspa_message
I realize my MQTT configuration might be a bit unorthodox, but could there still be something unintentional in the latest MQTTController build? If needed, I can provide detailed logs.
Need help figuring out how to delay a reset on reaction
Multi-System Reactor
22
Posts
4
Posters
2.9k
Views
4
Watching
-
Also, for me a virtual device instead of checking for rule states seems to be less prone to errors. So I have one for home status, guests, party etc and the rules are much easier to write.
@therealdb I use those as well. As you see in my AWAY rule there's a catch there using a virtual switch for my calendar integration. If a calendar entry has a specific keyword it turns the switch on. If the switch is on, AWAY knows not to fire.... VACA has it covered.
@toggledbits beat me to it: comments, comments, comments. I've lost too many years off my life trying to remember why this rule does what it does and how.