Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.

ToolWhat it does
rshome.validateValidate a full device config through a 10-stage pipeline.
rshome.components.listList available components, filter by target or category.
rshome.components.addAdd a component to a config, resolving its dependencies.
rshome.pin_mapGet the GPIO pin map for a chip, with capability info.
rshome.codegen.previewPreview generated files without writing to disk.
rshome.modules.listList available hardware modules.
rshome.solutions.listList solutions, optionally filtered by module.
rshome.solution.parametersGet configurable parameters for a solution.
rshome.assembly.previewPreview 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": { ... }
}
FieldRequiredNotes
configYesThe 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"
}
FieldRequiredNotes
targetNoFilter to components that support this chip.
categoryNoFilter by category (sensor, switch, light, …).
searchNoFree-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" }
FieldRequiredNotes
targetNoFilter 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" }
FieldRequiredNotes
moduleNoFilter 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