Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Unsolved
Collapse
Discussion Forum to share and further the development of home control and automation, independent of platforms.
  1. Home
  2. Software
  3. Multi-System Reactor
  4. Multi-System Reactor Developer Preview AVAILABLE
Home Assistant 2025.11.2 and latest-25315
CrilleC
Topic thumbnail image
Multi-System Reactor
Reactor (Multi-System/Multi-Hub) Announcements
toggledbitsT
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.
Multi-System Reactor
Notice to Docker + ARM Users (RPi 3/4/5 and others)
toggledbitsT
This post does not apply to users of Intel/AMD-based systems. If you are using a Reactor image tagged latest-amd64 or stable-amd64, then this post does not apply to you. It also does not apply to bare-metal installs; it's for users of docker images on ARM-based systems only (principally Raspberry Pi hosts, but could be others). After January 15, 2026, I will no longer produce the aarch64-tagged docker image for Reactor. The ARM images will be arm64 for 64-bit operating systems, and armv7l for 32-bit operating systems. For those of you running a container from the aarch64 image today, this will be a relatively simple change: you just need to switch the image used for your docker container to a differently-tagged image. If you are using docker-compose, then this is a relatively simple matter of changing the image line in your docker-compose.yaml file and then stopping (docker-compose down) and restarting (docker-compose up -d) your Reactor daemon. But there's a catch... not all of you can safely just switch from the aarch64 image to the arm64 image. And, you can't just trust the output of uname -m, for example, because this exposes the CPU architecture, but not the word size of the OS running on that CPU. For Raspberry Pi systems, the transition to 64-bit operating systems was long (starting in 2016) and not always obvious — although there was a first "official" 64-bit OS for RPis in 2020, it did not become a default recommendation in the Raspberry Pi Imager until 2021, and then that was only the default for Pi 3/4 systems with >4GB RAM; it was 2022 before it was universally recommended for all 64-bit CPUs regardless of RAM size. Depending on when you first imaged your RPi system and what default you may have been offered/chosen, you could today easily have a 64-bit CPU Raspberry Pi running a 32-bit version of the operating system. Upgrades along the way would not change this; changing it to fully 64-bit requires a full reimage of the system. To establish if your OS is 64- or 32-bit, log in to your Pi and run: sudo dpkg-architecture -q DEB_HOST_ARCH. If the response is arm64 or aarch64, then you are running a 64-bit OS and you should use the arm64-tagged image. If it's anything else, you are running a 32-bit OS, and you should use the armv7l-tagged image. pi@rpi4-1:~ $ sudo dpkg-architecture -q DEB_HOST_ARCH armhf pi@rpi4-1:~ $ uname -m aarch64 pi@rpi4-1:~ $ In the example above, the uname command reports that the CPU is 64-bit architecture (aarch64), which is true for the host on which I ran these commands, but the DEB_HOST_ARCH value is armhf, indicating a 32-bit operating system. This system has to use the armv7l-tagged image. Other systems will have their own ways of determining the word size of the running OS. Since the majority of Reactor users running ARM systems are on Raspberry Pis, I am able to supply the above instructions, but if you happen to have a different ARM system, you'll need to do some web searching to figure out how to expose that information. Or, you can just try the arm64 image, and if it doesn't start up, try the armv7l image. Remember to always back up your system before making any changes. For everyone, please make this change as soon as possible, and if you have any trouble finding a working image, please (1) go back to the current aarch64 image; and (2) let me know in this thread along with as much detail about your host system as you can offer (including the output of the dpkg-architecture command mentioned above).
Multi-System Reactor
Requesting a proper ARM64/aarch64 Docker image (Pi 5 support)
M
Hi, I'm in the process of migrating from a Raspberry Pi 4 (ARMv7) to a Raspberry Pi 5 (ARMv8/aarch64), but I’ve run into an issue: there is no proper ARMv8/aarch64 image available. None of the existing images run on the Pi 5 - they all exit immediately with code 139 (segmentation fault), which typically indicates that the binaries inside the image are not compatible with the ARM64/aarch64 architecture used by the Pi 5. Would it be possible to publish a correct ARMv8/aarch64 (linux/arm64) image? Building one should be relatively straightforward using docker buildx with multi-arch support. For example, my own Node.js images are built this way: docker buildx build --push \ -t <localrepo>/<project>:<tag> \ --platform=linux/arm64,linux/amd64 \ --file ./apps/<project>/Dockerfile . This produces both the AMD64 and ARM64/v8 variants automatically. Also, as a side note, it may be best to avoid using Alpine as the base image for the ARM64 build, since musl-based builds often cause compatibility issues and unnecessary headaches. A glibc-based base image (e.g., Debian or Ubuntu) tends to work far more reliably on ARM64, especially for Node.js applications. @toggledbits - tagging you in case you missed this. Thanks, mgvra
Multi-System Reactor
Script action and custom timers
therealdbT
Sorry to write here without trying, but I’m flying today. Am I correct if i say that script action with alarm() makes it possible to execute a reaction in a given interval, lets say 15 seconds or 3.5 minutes? That sounds amazing, since I’ve used weird tricks, including a custom controller, just to do this.
Multi-System Reactor
Help resolve change in behaviour post update
CatmanV2C
Topic thumbnail image
Multi-System Reactor
Reactor w/HA 2025.11 error on set_datetime service call setting only time
CrilleC
@toggledbits Do you know if this is related to that PR or is it a change they made in 2025.11.1? [latest-25310]2025-11-11T13:16:24.319Z <HassController:INFO> HassController#hass perform x_hass_input_datetime.set_datetime on Entity#hass>input_datetime_vvb_dag with { "time": "10:45" } [latest-25310]2025-11-11T13:16:24.320Z <HassController:INFO> HassController#hass: sending payload for x_hass_input_datetime.set_datetime on Entity#hass>input_datetime_vvb_dag action: { "type": "call_service", "service_data": { "date": (null), "time": "10:45", "datetime": (null), "timestamp": (null) }, "domain": "input_datetime", "service": "set_datetime", "target": { "entity_id": "input_datetime.vvb_dag" } } [latest-25310]2025-11-11T13:16:24.321Z <HassController:ERR> HassController#hass request 1762866984320<2025-11-11 14:16:24> (call_service) failed: [Error] Not a parseable type for dictionary value @ data['date'] [-] [latest-25310]2025-11-11T13:16:24.321Z <HassController:WARN> HassController#hass action x_hass_input_datetime.set_datetime({ "time": "10:45" }) on Entity#hass>input_datetime_vvb_dag failed! [latest-25310]2025-11-11T13:16:24.321Z <HassController:INFO> Service call payload: {"type":"call_service","service_data":{"date":null,"time":"10:45","datetime":null,"timestamp":null},"domain":"input_datetime","service":"set_datetime","target":{"entity_id":"input_datetime.vvb_dag"},"id":1762866984320} [latest-25310]2025-11-11T13:16:24.322Z <HassController:INFO> Service data: {"fields":{"date":{"example":"\"2019-04-20\"","selector":{"text":{"multiline":false,"multiple":false}}},"time":{"example":"\"05:04:20\"","selector":{"time":{}}},"datetime":{"example":"\"2019-04-20 05:04:20\"","selector":{"text":{"multiline":false,"multiple":false}}},"timestamp":{"selector":{"number":{"min":0,"max":9223372036854776000,"mode":"box","step":1}}}},"target":{"entity":[{"domain":["input_datetime"]}]}} [latest-25310]2025-11-11T13:16:24.322Z <Engine:ERR> Engine#1 reaction rule-mgb8pfhs:S step 0 perform x_hass_input_datetime.set_datetime failed: [Error] Not a parseable type for dictionary value @ data['date'] [-] [latest-25310]2025-11-11T13:16:24.322Z <Engine:INFO> Engine#1 action args: { "time": "10:45" } [latest-25310]2025-11-11T13:16:24.322Z <Engine:INFO> Resuming reaction Sätt Schema VVB i Home Assistant<AKTIV> (rule-mgb8pfhs:S) from step 1 [latest-25310]2025-11-11T13:16:24.323Z <HassController:INFO> HassController#hass perform x_hass_input_datetime.set_datetime on Entity#hass>input_datetime_vvb_natt with { "time": "03:00", "timestamp": 0 } [latest-25310]2025-11-11T13:16:24.323Z <HassController:INFO> HassController#hass: sending payload for x_hass_input_datetime.set_datetime on Entity#hass>input_datetime_vvb_natt action: { "type": "call_service", "service_data": { "date": (null), "time": "03:00", "datetime": (null), "timestamp": 0 }, "domain": "input_datetime", "service": "set_datetime", "target": { "entity_id": "input_datetime.vvb_natt" } } [latest-25310]2025-11-11T13:16:24.324Z <HassController:ERR> HassController#hass request 1762866984323<2025-11-11 14:16:24> (call_service) failed: [Error] Not a parseable type for dictionary value @ data['date'] [-] [latest-25310]2025-11-11T13:16:24.324Z <HassController:WARN> HassController#hass action x_hass_input_datetime.set_datetime({ "time": "03:00", "timestamp": 0 }) on Entity#hass>input_datetime_vvb_natt failed! [latest-25310]2025-11-11T13:16:24.324Z <HassController:INFO> Service call payload: {"type":"call_service","service_data":{"date":null,"time":"03:00","datetime":null,"timestamp":0},"domain":"input_datetime","service":"set_datetime","target":{"entity_id":"input_datetime.vvb_natt"},"id":1762866984323} [latest-25310]2025-11-11T13:16:24.324Z <HassController:INFO> Service data: {"fields":{"date":{"example":"\"2019-04-20\"","selector":{"text":{"multiline":false,"multiple":false}}},"time":{"example":"\"05:04:20\"","selector":{"time":{}}},"datetime":{"example":"\"2019-04-20 05:04:20\"","selector":{"text":{"multiline":false,"multiple":false}}},"timestamp":{"selector":{"number":{"min":0,"max":9223372036854776000,"mode":"box","step":1}}}},"target":{"entity":[{"domain":["input_datetime"]}]}} [latest-25310]2025-11-11T13:16:24.324Z <Engine:ERR> Engine#1 reaction rule-mgb8pfhs:S step 1 perform x_hass_input_datetime.set_datetime failed: [Error] Not a parseable type for dictionary value @ data['date'] [-] [latest-25310]2025-11-11T13:16:24.324Z <Engine:INFO> Engine#1 action args: { "time": "03:00", "timestamp": 0 } [latest-25310]2025-11-11T13:16:24.325Z <Engine:INFO> Resuming reaction Sätt Schema VVB i Home Assistant<AKTIV> (rule-mgb8pfhs:S) from step 2 [latest-25310]2025-11-11T13:16:24.325Z <Engine:INFO> Sätt Schema VVB i Home Assistant<AKTIV> all actions completed.
Multi-System Reactor
Reactor Version 25310 : Office Light control via rule in reactor no longer working since last update.
P
Hello, I currently have an office light (connected via a Leviton Zwave Dimmer switch) controlled from a Gen5 Aeotech Zwave switch installed on my Synology 720+ NAS. I run HA(2025.11.10) in a virtual machine from my NAS and Reactor on the container manager of the same NAS. Prior to updating to 25304 the rule I had set to turn the light on to a specific dimming value worked correctly. Now the rule appears to follow the decision tree, however the reaction does not trigger setting the dimming or turning on the office light? Strangely I can still turn the light on and off as well as dim it directly from HASS..? I have tried using the ''try this action'' button in the rules reaction setting and it will not control the light and does not throw an error flagÉ Please help, P.S Reactor has been rock steady for me over the last few years and I'm a big fan of this solution.
Multi-System Reactor
[Solved] alarm() in global expression throws error in log.
CrilleC
Topic thumbnail image
Multi-System Reactor
[Solved] Define function issue in latest-25304
CrilleC
Topic thumbnail image
Multi-System Reactor
No Upgrade Notification for Build 25308?
CatmanV2C
FWIW I'm no longer getting a notification from MSR that there's an update. Just thought I'd mention it C
Multi-System Reactor
Strange behavior in MSR latest-25304 with disabled groups in Reaction
therealdbT
Topic thumbnail image
Multi-System Reactor
[Reactor] Variables not updating correctly in latest-25201-2aa18550
therealdbT
Topic thumbnail image
Multi-System Reactor
The reaction stopped working (Google Nest max playing a video)
F
Topic thumbnail image
Multi-System Reactor
Handling Dead Entities and Renamed Entities
PablaP
Hello all.. been a minute! I recently rebuilt my Z wave network and migrated to a new z wave stick. In order to prevent any downtime I kept my original z wave network up and ran a docker version of Z Wave JS UI with my new controller. This way I could add device by device without having any devices down. I finally moved all the devices over to my new stick today. The final step was to migrate everything from my Docker instance of Z Wave JS UI to the HA add-on of Z Wave JS UI. However during this migration some of the names didn't populate correctly which I later managed to import back into Z Wave JS UI. The issue was in Reactor it is stuck on the default names and the entities are not updating. I removed the controller from Reactor, restarted, hard refreshed, and added the controller back however the new entity names have not updated. Also it seems like the old entities from my previous instance of Z Wave JS UI are lingering and not being marked as dead (I believe a certain amount of time needs to lapse before they're marked as dead in Reactor). My goal is to basically purge all the entities for the 'ZWaveJS' controller in Reactor so it can pull all the updated entity names and only the entities that exist in Z Wave JS UI. I cannot find a quick way to do this, I know entities can be deleted one by one, but with over 100 entities this would take long I am guessing that if I added the controller with a new name in in the Reactor config it would pull the updated entities and names but I think that would break my rules since the entity IDs would change (I made sure to name all the entities the exact same as they were previously to prevent this issue).
Multi-System Reactor
Strange behavior for MQTT templates using payload and attributes
therealdbT
Topic thumbnail image
Multi-System Reactor
[MSR] reactor-mqtt-contrib package for additional MQTT templates
therealdbT
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
Multi-System Reactor
HA 2025.9.4 Supported Yet?
CatmanV2C
Tangentially did I miss 2025.9.4 getting blessed in MSR? I've been holding off Cheers C
Multi-System Reactor
Rule Set UI bug - RESOLVED
3
Topic thumbnail image
Multi-System Reactor
[Reactor] Copy&Paste of Rules
therealdbT
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
Multi-System Reactor

Multi-System Reactor Developer Preview AVAILABLE

Scheduled Pinned Locked Moved Multi-System Reactor
124 Posts 12 Posters 49.7k Views 14 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • toggledbitsT Offline
    toggledbitsT Offline
    toggledbits
    wrote on last edited by
    #108

    Build 21106:

    • 0000177 Hubitat modes broken in 21105

    Fixed an issue with (non-)presentation of the entity picker when clicked; fixed the bell click (broken by 0000168 fix); removed unused packages from configuration.

    PLEASE RUN npm update --nosave AFTER UPDATING.

    Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

    1 Reply Last reply
    1
    • toggledbitsT Offline
      toggledbitsT Offline
      toggledbits
      wrote on last edited by toggledbits
      #109

      Build 21117

      This build represents a significant update from previous builds. Principally, this build provides action groups in reactions, and action groups support constraints. So it now possible for the SET or RESET reactions in your rules to have conditionally-executed actions. This feature applies to rule-based reactions only; it is not a feature of global reactions (and for the removal of doubt, will not be in future). In addition, the following PRs are addressed:

      • 0000186 Add quick-selects for weekends and weekdays to Week Day condition type.
      • 0000184 Pushover now supports "device" parameter correctly.
      • 0000180 Using left nav when active editor has no changes pending is now allowed.
      • 0000179 Catch-all for a number of lexpjs (expression) fixes and enhancements.

      This version also incorporates a lot of UI enhancements and cleanups; still much to do, though.

      Also new, there are now three "official" Docker image builds available on DockerHub:

      • toggledbits/reactor:latest-generic-amd64 -- Generic Intel/AMD Linux
      • toggledbits/reactor:latest-synology-amd64 -- Synology-specific (see more below)
      • toggledbuts/reactor:latest-raspbian-armv7l -- Raspian Buster (Raspberry Pi)

      These Docker images can be downloaded using the usual docker pull <imagename> syntax.

      For all images, when creating the container you must map /var/reactor to a local directory in which your Reactor configuration and storage files are located. You should also bind /etc/localtime to the same-path file on your local system to get the correct timezone in the container. If this is not possible or does not correctly set the timezone for your container, the TZ environment variable should be set.

      Typical to run:

      # For generic:
      docker run -d -p 8111:8111 -v /my/reactor/data:/var/reactor --mount type=bind,src=/etc/localtime,target=/etc/localtime toggledbits/reactor:latest-generic-amd64
      
      # For Raspian:
      docker run -d -p 8111:8111 -v /my/reactor/data:/var/reactor -e TZ=America/New_York toggledbits/reactor:latest-raspbian-armv7l
      

      SPECIAL INSTRUCTIONS FOR SYNOLOGY DOCKER IMAGE UPGRADE (ONLY):

      I will no longer be making the manual-download image available for Synology. Upgrading from the previous manual-download image is not a straight line, but can be done pretty quickly and without losing your configuration and other data. It's basically a redo of the original install. The steps are as follows:

      1. Stop the existing container (under Containers in the Synology Docker app).
      2. Make a note of where your current config/storage data is stored on the NAS. You can find this by clicking on the container row, then clicking the "Details" button. Click the "Volume" tab on the details dialog, and note the path associated with /var/reactor. Copy-paste this to a safe location or write it down. Close the dialog.
      3. Click on the container row and choose "Delete" from the Actions dropdown menu.
      4. Go to the Image tab and delete the toggledbits/reactor:latest image.
      5. Go to the Repository tab and search for "toggledbits". The toggledbits/reactor entry should be listed in the results.
      6. Click the entry row and then click "Download".
      7. Once the image has downloaded, select the image in the Image tab and click "Launch".
      8. Leave the defaults on the "General Settings" dialog, and click the "Advanced Settings" button.
      9. On the Advanced Settings dialog, click "Enable auto-restart".
      10. Click the "Volume" tab, and then "Add Folder". Select the directory you saved in step 2 above (where your data and config files are stored); for the mount path, enter exactly /var/reactor.
      11. Click the "Port Settings" tab, and change the "Auto" to 8111 under "Local Port".
      12. Click the "Environment" tab, and then "+" to add an environment variable. Name it "TZ" (caps), and then set the value to the name of your local time zone. Typically these are "Area/Locale", like "America/New_York". A full list is here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
      13. Hit the Apply button and it will put you back on the General Settings dialog. Hit "Next" and then "Apply" (the checkbox to start the container should be checked already), and the container should start.
      14. Access the container via your NAS' IP address on port 8111.

      USING DOCKER-COMPOSE TO RUN CONTAINERS

      Here's a sample docker-compose file. You'll need to modify it to have the correct image tag and directory where your data are stored.

      # Multi-System Reactor template docker-compose.yml
      version: '3'
      
      services:
        web:
          container_name: reactor
          environment:
            REACTOR_DATA_PREFIX: /var/reactor
      
          # Change the image below to the one you are using, if necessary.
          image: toggledbits/reactor:latest-generic-amd64
          restart: always
          network_mode: "bridge"
          expose:
            - 8111
          ports:
            - 8111:8111
          # Modify the first entry below (only before the colon; do not modify the rest) 
          # to the path where you want config/data stored. Make sure the directory
          # exists before starting the container.
          volumes:
            - /my/reactor/data:/var/reactor
            - type: bind
              source: /etc/localtime
              target: /etc/localtime
              read_only: true
          tmpfs: /tmp
          logging:
            driver: "json-file"
            options:
              max-file: 5
              max-size: 2m
      

      Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

      toggledbitsT 1 Reply Last reply
      3
      • toggledbitsT toggledbits

        Build 21117

        This build represents a significant update from previous builds. Principally, this build provides action groups in reactions, and action groups support constraints. So it now possible for the SET or RESET reactions in your rules to have conditionally-executed actions. This feature applies to rule-based reactions only; it is not a feature of global reactions (and for the removal of doubt, will not be in future). In addition, the following PRs are addressed:

        • 0000186 Add quick-selects for weekends and weekdays to Week Day condition type.
        • 0000184 Pushover now supports "device" parameter correctly.
        • 0000180 Using left nav when active editor has no changes pending is now allowed.
        • 0000179 Catch-all for a number of lexpjs (expression) fixes and enhancements.

        This version also incorporates a lot of UI enhancements and cleanups; still much to do, though.

        Also new, there are now three "official" Docker image builds available on DockerHub:

        • toggledbits/reactor:latest-generic-amd64 -- Generic Intel/AMD Linux
        • toggledbits/reactor:latest-synology-amd64 -- Synology-specific (see more below)
        • toggledbuts/reactor:latest-raspbian-armv7l -- Raspian Buster (Raspberry Pi)

        These Docker images can be downloaded using the usual docker pull <imagename> syntax.

        For all images, when creating the container you must map /var/reactor to a local directory in which your Reactor configuration and storage files are located. You should also bind /etc/localtime to the same-path file on your local system to get the correct timezone in the container. If this is not possible or does not correctly set the timezone for your container, the TZ environment variable should be set.

        Typical to run:

        # For generic:
        docker run -d -p 8111:8111 -v /my/reactor/data:/var/reactor --mount type=bind,src=/etc/localtime,target=/etc/localtime toggledbits/reactor:latest-generic-amd64
        
        # For Raspian:
        docker run -d -p 8111:8111 -v /my/reactor/data:/var/reactor -e TZ=America/New_York toggledbits/reactor:latest-raspbian-armv7l
        

        SPECIAL INSTRUCTIONS FOR SYNOLOGY DOCKER IMAGE UPGRADE (ONLY):

        I will no longer be making the manual-download image available for Synology. Upgrading from the previous manual-download image is not a straight line, but can be done pretty quickly and without losing your configuration and other data. It's basically a redo of the original install. The steps are as follows:

        1. Stop the existing container (under Containers in the Synology Docker app).
        2. Make a note of where your current config/storage data is stored on the NAS. You can find this by clicking on the container row, then clicking the "Details" button. Click the "Volume" tab on the details dialog, and note the path associated with /var/reactor. Copy-paste this to a safe location or write it down. Close the dialog.
        3. Click on the container row and choose "Delete" from the Actions dropdown menu.
        4. Go to the Image tab and delete the toggledbits/reactor:latest image.
        5. Go to the Repository tab and search for "toggledbits". The toggledbits/reactor entry should be listed in the results.
        6. Click the entry row and then click "Download".
        7. Once the image has downloaded, select the image in the Image tab and click "Launch".
        8. Leave the defaults on the "General Settings" dialog, and click the "Advanced Settings" button.
        9. On the Advanced Settings dialog, click "Enable auto-restart".
        10. Click the "Volume" tab, and then "Add Folder". Select the directory you saved in step 2 above (where your data and config files are stored); for the mount path, enter exactly /var/reactor.
        11. Click the "Port Settings" tab, and change the "Auto" to 8111 under "Local Port".
        12. Click the "Environment" tab, and then "+" to add an environment variable. Name it "TZ" (caps), and then set the value to the name of your local time zone. Typically these are "Area/Locale", like "America/New_York". A full list is here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
        13. Hit the Apply button and it will put you back on the General Settings dialog. Hit "Next" and then "Apply" (the checkbox to start the container should be checked already), and the container should start.
        14. Access the container via your NAS' IP address on port 8111.

        USING DOCKER-COMPOSE TO RUN CONTAINERS

        Here's a sample docker-compose file. You'll need to modify it to have the correct image tag and directory where your data are stored.

        # Multi-System Reactor template docker-compose.yml
        version: '3'
        
        services:
          web:
            container_name: reactor
            environment:
              REACTOR_DATA_PREFIX: /var/reactor
        
            # Change the image below to the one you are using, if necessary.
            image: toggledbits/reactor:latest-generic-amd64
            restart: always
            network_mode: "bridge"
            expose:
              - 8111
            ports:
              - 8111:8111
            # Modify the first entry below (only before the colon; do not modify the rest) 
            # to the path where you want config/data stored. Make sure the directory
            # exists before starting the container.
            volumes:
              - /my/reactor/data:/var/reactor
              - type: bind
                source: /etc/localtime
                target: /etc/localtime
                read_only: true
            tmpfs: /tmp
            logging:
              driver: "json-file"
              options:
                max-file: 5
                max-size: 2m
        
        toggledbitsT Offline
        toggledbitsT Offline
        toggledbits
        wrote on last edited by
        #110

        Build 21118

        • 0000190 Validation sync issue between group and children on reaction with constraint
        • 0000191 Two or more groups with constraints will stomp on each other

        Install/Upgrade Instructions

        Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

        1 Reply Last reply
        1
        • toggledbitsT Offline
          toggledbitsT Offline
          toggledbits
          wrote on last edited by toggledbits
          #111

          Build 21120

          • 0000193 Rule and expression state problem can cause reset reaction run on edit/save
          • 0000195 Reload of expression value condition in action group constraint fails with JS error
          • 0000198 (Vera) Siren1 device type doesn't have MSR power_switch capability

          Docker users can pull the updated images from DockerHub.

          Synology Docker users, you can either upgrade using the Docker app, which I find a bit cumbersome (there's no "Update/Download Again" for existing images in the app), or do the following:

          1. Stop the container in the Docker app.
          2. Log in to your NAS via SSH.
          3. Pull the new image by running sudo docker pull toggledbits/reaction:latest-synology-amd64
          4. Clear the container (in the Docker app, select the container, then "Clear" from "Actions").
          5. Start the container.
            .

          Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

          1 Reply Last reply
          1
          • toggledbitsT Offline
            toggledbitsT Offline
            toggledbits
            wrote on last edited by
            #112

            Build 21123

            • 0000084 Ruleset click-to-expand needs visual cue (also done for reactions and entities with similar behavior)
            • 0000199 (Hass) Cover device missing position MSR capability/attribute (Hass-native was available, however)

            The range operator '..' (e.g. 1..10) is now available in expressions and produces an array.

            Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

            1 Reply Last reply
            1
            • toggledbitsT Offline
              toggledbitsT Offline
              toggledbits
              wrote on last edited by
              #113

              Build 21130

              • 0000202 Duplicate IDs assigned to cloned groups and other actions
              • 0000201 Allow renaming of outermost group constraints

              The new performAction() function allows an action to be performed on an entity from within an expression. Additional UI tweaks.

              Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

              1 Reply Last reply
              1
              • toggledbitsT Offline
                toggledbitsT Offline
                toggledbits
                wrote on last edited by toggledbits
                #114

                Reactor 21138

                • 0000208 Cloning action in group clones group rather than action;
                • 0000206 Restrict sun condition offset results to current day (prevents overrun and state lock when very large offsets are used);
                • 0000204 Button text and color consistency on editors;

                Documentatation (Installation) updates; IP filtering for API access; code refactoring/cleanup; bless Hass to 2021.5.4; UI improvements (autogrow input fields, improve expand/collapse aesthetics); log message cleanup.

                Docker images are available on DockerHub as (now) usual. Generic package downloadable via Download button in the bug tracker.

                Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                1 Reply Last reply
                0
                • toggledbitsT Offline
                  toggledbitsT Offline
                  toggledbits
                  wrote on last edited by
                  #115

                  Build 21139:

                  • 0000211 Injection caused while fixing Sun conditions for 206.
                  • 0000209 Cloning rule leaves "Set Variable" actions tied to source rule's expressions.

                  Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                  1 Reply Last reply
                  0
                  • toggledbitsT Offline
                    toggledbitsT Offline
                    toggledbits
                    wrote on last edited by
                    #116

                    Build 21140

                    • 0000213 Timer change causes queue stall on Vera actions (seen as stalled reactions in Status panel)

                    Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                    1 Reply Last reply
                    0
                    • toggledbitsT Offline
                      toggledbitsT Offline
                      toggledbits
                      wrote on last edited by
                      #117

                      Build 21146

                      • 0000214 Fix "each" examples in documentation
                      • 0000144 Feature: per-entity overrides/exceptions for Vera
                      • 0000143 Feature: per-device overrides on name, capabilities, primary attribute

                      Documentation updates; UI usability/consistency tweaks.

                      Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                      1 Reply Last reply
                      0
                      • toggledbitsT Offline
                        toggledbitsT Offline
                        toggledbits
                        wrote on last edited by toggledbits
                        #118

                        Build 21153

                        • 0000215 Hubitat connections may stall after hub reboot when "Hub Login Security" is enabled. See #215 for details.

                        Also: updates to lexpjs to allow min()/max() of array arguments; fix to pushbutton attributes for Hubitat; installation doc updates.

                        BARE-METAL (NOT DOCKER) USERS -- PLEASE RUN npm update --no-save IN YOUR REACTOR DIRECTORY AFTER UPDATING/BEFORE RESTARTING.

                        SYNOLOGY DOCKER USERS: Build 21160 (next week) will be the last build of the Synology-specific image (latest-synology-amd64). After that, Synology will be supported exclusively via the generic-amd64 image. If you are currently using the latest-synology-amd64 image, you will need to rebuild your container using the latest-generic-amd64 image (soon).

                        Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                        1 Reply Last reply
                        1
                        • toggledbitsT Offline
                          toggledbitsT Offline
                          toggledbits
                          wrote on last edited by
                          #119

                          Build 21158

                          • 0000217 Fix path handling for Windows causing error loading Notifiers. This only applies to Windows

                          Documentation tweaks; header now shows both host (MSR server) and browser time.

                          Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                          1 Reply Last reply
                          0
                          • toggledbitsT Offline
                            toggledbitsT Offline
                            toggledbits
                            wrote on last edited by toggledbits
                            #120

                            Build 21163

                            • Fix 0000219 On Weekday conditions, the quick-set links for Weekday and Weekend don't stick unless you do other edits.
                            • (No PR fix) The UI's host time display now shows the "engine" time, which is the host time unless test_time is in effect, in which case the current test time is shown.

                            Debug log level 5 messages for Engine have been enhanced to more clearly show actions in reactions as they execute, and in particular, can now be more easily used to tell what rule or reaction is causing another reaction to run (i.e. if a global reaction can be run by several different rules, you'll be able to tell which started it). Support for Telegram notification is now native and this no longer requires the Vera plugin (or a Vera, for that matter); please see the dist-config/notification.yaml for configuration information. There is also a new Shell Command action in reactions, but since it carries with it some potential security risks (e.g. arbitrary code execution), its use requires that you add allow_shell_action: true to the engine section of your reactor.yaml configuration file. By default, shell actions will not be run (although you can still put them in your reactions; they just won't run).

                            Other things to note:

                            • As previously advertised, the Synology-specific docker container latest-synology-amd64 is no longer being updated. Please switch to latest-generic-amd64.
                            • All docker images have grown a bit in size as a result of best-practice recommendations for stable builds of docker images. As part of these changes, all containers now run nodejs version 14.17 (current LTS) on Alpine 3.13 (except the RPI image, where 3.12 is used due to certificate issues). Additional changes are coming! Currently, the service runs as root within the docker container, and while running in a container has to-date constrained the risk normally associated with privileged services, the addition of the Shell Command action changes the risk potential dramatically. As a result, likely starting with the first build in July, all containers will run the service as a non-privileged user. I'm still pondering all of this, and there are several potential paths to consider.

                            Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                            1 Reply Last reply
                            0
                            • toggledbitsT Offline
                              toggledbitsT Offline
                              toggledbits
                              wrote on last edited by toggledbits
                              #121

                              Build 21168

                              • 0000220 Using default values on Telegram notification action causes UI to (incorrectly) flag error in field.
                              • 0000222 A broken reference in the "Run" action may cause an exception.

                              An experimental (still) exporter/feeder for InfluxDB is also available for testing.

                              POTENTIAL BREAKING CHANGE FOR HOMEASSISTANT

                              Because "state" values on HomeAssistant can be any data type, the data type for the value_sensor capability attribute value was destabilized; it's supposed to be numeric. But some Hass entities were assigning string values, because they were generally being identified as a sensor class device, but had non-numeric state values. The float-iness of value_sensor.value is now enforced (and once again consistent across all controllers). But this enforcement means any non-convertible string (string that doesn't contain a number) will result in null in value_sensor.value. To make sure that the original string is still available, a new string_sensor capability has been added, and Hass sensor class devices where the type cannot be explicitly determined from the device class will have both the value_sensor (with a float, if possible) and string_sensor (with the string) capabilities/values. What this change may break is any condition in triggers or constraints that use string tests against the value_sensor.value attribute (e.g. testing if value_sensor.value is equal to the word "idle"). You will need to switch those conditions to use string_sensor.value. Numeric tests are not affected by this change and so do not need to be modified. You will only run into trouble if you have been testing a value_sensor against a string. A check has been added with a warning notification to simplify finding these cases in your rules if you have any.

                              Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                              1 Reply Last reply
                              0
                              • toggledbitsT Offline
                                toggledbitsT Offline
                                toggledbits
                                wrote on last edited by
                                #122

                                Build 21189

                                • 0000224: Unable to save rule set or reaction is only change is to switch a notification profile (doesn't enable save button)
                                • 0000223: Support for newer-style Hass color mode attributes (RGB[W] devices)

                                Fix an issue with the /variable/set HTTP API throwing an error (not new, but newly discovered and no PR open; attn @cw-kid ). Support for Hass up to 2021.7.1. Updated to new lexpjs with numeric coalesce operator. Internal improvements in the loading of extensions (notifiers, controllers, etc.). Update icon library to latest version. Now supports InfluxDB natively.

                                Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                                1 Reply Last reply
                                1
                                • toggledbitsT Offline
                                  toggledbitsT Offline
                                  toggledbits
                                  wrote on last edited by toggledbits
                                  #123

                                  Build 21196

                                  This build contains the eZLO interface (development level). There are no other significant user-facing changes, although many changes have been made in preparation for the upcoming 1.0 release (this is release candidate 2).

                                  Users of the archive package (i.e. not docker) please npm update --no-save in your reactor directory after unpacking the archive.

                                  Please refer to the documentation for configuration instructions.

                                  I expect lots of issues in every range of possibility. I don't have many devices on my eZLO Plus to test with, so we're going to cover a lot of new ground, mostly by long distance, as I mentioned before. Please open PRs in Mantis for everything you find. Please post/upload all of the files prefixed ezlo_ from the logs directory with every report. If you are reporting an issue with a specific device, please be as specific as possible about which device it is and how it's not working. If you are including a log snip, please remember to include plenty of context (extra lines) both before and after the part you think is relevant (more is better than less).

                                  In addition to the required configuration above, please add the following to the end of your logging.yaml file:

                                    EzloController:    # this line indent TWO spaces
                                      level: 7         # this line indent FOUR spaces
                                  

                                  Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                                  1 Reply Last reply
                                  2
                                  • toggledbitsT Offline
                                    toggledbitsT Offline
                                    toggledbits
                                    wrote on last edited by toggledbits
                                    #124

                                    Build 21197 (1.0 release candidate 3)

                                    • Additional capabilties for eZLO devices
                                    • PR 0000229: Fixed an issue with attempt NaN write when certain sun conditions cannot be calculated in some "extreme" latitudes (e.g. sunset in Tromso NO in mid-summer: sun doesn't set; no astro dusk/dawn in mid-summer northern UK, etc.).
                                    • PR 0000228: Fixed an issue with sequence (..after..) condition option not reselecting predecessor condition on subsequent rule edit.

                                    I don't regard this as a vital update; this is mostly just informational. But if you're affected by either of the above PRs, you may want to make the upgrade.

                                    On track for 1.0 release in 7/19. I've already changed the structure of the download directory.

                                    Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                                    1 Reply Last reply
                                    1
                                    • toggledbitsT toggledbits unpinned this topic on
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    Recent Topics

                                    • Home Assistant 2025.11.2 and latest-25315
                                      G
                                      gwp1
                                      0
                                      6
                                      44

                                    • Reactor (Multi-System/Multi-Hub) Announcements
                                      toggledbitsT
                                      toggledbits
                                      5
                                      129
                                      73.3k

                                    • Notice to Docker + ARM Users (RPi 3/4/5 and others)
                                      toggledbitsT
                                      toggledbits
                                      1
                                      1
                                      36

                                    • Requesting a proper ARM64/aarch64 Docker image (Pi 5 support)
                                      M
                                      mgvra
                                      1
                                      3
                                      103

                                    • Script action and custom timers
                                      toggledbitsT
                                      toggledbits
                                      0
                                      4
                                      118

                                    • Help resolve change in behaviour post update
                                      CatmanV2C
                                      CatmanV2
                                      0
                                      12
                                      323

                                    • There is an alternative to homebridge-mqttthing
                                      akbooerA
                                      akbooer
                                      1
                                      2
                                      105

                                    • Reactor w/HA 2025.11 error on set_datetime service call setting only time
                                      CrilleC
                                      Crille
                                      0
                                      6
                                      130

                                    • Reactor Version 25310 : Office Light control via rule in reactor no longer working since last update.
                                      toggledbitsT
                                      toggledbits
                                      0
                                      17
                                      384

                                    • Shelly Wall Display XL
                                      akbooerA
                                      akbooer
                                      2
                                      9
                                      751

                                    • [Solved] alarm() in global expression throws error in log.
                                      toggledbitsT
                                      toggledbits
                                      0
                                      26
                                      699

                                    • [Solved] Define function issue in latest-25304
                                      CrilleC
                                      Crille
                                      0
                                      12
                                      442
                                    Powered by NodeBB | Contributors
                                    Hosted freely by 10RUPTiV - Solutions Technologiques | Contact us
                                    • Login

                                    • Don't have an account? Register

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Categories
                                    • Recent
                                    • Tags
                                    • Popular
                                    • Unsolved