A local-first control and scheduling system for the OSU Daylighting Innovation and Analysis Lab (DIAL) trailer.
A sleek interface for visualizing and controlling electrochromic panels and skylights.
The DIAL Control Center is the custom software backbone for the Daylighting Innovation and Analysis Lab (DIAL) at Oregon State University. DIAL is an off-the-grid mobile university research facility designed to study the impact of daylighting on human health and productivity.
This app provides researchers and facility managers with a local-first system to intuitively manage, schedule, and monitor the facility's Halio electrochromic glazing.
The Problem: Architectural researchers in DIAL need a reliable, study-friendly way to control two symmetrical test rooms (each with 9 windows and 1 skylight) without relying on external internet connections, especially when the mobile lab is deployed in remote or off-grid locations.
The Solution: By combining live status monitoring with an automated scheduling engine, the local software system provides precise environmental control.
- Local-First Reliability: Operates entirely on the local trailer network, provides responsiveness without depending on external internet access.
- Smart Scheduling Engine: Create study-friendly, automated routines that adjust pane tinting based on time of day, minimizing manual intervention during research experiments.
- Live System Status: Get real-time monitoring and visualization of all 18 Halio facade panels and 2 skylights from a single, unified dashboard.
- Sensor Visualization: Track live and historical sensor metrics, toggle sensor visibility, select specific metrics to graph, and view real-time spectral irradiance graphs.
- Sensor Integration Ready: Built to analyze and manage DIAL's advanced setup of indoor and rooftop environmental sensors (including JETI spectroradiometers and EKO pyranometers).
- Safe Manual Override: The safety-first manual override protocols allow the researchers to take direct control of individual panels.
EKO site deployments now use the C-BOX Ethernet Modbus TCP interface (host plus TCP port 502) and no longer use USB-to-RS485 or a COM port for EKO.
Everything for setting up and running the app, in development or production, is in DEV-SETUP.md. The quickest start is native development with Python 3.14, uv, and Node.js 24:
git clone https://github.com/radiantlab/GlazingControlApp
cd GlazingControlApp
cp svc/.env.example svc/.env
(cd svc && uv sync && uv run python main.py) # API on http://127.0.0.1:8000
(cd web && npm ci && npm run dev) # HMI on http://localhost:5173, in a second terminalWatch for errors (optional): npm run watch from the repository root runs tsc --noEmit --watch for the frontend and re-runs uv run pytest -q in svc whenever a backend Python or TOML file changes. It starts no servers. Pass backend, frontend, or both to pick a side (npm run watch -- backend); from inside svc or web it defaults to that side.
The API reference (Swagger UI) is at /api/docs on a running backend, for example http://127.0.0.1:8000/api/docs.
Note: To run production, see Production in DEV-SETUP.md; for sensor wiring and site notes, see docs/production_sensor_setup.md.
OVERVIEW.md: architecture and file map.DEV-SETUP.md: local development, containers, and production deployment.CONTRIBUTING.md: workflow, tests, and review rules.svc/README.md: control service, environment variables, sensors, and operator notes.web/README.md: researcher HMI.docs/production_sensor_setup.md: production sensor setup.docs/on_site_sensor_checklist.md: on-site sensor checklist.docs/glazing_configuration.md: glazing configuration.docs/architectureDiagram.md: architecture diagram.docs/simulator_implementation.md: panel simulator.docs/jeti_lival_integration.md: JETI LiVal integration.scripts/sensors/README.md: Windows Sensor Agent and sensor capture scripts.- API reference:
/api/docs(Swagger UI) and/api/openapi.jsonon a running backend.
- Calvin Grabowski - grabowca@oregonstate.edu
- Dominic Maluski - maluskid@oregonstate.edu
- Ian Eddy - eddyia@oregonstate.edu
- Zane Brainard - brainarz@oregonstate.edu
This project was originally built by Team 76 for the OSU Radiant Lab.
- Aidan Lusk - luskai@oregonstate.edu
- Carlos Vasquez - vasqueca@oregonstate.edu
- Ian McKee - mckeei@oregonstate.edu
- Tyler Vincent - vincenty@oregonstate.edu
Feedback & Contributions: Please open an issue on GitHub or reach out to the team directly via email.
Licensed under the GPL 3.0 License.
