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. Need assistance: How do I calculate time based upon current time and an ETA
Upgrade Issues
T
Topic thumbnail image
Multi-System Reactor
[SOLVED] Conflicting Set Reaction Groups Appear to Fire Simultaneously in Single Rule Evaluation
G
Topic thumbnail image
Multi-System Reactor
[SOLVED] Question regarding "in" vs "contains" vs contents of the string
G
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
Logon screen timeout
G
Noticing since 170 that the lock screen doesn't switch to the logon prompt but, rather, stays on the active UI until such time as you go to click something within it. Then it jumps to the login screen. Brave browser Brave 1.92.139 (Official Build) (arm64) Chromium: 150.0.7871.114
Multi-System Reactor
[MSR] Copy&past of actions and/or drag&drop between set/reset
therealdbT
Hey @toggledbits One thing that bothers me while doing work on new systems/new features, is that I cannot copy&paste actions, and I cannot drag&drop between set and resets. #1 is for when I want to copy an action between different rules opened in two separate browser windows, while #2 is when I just need to flip a bunch of actions in the reset, or move some logic back and forth. Both will be appreciated, but I understand the technical challenges. Thanks!
Multi-System Reactor
Upgrade advice - upgrade from aarch64 to ARM64 image
T
I'm currently on version 26011. I understand that the aarch64 image is no longer supported. So, I therefore need to update to the ARM64 image. Can anyone possibly suggest how I update my docker compose.yaml file (see below). Ideally I'd like to keep my existing reactions etc. rather than start from scratch. # Multi-System Reactor template docker-compose.yml (version 22160) # # Change the lines indicated by "DO"... # services: reactor: container_name: reactor environment: # DO change the TZ: line to set your local time zone. # See valid TZ list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones TZ: GB # # DO NOT change this path. Your directory location is in "source" below. REACTOR_DATA_PREFIX: /var/reactor # DO change the image below to the one you are using (e.g. armv7l or aarch64 for RPi 4) image: toggledbits/reactor:latest-aarch64 restart: "always" expose: - 8111 ports: - 8111:8111 volumes: # DO change the /home/username/reactor below to the directory you created for # your local data; DO NOT change the /var/reactor part - /home/pi/docker/reactor:/var/reactor - /etc/localtime:/etc/localtime:ro tmpfs: /tmp
Multi-System Reactor
Alexa for MSR, any interest?
MikeReadingtonM
Topic thumbnail image
Multi-System Reactor
[RESOLVED] Telegram notification broke with latest update
3
Topic thumbnail image
Multi-System Reactor
[RESOLVED] Phantom device, “INFO” appears
wmarcolinW
Topic thumbnail image
Multi-System Reactor
[RESOLVED] Mode Status NULL
wmarcolinW
Topic thumbnail image
Multi-System Reactor
[RESOLVED] HTTP query failing after version 26177
wmarcolinW
Topic thumbnail image
Multi-System Reactor
Question about the find function
wmarcolinW
Topic thumbnail image
Multi-System Reactor
[Answered] OK to remove old json files?
3
Topic thumbnail image
Multi-System Reactor
Deprecation Announcement: 32-bit ARM *docker* images
toggledbitsT
If you are using the armv7l docker image, the OpenJS Foundation that publishes node is no longer producing 32-bit builds as of v24. That means the last supported LTS version of node for armv7l is v22, which will go End-of-Life in May 2027. Therefore, the Reactor armv7l image is now deprecated and will only be produced until node v22 goes EOL, and I will not publish armv7l images beyond that date. If you are running an RPi 3 or earlier with Reactor, you are on this image, and will need to upgrade hardware to a 64-bit model and use the arm64 image. If you need help getting it done, ask in this category.
Multi-System Reactor
[Solved] build 26150 - engine not starting
G
@toggledbits I pulled the image (well, Watchtower did) and within minutes the whole system went offline. The log looks like it ends with 26143. [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-mkahsmgf/26qq82mw-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lqyfljfi/22f8on0t-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lsb61rw8/24oenqi2-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lrh58he0/rule-lrh58he0:S-1c00gfib-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lrh58he0/1c00dylr-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lrh58he0/1nam9w5u-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-miuh2qqi/22ls4lql-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-kwc6rmci/rule-kwc6rmci:S-1vj8sdfc-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-kwc6rmci/rule-kwc6rmci:S-1qanz01x-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-ladyja6a/24lq19p6-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-mk0o8iox/23oy468y-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-miscg2h3/rule-miscg2h3:S-22gmbq1c-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-kxgrfjke/238p0old-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-m7ccsso5/re-m7ccsso5-1r0myjxa-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-ladyja6a/19nl9wq2-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-ladyja6a/rule-ladyja6a:S-yl3xk9t-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-ladyja6a/rule-ladyja6a:S-yl3vv5m-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-ln7j2nqp/re-ln7j2nqp-22mx9lzd-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-ln7j2nqp/22mx87c8-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-licneppy/1mzwe7ht-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-ml3194ih/25jqt1j4-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-kxgrg7kf/227hshak-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-reactorexmachina/13ua1p95-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-reactorexmachina/13uagam7-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-grpvl9oypg/rule-grpvl9oypg:R-134x4cbv-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-grpvl9oypg/rule-grpvl9oypg:R-134x2fyl-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-lscjrws1/238p5c22-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lbwr0jvq/1xkczf03-cons [latest-26143]2026-05-31T15:23:44.547Z <Structure:NOTICE> Structure Structure#1 stopped [latest-26143]2026-05-31T15:23:44.547Z <app:NOTICE> Closing APIs... [latest-26143]2026-05-31T15:23:44.547Z <wsapi:NOTICE> wsapi: closing... [latest-26143]2026-05-31T15:23:44.547Z <wsapi:NOTICE> wsapi: disconnecting from "192.168.1.23#82" (1001 service closing) [latest-26143]2026-05-31T15:23:44.548Z <httpapi:NOTICE> HTTP API closing... [latest-26143]2026-05-31T15:23:44.549Z <wsapi:NOTICE> wsapi: server closed [latest-26143]2026-05-31T15:23:44.549Z <httpapi:INFO> HTTP server closed. [latest-26143]2026-05-31T15:23:44.549Z <app:NOTICE> Stopping timers... [latest-26143]2026-05-31T15:23:44.551Z <app:null> Shutdown complete, process ID 1 [latest-26143]2026-05-31T15:23:44.551Z <app:null> Closing logs... [latest-26143]2026-05-31T15:23:44.551Z <default:null> Closing log I can SSH to the VM. Alas, I do not have the previous image for 26143 as I'm a little too quick sometimes on housekeeping.
Multi-System Reactor
http request action & digest auth
tunnusT
I’m using the HTTP Request action in MSR and need to authenticate against an endpoint that uses HTTP Digest authentication. Now that endpoint was changed to use SHA-256 in digest auth, so I would like to know if MSR supports it, or is it limited to MD5-based digest auth?
Multi-System Reactor
Cloning actions in reactions does not work
tunnusT
With build 26140 (on Docker) I'm not able to clone any actions in reactions. Using Chrome if it has any relevance.
Multi-System Reactor
Has ping command been removed?
tunnusT
Topic thumbnail image
Multi-System Reactor
ReferenceError with Home Assistant data & build 26140
tunnusT
Topic thumbnail image
Multi-System Reactor

Need assistance: How do I calculate time based upon current time and an ETA

Scheduled Pinned Locked Moved Multi-System Reactor
9 Posts 2 Posters 1.9k Views 2 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.
  • T Offline
    T Offline
    tamorgen
    wrote on last edited by tamorgen
    #1

    Good morning,
    I apologize if this subject has been covered. I did try the search, but I'm not coming up with any topics on my issue.

    I'm running userauth-24137-57b41335, bare metal installation on Fedora 39 Server.

    I have a rule set up to turn the Eco mode off on my Nest Thermostat when the thermostat is set to Away (Rule State: Away Mode), the user (Driver) presence in my car changes to true, and the destination is set to home.

    93804f7c-62d6-42c0-ae04-ff602011a6fd-image.png

    This works fine for most days, where I'm headed home from work (commute is about 45 minutes). What I don't want it to do is set change it to Eco mode if my ETA is more than an hour.

    There is a sensor/entity for Time to Arrival when the Destination is set. What it appears to provide is the Time OF arrival/ETA, not time until arrival. If it was Time until Arrival, and it was a numeric value, I could simply test if the value is less than 60 and be done with it.

    I pulled up the history through Home Assistant for my morning commute and this appears to be what it is providing.

    c2a32739-c84f-4a05-95d9-73793ed818f5-image.png

    So what I need to do is to do a calculation of the the ETA from the sensor value and subtract the current time, and get a value in minutes that I can determine if it's less than 60.

    I believe I can do this with the local expression, but I don't see anything for the system time, or local time. Also, do the local expressions update themselves if the sensors do?

    e7f2ffa6-0ae2-4137-9238-65868d9a9f50-image.png

    toggledbitsT 1 Reply Last reply
    0
    • T tamorgen

      Good morning,
      I apologize if this subject has been covered. I did try the search, but I'm not coming up with any topics on my issue.

      I'm running userauth-24137-57b41335, bare metal installation on Fedora 39 Server.

      I have a rule set up to turn the Eco mode off on my Nest Thermostat when the thermostat is set to Away (Rule State: Away Mode), the user (Driver) presence in my car changes to true, and the destination is set to home.

      93804f7c-62d6-42c0-ae04-ff602011a6fd-image.png

      This works fine for most days, where I'm headed home from work (commute is about 45 minutes). What I don't want it to do is set change it to Eco mode if my ETA is more than an hour.

      There is a sensor/entity for Time to Arrival when the Destination is set. What it appears to provide is the Time OF arrival/ETA, not time until arrival. If it was Time until Arrival, and it was a numeric value, I could simply test if the value is less than 60 and be done with it.

      I pulled up the history through Home Assistant for my morning commute and this appears to be what it is providing.

      c2a32739-c84f-4a05-95d9-73793ed818f5-image.png

      So what I need to do is to do a calculation of the the ETA from the sensor value and subtract the current time, and get a value in minutes that I can determine if it's less than 60.

      I believe I can do this with the local expression, but I don't see anything for the system time, or local time. Also, do the local expressions update themselves if the sensors do?

      e7f2ffa6-0ae2-4137-9238-65868d9a9f50-image.png

      toggledbitsT Offline
      toggledbitsT Offline
      toggledbits
      wrote on last edited by
      #2

      @tamorgen said in Need assistance: How do I calculate time based upon current time and an ETA:

      I don't see anything for the system time, or local time.

      In the docs, Date/Time Handling Functions.

      @tamorgen said in Need assistance: How do I calculate time based upon current time and an ETA:

      do the local expressions update themselves if the sensors do?

      Absolutely.

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

      T 1 Reply Last reply
      0
      • toggledbitsT toggledbits

        @tamorgen said in Need assistance: How do I calculate time based upon current time and an ETA:

        I don't see anything for the system time, or local time.

        In the docs, Date/Time Handling Functions.

        @tamorgen said in Need assistance: How do I calculate time based upon current time and an ETA:

        do the local expressions update themselves if the sensors do?

        Absolutely.

        T Offline
        T Offline
        tamorgen
        wrote on last edited by
        #3

        @toggledbits said in Need assistance: How do I calculate time based upon current time and an ETA:

        In the docs, Date/Time Handling Functions.

        Okay, I missed that. That raises more questions.

        I'm thinking it's easier to convert my ETA sensor to Unix Epic, and then do the math from there, correct? Do you have any examples on how I would go about doing this?

        I went to lunch and pulled up MSR so I could get the actual, real time output of time to a destination.

        4273beeb-2fca-462c-882c-847181074cda-image.png

        1 Reply Last reply
        0
        • T Offline
          T Offline
          tamorgen
          wrote on last edited by
          #4

          I tested using a static unix epoch time, and I pulled the time for one of my other sensor so I can work on testing the conversion.....

          Getting there.

          image.png

          1 Reply Last reply
          0
          • T Offline
            T Offline
            tamorgen
            wrote on last edited by tamorgen
            #5

            And I figured it out....

            88a1a15c-dd4b-47e9-aaff-e84412aeff8c-image.png

            1 Reply Last reply
            0
            • T Offline
              T Offline
              tamorgen
              wrote on last edited by tamorgen
              #6

              May have spoke too soon....

              0836b295-e955-487f-8faa-c77a000152d9-image.png

              Since the current value is null, it's going to throw a yellow triangle, because it can't be evaluated.

              @toggledbits Is there a way to clear that flag for a local expression that is only periodically filled?

              Correction: the value for the sensor is "unavailable", not null....

              The value for the local expression becomes "null", because of the "unavailable" value for the sensor.

              49ceee29-c914-40bc-90f4-37d2507431ab-image.png

              1 Reply Last reply
              0
              • T Offline
                T Offline
                tamorgen
                wrote on last edited by
                #7

                It also throws an error in the status pane.
                image.png

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

                  Try this:

                  D=getEntity( "hass>sensor_spaceball_1_time_to_arrival" ).attributes.string_sensor?.value,
                  if "unavailable" === D
                    then null
                    else do
                      D = time( D ),
                      D = isNaN( D ) ? null : round( ( D - time() ) / 60000 )
                    done
                  endif
                  

                  The first line sets up the attribute value in a temporary local variable (i.e. available only inside the expression) called eta.

                  Line 2 checks to see if it's the string unavailable, and if so, line 3 will cause this expression to produce null as a result.

                  Otherwise, the else block beginning at line 4 starts by converting the string in eta to a time in milliseconds (line 5), and if that result isn't NaN (line 6), then the difference between that time and now in minutes is computed.

                  The test ? true-expr : false-expr form on line 6 is a ternary operator, if you haven't used it before. It's equivalent to IF test THEN true-expr ELSE false-expr ENDIF, just shorter.

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

                  T 1 Reply Last reply
                  1
                  • toggledbitsT toggledbits

                    Try this:

                    D=getEntity( "hass>sensor_spaceball_1_time_to_arrival" ).attributes.string_sensor?.value,
                    if "unavailable" === D
                      then null
                      else do
                        D = time( D ),
                        D = isNaN( D ) ? null : round( ( D - time() ) / 60000 )
                      done
                    endif
                    

                    The first line sets up the attribute value in a temporary local variable (i.e. available only inside the expression) called eta.

                    Line 2 checks to see if it's the string unavailable, and if so, line 3 will cause this expression to produce null as a result.

                    Otherwise, the else block beginning at line 4 starts by converting the string in eta to a time in milliseconds (line 5), and if that result isn't NaN (line 6), then the difference between that time and now in minutes is computed.

                    The test ? true-expr : false-expr form on line 6 is a ternary operator, if you haven't used it before. It's equivalent to IF test THEN true-expr ELSE false-expr ENDIF, just shorter.

                    T Offline
                    T Offline
                    tamorgen
                    wrote on last edited by
                    #9

                    @toggledbits,
                    Thank you Patrick. It's not throwing an alert now. Very elegant solution.

                    I'll verify that it works once I get in the car after work and marked the thread as solved.

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


                    Recent Topics

                    • Upgrade Issues
                      T
                      tbully
                      0
                      9
                      102

                    • [SOLVED] Conflicting Set Reaction Groups Appear to Fire Simultaneously in Single Rule Evaluation
                      toggledbitsT
                      toggledbits
                      0
                      10
                      73

                    • [SOLVED] Question regarding "in" vs "contains" vs contents of the string
                      G
                      gwp1
                      0
                      5
                      27

                    • Reactor (Multi-System/Multi-Hub) Announcements
                      toggledbitsT
                      toggledbits
                      5
                      147
                      127.3k

                    • openLuup console disappeared - 500 - Internal Server Error
                      A
                      a-lurker
                      0
                      2
                      148

                    • Logon screen timeout
                      G
                      gwp1
                      0
                      5
                      172

                    • [MSR] Copy&past of actions and/or drag&drop between set/reset
                      toggledbitsT
                      toggledbits
                      0
                      9
                      322

                    • Upgrade advice - upgrade from aarch64 to ARM64 image
                      toggledbitsT
                      toggledbits
                      0
                      4
                      186

                    • Alexa for MSR, any interest?
                      CatmanV2C
                      CatmanV2
                      2
                      4
                      321

                    • Ezlo Paid Subscription for Vera Cloud Services
                      therealdbT
                      therealdb
                      4
                      2
                      451

                    • [RESOLVED] Telegram notification broke with latest update
                      CatmanV2C
                      CatmanV2
                      0
                      11
                      783
                    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