Add server-side rendered setup UI accessible via `heatwave web`. The dashboard is now re-rendered per request and includes a nav bar linking to the new /setup page. Setup provides full CRUD for profiles, rooms, devices, occupants, AC units (with room assignment), scenario toggles, and forecast fetching — all via POST/redirect/GET forms. - Add ShowNav field to DashboardData for conditional nav bar - Extract fetchForecastForProfile() for reuse by web handler - Create setup.html.tmpl with Tailwind-styled entity sections - Create web_handlers.go with 15 route handlers and flash cookies - Switch web.go from pre-rendered to per-request dashboard rendering - Graceful dashboard fallback when no forecast data exists
98 lines
2.6 KiB
YAML
98 lines
2.6 KiB
YAML
actions:
|
|
- id: close_south_shutters
|
|
name: "Close south-facing shutters"
|
|
description: "Close shutters/blinds on south-facing windows to block direct sun"
|
|
category: shading
|
|
effort: low
|
|
impact: high
|
|
when:
|
|
hour_from: 0
|
|
hour_to: 10
|
|
min_temp_c: 25
|
|
- id: close_west_shutters
|
|
name: "Close west-facing shutters"
|
|
description: "Close shutters/blinds on west-facing windows before afternoon sun"
|
|
category: shading
|
|
effort: low
|
|
impact: high
|
|
when:
|
|
hour_from: 0
|
|
hour_to: 14
|
|
min_temp_c: 25
|
|
- id: night_ventilation
|
|
name: "Open windows for night ventilation"
|
|
description: "Open windows when outdoor temp drops below indoor temp for passive cooling"
|
|
category: ventilation
|
|
effort: low
|
|
impact: high
|
|
when:
|
|
night_only: true
|
|
- id: close_windows_morning
|
|
name: "Close windows in the morning"
|
|
description: "Seal the house before outdoor temps rise above indoor"
|
|
category: ventilation
|
|
effort: none
|
|
impact: high
|
|
when:
|
|
hour_from: 7
|
|
hour_to: 8
|
|
min_temp_c: 22
|
|
- id: gaming_mode_off
|
|
name: "Postpone gaming sessions"
|
|
description: "Gaming PCs add significant heat; postpone to cooler hours"
|
|
category: internal_gains
|
|
effort: medium
|
|
impact: medium
|
|
when:
|
|
min_temp_c: 30
|
|
budget_status: marginal
|
|
toggles: ["gaming"]
|
|
- id: defer_cooking
|
|
name: "Defer cooking to evening"
|
|
description: "Oven and stove add substantial heat; cook in cooler evening hours"
|
|
category: internal_gains
|
|
effort: medium
|
|
impact: medium
|
|
when:
|
|
hour_from: 11
|
|
hour_to: 16
|
|
min_temp_c: 30
|
|
toggles: ["cooking"]
|
|
- id: ac_precool
|
|
name: "Pre-cool rooms with AC"
|
|
description: "Run AC in early morning to build thermal buffer before peak heat"
|
|
category: ac_strategy
|
|
effort: none
|
|
impact: high
|
|
when:
|
|
hour_from: 6
|
|
hour_to: 9
|
|
min_risk: high
|
|
- id: ac_dehumidify
|
|
name: "Use AC dehumidify mode"
|
|
description: "Switch AC to dehumidify mode when humidity is high"
|
|
category: ac_strategy
|
|
effort: none
|
|
impact: medium
|
|
when:
|
|
min_temp_c: 26
|
|
high_humidity: true
|
|
- id: hydration_reminder
|
|
name: "Hydration reminder"
|
|
description: "Drink water regularly; increase intake during heat"
|
|
category: hydration
|
|
effort: none
|
|
impact: medium
|
|
when:
|
|
min_temp_c: 30
|
|
- id: check_vulnerable
|
|
name: "Check on vulnerable occupants"
|
|
description: "Check on elderly, children, or ill household members"
|
|
category: care
|
|
effort: low
|
|
impact: high
|
|
when:
|
|
min_temp_c: 30
|
|
hour_from: 10
|
|
hour_to: 18
|