compose_rooms
Create a new KNX project by composing room templates into a functional model, then generate ETS group-address files, a manifest, and a device BOM. Use dry-run mode to preview before writing any files.
Instructions
Compose a new KNX project from a list of room templates (constructor).
``rooms`` is a list of specs, each: ``{template, preset?, slot_presets?,
params?, label?}`` — e.g. ``{"template": "bedroom", "preset": "comfort"}``.
``preset`` is basic|comfort (per-room); ``slot_presets`` overrides individual
slots (mix comfort climate with basic lighting); ``params`` overrides template
defaults (window/circuit counts); ``label`` sets a custom zone name.
Pipeline: resolve templates+params to a functional model, allocate group
addresses (main = domain, middle = role, sub sequential), write a real
``.knxproj`` and **re-read it with the standard loader**, then run our linters
on the re-read project. Output: a ``manifest`` (allocation), ETS GA XML/CSV,
and a device ``bom`` proposal from the device library.
R1 builds NEW projects only and is dry-run by default (nothing written). Set
``dry_run=false`` with ``output_dir`` (a folder inside the workspace) to write
the .knxproj, ETS exports, manifest.yaml and bom.yaml. Docking into an
existing project and exact device selection are R2. Never touches a bus.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rooms | Yes | ||
| dry_run | No | ||
| language | No | ru | |
| output_dir | No | ||
| project_name | No | Room Library house |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||