RSHome Device Tools
Nine tools for configuring RSHome smart-home devices. They handle component selection, pin mapping, code generation, and validation — everything needed to go from “I want a temperature sensor on GPIO4” to a buildable device configuration.
| Tool | What it does |
|---|---|
rshome.validate | Validate a full device config through a 10-stage pipeline. |
rshome.components.list | List available components, filter by target or category. |
rshome.components.add | Add a component to a config, resolving its dependencies. |
rshome.pin_map | Get the GPIO pin map for a chip, with capability info. |
rshome.codegen.preview | Preview generated files without writing to disk. |
rshome.modules.list | List available hardware modules. |
rshome.solutions.list | List solutions, optionally filtered by module. |
rshome.solution.parameters | Get configurable parameters for a solution. |
rshome.assembly.preview | Preview the auto-derived board assembly for a module. |
rshome.validate
Runs the full validation pipeline on a device configuration. Ten stages check everything from schema correctness to pin conflicts.
Input:
{
"config": { ... }
}
| Field | Required | Notes |
|---|---|---|
config | Yes | The full rshome device configuration object. |
Returns: Validation result with per-stage pass/fail status and any errors or warnings.
Run this after every change to your config — it catches pin conflicts, missing dependencies, and invalid component settings.
rshome.components.list
Lists all registered RSHome components. Filter by chip target, category, or search term.
Input:
{
"target": "esp32s3",
"category": "sensor"
}
| Field | Required | Notes |
|---|---|---|
target | No | Filter to components that support this chip. |
category | No | Filter by category (sensor, switch, light, …). |
search | No | Free-text search across component names and descriptions. |
Returns: Array of component descriptors with name, description, supported targets, and category.
rshome.components.add
Adds a component to an existing device configuration. Automatically resolves and includes any dependencies.
Input:
{
"config": { ... },
"component": "dht22",
"pin": 4
}
Returns: Updated configuration with the new component and any dependencies added.
rshome.pin_map
Returns the GPIO pin map for a chip target, showing which pins are available and what capabilities each one has (ADC, DAC, touch, UART TX/RX, SPI, I2C, etc.).
Input:
{ "target": "esp32s3" }
Returns: Pin map with per-pin capability flags. Useful for
figuring out which pin to assign to a component before calling
rshome.components.add.
rshome.codegen.preview
Shows what files would be generated for a device configuration, without writing anything to disk. Use this to review the generated code before committing to it.
Input:
{
"config": { ... }
}
Returns: Array of file paths and their contents — typically
main.c, component source files, CMakeLists.txt, and
sdkconfig.defaults.
rshome.modules.list
Lists available hardware modules (pre-defined board configurations). Optionally filter by chip target.
Input:
{ "target": "esp32s3" }
| Field | Required | Notes |
|---|---|---|
target | No | Filter to modules for this chip. |
Returns: Array of module descriptors with name, description,
supported chips, available interfaces, and domain tag (e.g.
"vehicle_aircraft_control", "network_security_appliance", or
null for domain-agnostic modules).
rshome.solutions.list
Lists available solutions (pre-configured application templates). Optionally filter by module compatibility.
Input:
{ "module": "bootstick-s3" }
| Field | Required | Notes |
|---|---|---|
module | No | Filter to solutions compatible with this module. |
Returns: Array of solution descriptors.
rshome.solution.parameters
Gets the user-configurable parameters for a specific solution. These are the values a user can customize (WiFi SSID, sensor thresholds, update intervals, etc.).
Input:
{ "solution": "temp-monitor" }
Returns: Array of parameter descriptors with name, type, default
value, description, and optional enum_values (predefined selectable
options) and depends_on (cascading visibility dependency on a parent
parameter). Vehicle solutions use enum parameters for chip selection
(MPU6050, BMI270, BNO055, …), control protocol (CRSF, SBUS,
ESP-NOW, WiFi+MAVLink), actuator type, and video link.
rshome.assembly.preview
Previews the auto-derived board assembly for a hardware module — shows how components, pins, and interfaces are mapped on the physical board.
Input:
{ "module": "bootstick-s3" }
Returns: Assembly descriptor with pin assignments, interface mappings, and component layout.
See also
- Project Management —
project.createto scaffold a new project from a template. - Build Lifecycle — build the generated project.
- Post-build Analysis — analyze the build output.