Skip to content

feat(place/demo/hvac): add a simulated HVAC demo driver - #644

Open
camreeves wants to merge 1 commit into
masterfrom
feat/place-demo-hvac
Open

camreeves wants to merge 1 commit into
masterfrom
feat/place-demo-hvac

Conversation

@camreeves

Copy link
Copy Markdown
Contributor

Adds Place::Demo::HVAC, an HVAC unit simulator that needs no hardware or connection, alongside the existing Place::Demo::Display and Place::Demo::RoomSensor.

What it does

  • The temperature eases toward the setpoint with a little noise, and drifts toward ambient when it isn't heating or cooling.
  • Publishes power, mode, fan, fan_level, temperature, setpoint, humidity, co2, power_draw, heating, cooling, occupied and setback_active.
  • When the room is empty (occupancy setback), the target moves 3 °C away from the setpoint, so the unit idles.
  • Controls: power(state) (Powerable; on brings back the last mode other than off), set_temperature, set_mode, set_fan and set_occupied, each Support level.

Why
Demo and test rooms had nothing HVAC-like that could be switched on and off without hardware. The immediate use is testing the n8n nodes: a workflow that turns a room's display and HVAC on when its sensor detects people. The simulator first appeared on an unpushed self sign-up branch; this cleans it up and adds power.

Testing
./harness report drivers/place/demo/hvac_spec.cr: 1 tested, 0 failures. The spec covers setpoint clamping, mode, fan, setback, and power off/on bringing back the previous mode.

🤖 Generated with Claude Code

Place::Demo::HVAC needs no hardware or transport. The temperature eases
toward the setpoint, it publishes mode, fan, humidity, CO2, power draw and
power, and an unoccupied room widens the target (occupancy setback).

Controls: power(state) (on restores the last non-off mode), set_temperature,
set_mode, set_fan, set_occupied. Gives demo and test rooms something to
switch on and off alongside Place::Demo::Display, e.g. for the n8n nodes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant