Solaris Shade and Harvest Module
The Solaris module on Aida Controller automates daylight harvesting (sensor-driven dim) and glare control (sun-aware shade positioning) using facility zones. It complements time-based Circadian lighting and fixed schedules — Solaris runs continuously and reacts to ALS sensor readings and solar geometry.
Overview
This module provides:
- Daylight harvesting — closed-loop dim from ambient light (ALS) toward a lux setpoint; open-loop fallback from sun position when sensors are unavailable
- Glare control — shade position from solar elevation/azimuth vs façade orientation
- Facility zone scoping —
harvest,glare,shading, and optionallightingzone types with per-zone tunables - Setpoint training — guided workflow to capture ALS baselines per harvest zone (closed loop)
- Manual override — same timed/latched model as Circadian; separate suspend state for harvest (lights) and glare (shades)
- Preview charts — simulated harvest and glare curves for a selected date
- Automation integration — builtin tasks
solaris-harvestandsolaris-glare
:::note PoE nodes and BACnet PoE lighting nodes do not speak BACnet directly. Solaris drives cluster-level dim and shade on the controller; northbound BACnet exports (if enabled) reflect aggregated zone state. See BACnet/IP Server for BMS integration. :::
How it works
| Loop | Trigger | Output |
|---|---|---|
| Harvest | ALS light,<lux> events (debounced) + 1 min interval fallback | Dim per harvest zone |
| Glare | 5 min interval + solar math | Shade position per glare/shading zone |
Prerequisites
Before enabling Solaris, ensure you have:
- Aida Controller 2.0 installed and commissioned
- Facility zones created with the correct types and cluster/device membership
- Harvest zones: fixtures with dim control; closed loop requires at least one ALS-capable device in the zone
- Glare / shading zones: shade actuators (INX/Core shades, Somfy PoE motors, etc.)
- Site location in Settings → System (latitude, longitude, timezone) — required for glare
- Operator access to edit modules, facility zones, and automation tasks
Setup process
Step 1: Set site location
- Go to Settings → System.
- Set Latitude, Longitude, and Timezone.
- Save preferences.
Glare control uses solar position from these values. Harvest closed loop uses ALS readings; open-loop harvest also uses sun position on the zone façade.
Step 2: Create facility zones
Solaris scope is defined primarily through Facility → Zones.
| Zone type | Purpose |
|---|---|
harvest | Daylight harvesting — ALS-driven dim |
glare | Façade/window groups for anti-glare shade |
shading | General automated shade (may overlap glare) |
lighting | Optional harvest targets that share fixtures with Circadian |
For each zone:
- Create or open the zone under Facility → Zones.
- Set the zone type to one of the types above.
- Link clusters and/or devices that belong in the zone.
- Open the Solaris panel on the zone detail page and configure tunables (see Zone tunables).
Step 3: Configure zone tunables
Per-zone settings override module defaults when present.
Harvest (harvest / lighting zones)
| Field | Description |
|---|---|
| Mode | closed_loop (ALS setpoint), open_loop (sun-based), or disabled |
| Setpoint lux | Target ambient level for closed loop (typical 300–750 lux) |
| Dim min / max | Allowed dim range (%) |
| Gain | Automation authority 0–100 (how aggressively dim tracks the setpoint) |
| Response step % | Maximum dim change per reconcile |
Glare (glare / shading zones)
| Field | Description |
|---|---|
| Mode | open_loop or disabled |
| Orientation (°) | Façade azimuth — 0 = north, 90 = east, 180 = south |
| Shade min / max | Closed and open positions (%) |
| Min elevation (°) | Ignore sun below this elevation |
| Gain | Automation authority for shade moves |
Step 4: Train harvest setpoint (closed loop)
For closed-loop harvest zones, capture a baseline ALS reading after shades are closed and lights are at full output:
- Go to Modules → Solaris.
- Confirm harvest zones in scope use closed loop mode.
- Click Train setpoint (or restart if a session is already active).
- The controller closes shades in glare zones in scope, sets harvest-zone lights to 100%, waits for a settle period, then records ALS per zone.
- When training completes, setpoint lux values appear on the module status and linked zone detail pages.
:::tip When to retrain Retrain after major layout changes, new glazing, furniture moves that block sensors, or when closed-loop dim consistently misses the visual target. :::
Step 5: Enable the Solaris module
- Open Modules → Solaris.
- Toggle the module Enabled.
- Under Harvest and Glare, enable the algorithms you need.
- Set module-level defaults (used when zone metadata omits a field):
| Section | Key defaults |
|---|---|
| Harvest | Setpoint lux, dim min/max, gain, ALS fallback timeout |
| Glare | Shade min/max |
| Runtime | Sensor debounce, reconcile intervals, active hours window |
| Manual override | Enabled + auto-resume timeout (same family as Circadian) |
- Choose Targets (zones recommended — module defaults to zone scope).
- Select Active days and optional Active hours (local time window).
- Click Save.
Step 6: Verify automation tasks
Under Automation → Tasks, confirm these builtin tasks are enabled:
| Task | Interval | Action |
|---|---|---|
solaris-harvest | 1 min | module.solaris.apply_harvest |
solaris-glare | 5 min | module.solaris.apply_glare |
Sensor-driven harvest also queues debounced solaris.harvest_once runs when ALS events arrive — you do not configure this separately.
Step 7: Verify operation
- Review live status on the Solaris module page — ALS lux, harvest %, glare shade %, and zone counts.
- Open Preview charts for harvest and/or glare for today (or a simulated date).
- Click Apply now to run harvest and/or glare reconcile immediately.
- Check Automation → Logs for applied vs skipped targets.
Manual override
Solaris uses the same override contract as Circadian.
Lights (harvest)
| Event class | Examples | Effect |
|---|---|---|
| Timed pause | on, up, down, scenes | Skip harvest dim until timeout |
| Latched off | off, vac | Skip until on / mot |
| Sensor | light,<lux> | Does not suspend — triggers harvest reconcile |
Shades (glare)
| Event class | Examples | Effect |
|---|---|---|
| Timed pause | Shade up/down from Control, manual position | Skip glare shade moves until timeout |
| Solaris apply | Automation shade commands | Never recorded as manual |
The Active overrides table on the module page lists suspended targets with mode, resume time, and reason.
Zone tunables vs module defaults
| Layer | Where | What |
|---|---|---|
| Global | Settings → System | Lat/lng, timezone |
| Zone | Facility → Zone detail → Solaris | Orientation, harvest mode/setpoint, glare limits |
| Module | Modules → Solaris | Defaults, scope, active hours, runtime |
| Automation | Automation → Tasks | Builtin tasks (normally leave enabled) |
Module defaults apply when a zone omits a field. Prefer zone-level setpoints for room-specific tuning; use module defaults for site-wide baselines.
Coordinating with Circadian
| Module | Controls | Best practice |
|---|---|---|
| Circadian | CCT + dim vs time | Interior zones, tunable-white fixtures |
| Solaris harvest | Dim vs ALS | Perimeter/daylit zones with sensors |
| Solaris glare | Shade vs sun | Façade zones with blinds |
Avoid assigning Circadian and Solaris harvest to the same fixtures unless you intend them to share authority. Separate facility zones so operators can reason about which algorithm owns each space.
Monitoring and troubleshooting
Live status indicators
| Status | Meaning |
|---|---|
| ALS lux shown | Sensor data received for harvest zones |
| Harvest % | Recent average dim applied across harvest scope |
| ALS fallback | Open-loop harvest active — no fresh ALS within timeout |
| Glare shade % | Recent shade position applied in glare scope |
Common issues
Harvest does not dim
- Zone type must be
harvestorlightingand included in module scope. - Closed loop requires ALS events — confirm sensors report
light,<lux>in device/event logs. - Check Active overrides for timed pause or latched off.
- Verify gain > 0 and harvest mode is not
disabledon the zone.
Glare shades do not move
- Site latitude/longitude must be set.
- Zone needs type
glareorshadingwith shade actuators linked. - Confirm sun elevation exceeds min elevation for the zone.
- Check shade manual override in the active suspends table.
Train setpoint fails or times out
- Ensure at least one closed-loop harvest zone is in scope.
- Glare zones in scope must have shade actuators so training can close them.
- Wait for settle period; training requires a fresh ALS reading after lights reach full output.
- Use Train again to force-restart a stuck session.
Harvest and Circadian both change the same lights
- Narrow scope so only one module targets those clusters, or disable harvest on overlapping zones.
Somfy PoE shades in glare zones
- Standalone Somfy PoE motors receive
move.tovia the controller adapter (UDP Synergy or HTTPS). INX/Core-proxy shades use the INX shade path. Both participate in glare apply when devices are in linked glare/shading zones.
Automation logs
Inspect Automation → Logs for solaris-harvest and solaris-glare runs:
skipped+manual_override— expected when operators have controlapplied_targetsempty — scope, sensor, or suspend issue- Lux values in run metadata — useful when tuning setpoint and gain
Related documentation
- Circadian module — time-based CCT and dim
- BACnet/IP Server — BMS read/write on cluster points
- Municipal BMS Integration Brief — submittals and commissioning
- Aida Controller overview — install and architecture