Try build 25321 that I just pushed. I think I already had a fix for that.
toggledbits
Posts
-
Home Assistant 2025.11.2 and latest-25315 -
Reactor (Multi-System/Multi-Hub) AnnouncementsReactor build 25321
alarm()function: has been redefined to return a boolean; true will be returned when the configured interval has completed; false in all other cases. The function previously returned the number of milliseconds remaining in the interval (less useful).- Fix an issue where modifying a global expression that contains an
alarm()call may not reset the timer. - HassController: Bless HA to 2025.11.2
-
Notice to Docker + ARM Users (RPi 3/4/5 and others)This post does not apply to users of Intel/AMD-based systems. If you are using a Reactor image tagged
latest-amd64orstable-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 bearm64for 64-bit operating systems, andarmv7lfor 32-bit operating systems.For those of you running a container from the
aarch64image 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 usingdocker-compose, then this is a relatively simple matter of changing theimageline in yourdocker-compose.yamlfile 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
aarch64image to thearm64image. And, you can't just trust the output ofuname -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 isarm64oraarch64, then you are running a 64-bit OS and you should use thearm64-tagged image. If it's anything else, you are running a 32-bit OS, and you should use thearmv7l-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
unamecommand reports that the CPU is 64-bit architecture (aarch64), which is true for the host on which I ran these commands, but theDEB_HOST_ARCHvalue isarmhf, indicating a 32-bit operating system. This system has to use thearmv7l-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
arm64image, and if it doesn't start up, try thearmv7limage.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
aarch64image; 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 thedpkg-architecturecommand mentioned above). -
Script action and custom timersDepends on what you mean by "fire". If you look at the logs (not in pulse output mode, but in the default "follow"), you will probably see it being re-evaluated every 10 seconds, but because your result is a constant true, the rule SETs and never RESETs. Changing it to pulse output, of course, changes that.
The thing to notice, though, is that the expression IS being evaluated every 10 seconds, regardless of the output mode of the condition.
-
Requesting a proper ARM64/aarch64 Docker image (Pi 5 support)Ahhh... the subtlies of Pi. I have on my Pi4 build system:
root@rpi4-1:~# uname -m aarch64 root@rpi4-1:~# dpkg-architecture -q DEB_HOST_ARCH armhf root@rpi4-1:~#And never noticed. I guess I'll be rebuilding that host.
Image is up for arm64 using Bookworm (slim). I've always done builds directly on target hosts; this one was built on x86_64 cross-platform, so I'm eager to hear if it works for you. I can't run it on that Pi4 in its current condition.
-
Script action and custom timersYes, that's correct!
-
Help resolve change in behaviour post updateYou should be able to go back to something similar to what you were doing originally, just in Script conditions. Give it a try!
-
Reactor (Multi-System/Multi-Hub) AnnouncementsReactor build 25315
NOTE FOR HOME ASSISTANT USERS: Versions of Home Assistant prior to 2025.01 are no longer supported as of this build. They may continue to work, but no effort will be expended to maintain compatibility going forward.
- Rules: New Script condition -- write an expression (simple or complex/compound) that returns a boolean (true/false) or null, just like any other condition. The
alarm()function works in it, too! And it holds more secrets... see docs WARNING: This is a "bleeding edge" new feature; it may be subject to breaking changes as it evolves into final form. - Expressions: Add new
print()function to assist troubleshooting of complex expressions. - HassController: Support for new HA selector/data type in
input_datetimeentities and other similar. - HassController: Versions of Home Assistant older than 2025.01 are no longer supported, as support for a number of (their) deprecated features and functions is about to end.
- HassController: Bless HA to 2025.11.1
- Rules: New Script condition -- write an expression (simple or complex/compound) that returns a boolean (true/false) or null, just like any other condition. The
-
Reactor w/HA 2025.11 error on set_datetime service call setting only timeGot it. Multiple layers of this. It actually is related to the other PR, but again, that's also not the only issue. They also introduced a new selector type specifically for time and HassController is not handling it properly.
I'll have a new full build out later today. No more respins on 25310.
-
Reactor w/HA 2025.11 error on set_datetime service call setting only timeOK. So this is not the whole mystery, but it addresses one part... the service call looks like it depends on the configuration of the entity. The integration has two properties for its entities
has_dateandhas_time, and if one is false and you attempt to set that field, you get an error. I just created anotherinput_datetimewithhas_date: falseandhas_time: trueand the service call works fine.HassController is still not happy, though... still looking...
-
Reactor w/HA 2025.11 error on set_datetime service call setting only time -
Help resolve change in behaviour post updateI'm working for you. You also gave me an idea that I think could create a very useful alternative way to get to where you want to go. More to come...
-
Help resolve change in behaviour post update@CatmanV2 said in Help resolve change in behaviour post update:
My assumption is it will go false at, or immediately after midnight?
No. If your
GlobalAlarmTimewill always show time only (no date components), then you can safely add analarm()call toGlobalHeatTimeas well. -
Help resolve change in behaviour post update@CatmanV2 said in Help resolve change in behaviour post update:
Will I see it updating in the logs?
Yes, and on the Expressions page.
-
Help resolve change in behaviour post update@CatmanV2 said in Help resolve change in behaviour post update:
I'm further guessing that I'd set up a new global variable to replace HeatTime and have something like
GlobalHeatTime = alarm ( 900) , time(GlobalAlarmTime) - 3600000You're on the right track. If I understand your description, something like this should work (all globals):
gAlarmTime = getEntity( ... ) gHeatTime = time(gAlarmTime) - 3600000 gHeatOn = alarm(900), time() >= gHeatTimegAlarmTimewill be updated any time the dependent entity changes.gHeatTimewill change any timegAlarmTimechanges (reference to another variable creates a dependency on that variable).gHeatOnwill be updated by the periodicalarm()tripping. -
Reactor Version 25310 : Office Light control via rule in reactor no longer working since last update.@gwp1 yes!
-
[Solved] alarm() in global expression throws error in log.Whew! If that was anything, it was the work of an aging magician.

Thanks for sticking with it and supplying good info.
-
Reactor Version 25310 : Office Light control via rule in reactor no longer working since last update.OK. Please pull 25310 (aka latest) again. I've patched HassController for this change.
-
[Solved] alarm() in global expression throws error in log.OK. I think I've got it. Pull it once again and restart... this time for sure!!!
-
[Solved] alarm() in global expression throws error in log.It's not mentioned in a substitution somewhere?









