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. Variables for fun and profit
Time series documentation
tunnusT
Is the current manual (incl. examples) up to date with how retention value is handled in time series configuration? Referring to this post
Multi-System Reactor
MQTT templates for ZIgbee scene controller, or a better way?
CatmanV2C
Topic thumbnail image
Multi-System Reactor
Reset a delay
CatmanV2C
I'm sure this has been asked, and answered, but damned if I can figure it out Use case: I have a rear garden with lights. A door from the kitchen into the garden and a door from the garage. Currently if I open the kitchen door the lights come on (yay) and a 3 minute delay starts. After 3 minutes, no matter what else happens, the lights go off (Boo! But also yay!) What I would like is for the 3 minute delay until the lights go off to start from the latest door open event. That is, if I'm going from kitchen to garage, and back again, the lights stay on until there's three minutes of no activity. I've tried 'hacking' with a virtual switch, but can't seem to stop the delay. Any pointers? TIA C
Multi-System Reactor
Reactor Loading Screen Safari
S
Topic thumbnail image
Multi-System Reactor
Constraints states visually do not match actual
S
Topic thumbnail image
Multi-System Reactor
[MSR] Feature request: For Each action on arrays/groups
therealdbT
Topic thumbnail image
Multi-System Reactor
[Solved] Error: Command timeout
G
at _ClientAPI._commandTimeout (http://192.168.1.100:8111/client/ClientAPI.js:807:179 Seeing this randomly when returning to open browser tab after being away awhile. Once, maybe twice a day. "What did you do to trigger it?" Literally nothing, just walked away and returned and there it was. Actions taken in reasonably close proximity to this particular instance of it popping up: I'd restarted the MSR container in Portainer. I'll try to grab some logs here shortly.
Multi-System Reactor
Issue with MSR UI becoming unresponsive
S
I'm having an issue with MSR's UI being very unresponsive. It started happening a couple days ago and I didn't make any changes that would have caused this except adding some meross lan devices in HA. When I go into an entity action and use the search functionality, it usually will start filtering and then get to a place after a few letters are entered where it will take 30 seconds or more (sometimes minutes) for the UI to show what I am typing. During this time MSR ui is completely unresponsive. I've tried multiple browsers and multiple computers. HA and MSR are both deployed in docker. I have run HTOP on the host and when the problem happens there are no CPU/Memory spikes at all. From a functionality standpoint MSR is working perfectly. This seems to be an UI issue only. Do i need to ditch Docker and run MSR on a Proxmox VM? I have both stand alone Docker and Proxmox environments. I dont mind doing that I just want to be able to use the UI again... Installation method Home Assistant Container Core 2025.7.3 Frontend 20250702.3 nothing crazy in the logs except some openweather map stuff that doesn't make any sense as it is working fine in MSR Any help would be greatly appreciated Reactor latest-25328-b2ed1365 app 25328 configuration from /var/reactor/config NODE_PATH /opt/reactor:/opt/reactor/node_modules [latest-25328]2025-11-30T20:01:53.843Z <app:null> Reactor build latest-25328-b2ed1365 starting on v24.11.1 /usr/local/bin/node [latest-25328]2025-11-30T20:01:53.844Z <app:null> Process ID 1 user/group 0/0; docker; platform linux/x64 #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025; locale (undefined) [latest-25328]2025-11-30T20:01:53.844Z <app:null> Basedir /opt/reactor; data in /var/reactor/storage [latest-25328]2025-11-30T20:01:53.844Z <app:null> NODE_PATH=/opt/reactor:/opt/reactor/node_modules [latest-25328]2025-11-30T20:01:53.865Z <app:null> Resolved timezone=America/New_York, environment TZ=America/New_York; offset minutes from UTC=-300 [latest-25328]2025-11-30T20:01:53.867Z <default:null> Module i18n v25141 [latest-25328]2025-11-30T20:01:53.867Z <app:null> Configured locale (undefined); selected locale(s) en-US.UTF-8 [latest-25328]2025-11-30T20:01:53.879Z <app:null> Loaded locale en-US for en-US [latest-25328]2025-11-30T20:01:53.879Z <app:null> Local date/time using configured timezone and locale formatting is "11/30/2025, 3:01:53 PM" [latest-25328]2025-11-30T20:01:53.889Z <Structure:null> Module Structure v25326 [latest-25328]2025-11-30T20:01:53.890Z <Capabilities:null> Module Capabilities v24312 [latest-25328]2025-11-30T20:01:53.904Z <Plugin:null> Module Plugin v25141 [latest-25328]2025-11-30T20:01:53.923Z <Timer:null> Module Timer v25279 [latest-25328]2025-11-30T20:01:53.924Z <TimerBroker:null> Module TimerBroker v25314 [latest-25328]2025-11-30T20:01:53.927Z <Entity:null> Module Entity v25251 [latest-25328]2025-11-30T20:01:53.929Z <Controller:null> Module Controller v25253 [latest-25328]2025-11-30T20:01:53.930Z <AlertManager:null> Module AlertManager v25318 [latest-25328]2025-11-30T20:01:53.937Z <default:null> Module Ruleset v25283 [latest-25328]2025-11-30T20:01:53.937Z <default:null> Module Rulesets v25141 [latest-25328]2025-11-30T20:01:53.942Z <GlobalExpression:null> Module GlobalExpression v25258 [latest-25328]2025-11-30T20:01:53.953Z <Predicate:null> Module Predicate v25328 [latest-25328]2025-11-30T20:01:53.956Z <Rule:null> Module Rule v25323 [latest-25328]2025-11-30T20:01:53.958Z <GlobalReaction:null> Module GlobalReaction v25292 [latest-25328]2025-11-30T20:01:53.959Z <Engine:null> Module Engine v25325 [latest-25328]2025-11-30T20:01:53.964Z <httpapi:null> Module httpapi v25328 [latest-25328]2025-11-30T20:01:53.972Z <wsapi:null> Module wsapi v25328 [latest-25328]2025-11-30T20:01:53.994Z <TaskQueue:null> Module TaskQueue 24138 [latest-25328]2025-11-30T20:01:53.994Z <VeraController:null> Module VeraController v25141 [latest-25328]2025-11-30T20:01:54.179Z <HassController:null> Module HassController v25325 [latest-25328]2025-11-30T20:02:13.797Z <OWMWeatherController:null> Module OWMWeatherController v25268 [latest-25328]2025-11-30T20:02:13.800Z <SystemController:null> Module SystemController v25323 [latest-25328]2025-11-30T20:02:13.807Z <MQTTController:null> Module MQTTController v22092 [latest-25328]2025-11-30T20:02:20.630Z <OWMWeatherController:CRIT> FetchError: request to https://api.openweathermap.org/data/2.5/weather?lat=xxxxxxxxxx&lon=-xxxxxxxxx&appid=xxxxxxxxxxxxxxxxxxxxxxxxxx&units=standard&_r=1xxxxxxxxxxxxxxfailed, reason: [-] FetchError: request to https://api.openweathermap.org/data/2.5/weather?lat=xxxxxxxxxxx&lon=-xxxxxxxxxxxxxxxxxx&appid=xxxxxxxxxxxxxxxxxxx&units=standard&_r=xxxxxxxxxxxxxxxfailed, reason: at ClientRequest.<anonymous> (/opt/reactor/node_modules/node-fetch/lib/index.js:1501:11) at ClientRequest.emit (node:events:508:28) at ClientRequest.emit (node:domain:489:12) at emitErrorEvent (node:_http_client:108:11) at TLSSocket.socketErrorListener (node:_http_client:575:5) at TLSSocket.emit (node:events:508:28) at TLSSocket.emit (node:domain:489:12) at emitErrorNT (node:internal/streams/destroy:170:8) at emitErrorCloseNT (node:internal/streams/destroy:129:3) at processTicksAndRejections (node:internal/process/task_queues:89:21
Multi-System Reactor
Date/time condition
tunnusT
Topic thumbnail image
Multi-System Reactor
Device log?
G
@toggledbits is there a log that will show me what rule is turning on a specific device? I've got a switch that has been kicking on at 2200 ET for several nights now and the reactor.log doesn't have a thing in it that I can see on a device level (it being more rules-based).
Multi-System Reactor
Midnight crossing not working in date/time condition (build 25325)
tunnusT
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
[Solved] 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
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

Variables for fun and profit

Scheduled Pinned Locked Moved Multi-System Reactor
19 Posts 3 Posters 1.9k Views 3 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.
  • CatmanV2C Offline
    CatmanV2C Offline
    CatmanV2
    wrote on last edited by CatmanV2
    #6

    No error at all, it just returns the 'wrong' epoch time. Behaving differently between Reactor and MSR (I would assume by design)
    <edit> It appears part of this might be caused but Reactor time() conversion returning epoch time in seconds. MSR time() is (or appears to be) returning epoch time in milli seconds.

    The use case is as follow:
    Set the alarm time (which varies, of course depending on weekends, holidays etc)
    The alarm is triggered and turns on the Volumio player in the bedroom, gently increases the volume and wakes us up (ha!)

    Subtract one hour from the alarm time, and that's when we want the heating to come on from its overnight low.

    Of course I could set the alarm one hour earlier, use that to turn on the heating then wait an hour to trigger the Volumio, but that feels inelegant as well as prone to bad choices of alarm time.

    If anyone has a suggestion of how the first case might be accomplished, it would be lovely.

    Cheers

    C

    The Ex-Vera abuser know as CatmanV2.....

    CrilleC 1 Reply Last reply
    0
    • CatmanV2C CatmanV2

      No error at all, it just returns the 'wrong' epoch time. Behaving differently between Reactor and MSR (I would assume by design)
      <edit> It appears part of this might be caused but Reactor time() conversion returning epoch time in seconds. MSR time() is (or appears to be) returning epoch time in milli seconds.

      The use case is as follow:
      Set the alarm time (which varies, of course depending on weekends, holidays etc)
      The alarm is triggered and turns on the Volumio player in the bedroom, gently increases the volume and wakes us up (ha!)

      Subtract one hour from the alarm time, and that's when we want the heating to come on from its overnight low.

      Of course I could set the alarm one hour earlier, use that to turn on the heating then wait an hour to trigger the Volumio, but that feels inelegant as well as prone to bad choices of alarm time.

      If anyone has a suggestion of how the first case might be accomplished, it would be lovely.

      Cheers

      C

      CrilleC Offline
      CrilleC Offline
      Crille
      wrote on last edited by Crille
      #7

      Do you need to set the heating in epoch time?
      If so and Reactor for Vera is in seconds you could just convert from milliseconds with

      substr(time(t), 0, 10)
      

      and substract 1 hour by changing to this line instead

      t.hour = hms[0] - 1,
      

      in the above example.

      CatmanV2C 1 Reply Last reply
      1
      • CrilleC Crille

        Do you need to set the heating in epoch time?
        If so and Reactor for Vera is in seconds you could just convert from milliseconds with

        substr(time(t), 0, 10)
        

        and substract 1 hour by changing to this line instead

        t.hour = hms[0] - 1,
        

        in the above example.

        CatmanV2C Offline
        CatmanV2C Offline
        CatmanV2
        wrote on last edited by CatmanV2
        #8

        @crille Really appreciated

        No I don't need to set the heating time, there's a rule that compares current time to the calculated time for heating on. Given that
        time(0) returns epoch, that seemed a sensible way of doing it

        Unfortunately truncating the epoch in ms simply knocks the milliseconds off so instead of getting Saturday, 1 January 2022 00:00:00.000 you get Saturday, 1 January 2022 00:00:00

        It should be
        Thursday, 21 July 2022 03:15:00
        or
        Thursday, 21 July 2022 03:15:00.000

        Even using strftime returns Jan 1

        Very very odd. Really appreciate your continued efforts though!

        C

        The Ex-Vera abuser know as CatmanV2.....

        CrilleC 1 Reply Last reply
        0
        • CatmanV2C CatmanV2

          @crille Really appreciated

          No I don't need to set the heating time, there's a rule that compares current time to the calculated time for heating on. Given that
          time(0) returns epoch, that seemed a sensible way of doing it

          Unfortunately truncating the epoch in ms simply knocks the milliseconds off so instead of getting Saturday, 1 January 2022 00:00:00.000 you get Saturday, 1 January 2022 00:00:00

          It should be
          Thursday, 21 July 2022 03:15:00
          or
          Thursday, 21 July 2022 03:15:00.000

          Even using strftime returns Jan 1

          Very very odd. Really appreciate your continued efforts though!

          C

          CrilleC Offline
          CrilleC Offline
          Crille
          wrote on last edited by
          #9

          I'm a little lost and don't know what you actually want to achieve and what arguments you are giving time().
          We might get different results as time() operates in the timezone set for the runtime.
          I'll leave you with my tests and take a fresh look in the morning as it's getting late here. (sorry for Swedish in the screenshot as strftime() is locale-aware.)

          AlarmTime.PNG

          1 Reply Last reply
          1
          • CatmanV2C Offline
            CatmanV2C Offline
            CatmanV2
            wrote on last edited by CatmanV2
            #10

            Ahh this appears to work, thanks so much!

            I need to do some more testing, specifically around the testing of AlarmTimeSub1 vs current time but I very much appreciate your patience guiding this muppet!

            <edit> So yes AlarmTimeSub1 evaluates perfectly. Now I need to compare that to actual time (if the actual time is later than AlarmTimeSub1, then I want the evaluation to be 'true')
            time() >= AlarmSubTime1

            Returns false.

            C

            The Ex-Vera abuser know as CatmanV2.....

            1 Reply Last reply
            0
            • CatmanV2C Offline
              CatmanV2C Offline
              CatmanV2
              wrote on last edited by CatmanV2
              #11

              OK fixed it. Thanks, too early to be trying this stuff 🙂

              strftime("%T", time()) >= AlarmSubTime1

              Evaluates as true so that's great 🙂

              C

              The Ex-Vera abuser know as CatmanV2.....

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

                FYI, @Crille has provided a correct example for computing an offset time to get an epoch (numeric) time to use for comparisons. The string comparison performed by strftime("%T", time()) >= AlarmSubTime1 is really poor programming style and should not be used; numeric comparisons are better here. Unfortunately, the responses don't give adequate detail as to what "wrong" answer is produced by @Crille 's solution, so I can't comment other than the critique.

                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
                • CatmanV2C Offline
                  CatmanV2C Offline
                  CatmanV2
                  wrote on last edited by CatmanV2
                  #13

                  Thanks. I have no programming style so happy to be educated 🙂

                  <types long reply to explain the 'issue'>
                  <while typing resolves the issue>
                  <deletes explanation>

                  is time() >= HeatTime better style?

                  <edit>
                  I guess I'm still curious as to why
                  time([AlarmTime]) in MSR and time(AlarmTime) in reactor return a different stamp (apart from the ms vs s part that is)

                  Thanks again for all you do

                  C

                  The Ex-Vera abuser know as CatmanV2.....

                  toggledbitsT 1 Reply Last reply
                  0
                  • CatmanV2C CatmanV2

                    Thanks. I have no programming style so happy to be educated 🙂

                    <types long reply to explain the 'issue'>
                    <while typing resolves the issue>
                    <deletes explanation>

                    is time() >= HeatTime better style?

                    <edit>
                    I guess I'm still curious as to why
                    time([AlarmTime]) in MSR and time(AlarmTime) in reactor return a different stamp (apart from the ms vs s part that is)

                    Thanks again for all you do

                    C

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

                    @catmanv2 said in Variables for fun and profit:

                    is time() >= HeatTime better style?

                    Yes.

                    I guess I'm still curious as to why
                    time([AlarmTime]) in MSR and time(AlarmTime) in reactor return a different stamp (apart from the ms vs s part that is)

                    You haven't given any examples of this. I don't believe it to be true (except, as noted, for millisecond precision in Multi-Hub Reactor). My guess is you are not actually asking about the return values, but about why the functions take different arguments. The reason is that the expression language in Multi-Hub Reactor is entirely new, and while there is some overlap between them, I would argue that the newer form is vastly superior and corrects many errors (read: decisions I made that I later regretted) in the Lua-based form. Another reason is that Multi-Hub Reactor is not Lua-based, so I did not feel the need to be Lua-compatible, whereas Reactor for Vera, being a Lua plugin for a Lua system, is meant to capitalize on existing user experience with Lua on that now-defunct (Vera) platform.

                    Also, if AlarmTime contains the string 12:34:56, the using time([AlarmTime]) in either Multi-Hub or Vera Reactor would be passing incorrect arguments to the function. If you want to pass a string, you do so without [] surrounding. If you include the [], you are creating an array containing a string, which is nonsensical (to the function -- it sees an error). The documentation (for Multi-Hub) states that the function takes an optional single string argument, or up to six optional numeric arguments (representing in order given (year, month, day, hour, minute, second), or an optional dateparts-form object. The [] you see in the documentation is from an old-but-still-widely-used BNF form to indicate an optional argument, it is not meant to be literally included in your expression. So the following would be valid calls to time:

                    1. time() with no arguments (because all arguments are optional)
                    2. time( "2022-07-22T08:53:23+02:00" ) -- an ISO 8601 date string with TZ
                    3. time( 2022, 7, 22 ) -- produces midnight on 2022-Jul-22 in the host time zone (three optional arguments not given -- hour, minute, second)
                    4. time( 2022, 7, 22, 8, 10, 0 ) -- produces 8:10am on 22-Jul-2022 in the host time zone
                    5. and the dateparts() form has already been given in examples above by @Crille

                    Note that the string passed must be in ISO 8601 form, so a simple "12:34:56" time alone would not be parsable and produce an invalid result.

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

                    CatmanV2C 1 Reply Last reply
                    0
                    • toggledbitsT toggledbits

                      @catmanv2 said in Variables for fun and profit:

                      is time() >= HeatTime better style?

                      Yes.

                      I guess I'm still curious as to why
                      time([AlarmTime]) in MSR and time(AlarmTime) in reactor return a different stamp (apart from the ms vs s part that is)

                      You haven't given any examples of this. I don't believe it to be true (except, as noted, for millisecond precision in Multi-Hub Reactor). My guess is you are not actually asking about the return values, but about why the functions take different arguments. The reason is that the expression language in Multi-Hub Reactor is entirely new, and while there is some overlap between them, I would argue that the newer form is vastly superior and corrects many errors (read: decisions I made that I later regretted) in the Lua-based form. Another reason is that Multi-Hub Reactor is not Lua-based, so I did not feel the need to be Lua-compatible, whereas Reactor for Vera, being a Lua plugin for a Lua system, is meant to capitalize on existing user experience with Lua on that now-defunct (Vera) platform.

                      Also, if AlarmTime contains the string 12:34:56, the using time([AlarmTime]) in either Multi-Hub or Vera Reactor would be passing incorrect arguments to the function. If you want to pass a string, you do so without [] surrounding. If you include the [], you are creating an array containing a string, which is nonsensical (to the function -- it sees an error). The documentation (for Multi-Hub) states that the function takes an optional single string argument, or up to six optional numeric arguments (representing in order given (year, month, day, hour, minute, second), or an optional dateparts-form object. The [] you see in the documentation is from an old-but-still-widely-used BNF form to indicate an optional argument, it is not meant to be literally included in your expression. So the following would be valid calls to time:

                      1. time() with no arguments (because all arguments are optional)
                      2. time( "2022-07-22T08:53:23+02:00" ) -- an ISO 8601 date string with TZ
                      3. time( 2022, 7, 22 ) -- produces midnight on 2022-Jul-22 in the host time zone (three optional arguments not given -- hour, minute, second)
                      4. time( 2022, 7, 22, 8, 10, 0 ) -- produces 8:10am on 22-Jul-2022 in the host time zone
                      5. and the dateparts() form has already been given in examples above by @Crille

                      Note that the string passed must be in ISO 8601 form, so a simple "12:34:56" time alone would not be parsable and produce an invalid result.

                      CatmanV2C Offline
                      CatmanV2C Offline
                      CatmanV2
                      wrote on last edited by
                      #15

                      @toggledbits OK I'll try to give an example (I'm sure / hopeful you can explain)

                      In my Reactor (and I'm pretty sure you set this up for me a couple of years back!) I have:
                      getstate( 46, "urn:upnp-org:serviceId:VClock1", "AlarmTime" )
                      Underneath is stated: Last result: "06:00:00"

                      Then we have
                      time(AlarmTime) - 3600
                      Underneath: Last result: 1658462400

                      Screenshot 2022-07-22 at 11.42.38.png

                      In MSR we have:
                      getEntity( "vera>Alarm Clock" ).attributes.x_vera_svc_upnp_org_VClock1.AlarmTime
                      Underneath: Last value: (string) "06:00:00"

                      If we then do
                      time(AlarmTime) - 3600000 the result printed is
                      Last value: (null) null

                      Screenshot 2022-07-22 at 11.43.35.png

                      time([AlarmTime]) - 3600000
                      Returns: Last value: (number) 1640995200000

                      Screenshot 2022-07-22 at 11.44.11.png

                      Please note I changed the HeatTime in reactor to HeatTimeMSR in MSR just to demonstrate the 'difference' in output.

                      Clearly I'm missing something fundamental and obvious!

                      Cheers

                      C

                      The Ex-Vera abuser know as CatmanV2.....

                      toggledbitsT 1 Reply Last reply
                      0
                      • CatmanV2C CatmanV2

                        @toggledbits OK I'll try to give an example (I'm sure / hopeful you can explain)

                        In my Reactor (and I'm pretty sure you set this up for me a couple of years back!) I have:
                        getstate( 46, "urn:upnp-org:serviceId:VClock1", "AlarmTime" )
                        Underneath is stated: Last result: "06:00:00"

                        Then we have
                        time(AlarmTime) - 3600
                        Underneath: Last result: 1658462400

                        Screenshot 2022-07-22 at 11.42.38.png

                        In MSR we have:
                        getEntity( "vera>Alarm Clock" ).attributes.x_vera_svc_upnp_org_VClock1.AlarmTime
                        Underneath: Last value: (string) "06:00:00"

                        If we then do
                        time(AlarmTime) - 3600000 the result printed is
                        Last value: (null) null

                        Screenshot 2022-07-22 at 11.43.35.png

                        time([AlarmTime]) - 3600000
                        Returns: Last value: (number) 1640995200000

                        Screenshot 2022-07-22 at 11.44.11.png

                        Please note I changed the HeatTime in reactor to HeatTimeMSR in MSR just to demonstrate the 'difference' in output.

                        Clearly I'm missing something fundamental and obvious!

                        Cheers

                        C

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

                        @catmanv2 said in Variables for fun and profit:

                        If we then do
                        time(AlarmTime) - 3600000 the result printed is
                        Last value: (null) null

                        This is expected because AlarmTime contains only 06:00:00, which is not an ISO 8601-compatible string.

                        time([AlarmTime]) - 3600000
                        Returns: Last value: (number) 1640995200000

                        Also expected, as I said above, because the [] surrounding AlarmTime convert it to an array, which is a form of object, so time() is thinking its a dateparts()-compatible object and using what's available from it (which in fact is nothing at all, i.e. the "it's nonsensical" reference in that comment) to compute the 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
                        1
                        • CatmanV2C Offline
                          CatmanV2C Offline
                          CatmanV2
                          wrote on last edited by CatmanV2
                          #17

                          So fundamentally Reactor's time and MSR's time are just different and behave differently?

                          <edit>
                          Or getstate and getEntity are returning something different from each other, I guess.

                          Thanks for the clarity there, and the patience 🙂

                          C

                          The Ex-Vera abuser know as CatmanV2.....

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

                            Many of the functions behave differently, and this is intentional. The functions of Multi-Hub Reactor are (in my view) an improved evolution of any same-named functions in Reactor for Vera. Reading the documentation is key to success.

                            I'm working right now (back at my desk, yay!) at expanding the parsing capabilities of time() to make your particular use case a bit easier.

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

                            CatmanV2C 1 Reply Last reply
                            1
                            • toggledbitsT toggledbits

                              Many of the functions behave differently, and this is intentional. The functions of Multi-Hub Reactor are (in my view) an improved evolution of any same-named functions in Reactor for Vera. Reading the documentation is key to success.

                              I'm working right now (back at my desk, yay!) at expanding the parsing capabilities of time() to make your particular use case a bit easier.

                              CatmanV2C Offline
                              CatmanV2C Offline
                              CatmanV2
                              wrote on last edited by CatmanV2
                              #19

                              @toggledbits that's super. Thanks again for all your help!

                              C

                              The Ex-Vera abuser know as CatmanV2.....

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


                              Recent Topics

                              • Time series documentation
                                toggledbitsT
                                toggledbits
                                0
                                8
                                144

                              • Tuya Wifi to Tasmota flashing
                                CatmanV2C
                                CatmanV2
                                0
                                1
                                26

                              • Genuinely impressed with Zigbee and HA / Reactor
                                CatmanV2C
                                CatmanV2
                                1
                                2
                                97

                              • MQTT templates for ZIgbee scene controller, or a better way?
                                CatmanV2C
                                CatmanV2
                                0
                                3
                                93

                              • Reset a delay
                                CatmanV2C
                                CatmanV2
                                0
                                8
                                106

                              • Zigbee2mqtt installed! sytemctl not happy :(
                                CatmanV2C
                                CatmanV2
                                0
                                4
                                118

                              • Any thoughts on which is better
                                CatmanV2C
                                CatmanV2
                                0
                                9
                                249

                              • Single protocol?
                                toggledbitsT
                                toggledbits
                                0
                                10
                                225

                              • HDMI oddness
                                CatmanV2C
                                CatmanV2
                                0
                                5
                                143

                              • Reactor Loading Screen Safari
                                S
                                SweetGenius
                                0
                                10
                                264

                              • Constraints states visually do not match actual
                                S
                                SweetGenius
                                0
                                3
                                114

                              • Oh the joy of pairing
                                CatmanV2C
                                CatmanV2
                                2
                                1
                                66
                              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