Hey Patrick, I recently have been noticing that MSR has been acting up ie. it's been needing restarts and has been slow. I began trouble shooting by looking at the logs and have noticed the following errors for a lot of entities. I thought maybe a simple reboot of RPi was needed and I kept seeing the same errors in the system logs. I am oddly enough not seeing these same errors in the MSR logs. Where things started getting weird is whenever I rebooted MSR it wouldn't come back online .I would have to restart the RPi then it would come back online. I just restarted MSR again to capture logs and it restarted fine, so I guess its good for now? I think this is more or so a corrupted SD card issue rather a MSR issue but well being troubleshooting from here. The SD card is about 1-2 years old.
Apologies if this post is everywhere, I cannot consistently recreate any oddities that are happening, that's what is leading me to believe my SD is going bad.
PS: If anyone knows how to diagnose a corrupt SD card please chime in.
MSR latest-24057-e9add9f5
Home Assistant 2024.4.3
Raspberry Pi 3b+
Good morning,
So Home Assistant decided to change the default weather home format that I've been using for the past year and a half. I had two Global Expressions set up to pull the high and low temp forecast for the day. Now it's pulling null values.
094c9205-cc9e-4fcc-ac4f-1bf54acea299-image.png
In the dev tools, it now uses a new service (Weather. get forecasts), plural, where the old Weather.get forecast is depreciated and now longer functions.
8c7a1fcc-dd3f-4268-a0b7-29d542f86adc-image.png
It shows a templow field, and a temperature field, which I presume is the forecast high.
When I head back over to MSR, I'm having a hard time finding those values in the Entities tab.
c5ea1048-a72e-4647-9c50-9d0c5fd20767-image.png
wx.asoftime=null wx.ceiling=null wx.ceiling_unit=null wx.cloud_cover=null wx.condition_code=null wx.description="partlycloudy" wx.feels_like=null wx.humidity=57 wx.humidity_unit="%" wx.icon=null wx.location=null wx.precipitation_1hr=null wx.precipitation_24hr=null wx.precipitation_other=null wx.precipitation_type=null wx.precipitation_unit="in" wx.pressure=30 wx.pressure_unit="inHg" wx.temperature=55 wx.temperature_unit="°F" wx.visibility=null wx.visibility_unit="mi" wx.wind_compass=210.3 wx.wind_conditions=null wx.wind_direction="SSW" wx.wind_gust=null wx.wind_speed=6.28 wx.wind_speed_unit="mph" x_hass.domain="weather" x_hass.entity_id="weather.forecast_home" x_hass.services=["weather"] x_hass.state="partlycloudy" x_hass_attr.attribution="Weather forecast from met.no, delivered by the Norwegian Meteorological Institute." x_hass_attr.cloud_coverage=85.9 x_hass_attr.dew_point=40 x_hass_attr.friendly_name="New Windsor Weather" x_hass_attr.humidity=57 x_hass_attr.precipitation_unit="in" x_hass_attr.pressure=30 x_hass_attr.pressure_unit="inHg" x_hass_attr.supported_features=3 x_hass_attr.temperature=55 x_hass_attr.temperature_unit="°F" x_hass_attr.visibility_unit="mi" x_hass_attr.wind_bearing=210.3 x_hass_attr.wind_speed=6.28 x_hass_attr.wind_speed_unit="mph"There is a x_hass_attr.temperature, but that appears to be the current temperature, not the high that I found on the dev tools screenshot.
Any ideas?
Running:
Core
2024.4.3
Supervisor
2024.04.0
Operating System
12.2
Frontend
20240404.2
MSR: latest-24057-e9add9f5
This system has been running flawlessly year after year for the time changes twice a year literally since MSR came out so I was caught off-guard when this happened this morning.
Time in MSR browser is EST, time on RPi is local time (DST).
76ed5313-b9b9-46d4-b0f9-462c40e99750-image.png
195e61c5-58a7-4453-b96a-18cebae75550-image.png
I've rebooted the RPi I've restarted MSR after double-checking the time on the RPi. Used a completely different browser to eliminate any caching concerns. Double-checked MSR reactor.yamla5f23151-d691-4343-8499-8e77a55528e5-image.png
What am I missing here @toggledbits ?
Hi,
For the standard capabilities MSR sends both a value record and a units record to InfluxDB. The latter I would like not to send as they are not really any use for me and it will reduce the number of records send to my InfluxDB.
Is there a quick way to do this with a filter_entities line like: *>units?
Or do I have to update all capabilities to read like this:
power_sensor:
attributes:
value: true
Cheers Rene
I'm trying to replicate this
wallbox_set_number.PNG
into a MQTT entity where I could set a number with a min and max value.
I can't find a standard capability that fits or any documentation on local MQTT capabilities and the only post on the forum mentioning local MQTT capabilities is this post, is it even possible in current release?
My trial and error work in local_mqtt_capabilities.yaml isn't much to show as it's just a copy of mqtt_capabilities.yaml with changed names and then I got stuck.
Any guidance, examples, documentation, future feature request or denial would be much appreciated, thanks!
Reactor 24057-e9add9f5 bare metal
MQTTController 24050
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.Hi guys,
I've recently bought a new Govee outdoor permanent lights set, and I love it. WAF is pretty high, and the product is good quality. I hope to never run lights in the front of the house.
This new addition has found me searching for something to control these lights, locally. Govee has officials remote and LAN APIs and Home Assistant has it supported, but some undocumented stuff that's integrated into an Homebridge plugin that seems very promising. Without this plugin, my playlist is orchestrated via the cloud and that makes zero sense.
In the past I got some inspiration from plugins running on other platforms and Homebridge seems one of the most active. I could map its devices via HomeKit-local on HA, but I've decommissioned Homebridge years ago when we settled to Alexa (and I want to stay simple), so I had an idea: why get inspiration and rewrite things, when you could write an Homebridge adapter that could load any Homebridge plugin and run them natively under Reactor (MSR)?
I'm not sure if that's viable or made any sense, so I'm posting here to get feedback, encouragement and your thoughts. Anyone could be potentially interested in such a thing?
Hi- looking for a hint in where to start. My goal is to set a PIN code in a zwave kwikset lock triggered in a rule.
The device isn’t exposing methods to help. The x-hass.call-service looks promising, but what would the service name be?
Plan b would be send the zwave controller a config command- I don’t see any way to explicitly send a command through JS Zwave in my environment.
Running reactor bare metal. JS Zwave is running as an add on inside HASS OS.
Any tips are appreciated.
Hey crew, I'm trying to use MSR to control the RGB values of a Z-Wave bulb in Home Assistant.
Problem I'm running into - I would like to use 'rgb_color.set' to control this, but it doesn't work, instead it always passes the values '255,255,255' to HA no matter what values I enter within MSR.
More notes and examples below - I'm wondering if this is a formatting issue that I'm missing? Thanks for any help!
NOTES FROM TROUBLESHOOTING:
'rgb_color.set_rgb' works successfully, which seems strange. You'd think they would both be affected I've tried a couple different formats, like adding quotes, adding/removing spaces between the RGB values, nothing has fixed it.EXAMPLES:
When I use 'rgb_color.set_rgb', the values successfully carry over to Home Assistant:
f0f4befc-a642-428e-8923-e5f856ca7e2b-image.png
0af0a4f8-50b9-4100-b1e8-52a0de4cbcbb-image.png
But when I use 'rgb_color.set', the values DO NOT successfully carry over to Home Assistant:
9e2d7004-8085-4b70-bb3e-45614b7260a0-image.png 0d630228-c74b-4db8-89bd-2572a08608a3-image.png
DETAILS:
Bulb is LZW42 by Inovelli MSR version: stable-23242-5ee8e1d4HA DETAILS
Core 2024.2.5 Supervisor 2024.02.1 Operating System 12.0Hi,
I’m running MSR in a docker container on my Synology Nas. The container is automatically updated using watchtower weekly.
It was working. Now, after the update, Reactor webpage is able to load, and all indications on the webpage suggests that it is working fine. However, the updated statuses from Home Assistant and Vera are not being detected.
The container logs show the following error
Reactor stable-23344-5aad7754 app 23344 configuration from /var/reactor/config NODE_PATH /opt/reactor:/opt/reactor/node_modules [stable-23344]2024-02-28T21:57:49.516Z <app:null> Reactor build stable-23344-5aad7754 starting on v16.15.1 [stable-23344]2024-02-28T21:57:49.517Z <app:null> Process ID 1 user/group 0/0; docker; platform linux/x64 #69057 SMP Fri Jan 12 17:02:28 CST 2024; locale (undefined) [stable-23344]2024-02-28T21:57:49.517Z <app:null> Basedir /opt/reactor; data in /var/reactor/storage [stable-23344]2024-02-28T21:57:49.517Z <app:null> NODE_PATH=/opt/reactor:/opt/reactor/node_modules [stable-23344]2024-02-28T21:57:49.696Z <Structure:null> Module Structure v23172 [stable-23344]2024-02-28T21:57:49.698Z <Capabilities:null> Module Capabilities v23331 [stable-23344]2024-02-28T21:57:49.780Z <Plugin:null> Module Plugin v22300 [stable-23344]2024-02-28T21:57:49.790Z <TimerBroker:null> Module TimerBroker v22283 [stable-23344]2024-02-28T21:57:49.794Z <Entity:null> Module Entity v22353 [stable-23344]2024-02-28T21:57:49.866Z <Controller:null> Module Controller v23069 [stable-23344]2024-02-28T21:57:50.030Z <default:null> Module Ruleset v22293 [stable-23344]2024-02-28T21:57:50.031Z <default:null> Module Rulesets v22146 [stable-23344]2024-02-28T21:57:50.066Z <GlobalExpression:null> Module GlobalExpression v23211 [stable-23344]2024-02-28T21:57:50.581Z <Predicate:null> Module Predicate v23093 [stable-23344]2024-02-28T21:57:50.595Z <AlertManager:null> Module AlertManager v22283 [stable-23344]2024-02-28T21:57:50.600Z <Rule:null> Module Rule v23107 [stable-23344]2024-02-28T21:57:50.614Z <GlobalReaction:null> Module GlobalReaction v22324 [stable-23344]2024-02-28T21:57:50.617Z <Engine:null> Module Engine v23339 [stable-23344]2024-02-28T21:57:50.635Z <httpapi:null> Module httpapi v23058 [stable-23344]2024-02-28T21:57:50.680Z <wsapi:null> Module wsapi v23172 [stable-23344]2024-02-28T21:57:50.789Z <TaskQueue:null> Module TaskQueue 21351 [stable-23344]2024-02-28T21:57:50.790Z <VeraController:null> Module VeraController v23109 [stable-23344]2024-02-28T21:57:50.971Z <HassController:null> Module HassController v23344 [stable-23344]2024-02-28T21:57:51.716Z <DynamicGroupController:null> Module DynamicGroupController v22313 [stable-23344]2024-02-28T21:57:52.253Z <SystemController:null> Module SystemController v23331 i18n: missing en-US language string: The version of nodejs you are using ({0}) is now end-of-life, and so is deprecated for use with Reactor. Please upgrade nodejs to {2}.{3} or higher as soon as possible; the current LTS version is recommended. Releases of Reactor produced after {1} will not run under this version of nodejs at all. [stable-23344]2024-02-28T21:57:52.256Z <Controller:CRIT> SyntaxError: Unexpected end of JSON input [-] SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at /opt/reactor/server/lib/Controller.js:464:51 at Array.forEach (<anonymous>) at SystemController._restoreEntities (/opt/reactor/server/lib/Controller.js:458:36) at new Controller (/opt/reactor/server/lib/Controller.js:45:42) at new SystemController (/opt/reactor/server/lib/SystemController.js:29:9) at /opt/reactor/server/lib/Controller.js:101:37 Trace: The version of nodejs you are using ({0}) is now end-of-life, and so is deprecated for use with Reactor. Please upgrade nodejs to {2}.{3} or higher as soon as possible; the current LTS version is recommended. Releases of Reactor produced after {1} will not run under this version of nodejs at all. at _T (/opt/reactor/server/lib/i18n.js:468:37) at AlertManager.addAlert (/opt/reactor/server/lib/AlertManager.js:126:25) at /opt/reactor/app.js:381:140 [stable-23344]2024-02-28T21:57:59.313Z <app:CRIT> SyntaxError: Unexpected end of JSON input [-] SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at IndividualFileStrategy.getDataObject (/opt/reactor/server/lib/IndividualFileStrategy.js:114:54) at DelayWriteCacheStrategy.getDataObject (/opt/reactor/server/lib/DelayWriteCacheStrategy.js:87:50) at Container.getDataObject (/opt/reactor/server/lib/Container.js:69:67) at Function.getInstance (/opt/reactor/server/lib/Data.js:37:179) at Rule.getRuleStates (/opt/reactor/server/lib/Rule.js:507:100) at Rule.getConditionState (/opt/reactor/server/lib/Rule.js:538:47) at new Rule (/opt/reactor/server/lib/Rule.js:378:47) at Function.getInstance (/opt/reactor/server/lib/Rule.js:387:36) at /opt/reactor/server/lib/Engine.js:263:53 i18n: missing en-US language string: HomeAssistant on {0:q} may be an unsupported version. The reported version ({1}) has not been certified/tested with this version of Reactor and may cause errors. You must either modify your HomeAssistant install, or see if an update to Reactor has been made available. Trace: HomeAssistant on {0:q} may be an unsupported version. The reported version ({1}) has not been certified/tested with this version of Reactor and may cause errors. You must either modify your HomeAssistant install, or see if an update to Reactor has been made available. at _T (/opt/reactor/server/lib/i18n.js:468:37) at AlertManager.addAlert (/opt/reactor/server/lib/AlertManager.js:126:25) at HassController.sendWarning (/opt/reactor/server/lib/Controller.js:197:36) at /opt/reactor/server/lib/HassController.js:1117:370 at processTicksAndRejections (node:internal/process/task_queues:96:5)I’ve tried using “latest-amd64” and it does not work either. The logs show similar json input error.
Reactor latest-24057-e9add9f5 app 24052 configuration from /var/reactor/config NODE_PATH /opt/reactor:/opt/reactor/node_modules [latest-24057]2024-02-28T22:27:30.466Z <app:null> Reactor build latest-24057-e9add9f5 starting on v20.10.0 [latest-24057]2024-02-28T22:27:30.522Z <app:null> Process ID 1 user/group 0/0; docker; platform linux/x64 #69057 SMP Fri Jan 12 17:02:28 CST 2024; locale (undefined) [latest-24057]2024-02-28T22:27:30.522Z <app:null> Basedir /opt/reactor; data in /var/reactor/storage [latest-24057]2024-02-28T22:27:30.522Z <app:null> NODE_PATH=/opt/reactor:/opt/reactor/node_modules [latest-24057]2024-02-28T22:27:30.667Z <Structure:null> Module Structure v23172 [latest-24057]2024-02-28T22:27:30.673Z <Capabilities:null> Module Capabilities v23331 [latest-24057]2024-02-28T22:27:30.780Z <Plugin:null> Module Plugin v22300 [latest-24057]2024-02-28T22:27:30.787Z <TimerBroker:null> Module TimerBroker v22283 [latest-24057]2024-02-28T22:27:30.791Z <Entity:null> Module Entity v22353 [latest-24057]2024-02-28T22:27:30.796Z <Controller:null> Module Controller v23069 [latest-24057]2024-02-28T22:27:30.811Z <default:null> Module Ruleset v22293 [latest-24057]2024-02-28T22:27:30.811Z <default:null> Module Rulesets v22146 [latest-24057]2024-02-28T22:27:30.821Z <GlobalExpression:null> Module GlobalExpression v23211 [latest-24057]2024-02-28T22:27:30.890Z <Predicate:null> Module Predicate v23093 [latest-24057]2024-02-28T22:27:30.958Z <AlertManager:null> Module AlertManager v22283 [latest-24057]2024-02-28T22:27:31.027Z <Rule:null> Module Rule v24057 [latest-24057]2024-02-28T22:27:31.033Z <GlobalReaction:null> Module GlobalReaction v22324 [latest-24057]2024-02-28T22:27:31.036Z <Engine:null> Module Engine v24023 [latest-24057]2024-02-28T22:27:31.042Z <httpapi:null> Module httpapi v24057 [latest-24057]2024-02-28T22:27:31.216Z <wsapi:null> Module wsapi v24057 [latest-24057]2024-02-28T22:27:31.296Z <TaskQueue:null> Module TaskQueue 21351 [latest-24057]2024-02-28T22:27:31.297Z <VeraController:null> Module VeraController v24050 [latest-24057]2024-02-28T22:27:31.365Z <HassController:null> Module HassController v24048 [latest-24057]2024-02-28T22:27:31.659Z <DynamicGroupController:null> Module DynamicGroupController v22313 [latest-24057]2024-02-28T22:27:31.668Z <SystemController:null> Module SystemController v23331 [latest-24057]2024-02-28T22:27:31.673Z <Controller:CRIT> SyntaxError: Unexpected end of JSON input [-] SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at /opt/reactor/server/lib/Controller.js:464:51 at Array.forEach (<anonymous>) at SystemController._restoreEntities (/opt/reactor/server/lib/Controller.js:458:36) at new Controller (/opt/reactor/server/lib/Controller.js:45:43) at new SystemController (/opt/reactor/server/lib/SystemController.js:237:9) at /opt/reactor/server/lib/Controller.js:101:37 [latest-24057]2024-02-28T22:27:38.845Z <app:CRIT> SyntaxError: Unexpected end of JSON input [-] SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at IndividualFileStrategy.getDataObject (/opt/reactor/server/lib/IndividualFileStrategy.js:51:45) at DelayWriteCacheStrategy.getDataObject (/opt/reactor/server/lib/DelayWriteCacheStrategy.js:89:49) at Container.getDataObject (/opt/reactor/server/lib/Container.js:69:65) at Data.getInstance (/opt/reactor/server/lib/Data.js:45:179) at Rule.getRuleStates (/opt/reactor/server/lib/Rule.js:515:101) at Rule.getConditionState (/opt/reactor/server/lib/Rule.js:546:47) at new Rule (/opt/reactor/server/lib/Rule.js:371:47) at Rule.getInstance (/opt/reactor/server/lib/Rule.js:380:36) at /opt/reactor/server/lib/Engine.js:828:53 i18n: missing en-US language string: HomeAssistant on {0:q} may be an unsupported version. The reported version ({1}) has not been certified/tested with this version of Reactor and may cause errors. You must either modify your HomeAssistant install, or see if an update to Reactor has been made available. Trace: HomeAssistant on {0:q} may be an unsupported version. The reported version ({1}) has not been certified/tested with this version of Reactor and may cause errors. You must either modify your HomeAssistant install, or see if an update to Reactor has been made available. at _T (/opt/reactor/server/lib/i18n.js:614:37) at AlertManager.addAlert (/opt/reactor/server/lib/AlertManager.js:128:25) at HassController.sendWarning (/opt/reactor/server/lib/Controller.js:197:36) at /opt/reactor/server/lib/HassController.js:1133:374 at process.processTicksAndRejections (node:internal/process/task_queues:95:5)How do I fix this?
Noticed right away last night at closing time that the open/close had become inverted with the update to v23326.
It wasn't an awful bit of lift to change all Reactions to reflect the change but it was jarring initially when everything flipped.
Are there release notes on that version, @toggledbits ?
Installing latest-24052-d039d560 and I did a dumb thing: moving too quickly, I deleted package.json instead of package-lock.json because the latter didn't exist.
Ran the installer script - but in the wrong directory so I moved package.json manually.
Everything has come back EXCEPT for my MQTT Cloud OwnTracks entities. They're erroring because of this:
eb6f35dc-1981-432a-993d-aefae54cba02-image.png
(Don't heckle my folder structure - it's run this way for three years)
reactor.yaml is fine, all MQTT configs exactly as they should be.
The folder mqtt_templates is present:
f57fa07d-516b-4c8e-8cb0-eeeeaf34de14-image.png
The file it says is "unreadable" is present and hasn't changed (today's date is the Changed date because I did a quick nonsense edit to see that it was not corrupted in some way).
b8fc46a1-f66f-417d-b095-c8e3744ccbe8-image.png
The logs show:
[latest-24052]2024-02-22T01:04:40.320Z <ZWaveJSController:WARN> zwavejs_capabilities defines x_zwave_device_cfg, which is not consistent with the recommended naming [latest-24052]2024-02-22T01:04:40.321Z <ZWaveJSController:WARN> zwavejs_capabilities defines x_zwave_mfg_spec, which is not consistent with the recommended naming [latest-24052]2024-02-22T01:04:40.321Z <ZWaveJSController:WARN> zwavejs_capabilities defines x_zwave_device_ver, which is not consistent with the recommended naming [latest-24052]2024-02-22T01:04:40.322Z <ZWaveJSController:WARN> zwavejs_capabilities defines x_zwave_values, which is not consistent with the recommended naming [latest-24052]2024-02-22T01:04:40.323Z <Controller:INFO> ZWaveJSController#zwavejs loaded zwavejs capabilities ver 23194 rev 1 format 1 [latest-24052]2024-02-22T01:04:40.338Z <Controller:INFO> ZWaveJSController#zwavejs loaded implementation data ver 23254 rev 1 format 1 [latest-24052]2024-02-22T01:04:40.339Z <Structure:INFO> Starting controller SystemController#reactor_system [latest-24052]2024-02-22T01:04:40.345Z <Controller:NOTICE> Controller SystemController#reactor_system is now online. [latest-24052]2024-02-22T01:04:40.572Z <HassController:INFO> HassController#hass device mapping data loaded; checking... [latest-24052]2024-02-22T01:04:40.574Z <HassController:WARN> HassController: implementation of capability battery_maintenance does not provide attribute state [latest-24052]2024-02-22T01:04:40.577Z <HassController:WARN> HassController: implementation of capability input_select.selector does not provide attribute values [latest-24052]2024-02-22T01:04:40.586Z <MQTTController:ERR> MQTTController#mqtt can't read/load templates from /home/reactor/Documents/reactor/config/mqtt_templates/owntracks_sensor.yaml: [Error] Function yaml.safeLoad is removed in js-yaml 4. Use yaml.load instead, which is now safe by default. [-] [latest-24052]2024-02-22T01:04:40.595Z <MQTTController:CRIT> Error: Function yaml.safeLoad is removed in js-yaml 4. Use yaml.load instead, which is now safe by default. [-] Error: Function yaml.safeLoad is removed in js-yaml 4. Use yaml.load instead, which is now safe by default. at Object.safeLoad (/home/reactor/Documents/reactor/node_modules/js-yaml/index.js:10:11) at MQTTController._load_implementation (/home/reactor/Documents/reactor/ext/MQTTController/MQTTController.js:807:38) at async MQTTController.start (/home/reactor/Documents/reactor/ext/MQTTController/MQTTController.js:95:13) at async Promise.allSettled (index 3) [latest-24052]2024-02-22T01:04:40.597Z <MQTTController:ERR> MQTTController#mqtt2 can't read/load templates from /home/reactor/Documents/reactor/config/mqtt_templates/owntracks_sensor.yaml: [Error] Function yaml.safeLoad is removed in js-yaml 4. Use yaml.load instead, which is now safe by default. [-] [latest-24052]2024-02-22T01:04:40.603Z <MQTTController:CRIT> Error: Function yaml.safeLoad is removed in js-yaml 4. Use yaml.load instead, which is now safe by default. [-] Error: Function yaml.safeLoad is removed in js-yaml 4. Use yaml.load instead, which is now safe by default. at Object.safeLoad (/home/reactor/Documents/reactor/node_modules/js-yaml/index.js:10:11) at MQTTController._load_implementation (/home/reactor/Documents/reactor/ext/MQTTController/MQTTController.js:807:38) at async MQTTController.start (/home/reactor/Documents/reactor/ext/MQTTController/MQTTController.js:95:13) at async Promise.allSettled (index 4) [latest-24052]2024-02-22T01:04:40.608Z <HassController:NOTICE> HassController#hass connecting to ws://192.168.1.198:8123/api/websocket [latest-24052]2024-02-22T01:04:40.616Z <MQTTController:INFO> MQTTController#mqtt instance topic ident is mqtt [latest-24052]2024-02-22T01:04:40.617Z <Controller:INFO> MQTTController#mqtt 0 dead entities older than 86400000s purged [latest-24052]2024-02-22T01:04:40.619Z <MQTTController:NOTICE> MQTTController#mqtt connecting to broker at mqtt://192.168.1.198:1883/ [latest-24052]2024-02-22T01:04:40.691Z <MQTTController:INFO> MQTTController#mqtt2 instance topic ident is mqtt2 [latest-24052]2024-02-22T01:04:40.692Z <MQTTController:ERR> MQTTController#mqtt2 entity owntracks_iphone14p uses_template=owntracks_sensor, template not defined [latest-24052]2024-02-22T01:04:40.697Z <MQTTController:ERR> MQTTController#mqtt2 entity owntracks_iphone8 uses_template=owntracks_sensor, template not defined [latest-24052]2024-02-22T01:04:40.726Z <MQTTController:ERR> MQTTController#mqtt2 entity owntracks_iphone14jay uses_template=owntracks_sensor, template not defined [latest-24052]2024-02-22T01:04:40.730Z <MQTTController:ERR> MQTTController#mqtt2 entity owntracks_iphone14jen uses_template=owntracks_sensor, template not defined [latest-24052]2024-02-22T01:04:40.735Z <MQTTController:ERR> MQTTController#mqtt2 entity owntracks_iphone14addie uses_template=owntracks_sensor, template not defined [latest-24052]2024-02-22T01:04:40.768Z <MQTTController:ERR> MQTTController#mqtt2 entity owntracks_iphone14bella uses_template=owntracks_sensor, template not defined [latest-24052]2024-02-22T01:04:40.773Z <MQTTController:ERR> MQTTController#mqtt2 entity owntracks_androidaa uses_template=owntracks_sensor, template not defined [latest-24052]2024-02-22T01:04:40.777Z <MQTTController:NOTICE> MQTTController#mqtt2 device owntracks_androidaa no longer available, marking BinarySensor#mqtt2>owntracks_androidaa for removal [latest-24052]2024-02-22T01:04:40.781Z <MQTTController:NOTICE> MQTTController#mqtt2 device owntracks_iphone14addie no longer available, marking BinarySensor#mqtt2>owntracks_iphone14addie for removal [latest-24052]2024-02-22T01:04:40.786Z <MQTTController:NOTICE> MQTTController#mqtt2 device owntracks_iphone14bella no longer available, marking BinarySensor#mqtt2>owntracks_iphone14bella for removal [latest-24052]2024-02-22T01:04:40.790Z <MQTTController:NOTICE> MQTTController#mqtt2 device owntracks_iphone14jay no longer available, marking BinarySensor#mqtt2>owntracks_iphone14jay for removal [latest-24052]2024-02-22T01:04:40.794Z <MQTTController:NOTICE> MQTTController#mqtt2 device owntracks_iphone14jen no longer available, marking BinarySensor#mqtt2>owntracks_iphone14jen for removal [latest-24052]2024-02-22T01:04:40.798Z <MQTTController:NOTICE> MQTTController#mqtt2 device owntracks_iphone14p no longer available, marking BinarySensor#mqtt2>owntracks_iphone14p for removal [latest-24052]2024-02-22T01:04:40.802Z <MQTTController:NOTICE> MQTTController#mqtt2 device owntracks_iphone8 no longer available, marking BinarySensor#mqtt2>owntracks_iphone8 for removal [latest-24052]2024-02-22T01:04:40.807Z <Controller:INFO> MQTTController#mqtt2 0 dead entities older than 86400000s purged [latest-24052]2024-02-22T01:04:40.808Z <MQTTController:NOTICE> MQTTController#mqtt2 connecting to broker at mqtts://7ef71f0117fe40d28c2df12205c4a0d0.s2.eu.hivemq.cloud:8883 [latest-24052]2024-02-22T01:04:40.816Z <VirtualEntityController:INFO> VirtualEntityController#virtual configuring virtual Driving Flag - 2 (virt1) [latest-24052]2024-02-22T01:04:40.826Z <VirtualEntityController:INFO> VirtualEntityController#virtual configuring virtual Far Away Flag - 2 (virt2) [latest-24052]2024-02-22T01:04:40.827Z <VirtualEntityController:INFO> VirtualEntityController#virtual configuring virtual Garage Door Momentary Contact vSwitch (virt3) [latest-24052]2024-02-22T01:04:40.828Z <Controller:INFO> VirtualEntityController#virtual 0 dead entities older than 86400000s purged [latest-24052]2024-02-22T01:04:40.829Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs connecting to ws://192.168.1.198:3000 [latest-24052]2024-02-22T01:04:40.836Z <Controller:NOTICE> Controller VirtualEntityController#virtual is now online. [latest-24052]2024-02-22T01:04:40.839Z <app:NOTICE> Starting HTTP server and API... [latest-24052]2024-02-22T01:04:40.845Z <httpapi:NOTICE> httpapi: starting HTTP service on port 8111 [latest-24052]2024-02-22T01:04:40.854Z <app:NOTICE> Starting Reaction Engine... [latest-24052]2024-02-22T01:04:40.856Z <Engine:INFO> Reaction Engine starting [latest-24052]2024-02-22T01:04:40.857Z <Engine:INFO> Checking rule sets... [latest-24052]2024-02-22T01:04:40.880Z <Engine:INFO> Checking rules... [latest-24052]2024-02-22T01:04:41.421Z <Engine:INFO> Data check complete; no corrections. [latest-24052]2024-02-22T01:04:41.571Z <Rule:NOTICE> Driving Flag (rule-l97r2umw in Shared Rules) starting [latest-24052]2024-02-22T01:04:41.572Z <Rule:NOTICE> Driving Flag - Far Away (rule-l97r814k in Shared Rules) starting [latest-24052]2024-02-22T01:04:41.573Z <Rule:NOTICE> DST (rule-l118lzpd in Shared Rules) starting [latest-24052]2024-02-22T01:04:41.573Z <Rule:NOTICE> HVAC Cooling Master (Local APIs) (rule-ktinsq18 in Shared Rules) starting [latest-24052]2024-02-22T01:04:41.574Z <Rule:NOTICE> HVAC Heating before Alarm times (rule-l7hirm3d in Shared Rules) starting [latest-24052]2024-02-22T01:04:41.574Z <Rule:NOTICE> HVAC Heating Master (Local APIs) (rule-ktio3vc1 in Shared Rules) starting [latest-24052]2024-02-22T01:04:41.575Z <Rule:NOTICE> HVAC Neutral Master (rule-ktint8c3 in Shared Rules) starting [latest-24052]2024-02-22T01:04:41.575Z <Rule:NOTICE> It's Raining (rule-lfs6r1lq in Shared Rules) starting [latest-24I'm flummoxed.
I was using this method here by @therealdb to run Lua Code from MSR on my Vera Plus but it seems to have stopped working now.
Its the one where you uploaded a file called VeraScenes.lua to your Vera hub and then you could call functions of that file to run particular bits of Lua code from an MSR reaction etc.
9233b0a7-ec07-4ae5-99c0-cdf9c709d57c-image.png
This was working well for a long time but I noticed today its not working now.
Looking in the MSR log after I ran a reaction in one of my rules I just saw this:
[latest-23338]2024-02-19T18:41:35.650Z <Engine:INFO> Enqueueing "Front Cam Motion Detection ON or OFF Old Method<RESET>" (rule-klten9w9:R) [latest-23338]2024-02-19T18:41:35.653Z <Engine:5:Engine.js:1466> [Engine]Engine#1 enqueued reaction rule-klten9w9:R as 22989 [latest-23338]2024-02-19T18:41:35.654Z <Engine:5:Engine.js:1624> _process_reaction_queue() wake-up! [latest-23338]2024-02-19T18:41:35.655Z <Engine:5:Engine.js:1563> _process_reaction_queue() running task 22989: [Object]{ "tid": 22989, "id": "rule-klten9w9:R", "rule": "rule-klten9w9", "__reaction": [RuleReaction#rule-klten9w9:R], "next_step": 0, "status": 0, "ts": 1708368095651, "parent": --null--, "__resolve": --function--, "__reject": --function--, "__promise": [object Promise] } [latest-23338]2024-02-19T18:41:35.657Z <Engine:NOTICE> Starting reaction Front Cam Motion Detection ON or OFF Old Method<RESET> (rule-klten9w9:R) [latest-23338]2024-02-19T18:41:35.659Z <Engine:5:Engine.js:1701> [Engine]Engine#1 reaction rule-klten9w9:R step 1 perform [Object]{ "entity": "vera>system", "action": "x_vera_sys.runlua", "args": { "lua": "VeraScenes.FrontCamMotionDetectionOff()" } } [latest-23338]2024-02-19T18:41:35.660Z <Engine:5:Engine.js:1577> _process_reaction_queue() task returned, new status 3; task 22989, history 1629572 [latest-23338]2024-02-19T18:41:35.663Z <Engine:5:Engine.js:1624> _process_reaction_queue ending with 1 in queue; none delayed/ready; waiting [latest-23338]2024-02-19T18:41:35.671Z <VeraController:ERR> [VeraController:performOnEntity] action request failed [latest-23338]2024-02-19T18:41:35.672Z <VeraController:CRIT> Error: Request failed: 401 Error [-] Error: Request failed: 401 Error at /home/stuart/reactor/server/lib/Controller.js:886:37 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) [latest-23338]2024-02-19T18:41:35.673Z <Engine:ERR> [Engine]Engine#1 reaction rule-klten9w9:R step 1 perform x_vera_sys.runlua failed: [Error] Request failed: 401 Error [-] [latest-23338]2024-02-19T18:41:35.673Z <Engine:INFO> [Engine]Engine#1 action args: [Object]{ "lua": "VeraScenes.FrontCamMotionDetectionOff()" } [latest-23338]2024-02-19T18:41:35.674Z <Engine:5:Engine.js:1624> _process_reaction_queue() wake-up! [latest-23338]2024-02-19T18:41:35.675Z <Engine:5:Engine.js:1563> _process_reaction_queue() running task 22989: [Object]{ "tid": 22989, "id": "rule-klten9w9:R", "rule": "rule-klten9w9", "__reaction": [RuleReaction#rule-klten9w9:R], "next_step": 2, "status": 1, "ts": 1708368095651, "parent": --null--, "__resolve": --function--, "__reject": --function--, "__promise": [object Promise], "attempts": 0, "history_id": 1629572 } [latest-23338]2024-02-19T18:41:35.676Z <Engine:INFO> Resuming reaction Front Cam Motion Detection ON or OFF Old Method<RESET> (rule-klten9w9:R) from step 2 [latest-23338]2024-02-19T18:41:35.678Z <Engine:5:Engine.js:1753> [Engine]Engine#1 reaction rule-klten9w9:R step 3 notify Telegram with [Object]{ "message": "Front Garden CAM Motion Detection Off", "profile": "default" } [latest-23338]2024-02-19T18:41:35.685Z <Engine:INFO> Front Cam Motion Detection ON or OFF Old Method<RESET> all actions completed. [Was anyone else using this method to have Lua code run on your Vera hub being called via an MSR reaction ? Does it still work for you?
Thanks
Hello all, I am trying to create a timer in home assistant that will run for the amount of seconds left in the day. To do so, my plan is to create an expression in MSR where I subtract the seconds elapsed in the day from 86400. From there I will run a service command to start the timer for the seconds I calculated in the expression. I have tried using the time () function in MSR but cannot figure out a way to just get the time elapsed today and in seconds.
I really like these new widgets in MSR status page! Still, at least for the history-widgets, a filtering capability would be helpful. I have quite a many rules running with short intervals and they are clogging these lists making it harder to see "more interesting" ones...
Can file a request in Mantis, if there's wider support for the idea?
Hey Patrick, was wondering you could add the option to be able to disable each individual action. Often when I am testing new actions for my rules I have to copy the rule and then edit it, then once I am happy I have to copy the new actions back to the original rule. It also would be useful for situations when I need to disable certain actions for whatever reason, ie a device not working correctly. I know I can copy complete rules over and make whatever edits and then disable the old rule but it sometimes makes for a lot of different version of a rule that I am testing.
Good morning,
I'm running Home Assistant with MSR, and I do my automation strictly within MSR. I have some basic notifications set up, for instance, when my dishwasher has completed it's cycle, it'll send my iPhone a push notification via the x_haas.system.call_service --> notify.mobile_iphone action.
I saw in the Home Assistant documentation that you can push Actionable Notifications. The example they use if there is motion detection, but no one is home, you can sound an alarm or silence an alarm.
Can this be done from MSR and not directly in Home Assistant? I'd like to do something more of an acknowledgement, like if a door or window is left open, to have a way to get notified, but acknowledge that it is open, and not send any more notifications. If not acknowledged, the notification will continue every 5 or 10 minutes until the door or window is closed, or the notification is acknowledged. This would be useful in situations where I may have a slider door open for some fresh air, so it was deliberate, versus an entry door that didn't latch when entering or leaving the house.
Hi (fourth draft to simplify as I solve problems...)
My MSR is installed from the HASS add on store.
The Docker container did not have SSH client installed.
I was able to get SSH installed and setup keys on a remote worker server for password free SSH logins.
I now have a shell command that sends commands to the remote worker server. It renders content to a tidbyt LED matrix display.
Does anyone know if this will survive an update of the Reactor addon? Will the updated docker image wipe SSH and the private keys stored in the Reactor Docker Container?
Also - is it better to just move Reactor over to the worker server and manage my own updates?
I am using HAOS - Core-2024.1.2, Supervisor 2023.12.0, OS 11.3
Approach to Rulesets, a philosophic question
-
Having just embarrassed myself to @toggledbits by asserting that the latest release somehow had a bug when in reality it was surfacing underlying issues with my approach to building out my rulesets and automations I wanted to ask the collective for their feedback on how they've designed their rulesets.
For me, I built out a list of Global Reactions that I commonly use. For instance, for mode changes I typically change the mode entity and write that mode to a variable for some future use. When building out a ruleset I just pull in that Global Reaction vs manually recreating the entity list as my ruleset Reaction. Example, for lighting:
Each of these contains the appropriate group of lights to turn on/off, etc.
I also have what I've dubbed my "Armed for..." rulesets. These are rulesets that can be referenced as true or false in other rulesets. Example, for my various lighting configurations in and out of the house I have these:
I think this is resulting in reactions stomping on other reactions creating race conditions that result in things looking like they're working when, in reality, they're one restart away from disaster.
So how are you all designing your superstructure, if you will, at a high level?
-
I'm pretty much doing the same thing you are. Where these "Armed For" rules and the global reactions are used, I try to keep things as simple as possible. One trap I think people (myself included) get into is this notion that all actions have to done in one place for a specific event. For me, I like to spread the logic out in a lot of small rules, particularly because Reactor lets me enable and disable rules, so when rules are small and well-defined, if something is acting up during my implementation of some logic, I can turn a rule off (particularly if its causing problems for a device, like turning it on and off rapidly). It's easy for me to have a clear picture of conditions for each circumstance, as well.
Another thing that arose of the other discussion is that Reactor (MSR) is highly concurrent, meaning it can do a lot of things at once. This is unlike R4V, where things were pretty much single-threaded by the constraints of the OS and its plugin framework. That means a rule reaction that starts a global reaction will cause the two reactions to run concurrently. If one reaction has to wait for an action to complete (i.e. hub to tell it the command was received), the other action runs. And in fact, it's also possible that the action(s) completed thus far can cause a rule to be triggered -- rule evaluation is also eligible to be started in the "idle" time. That introduces the possibility that a rule could run during an interstitial state of another rule's actions -- work isn't done, but another rule kicks in. I think this was part of your problem -- rules need to be very tightly defined in these circumstances to prevent mis-firing in the interstitial states when another rule's actions haven't yet finished. One way to do this is to put conditions in a group, and use a stabilizing delay ("sustained for" on the enclosing group), to ensure that not only are the rule's conditions met, but they've stayed met and other pending changes didn't exclude the rule during the delay.
Example: I have a set of rules that when any primary kitchen light is turned on, the undercabinet and in-cabinet LEDs on MiLight controllers (secondary lights) are also turned on at 100%. When all kitchen lights are turned off, the LEDs are then turned off as well, unless it's Evening (defined by time in another rule set), where the undercabinet LEDs are set to 50%, and the in-cabinet LEDs are turned off. When Night is activated (we're all asleep), the LEDs are turned off, unless the house is in Guest Mode (a guest is spending the night) in which case the undercabinet LEDs on one side of the kitchen (the most-used/most-useful strip) go to 25%, and everything else is turned off (making an illuminated pathway to snacks and water if our guest gets up during the night). And when Party Mode is active, all automatic off actions are disabled (no "Last Call" effect that kills the party). And during Day mode, motion turns on the undercabinet LEDs for ambience. And of course, lack of motion in the kitchen for 10 minutes turns off all main lights (but not LEDs, and never in Party Mode). This is all a fairly intertwined set of requirements, but broken down it relies on mutually-exclusive states that are easy to test (Day vs Evening vs Night), overriding tests (Guest and Party modes), and transitive states (the conditions of the primary lighting devices). The transitive tests have stabilizing delays, because, for example, the rule and reaction that turns off the primary lights for lack of motion, if it occurs in the Evening, will turn off the LEDs and also trigger the rule and reaction that turns them on to 50%, and those two reactions will try to execute concurrently -- not good. Without the delay, I would very reliably get a mix of the undercabinet lights being on or off, rather than all on at 50%. But it's simple: the "Undercab Evening" rule just makes sure that all primary lights, as a group, have been off for a few seconds before it triggers and starts turning the LEDs on.
That may seem a bit complex, but the set of rules is actually pretty simple (I think). Here's how I've structured all that (typed-out since screen shots would be horribly large and long):
- Rule
Any Key Light On
is an OR group that is true when any of the three primary lights is on: sink, island, and main. This is an "Armed For" rule in your parlance (i.e. it has no reactions/actions of its own; its state is used by other rules). - Rule
Kitchen Recent Motion
is true when (triggers) the motion sensor trips; delay reset for 300 seconds. This is another rule that is only used by other rules, it doesn't have any reactions. - There are "global" rules for
Day
,Night
andEvening
periods as mutually-exclusive modes, andGuest Mode
andParty Mode
(just virtual switches). - Rule
Undercab Follower - On
turns on the LEDs to 100% whenAny Key Light On
is true. Just that simple. - Rule
Undercab Follower - Off
turns off the LEDs whenAny Key Light On
is false for a sustained two seconds. - Rule
Motionless Kitchen Off
turns off all primary lights and LED strips when (triggers) there has been no motion for ten minutes (Kitchen Recent Motion
is false sustained for 600 seconds) and Party Mode is false, and (constraints) whenAny Key Light On
is true on OR the always-used undercabinet LED strip is on. - Rule
Undercab Day Default
turns on the undercabinet LEDs (not in-cabinet) when (triggers) it'sDay
andKitchen Recent Motion
is true, and (constraints)Any Key Light On
is false (no primary lights are on); - Rule
Undercab Evening Default
turns on the undercabinet and in-cabinet LEDs at 50% when (triggers) it'sEvening
andAny Key Light On
has been false for at least 10 seconds (sustained for delay), and the always-used LED strip is not on. - Rule
Undercab Normal Night
turns off the LEDs when (triggers) Night is true and Party Mode is false and Guest Mode is false andAny Key Light On
is false. - Rule
Guest Mode Night
(should be calledUndercab Guest Night
for consistency, I suppose) turns on the always-used LED strip at 25%, all others off, when (triggers) Night is true and Guest Mode is true and the always-used LED strip has been off for at least 10 seconds.
Notice, for example, that I didn't make the effort to make a monolithic rule for
Motionless Kitchen Off
that figures out if it'sDay
,Evening
, orNight
, and ifParty Mode
orGuest Mode
were in effect, and set the LEDs accordingly. Rather, MKO just turns the lights off, and the other rules turn things back on after a small delay. This serves two masters: it keeps the complexity low, and it allows recovery from a manual operation (i.e. all the lights are turned off manually rather than by the rule) without the need for an additional rule to detect and act on that manual change. Sure, it's a little "flashy" (LEDs turn off, then may come back on shortly after, rather than just going directly to the new terminal state), but it's also very easy to understand and maintain, and spouse-approved. I have no love or desire for any more complexity than is required by my own sensibilities and the WAF. Anyway, I think a lot of people get bogged down thinking they have to handle everything on one condition (i.e. when the lights are turned off, I need to implement every possible terminal state right there in the rule where that's detected), and that's not the case. I was also able to develop these rules incrementally and without the complexity going non-linear with every new requirement I added.In computing we would say Reactor's rules and reactions are not "atomic." Atomic, in the computing sense, generally means an indivisible part — an operation that will be done without interruption. Rules and reactions in MSR aren't atomic. A reaction does not take over the CPU and run until the reaction is done. The reaction may give up the CPU at any step to allow other things to happen, as I said. This can affect how you write conditions for rules, particularly when the conditions involve devices you are modifying in the rule's reactions. For example, if you have two devices A and B that are always in opposite states by your requirements (A-on/B-off or A-off/B-on), and you use two reactions to set them to one state or another, there is always a period where they are in an interstitial state, where one has been modified and the other is about to be, therefore both are on or both are off. It is in the space between those two actions that things can go wrong. If you think in your mind that A and B are always opposite and therefore it's safe in a rule to just test A's state alone before launching into some other action(s), that rule may trigger in that interstitial state and cause who-knows-what problem, perhaps even something disastrous. The key here is don't assume the computer works the way your brain wants to think about it. Even though you may think A and B are always in opposite states, make sure your rules enforce that expectation as well -- both devices tested for their expected state.
Also, leave yourself a lot of comments in your rules and reactions, and if there are special conditions or actions, make sure to mention them. I think a lot of missteps occur when, for example, a reaction is written for a rule that only executes the reaction at night. Six months later, you have some need to do a similar thing during the day, so you decide to invoke that reaction to do your day work as well, but it does something else that you don't want, maybe something subtle that you don't notice right away, and a week or more later you start noticing and wondering why the landscape lights are on in the middle of the day. At that point, you've forgotten that you've re-used that reaction, and you've long-since forgotten that that reaction also turns on the landscape lights. Leave comments, and when reusing a rule or reaction, look at it and review what it does. Oh, and in this case, remember that the logs are your friend. Pretty much all device actions are logged at this point, so it's easy to spot the sequence of events leading up to a device being manipulated.
One thing I can do to make things a little easier with regard to the concurrency is give you the option of making reactions started from other reactions wait for completion. That's already in the Engine, it's just not exposed in the UI. That would keep a single reaction from lighting off too many concurrent reactions; it would not, however, eliminate the possibility of other rules evaluating while those reactions are in mid-stride. That's a completely different problem (and for the moment, best handled with those "sustained for" delays). But I'll make sure the wait option is in the next release.
Sorry for the firehose/text wall...
- Rule
-
@toggledbits This. This is exactly the response I was hoping to evoke from not just yourself but others who have been using the system for a while now.
What works for you?
What would you do differently?
What was a horribly wrong path?Your lighting example makes me think of my living room curtain and the TV. I prefer the curtain to be open during the day because of the view, but once it's dark outside and the lights are on inside then I'm the view lol
So, at sunset I want the curtain to close halfway. Once the TV goes on, close all the way down to the cat door (still allowing him access to his precious screened room.) But what if I was already watching TV before sunset. I still wanted the curtain open since it was daylight out but now I want it to close all the way down to the cat door at sunset. But once the TV goes off I don't want the curtain opening back up again.
And what about that blind to the right of the TV - the one that allows the neighbors to look right in as you watch TV? Nice people but I still don't need them watching ME watching TV. So the blinds get tilted whilst the TV is on... but it's after sunset... I could go on but you get the idea.
-
I have a similar approach (smaller rules, global reactions with groups and lots of comments). But I used a very complex one (dozen of triggers and constraints) on a couple of other situations, that I regret now.
I over complicated things because I was porting code, but when I have free time (an exceedingly rare event nowadays), I'll try to break them. I usually write simpler rulesets to get the state, and a reaction to execute the logic, that's invoked by other reactions (or even MQTT, as I documented previously). What attracted me to a single ruleset was the ability to write local variables (I use them a lot, being a programmer at heart), but you'll end up pretty soon with conflicting logic and problems in debugging the state.
What convinced me to move my logic to MSR was the multi-threading capabilities, because I'm mixing lot of things together and I'm comfortable with multiple actions/rulesets being execute simultaneous, but I agree it's tricky if you're not used to concurrency. I agree virtual switches are the best help and I hope to see native virtual devices in MSR soon.
-
I wanna answer your question so badly, but fear my input at this juncture would be invalid since I no longer have a use-case for MSR. Oh, it's still running 24/7 in a Docker container over on my Synology NAS... but once I finalized the transition from Vera over to Hubitat (THANK YOU 1000x @toggledbits !), and ported all my my old logic into my new C7 hub, my "fiddling" days abruptly ended.
Do I still have Rulesets in place (but disabled) on MSR Reactor (Multi-hub) latest-21307-1746e27? Yep. Are the Rules they contain worth mentioning, since 49% involved Vera and 49% were extremely/overly experimental in nature, with 2% marked for "Testing"? Nope.
And did I ever try to Register another username on the old long-forgotten ezlo Forum after being excommunicated 4x? AW HELL NAW!
But I will mention that MSR comes to mind periodically, such as earlier today, when I realized Hubitat lacks a native way to generate and send email messages to its users. And at other times when I delve into heavyweight plug-ins (the HE community calls them User Apps) like WebCore, I think to myself, "Hot damn, this would be waaaay easier to accomplish over in MSR."
Mostly, I'm posting this reply just to SAY HI TO THE GANG, whom I miss, and to let you guys know that all of the time (Vera tweaking) and headaches (ezlo PTSD) I've spared myself over the past year was invested in buying and riding a new electric bike (the Priority Current with Enviolo CVT), so now I know what the outdoors looks like.
PEACE and lemme know if my answer here raised more questions.
- Libra
-
Hear hear. Always good to "see" you, @LibraSun
-
@toggledbits said in Approach to Rulesets, a philosophic question:
spouse-approved
It is the best comment
-
I think there should be almost a unanimity to build small Reactions that are triggered by Rules, great practice for maintenance, and repetition of tasks.
What I've been doing is using delay in the calls when I want to have a sequencing of execution, i.e., in @toggledbits 's example of A and B being opposite, I know that there will be the interval of the two being equal, but managing the delay, I try to have greater control of the execution.
Another reason to use delay in the shots is as I have already reported in other posts, I see that shooting many simultaneous actions, generates failures, and some devices are not being triggered. Again @toggledbits intervened and improved a lot the communication between MSR and HE, but I ended up keeping the delay to a few seconds that I control in Rule.
What works for you? Use of delay to control the sequence;
What would you do differently? I think the path is very similar for everyone, I follow most of the simplification and many small rules;
What was a horribly wrong path? In my case, not having execution control on simultaneous executions. -
A short summary of my rulesets; first of all I'm using quite many rulesets (e.g. "lights outside", "lights inside", "sonos alerts", "statistics & alerts") that themselves contain a lot of rules ("statistics & alerts" contain 47 rules, that mainly send telegram messages when certain event happens). But one aspect of MSR that I haven't quite figured out yet is the use of global reactions. I have none of those.
-
@tunnus I use global reactions in situations wherein, for instance, I'm triggering the color-changing smart lights I have for landscape lighting. I've created global reactions for each light and each color I typically use. The global reaction contains four different settings (which would be a pita to add to five lights) that make up each color. I then just call that global reaction when I need that color at a specific light.
-
@therealdb said in Approach to Rulesets, a philosophic question:
I agree virtual switches are the best help and I hope to see native virtual devices in MSR soon.
You've now got your wish (22258)!
-
@toggledbits I’ll try them soon. I’m quite busy at work, but I hope to remove a couple of virtual devices from my Vera and move ha bridge and my dashboard to native MSR http commands. Thanks for the addition!
-