Skip to content

Multi-System Reactor

785 Topics 7.4k Posts
  • Category Topic Guide -- Read Before Posting

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

    Pinned Locked announcements
    122
    5 Votes
    122 Posts
    37k Views
    toggledbitsT
    Reactor STABLE Update The stable branch of Reactor is now updated to build 25139. Please scroll back and see the changes and advisories listed for builds here since the previous stable branch build (which was 24257, 13-Sep-2024), or whatever build you are currently running. ALL USERS: It's always recommended to back up your Reactor system before upgrading. IMPORTANT: Bare-metal users (only) need to do the following: Update dependent packages by executing npm run deps in the Reactor install directory. Reactor no longer supports nodejs versions before 20. If you are running on an earlier version, please upgrade nodejs before upgrading to this build, and make sure your current environment is working. Once you are sure Reactor is happy on the upgraded nodejs, then and only then should you upgrade Reactor to this new stable build. An even-numbered LTS (Long-Term Support) version of nodejs is recommended; the current LTS version is 22. If you are running extension controllers like ZWaveJSController or MQTTController in your configuration, you will need to upgrade those to their respective latest versions.
  • Errors after updating to MQTTController build 25139

    3
    0 Votes
    3 Posts
    29 Views
    tunnusT
    @toggledbits so if I understood correctly, in the latest MQTTController build it won’t define these kind of attributes automatically which it used to do earlier?
  • 🎉 My very first MSR controller: OpenSprinkler

    Locked
    13
    5 Votes
    13 Posts
    619 Views
    therealdbT
    Version 25154 on GitHub: https://github.com/dbochicchio/reactor-opensprinkler No release, just download the code. Fix for station status and support for MQTT capabilities in OS 2.2.1. Still based on both HTTP/MQTT because the underline fw is still not 100% MQTT-ready.
  • Set Reaction > Script Action

    4
    2
    0 Votes
    4 Posts
    39 Views
    toggledbitsT
    @wmarcolin said in Set Reaction > Script Action: Thank you for your comment, but I need this to be executed by an action already within the routines I program in Reactor. @crille is spot on. That's exactly what his suggestion does. Here's a trivial example of what he's saying: [image: 1748877180072-20d61d39-a97d-42a0-b863-3957f7bbf438-image.png] In this case, I'm not using the contents of a dynamic group, I'm just building a list on the fly using matchEntities(), but the effect is the same. At midnight every night, this rule turns all things that have the power_switch capability off. If your listed switches are in a group, either created using DynamicGroupController, or an expression of some grouping the underlying controller has (Vera and Hubitat have groups and Reactor expresses those as group entities you can use), then you can easily modify this example. And in fact, you don't even need to do that, because Reactor understands how to do actions on groups, so you can just do one action on the group entity (in a regular Entity Action or by calling performOnEntity() in a Script Action) and Reactor will perform that action on all members of the group (so, you don't even need the each expression construction). [image: 1748877634271-3be9e0e4-2184-490f-974b-b2c089bdeab8-image.png]
  • Advice reqeusted to migrate MSR from Bare Metal to Container

    5
    0 Votes
    5 Posts
    80 Views
    T
    @toggledbits, Well, I took a first step. I tried using the docker-compose.yaml file with podman-compose, but it gave me some issues. I fell back on just using docker-compose, and it worked with only a minor hickup. It told me the version tag was depricated and to remove it to prevent problems in the future, so I did so, and it's running without issue. Rules and reactions are working as before, which is fantastic. Reactor on my old server is stopped/disabled, so one more item crossed off. I'm hoping to have the old server fully decommissioned this weekend. At some point, I'll go back and try and get it running with Podman, if it's possible. I can engage their community and see if they have any advice, but right now it's more important for me to turn off my office heater going into summer. The other major advantage is that in theory, I won't have to manually update nodejs each release, which has been kind of a pain lately.
  • Can´t restart or upgrade/deploy MSR

    4
    1
    0 Votes
    4 Posts
    117 Views
    toggledbitsT
    @Fanan Great! A little more digging on my end, without a complete picture of your end, leads me to CORS. That is exactly the wording of an error I'd expect from CORS, and since HA Blue proxies for its add-ons, I'm betting that's where the issue lies. I don't know what that means for your (HA + Portainer) configuration, but I'd start with the Portainer add-on's support forums. This isn't really Reactor-related.
  • [Solved] Limit HA Entity in MSR

    7
    1
    0 Votes
    7 Posts
    241 Views
    wmarcolinW
    @toggledbits While you're at it, could you add to Santa's list a request for a function that, when given two coordinates, returns the distance between them? I'll explain the use case: when Life360 worked on Hubitat, one of the variables was precisely the distance between the device and the point determined as the home. However, as I said, it hasn't worked for a long time. This was one of the reasons for installing Home Assistance, which works perfectly, but it doesn't have this information, so I had to do the calculation. I know, you're going to say what a horrible thing, what a mess, but it's working. I prepared a series of calculations, using the coordinates of my home as a reference, for my phone WIL and my wife's phone ADRI. The phone coordinates come from Life360. [image: 1747788334739-525b8ca4-86c2-424f-a3c6-6b11aba39730-image.png] Next, I have the calculations. [image: 1747788467055-391c3a64-dbf9-4a7d-b01c-2a583a6bc83f-image.png] So, I have the result. [image: 1747788504176-36c24be1-f4ec-426e-af61-485de33457de-image.png] I used this formula Python. from math import radians, sin, cos, sqrt, atan2 def haversine(lat1, lon1, lat2, lon2): R = 6371 # raio da Terra em km dlat = radians(lat2 - lat1) dlon = radians(lon2 - lon1) lat1 = radians(lat1) lat2 = radians(lat2) a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 c = 2 * atan2(sqrt(a), sqrt(1 - a)) return R * c # distância em km Thanks.
  • Organizing/ structuring rule sets and rules

    5
    0 Votes
    5 Posts
    396 Views
    G
    @RHCPNG As @toggledbits notes, I've found myself bouncing around a bit. I've settled on what I call Shared Rules - those that impact all things potentially, at a base level. Wx stuff, HVAC stuff, etc. I kinda branch out from there. Interior lighting, Outdoor lighting, Presence, etc. Sorta using "topics" and then rulesets under them. I'm also linked to our local community center via site-to-site VPN and am using my home MSR instance to control the Hubitat C7 over there for lighting and outdoor fans
  • Moving MSR from a QNAP container to RP 5 - some issues

    Solved
    5
    1
    0 Votes
    5 Posts
    379 Views
    G
    @Tom_D please mark issue thread as solved
  • Widget deletion does not work and landing page (status) is empy

    4
    2
    0 Votes
    4 Posts
    371 Views
    G
    @mgvra the landing page issue was addressed here as a side note in another issue thread: https://smarthome.community/post/16764
  • Need help reducing false positive notifications

    7
    1
    0 Votes
    7 Posts
    560 Views
    T
    @toggledbits, I tried to go about the way you mentioned, but I don't think it was quite suited for my purpose. The purpose of the rule is to send a notification through Home Assistant to my phone, and I didn't want a delay that I believe your method would have introduced. What I came up with was creating a global variable and a helper rule, that sets the global variable to true when the 300 seconds is exceeded of power being above 3.7. [image: 1744127635657-b0f50fcc-a06f-49a6-9ccb-38f718d7cc42-image-resized.png] [image: 1744127574793-88547953-dbd8-4646-80a9-48b03a6c09ad-image-resized.png] Then there is a Variable Value check in the Triggers of the Notification rule: [image: 1744127400119-8b91b3c4-cc46-44db-a4f1-a76408f7c79b-image-resized.png] The Reaction resets the Global rule back to false, after the cycle is completed. It may not be the most elegant method, but it reduces the false positives on my phone when the cycle selector is bumped. For the same reason, I have the reactor uptime checked, because I would get tons of notifications on my phone when I did an update to MSR, or when my server was rebooted. I know I could completely encapsulate the logic within MSR, but the overly simplistic sensor in HAAS serves it's own purpose in HAAS for my dashboard, and HAAS can't read rule states from MSR, so for my purpose, I already have the simple sensor in place, so why reinvent the wheel?
  • Deleting widgets

    Locked
    4
    0 Votes
    4 Posts
    484 Views
    toggledbitsT
    As of build 24343, widget deletion is accomplished by dragging the widget to the top navigation bar (only). Dragging to the left margin no longer deletes the widget.
  • MQTT configuration question

    Solved
    11
    0 Votes
    11 Posts
    679 Views
    tunnusT
    Hint: for debugging, when you run an action, MQTTController logs the exact topic and full payload being published at INFO level by default. I've used MQTTX, which I can highly recommend
  • System Configuration Check - time is offset

    8
    0 Votes
    8 Posts
    689 Views
    G
    @toggledbits I have indeed used the code... and no, this isn't critical. Once I saw MSR was running and working as intended I moved on. Release AYC. @Fanan Re time sync: I did a apt-get install systemd-timesyncd on the Proxmox host. I've not seen the warning since.
  • Programmatically capture HTTP Request action status code or error

    3
    0 Votes
    3 Posts
    478 Views
    therealdbT
    So, an empty string is 200ish, otherwise error/timeout is null? That works, thank you!
  • 0 Votes
    9 Posts
    608 Views
    toggledbitsT
    First, always look at the logs. I'm 100% certain that "nothing happens" isn't what's in the logs. It looks like the device has separate targetValue values for the white channels, so you may just need to use those. That means for red, green, and blue, you'll use targetValue for the property with a JSON object, but leave the propertyKey blank. For warm white, you use property targetValue with propertyKey zero (0), and for cold white you'll use propertyKey one (1). Edit: look at the logs
  • Problem with simultaneous notifications.

    1
    2
    0 Votes
    1 Posts
    232 Views
    No one has replied
  • Problem after upgrading to 25067

    4
    0 Votes
    4 Posts
    360 Views
    R
    I reviewed my Reactor configuration file. Some time ago I had duplicated one of the hubitat device sections in anticipation of making changes to my extended LAN. While one entry was marked as "enabled: false", it seems that MSR did not like the duplicate ID even though the duplicate was disabled. I added and "X" to the "id" and "name" of the duplicated entry and the error messages ceased. Thanks for the help
  • Global expressions not always evaluated

    3
    2
    0 Votes
    3 Posts
    315 Views
    tunnusT
    @toggledbits great! Will this fix make it to the next build?

Recent Topics