Adding a device
The supported-devices catalog is generated directly from device
definitions in the growrig-catalog
repository — the default content catalog, which the platform also mounts as a git
submodule at growrig/catalog/. GrowRig distinguishes two things:
- a driver — how GrowRig binds to and controls a class of hardware (capabilities, Home Assistant integration, control defaults). Often “Generic”.
- products — the concrete, buyable items a driver supports (a specific tent model, a specific fan). Many products usually share one driver.
The catalog lists products; each points back to the driver that powers it.
Define the driver
Section titled “Define the driver”A driver lives at:
growrig-catalog/devices/<category>/<driver-id>/device.yamlThe path supplies the category (controller, sensor, fan, light,
plug, camera, tent) and the driver id. The YAML supplies metadata,
capabilities, and the products it supports:
brand: Genericmodel: Grow tentconnection: n/adescription: A passive enclosure recorded for its air volume.products: - id: mars-hydro-grow-tent-series vendor: mars-hydro brand: Mars Hydro model: Grow Tent Series models: - id: mars-hydro-2x2 model: 2'×2' Grow Tent specs: { widthCm: 60, depthCm: 60, heightCm: 140 } - id: vivosun-4x4 brand: VIVOSUN model: 4'×4' Grow Tent specs: { widthCm: 120, depthCm: 120, heightCm: 200 }Products and specs
Section titled “Products and specs”Each entry under products: needs a unique id (unique within its category) and
usually a brand and model; it inherits the driver’s brand/model when omitted.
An entry may be a simple product, or a series containing exact models. Series
metadata is written once; Grow Core flattens its models for exact selection while
the public catalogue shows one series card.
specs is a free-form numeric map — the key idea that makes this systematic.
Grow Core reads well-known keys where it needs them (fans use sizeMm, maxRpm,
airflowCfm, staticPressureMmH2O, startingVoltage, ductSizeInches,
noiseDba; tents use widthCm, depthCm, heightCm); every other key is shown
as display metadata. Add keys freely — no schema change required.
A driver with no products: is itself a single product, so simple one-off
devices stay a one-file definition.
A driver whose brand is Generic always remains visible as a generic catalogue
option, even when it also lists branded products or series. Do not duplicate it
inside products; the catalogue loader adds it automatically.
Vendor and product artwork
Section titled “Vendor and product artwork”Set vendor to a stable vendor id from growrig-catalog/vendors/<vendor-id>/.
Each vendor directory contains vendor.yaml and may contain a reusable real logo. The
vendor catalogue and device pages both read those shared files.
Until a logo is provided, color and background in vendor.yaml render a
branded initials fallback. Add logo: filename.svg (PNG, JPEG, and WebP also
work) after placing the real artwork beside vendor.yaml.
Use products[].images when a product or series has multiple pictures. Each
entry has src and may have a model id associating it with an exact model.
Images without model apply to the whole series. The first image represents the
series on catalogue cards, and the complete set appears in the profile gallery.
Capabilities
Section titled “Capabilities”provides declares the driver’s semantic capabilities and how they bind to Home
Assistant entities. See the device model for how
capabilities and roles work.
Add a setup guide (optional)
Section titled “Add a setup guide (optional)”Drop a guide.md beside the device.yaml with setup steps, limitations, and
troubleshooting. Its content is rendered on the product page.
Verify
Section titled “Verify”Both Grow Core and this docs site read the same catalog tree. Run the docs locally and the new products appear in their category automatically:
npm run devThere is no separate generation step — the site reads the device definitions
directly at build time from the sibling growrig-catalog checkout (falling back
to the platform’s catalog/ submodule, then the bundled snapshot in source/).
Ship it your way
Section titled “Ship it your way”Contributing to growrig-catalog adds a device for everyone. You don’t have to:
any public repository carrying a compatible catalog.yaml manifest and this same
devices/<category>/<id>/device.yaml layout can be added to a single GrowRig
installation as an extra catalog source under Control panel → Catalogs. Custom
entries are cached beside the Grow Core database and merged with the built-ins — no
fork or rebuild required.