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. Replacing SiteSensor Plugin (Vera) with MSR
Local expression in Rule does not evaluate as they used to do
CrilleC
Topic thumbnail image
Multi-System Reactor
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

Replacing SiteSensor Plugin (Vera) with MSR

Scheduled Pinned Locked Moved Multi-System Reactor
91 Posts 7 Posters 29.2k Views 6 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.
  • G Offline
    G Offline
    gwp1
    wrote on last edited by
    #6

    sigh

    Wow. More coffee required. Yeah, it was set to false. Correction made. I now have entity OWM Weather > weather.system > sys_system.state (primary)

    *Hubitat C-7 2.4.3.149
    *Proxmox VE v8, Beelink MiniPC 12GBs, SSD

    *HASS 2025.11.1
    w/ ZST10-700 fw 7.18.3

    *Prod MSR in docker/portainer
    MSR: latest-25310-dc2bb580
    MQTTController: 25139
    ZWave Controller: 25139

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

      Great. If you filter the "Entities" list (left nav) for the "wx" capability, you should find the entity that contains your local weather data.

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

      G 1 Reply Last reply
      0
      • toggledbitsT toggledbits

        There's a OWMWeatherController built-in to MSR. If you're going to use OpenWeatherMap, that's a more efficient way to go about it. For other API integrations, the method described above is useful.

        LibraSunL Offline
        LibraSunL Offline
        LibraSun
        wrote on last edited by LibraSun
        #8

        @toggledbits said in Replacing SiteSensor Plugin (Vera) with MSR:

        There's a OWMWeatherController built-in to MSR.

        Could you possibly shoe-horn lat, lon, location (city) name, time zone, etc. with that object? Or do those values already surface elsewhere in MSR?

        I'd be interested in using them as part of my "Weekly Report" quasi-mailmerge notifications.

        1 Reply Last reply
        0
        • LibraSunL Offline
          LibraSunL Offline
          LibraSun
          wrote on last edited by LibraSun
          #9

          OPENWEATHER PRO TIP

          Users of MSR's built-in weather object ('weather>default') may wish to know how to convert the value in wx.icon to an actual thumbnail image.

          Here's how:
          Suppose the value stored in that variable is '01d'
          Simply prepend 'http://openweathermap.org/img/wn/' to the beginning, and append '.png' to the end. (You can enlarge the image by including '@2x', '@4x', etc. before the '.png'!)

          Better still, gather all of the icons files from https://openweathermap.org/weather-conditions and host them on your own local server/repo, to spare OWx from excess bandwidth. You can also grab their table of "Weather Condition Codes" containing a description of each possible value in wx.condition_code.

          These tirbits would be helpful in designing a dynamic "Weather" tile for the MSR Dashboard feature!!

          EXAMPLES:
          clear sky Condition: 01d = "Clear Sky (day)"
          clouds Condition: 04n = "Clouds (night)"

          1 Reply Last reply
          0
          • LibraSunL Offline
            LibraSunL Offline
            LibraSun
            wrote on last edited by LibraSun
            #10

            FEATURE REQUEST

            Add "Solar Noon" to Sunrise/Sunset trigger in MSR, even if it's just derived as "halfway point between Sunrise and Sunset"
            (No need for "Civil Noon" since that's automatically 12:00pm)

            Could be useful for farms, solar installations, etc.

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

              That's easy, it has it, so all I need to do is add the menu item to the UI.

              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

                Great. If you filter the "Entities" list (left nav) for the "wx" capability, you should find the entity that contains your local weather data.

                G Offline
                G Offline
                gwp1
                wrote on last edited by
                #12

                @toggledbits I found this:
                a66f3768-e8e4-4280-b215-ebc45ae3d696-image.png

                Oddly, the historical is returning Melgrove lol I left the config so that it would pull from the default location which is using lat/long.

                *Hubitat C-7 2.4.3.149
                *Proxmox VE v8, Beelink MiniPC 12GBs, SSD

                *HASS 2025.11.1
                w/ ZST10-700 fw 7.18.3

                *Prod MSR in docker/portainer
                MSR: latest-25310-dc2bb580
                MQTTController: 25139
                ZWave Controller: 25139

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

                  I'm not sure where you're going with this post? Are you reporting a problem?

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

                  G 1 Reply Last reply
                  0
                  • toggledbitsT toggledbits

                    I'm not sure where you're going with this post? Are you reporting a problem?

                    G Offline
                    G Offline
                    gwp1
                    wrote on last edited by
                    #14

                    @toggledbits I guess I am - unless I'm misreading the docs. I believe to have OWM set to use the default location of MSR which is Hanahan SC, not Melgrove Someplace.

                    I don't want to file a bug until I'm sure it's MSR and not me.

                    *Hubitat C-7 2.4.3.149
                    *Proxmox VE v8, Beelink MiniPC 12GBs, SSD

                    *HASS 2025.11.1
                    w/ ZST10-700 fw 7.18.3

                    *Prod MSR in docker/portainer
                    MSR: latest-25310-dc2bb580
                    MQTTController: 25139
                    ZWave Controller: 25139

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

                      OK. In order to sort that out, I need to see your configuration for both the default system location and OWM. Post here or PM is fine.

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

                      G 1 Reply Last reply
                      0
                      • toggledbitsT toggledbits

                        OK. In order to sort that out, I need to see your configuration for both the default system location and OWM. Post here or PM is fine.

                        G Offline
                        G Offline
                        gwp1
                        wrote on last edited by
                        #16

                        @toggledbits Posted via PM.

                        *Hubitat C-7 2.4.3.149
                        *Proxmox VE v8, Beelink MiniPC 12GBs, SSD

                        *HASS 2025.11.1
                        w/ ZST10-700 fw 7.18.3

                        *Prod MSR in docker/portainer
                        MSR: latest-25310-dc2bb580
                        MQTTController: 25139
                        ZWave Controller: 25139

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

                          OK. Looks like all is good, OWM is just returning an odd place name (who knows what data they sourced that from), and since you are using "default" configuration (home location from Reactor main config), it's using OWM's returned name for the entity name. If you do a custom location in the OWM config, you can set the name by adding the "name" to the custom config. I'm going to extend that behavior to the default location config as well, and that will be in today's build. If you want to get it fixed before that, just add a location to your OWMController config section:

                            - id: weather
                              enabled: true
                              implementation: OWMWeatherController
                              name: OWM Weather
                              config:
                                appid: "yourappidhere"
                                locations:
                                  - id: home
                                    name: "My Custom Place Name"
                                    latitude: nn.nnnnnn
                                    longitude: nn.nnnnnn
                          

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

                          G 1 Reply Last reply
                          2
                          • toggledbitsT toggledbits

                            OK. Looks like all is good, OWM is just returning an odd place name (who knows what data they sourced that from), and since you are using "default" configuration (home location from Reactor main config), it's using OWM's returned name for the entity name. If you do a custom location in the OWM config, you can set the name by adding the "name" to the custom config. I'm going to extend that behavior to the default location config as well, and that will be in today's build. If you want to get it fixed before that, just add a location to your OWMController config section:

                              - id: weather
                                enabled: true
                                implementation: OWMWeatherController
                                name: OWM Weather
                                config:
                                  appid: "yourappidhere"
                                  locations:
                                    - id: home
                                      name: "My Custom Place Name"
                                      latitude: nn.nnnnnn
                                      longitude: nn.nnnnnn
                            
                            G Offline
                            G Offline
                            gwp1
                            wrote on last edited by
                            #18

                            @toggledbits I'm a few nightly builds behind so I'll wait until you have tonight's out. Thanks!

                            *Hubitat C-7 2.4.3.149
                            *Proxmox VE v8, Beelink MiniPC 12GBs, SSD

                            *HASS 2025.11.1
                            w/ ZST10-700 fw 7.18.3

                            *Prod MSR in docker/portainer
                            MSR: latest-25310-dc2bb580
                            MQTTController: 25139
                            ZWave Controller: 25139

                            1 Reply Last reply
                            0
                            • LibraSunL LibraSun

                              For MSR users with SiteSensor still installed back on Vera, you might want to consider letting MSR take over those duties. Here's a quick run-down of how I imported one of my SiteSensor recipes into a Rule on MSR, using OpenWeather API* as an example.

                              STEP 1: Copy the Basics from Vera
                              (a) Go to your Vera > Devices, locate SiteSensor (the main instance, not one of its children devices) and click ► for details then click SETTINGS.
                              (b) Copy and paste (into Notepad or other text editor) the Request URL along with each of the defined expressions.

                              STEP 2: Create a Rule on MSR
                              (c) Jump into Rule Sets and click "Create Rule". Click its title to rename the rule 'OpenWeather (API)" and click 'Rename'.
                              (d) Decide on appropriate Triggers (in my case, it's an OR group that includes an [INTERVAL] set to "Every 3 hours" plus a few [ENTITY ATTRIBUTE] entries reacting to things like entering/leaving home, waking up, etc.).
                              (e) In Set Reacion, create an [HTTP REQUEST] > [GET] action.
                              (f) Paste your old "Request URL" into the "Request URL" box.

                              FYI GET calls to OpenWeather API* take the form:

                              http://api.openweathermap.org/data/2.5/weather?zip=<your_ZIP_code>&id=<your_Wx_ID>&appid=<app-id>&units=imperial
                              

                              (g) Create four new blank Expressions (name them openWx, Tx, Hx and Rx).
                              (h) Click SAVE & EXIT

                              STEP 3: Process the Response
                              (i) Re-open rule "OpenWeather (API)" by clicking the 'Edit' icon.
                              (j) Within the [HTTP REQUEST] action, assign "Capture response to:" ► openWx
                              (k) Down in Expressions, click "[+]Add Expresssion" then enter the following:
                              Tx := round(openWx.main.temp,1)
                              // yields current outdoor temperature
                              Hx := round(openWx.main.humidity)
                              // yields current humidity conditions
                              Rx := openWx.rain ? ( openWx.rain['3h'] ? openWx.rain['3h'] : 0) : 0
                              // yields predicted rainfall, if present; otherwise 0
                              (l) Click SAVE & EXIT. Enjoy!

                              Naturally, your specific needs and workflow will differ from the one I've outlined here. For instance, you may wish to explore the contents of the JSON object in openWx for additional data of interest to you, and define variables to match.

                              My goal here has been to illustrate some key concepts needed for moving from SiteSensor over to MSR:

                              • Some syntax is the same, such as dot notation for object.item.access;
                              • Other syntax has changed, such as the use of ternary A ? B : C in place of IF (A, B, C);
                              • Manually setting an [INTERVAL] in lieu of SiteSensor's timed schedule;

                              Pro tip: If your workflow demands that other Rules react to the output of the "OpenWeather (API)" rule, then be sure to create all of the aforementioned Expressions under "Global Expressions" instead, so they become accessible across all Rule Sets.

                              Once the transition is complete, you can either DISARM SiteSensor on Vera or remove it entirely with "Remove Device" (which will automatically remove all of its child devices).

                              *Additional reading:
                              OpenWeather API : https://openweathermap.org/api
                              FREE SUBSCRIPTION REQUIRED TO USE THIS SERVICE

                              PRO TIP: See below for optimal way to incorporate OpenWeatherMap into your MSR workflow(s), by enabling the service directly in the reactor.yaml config file.

                              cw-kidC Offline
                              cw-kidC Offline
                              cw-kid
                              wrote on last edited by
                              #19

                              @librasun said in Replacing SiteSensor Plugin (Vera) with MSR:

                              My goal here has been to illustrate some key concepts needed for moving from SiteSensor over to MSR

                              I never used SiteSensor plugin for Vera before.

                              Thanks for the MSR example you wrote.

                              I wanted to try this out and found this Covid-19 API here.

                              However the http command they give doesn't seem to return any results data, either just in the web browser or in my MSR rule.

                              https://covid19-api.com/country?name=UK&format=json
                              

                              52885b5e-6ae2-4454-8650-a2fb4b55eb4c-image.png

                              The curl command does work OK however

                              curl -X GET "https://covid19-api.com/country?name=UK&format=json" -H "accept: application/json"
                              

                              How do I specify the application/json in the MSR rule? Assuming the problem is related to that.

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

                                Same way. One header per line in that field.

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

                                cw-kidC 1 Reply Last reply
                                0
                                • toggledbitsT toggledbits

                                  Same way. One header per line in that field.

                                  cw-kidC Offline
                                  cw-kidC Offline
                                  cw-kid
                                  wrote on last edited by cw-kid
                                  #21

                                  @toggledbits

                                  In the "Request Headers" field in the "Set Reaction" I have tried the following:

                                  Accept: application/json

                                  and tried:

                                  Content-Type: application/json

                                  It allows me to save the rule but when I go back in to the rule that field is empty again and its not collecting the response data in to my empty expression / variable.

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

                                    So there are two separate issues here:

                                    1. First, we need to figure out if the UI is correctly storing the headers or not, and if the problem is merely that it is not restoring/displaying them correctly when you go back into the editor. The check for that is to go into the reaction, add the headers, and save. Then, open the rule status view and it will show you the rule ID underneath the rule condition status and expressions. Go to your reactor/storage/rules directory, and grab the same-named file (with .json suffix) and post it here. Let's see what's being stored.

                                    2. Look at the logs to see where the reaction is running and what the request is doing. There may be errors logged.

                                    It's entirely possible that the problem is 1, 2, or even both.

                                    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
                                    • cw-kidC Offline
                                      cw-kidC Offline
                                      cw-kid
                                      wrote on last edited by cw-kid
                                      #23

                                      @toggledbits

                                      I cannot upload files to this forum it seems.

                                      I have uploaded the rule to my One Drive here

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

                                        OK. There's definitely two broken things in the handling of headers, so go ahead and open a PR for this. No need to post the rule there (again); I've got it and have the issue in hand, but unfortunately, it's not just a UI issue.

                                        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
                                        • cw-kidC Offline
                                          cw-kidC Offline
                                          cw-kid
                                          wrote on last edited by
                                          #25

                                          OK done

                                          https://reactor.toggledbits.com/mantisbt/view.php?id=147

                                          Thanks

                                          1 Reply Last reply
                                          2
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Recent Topics

                                          • Local expression in Rule does not evaluate as they used to do
                                            CrilleC
                                            Crille
                                            0
                                            1
                                            5

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

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

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

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

                                          • Script action and custom timers
                                            toggledbitsT
                                            toggledbits
                                            0
                                            4
                                            119

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

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

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

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

                                          • Shelly Wall Display XL
                                            akbooerA
                                            akbooer
                                            2
                                            9
                                            756

                                          • [Solved] alarm() in global expression throws error in log.
                                            toggledbitsT
                                            toggledbits
                                            0
                                            26
                                            729
                                          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