Edit: Solved in latest-26221.
Bare-metal latest-26193
I have this group:
"OKforLarm":
name: OK för Larm
select:
- include_controller: vera
- include_capability: door_sensor
filter_expression: entity.attributes.door_sensor.state
It contains the entities I expect but behaves a bit odd. When I open vera>device_10097 the entity attribute door_sensor.state changes to true but it won't show up as member in the group, when I also open vera>device_10095 they both shows as members and when I close vera>device_10095 it disappear from the group but when I close vera>device_10097 it lingers in the group until I restart Reactor.
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.
Hey @toggledbits I'm back to trying to optimize a couple of things based on dynamic group.
First of all, I think I found a typo in the doc:
primary_attribute: "binary_sensor.state"
primary_attribute_value: |
d = false;
each id in members: d = getEntity(id)?.attributes?.power_switch?.state or d,
d
I think the correct code snippet is d = false,
All that said, my use case for dynamic groups is to group 3 different climate devices, so I could easily command them at the same time. Commands are good, but sometimes I want to check if any of the devices are on, and that's easily done with a similar snippet as the one you have in the docs. But this is limited to the primary attribute, while I want to have any of the attributes in the group to be driven by a similar logic (while all are null in the group). ie, access hvac_control.mode and see if any of the unit is set to cool, or heat. Is that possible, without re-defining an expression in each of my rules? Thanks!
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!
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
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.
@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.
npm ERR! code EBADPLATFORM reactor 20022
Multi-System Reactor
2
Posts
2
Posters
1.3k
Views
1
Watching
-
i get the following error when i run
~/reactor $ npm i --no-save --omit dev
Reactor is running and i see no ill effects so far
Thought i would report for info.~/reactor $ npm i --no-save --omit dev npm ERR! code EBADPLATFORM npm ERR! notsup Unsupported platform for inotify@1.4.6: wanted {"os":"linux","arch":"any"} (current: {"os":"android","arch":"arm"}) npm ERR! notsup Valid OS: linux npm ERR! notsup Valid Arch: any npm ERR! notsup Actual OS: androidand here is log for more info
0 info it worked if it ends with ok 1 verbose cli [ 1 verbose cli '/data/data/com.termux/files/usr/bin/node', 1 verbose cli '/data/data/com.termux/files/usr/bin/npm', 1 verbose cli 'i', 1 verbose cli '--no-save', 1 verbose cli '--omit', 1 verbose cli 'dev' 1 verbose cli ] 2 info using npm@6.14.10 3 info using node@v14.15.4 4 verbose npm-session e65bf5b70b2ee3fd 5 silly install loadCurrentTree 6 silly install readLocalPackageData 7 http fetch GET 200 https://registry.npmjs.org/dev 1079ms 8 http fetch GET 200 https://registry.npmjs.org/dev/-/dev-0.1.3.tgz 161ms 9 silly pacote tag manifest for dev@latest fetched in 1336ms 10 timing stage:loadCurrentTree Completed in 2965ms 11 silly install loadIdealTree 12 silly install cloneCurrentTreeToIdealTree 13 timing stage:loadIdealTree:cloneCurrentTree Completed in 11ms 14 silly install loadShrinkwrap 15 timing stage:loadIdealTree:loadShrinkwrap Completed in 316ms 16 silly install loadAllDepsIntoIdealTree 17 silly resolveWithNewModule dev@0.1.3 checking installable status 18 http fetch GET 200 https://registry.npmjs.org/inotify 788ms 19 http fetch GET 200 https://registry.npmjs.org/inotify/-/inotify-1.4.6.tgz 796ms 20 silly pacote range manifest for inotify@>= 0.1.6 fetched in 1636ms 21 silly resolveWithNewModule inotify@1.4.6 checking installable status 22 timing stage:rollbackFailedOptional Completed in 2ms 23 timing stage:runTopLevelLifecycles Completed in 4975ms 24 verbose stack Error: Unsupported platform for inotify@1.4.6: wanted {"name":"inotify","version":"1.4.6","engines":{"node":">=0.8"},"os":["linux"],"dependencies":{"bindings":"^1.3.1","nan":"^2.12.1"},"optionalDependencies":{},"peerDependenciesMeta":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"https://registry.npmjs.org/inotify/-/inotify-1.4.6.tgz","_integrity":"sha512-WW8/uqIA04O3AePQVe/Ms3ZLR0yGamaz8YOEpaXc4WBAGOPZfzu58wWErEPSUYaPyDrJRIeCn6PEIQgC1ZyQ5w==","_shasum":"c5a51852df1647d1a589d46c4baa2771ed36b8d2","_shrinkwrap":null,"_id":"inotify@1.4.6","_from":"inotify@>= 0.1.6","_requested":{"type":"range","registry":true,"raw":"inotify@>= 0.1.6","name":"inotify","escapedName":"inotify","rawSpec":">= 0.1.6","saveSpec":null,"fetchSpec":">= 0.1.6"},"_spec":"inotify@>= 0.1.6","_where":"/data/data/com.termux/files/home/reactor/node_modules/dev"} (current: {"os":"android","cpu":"arm"}) 24 verbose stack at checkPlatform (/data/data/com.termux/files/usr/lib/node_modules/npm/node_modules/npm-install-checks/index.js:46:14) 24 verbose stack at thenWarnEngineIssues (/data/data/com.termux/files/usr/lib/node_modules/npm/lib/install/validate-args.js:63:5) 24 verbose stack at /data/data/com.termux/files/usr/lib/node_modules/npm/node_modules/iferr/iferr.js:3:64 24 verbose stack at checkEngine (/data/data/com.termux/files/usr/lib/node_modules/npm/node_modules/npm-install-checks/index.js:25:10) 24 verbose stack at module.exports.isInstallable (/data/data/com.termux/files/usr/lib/node_modules/npm/lib/install/validate-args.js:60:3) 24 verbose stack at resolveWithNewModule (/data/data/com.termux/files/usr/lib/node_modules/npm/lib/install/deps.js:677:10) 24 verbose stack at /data/data/com.termux/files/usr/lib/node_modules/npm/lib/install/deps.js:600:7 24 verbose stack at /data/data/com.termux/files/usr/lib/node_modules/npm/node_modules/iferr/iferr.js:3:64 24 verbose stack at /data/data/com.termux/files/usr/lib/node_modules/npm/node_modules/call-limit/call-limit.js:28:43 24 verbose stack at processTicksAndRejections (internal/process/task_queues.js:75:11) 25 verbose pkgid inotify@1.4.6 26 verbose cwd /data/data/com.termux/files/home/reactor 27 verbose Linux 4.9.76 28 verbose argv "/data/data/com.termux/files/usr/bin/node" "/data/data/com.termux/files/usr/bin/npm" "i" "--no-save" "--omit" "dev" 29 verbose node v14.15.4 30 verbose npm v6.14.10 31 error code EBADPLATFORM 32 error notsup Unsupported platform for inotify@1.4.6: wanted {"os":"linux","arch":"any"} (current: {"os":"android","arch":"arm"}) 33 error notsup Valid OS: linux 33 error notsup Valid Arch: any 33 error notsup Actual OS: android 33 error notsup Actual Arch: arm 34 verbose exit [ 1, true ]Depandencies
{"dependencies": { "@influxdata/influxdb-client": "^1.18.0", "@mdi/font": "^5.9.55", "body-parser": "^1.19.0", "bootstrap": "4.6.0", "bootstrap-icons": "1.5.0", "cookie": "^0.4.1", "digest-fetch": "^1.2.1", "diskusage-ng": "^1.0.1", "express": "^4.17.1", "feather-icons": "^4.28.0", "font-awesome": "^4.7.0", "gridstack": "^5.0.0", "jquery": "3.6.0", "jquery-ui-dist": "1.12.1", "js-yaml": "^3.14.1", "node-fetch": "^2.6.7", "nodemailer": "^6.5.0", "qs": "^6.10.1", "serve-static": "^1.14.1", "uuid": "^8.3.2", "ws": "^7.5.6" } -
Looks like a dependency of one of the dependent packages doesn't have an Android implementation. Sorry, mate. Nothing I can do about that. You've been riding the bleeding edge with your setup, and it finally cut.










