Name Change: This app was previously known as "Boolean Toolbox". The name was changed to "Smart (Components) Toolkit" to better reflect the expanded functionality beyond just boolean logic - now including state management, scene control, and flow utilities.
๐ Full Documentation: https://tiwas.github.io/SmartComponentsToolkit/
Advanced logic and state management for your Homey automations. Create smart devices that react to multiple inputs with customizable formulas, and manage device states with powerful capture/restore functionality.
v1.10.29 test โ fixes diagnostic report generation when Homey does not expose one or more resource metrics.
Test and build your logic before deploying:
- Boolean Logic Emulator - Test expressions with live truth tables
- Formula Builder - Visual formula editor with validation
- Boolean Editor - Advanced editor for boolean device configurations
- State Editor - Visual editor for State Device configurations
- State Editor (API) - State editor with Homey API integration (eternal beta)
A floating, always-on-top desktop widget that lets you run Homey flows from any platform you're working on, with local favorites organized into folders and live Homey notifications surfaced as on-screen toasts.
- Source:
apps/dashboard/(with framework-agnostic logic inapps/dashboard/shared/) - Built with Tauri 2 + React + TypeScript
- Cross-platform: Windows, macOS, Linux
See apps/dashboard/README.md for setup, OAuth scopes and build instructions.
Combine the same capability from two or more Homey devices into one live virtual sensor, alarm, or text value.
| Feature | Description |
|---|---|
| Setup | Visual pairing wizard - select capability โ calculation โ source devices |
| Numbers | Average, minimum, maximum, sum, median |
| Booleans | Any/all, majority, count on, percentage on |
| Text / time | Most common, min/max, newest, circular average clock time |
| Flow triggers | Any value change, or numeric change above a fixed/percentage threshold |
๐ Read Composite Device guide โ
The easiest way to create boolean logic with a visual pairing wizard.
| Feature | Description |
|---|---|
| Setup | Visual pairing wizard - select zone โ device โ capability |
| Inputs | Dynamic (2-10, auto-expands based on formula) |
| Formulas | Single formula per device |
| Best for | Simple setups, beginners |
๐ Read Logic Device guide โ
Powerful device for advanced users who need multiple formulas or prefer JSON configuration.
| Feature | Description |
|---|---|
| Setup | Quick add with manual JSON configuration |
| Inputs | Dynamic (2-10, auto-expands based on formula) |
| Formulas | Multiple independent formulas per device |
| Best for | Advanced users, multi-formula needs |
Note: Logic Unit X (2, 3, 4...10 inputs) are legacy devices with fixed input counts - use the new Logic Unit instead.
๐ Read Logic Unit guide โ
Capture and restore device states. Create "scenes" by storing the current state of multiple devices and applying them later with a single action.
| Feature | Description |
|---|---|
| Setup | Visual pairing wizard - select zones and devices |
| Values | Fixed at setup time |
| Use case | Predefined scenes (Movie Night, Cleaning, etc.) |
Key features:
- Capture current state of multiple devices across zones
- Apply stored state with a single flow action
- "Reset All" option to turn off other State Devices first
- Hierarchical execution with configurable delays
๐ Read State Device guide โ
Dynamic state capture with templates, named slots, and push/pop stack operations.
| Feature | Description |
|---|---|
| Setup | Visual pairing wizard - define template of devices/capabilities |
| Values | Captured at runtime (not fixed) |
| Named states | Store multiple named snapshots |
| Stack | Push/pop for temporary state management |
Key features:
- Capture current device states to named slots at runtime
- Push/pop stack for temporary state changes (e.g., doorbell interruption)
- Dynamic state names with Homey tokens support
- Max 50 named states, max 20 stack depth per device
Example use case:
WHEN: Doorbell rings
THEN: Push current state to stack
THEN: Set all lights to 100%
THEN: Wait 5 minutes
THEN: Pop state (restore previous)
๐ Read State Capture Device guide โ
Virtual light device that adjusts brightness and color temperature for a group of real lights based on time, sun position or ambient lux.
| Feature | Description |
|---|---|
| Schedule | Per anchor: clock time / solar event / lux sensor crossing |
| Solar events | Sunrise, sunset, civil/nautical/astronomical dawn/dusk, golden hour, blue hour, solar noon/midnight โ with offset and polar fallback |
| Light profile | Per-phase dim + temperature, red mode threshold |
| Outdoor source | Astronomical / lux sensor / Open-Meteo / MET.no / external |
| Per-light | Enable, prewarm, allow red mode, min/max dim |
Key features:
- Mix-and-match anchor modes per phase (e.g. morning by clock, evening by sunset)
- Red mode threshold: lights with color support shift to red when calculated temperature drops below threshold
- Live tile shows calculated values regardless of on/off or paused state
- 24 flow cards: pause-until, force red, apply temporary state, phase-changed trigger, app-level solar event trigger and more
Install via test channel: homey.app/a/no.tiwas.booleantoolbox/test/
๐ Read Circadian Light Group guide โ
App Settings can generate a local diagnostic report and open a new GitHub issue with the report prefilled. The report includes app uptime, recent warnings/errors and stack traces, anonymous device counts, Circadian Light Group scheduler/member load, and available CPU, memory, and storage data. Common identifiers and secrets are redacted, nothing is uploaded automatically, and the report remains editable before submission.
These flow cards work independently - no device setup required.
Simple GO/NO GO flow control without needing variables or devices. Gates persist in memory until changed.
| Feature | Description |
|---|---|
| States | GO (open) or NO GO (closed) |
| Wait condition | Pause flow until gate becomes GO (with timeout) |
| Control | Open/close gates from any flow |
Flow Cards:
- Gate is GO/NO GO (condition) - Check gate state instantly
- Conditional Gate: Wait for GO (condition) - Pause until gate opens or timeout
- Modify Conditional Gate (action) - Set gate to GO, NO GO, or Toggle
Example:
Flow 1 - Motion detected:
WHEN: Motion sensor triggered
THEN: Modify Conditional Gate "allow_lights" โ GO
Flow 2 - Turn on lights:
WHEN: Door opened
AND: Gate "allow_lights" is GO
THEN: Turn on lights
Flow 3 - Disable at night:
WHEN: Time is 23:00
THEN: Modify Conditional Gate "allow_lights" โ NO GO
๐ Read Conditional Gates guide โ
Waiter Gates let your flows pause and wait for device states to change, with YES/NO outputs:
| Feature | Description |
|---|---|
| Wait condition | Pause flow until device capability reaches target value |
| YES path | Value matches (or already matched) |
| NO path | Timeout expired before match |
Flow Cards:
- Wait until device capability becomes value (condition) - Waits with timeout
- Control waiter gate (action) - Enable/disable/stop a waiter by ID
- Wait (action) - Simple delay (basic pause without device monitoring)
๐ Read Waiter Gates guide โ
Range checking and value mapping with AND/OR logic.
- Check if a value is within a range (e.g., temperature between 18-22ยฐC)
- Use AND/OR logic for complex conditions
- Returns output value and error message tokens
Example: Check if temperature is comfortable (18-24ยฐC):
- Input: temperature token
- Rules:
18,24(min, max) - Operators:
โฅANDโค
๐ Read Flow Cards reference โ
Logic Device (recommended for beginners):
- Go to Devices โ Add Device โ Smart (Components) Toolkit โ Logic Device
- Follow the pairing wizard to select inputs
- Configure formula in device settings
Other devices:
- Logic Unit, State Device, State Capture Device - same process, different wizards
[
{
"id": "formula_1",
"name": "Motion & Dark",
"expression": "A AND B",
"enabled": true,
"timeout": 60
}
]Operators: AND, OR, XOR, NOT (plus &, |, ^, !)
WHEN: Formula [motion_detected] changed to TRUE
THEN: Turn on lights
๐ Read complete setup guide โ
- Formula result changed to TRUE/FALSE
- Formula timed out
- State changed (Logic Device only)
- State was captured/applied (State Capture Device)
- Formula result is...
- Formula has timed out
- Gate is GO / NO GO (Conditional Gates)
- Conditional Gate: Wait for GO (Conditional Gates)
- Captured state exists (State Capture Device)
- Stack is empty / Stack depth is... (State Capture Device)
- Wait until device capability becomes value (Waiter Gates)
- Set input value for formula
- Evaluate formula / Re-evaluate all
- Evaluate expression (Range checking)
- Apply state (State Device)
- Capture/Apply/Delete state, Push/Pop/Peek/Clear stack (State Capture Device)
- Modify Conditional Gate (Conditional Gates)
- Control waiter gate (Waiter Gates)
- Wait (Simple delay)
Start with 2 inputs, grow to 10 automatically:
{"expression": "A AND B AND C AND D"}
// Device auto-expands to 4 inputs!Lock inputs at first value for sequence-based logic:
{"firstImpression": true, "timeout": 30}Each formula maintains its own input states:
[
{"id": "day_mode", "expression": "A AND B"},
{"id": "night_mode", "expression": "A OR B"}
]Paste ugly JSON, get beautiful formatting on save. Works in all settings fields.
- Getting Started
- Device Types Guide
- State Device
- State Capture Device
- Conditional Gates
- Waiter Gates
- Flow Cards Reference
- Forum: Homey Community
- Issues: GitHub Issues
- Source: GitHub Repository
If this app makes your life easier, consider buying me a coffee โ
Created by Lars Kvanum (@Tiwas)
This app is provided as-is. Use at your own risk.
Smart (Components) Toolkit - Smarter automations with advanced logic and state management ๐