Skip to content

Multi-System Reactor

757 Topics 7.2k Posts
  • Category Topic Guide -- Read Before Posting

    Pinned Locked
    1
    8 Votes
    1 Posts
    730 Views
    No one has replied
  • Reactor (Multi-System/Multi-Hub) Announcements

    Pinned Locked
    116
    5 Votes
    116 Posts
    16k Views
    toggledbitsT
    Reactor build 25016

    HOME ASSISTANT NOTE: Versions of Home Assistant earlier that 2024.1.0 are no longer supported. They may continue to work, but I won't be troubleshooting any issues that come up with them. Generally speaking, HA releases are supported one year in arears from current.

    NODEJS V18 EOL: If you are using nodejs version 18, it will go off maintenance on April 15, 2025, and is therefore now deprecated. Please update to a more recent version before this date. Even-numbered LTS versions are recommended. Version 20 will go EOL in April 2026, and version 22 (recommended) in 2028.

    Reaction List: Fix an error thrown when creating a new Reaction. Dashboard: improve display of ValueSensor class objects for capabilities temperature_sensor, humidity_sensor, battery_level, and volume. HassController: Support new vacuum activity attribute and values (see HA 2025.1 release info). HassController: Support state for lawn mowers. HassController: Add x_hass_system.reload_configuration and x_hass_system.restart actions. HassController: Bless Hass to 2025.1.2
  • [SOLVED] reactor_inet_check script... and containers

    5
    0 Votes
    5 Posts
    19 Views
    toggledbitsT

    @gwp1 said in [SOLVED] reactor_inet_check script... and containers:

    Most days I'm not very smart... but I'm stubborn.

    It's good to know I'm in good company.

  • [Solved] Migrating MSR to Docker on Proxmox

    12
    0 Votes
    12 Posts
    121 Views
    G

    To bring this all full circle, I had installed Portainer just to see what it was/did. Rereading the manual for MSR I stumbled across Portainer-specific instructions.

    Short story long, I deleted the original container and created a new one thru the Portainer path. Done in mere minutes, runs flawlessly and I don't need to worry about the docker-compose errors I was getting.

    Going to mark this topic as solved as all of the three issues were addressed.

  • Runtime error latest-24366 when Create New Reaction

    6
    0 Votes
    6 Posts
    48 Views
    B

    Confirming that 25016 has indeed resolved the error.

    Thank you !!

  • Vera reload detected where there does not appear to be one.

    3
    0 Votes
    3 Posts
    57 Views
    CatmanV2C

    That's fabulously clear. Thanks, as ever

    C

  • Has something changed with the "Changes" operator in Constraint groups ?

    6
    0 Votes
    6 Posts
    103 Views
    cw-kidC

    OK thanks, I think that works!

    So I have two rules now the main 1st rule that detects Motion on the IP Camera and also a Virtual Switch must be True, those are the two triggers, this is the rule with the Actions in it.

    In the Constraints I am referencing the "Rule State" of the 2nd new rule and that must be False.

    ffb990d2-5b0f-419f-88e3-4cde28ed51b0-image.png

    This is the new 2nd rule and I have just used the Triggers with the "Changes" operator.

    So if any of these devices change their state within the X number of Seconds the OR group will be True thus the 1st main rule would NOT run its Actions in that case.

    But if none of these devices have changed their state within the X number of Seconds the OR group will be False thus the 1st main rule would run its Actions.

    e972131c-82e8-44b6-819f-dfe9a217692a-image.png

  • Reactor-Editor / Reactor-ui-Status Errors

    15
    0 Votes
    15 Posts
    336 Views
    V

    Thanks for the update and sorry about the timeout issue, I was not aware of it.

    Here is the requested rule:

    ac60b96d-b639-4baf-95d4-853332bc62be-image.png

    10cbe2e7-0af9-4ede-afa8-060b0f99befe-image.png

    f9282548-9462-4c52-a125-dc57fc9c3fa6-image.png

  • [Solved] Error dialog running reaction in build 24302

    2
    0 Votes
    2 Posts
    84 Views
    toggledbitsT

    @vezinpi said in Reactor-Editor / Reactor-ui-Status Errors:

    Not sure that it is the same issue but just got this on built 24302 when running a reaction for testing purpose. Despite the error message, the reaction ran properly.

    That was fixed in 24343. The reaction apparently runs long (lots of delays?), so it was causing the API to time out waiting for the reaction to finish. All works differently in 24343 and beyond.

  • every X days field uneditable

    11
    0 Votes
    11 Posts
    134 Views
    G

    @tunnus yes, the rule is working and @toggledbits indicated as such (that it would work) but he raised a potential issue regarding the crossing of midnight that I was asking about there being a better approach.

  • Darker Reactor style

    11
    1 Votes
    11 Posts
    308 Views
    therealdbT

    small update to align to 24343. https://gist.github.com/dbochicchio/825098ac13b7f8cac22012eae37ff7ce

  • Which user to install nodejs as ? Debian Linux

    20
    0 Votes
    20 Posts
    691 Views
    G

    @therealdb I have the hardware, just haven't had the time yet, to do exactly this.

  • OpenAI Controller for Reactor

    2
    1 Votes
    2 Posts
    154 Views
    therealdbT

    Thanks to @toggledbits for guidance and the new option to capture response from actions into variables. It was quite fun to write this controller!

  • Thanksgiving lighting took a holiday

    5
    0 Votes
    5 Posts
    209 Views
    G

    Ok, oddly, the correct lights came on last night. 🤷♂

  • Reference error - null object

    Solved
    4
    0 Votes
    4 Posts
    227 Views
    toggledbitsT

    @tunnus et al, please don't post screen shots of code/expressions or logs. Screen shots often end up displaying at a reduced size that makes them very difficult to read. Just copy-paste the actual text and use a fenced code block.

    To the question, as @therealdb said, judicious use of the coalesce operators will generally help here, particularly if you apply local knowledge of the desired outcome. There's another one that's often helpful when working with sources for numeric values that can be occasionally null:

    The ?# operator will take any left side expression and convert it to a number or the value on the right side, so someexp ?# -1 would produce -1 if the value of someexp can't be converted to a number or is null or NaN. In other words, the general form somexp ?# altval is shorthand for do local t=float(someexp), isvalue(t) ? t : altval done

    You can use this to produce, for example, an "off scale low" value that wouldn't trip a "greater than" operator on a trigger for a temporary missing value on an entity. This would let you write your expression more tightly as:

    round( getEntity( "..." )?.attributes?.current_sensor?.value ?# 0 * getEntity( "..." )?.attributes?.x_hubitat_extra_values?.voltagePhase1 ?# 0, 0 )

    Note that the ?# operator has higher precedence than the math operators (like * and +) so you don't need parentheses around the subexpression in this case.

    That said, if it's specifically zero you're after where there's a null, you may not need to do anything special, because the expression language follows the JavaScript semantics for null in arithmetic: null is treated as zero (e.g. null * 8 = 0 * 8 = 0 and null + 8 = 0 + 8 = 8). So this could be written even shorter as:

    round( getEntity( "..." )?.attributes?.current_sensor?.value * getEntity( "..." )?.attributes?.x_hubitat_extra_values?.voltagePhase1, 0 )
  • Trouble Configuring Multi-System Reactor Logic Across Devices

    4
    0 Votes
    4 Posts
    251 Views
    therealdbT

    @gwp1 I removed the link. Let's see if @gregbowers is a bot or not 🙂

  • MSR UI on a mobile browser

    7
    0 Votes
    7 Posts
    287 Views
    toggledbitsT

    @mrFarmer said in MSR UI on a mobile browser:

    Toggling the hamburger menu shows most pages except status. That rarely shows a widget especially in landscape mode. I would not think about making or changing rules on a small screen, but being able to look at the status would be nice.

    Found and fixed for next build. That sent me on a bit of a mission to try to improve the general appearance on the UI, even if editing will never really be fully supported (it may work, but I'm not going to approach it as a "mobile first" redesign, because I don't think that makes sense for this project). Here are some examples of work so far.

    Screenshot_20241125_123614_Brave.jpg Screenshot_20241125_123645_Brave.jpg

    This is a Samsung Galaxy S24 phone. Reduced top (nav)bar, menu moved from left margin to top and stripped of text. Columns removed from lists at this size.

    Screenshot_20241125-123742.png Screenshot_20241125-123711.png

    This is Samsung Galaxy S2 tablet. At this size, the menu returns to the left side, but still without text.

    The Status widget problem is fixed, and in addition, there was an issue where the Status widgets would drag if you touched anywhere in them -- they're only supposed to drag from their headers. Touch is still not working great on the phone (smallest size), but I'm still chipping at it, trying to find a workaround (the gridstack library controls the touch behavior, so I'm at the mercy of their choices and issues).

  • 0 Votes
    2 Posts
    289 Views
    toggledbitsT

    Harmless. Just a warning. I'll see about quieting it for the next build.

  • 0 Votes
    4 Posts
    317 Views
    toggledbitsT

    The error message will be improved, but for reference for future readers, there are two ways to fix this when it happens:

    Change the name of your local variable.

    Explicitly declare and initialize your local variable at the start of your expression as explicitly local. For example, assuming alpha is the name of a global expression/variable but we want to use it as a local variable name:

    local alpha=0, each e in matchEntities( { capability: 'dimming' } ): alpha = alpha + 1
  • 0 Votes
    5 Posts
    252 Views
    therealdbT

    @toggledbits thanks for the help. I will eventually improve this code and apply capabilities only if the device is somewhat new/changed or at startup. OpenSprinklerController is peculiar, but I think I could manage to achieve this result.

    This code is shared among my controllers, I've modified them to better handle updates. Thanks!

Recent Topics