The device model
GrowRig models capabilities, not brands. A device profile declares what a device provides in semantic terms, and the user maps those capabilities to roles in their environment. This is what makes hardware replaceable: swap a fan for a different one that provides the same capability, and the role mapping still holds.
Capabilities
Section titled “Capabilities”A capability is a semantic feature a device exposes. For example:
fan.speedfan.rpmsensor.temperaturesensor.humidityswitch.binarydisplay.statusIn a profile, capabilities are listed under provides, each with a label, a kind,
and — where relevant — the Home Assistant entityDomain, a measurement, and a
deviceClass.
A role is the purpose assigned to a capability inside an environment — for
example exhaust, intake, circulation, main temperature sensor, humidifier,
or irrigation pump. The user assigns roles during setup; Grow Core then reasons about
roles, not entity IDs.
device: id: controller-a13f type: grow-controllercapabilities: - fan.speed - fan.rpm - sensor.temperaturechannels: - id: fan1 role: exhaust - id: fan2 role: circulationWhere profiles live
Section titled “Where profiles live”Each supported device has a profile at:
growrig-platform/devices/<category>/<slug>/device.yamlThe directory path supplies the stable category and slug; the YAML supplies
brand, model, connection type, Home Assistant integration, and the semantic
capabilities. An optional guide.md beside it adds setup notes and limitations.
These same definitions power the supported-devices catalog on this site. To add one, see Adding a device.
Policy model
Section titled “Policy model”Longer term, Grow Core sends the controller a versioned policy describing limits, schedules, and fallback rules, which the controller acknowledges and stores:
policy: id: main-box version: 42channels: fan1: minimum: 20 maximum: 100 fallback: 50safety: command_timeout: 60s emergency_temperature: 35 emergency_fan_speed: 100