ESPCDFDeviceParam
ESPCDFDeviceParam is a single read/write parameter on a device (for example Power, Brightness). Use it for toggles, sliders, and charts bound to one observable value field.
Params are children of ESPCDFDevice. After setValue, synchronizers and push handlers update value; wrap UI in observer so controls re-render.
Properties
| Property | Type | Description |
|---|---|---|
name | string | Param name in device model |
value | any | Current value (observable) |
dataType | optional | Schema hint |
bounds | optional | Min/max for numeric params |
uiType | optional | UI rendering hint |
deviceName | optional | Parent device name |
operations | ESPCDFDeviceParamOperation | SDK delegates |
_raw | any | Original SDK param |
events | ESPCDFOperationEventEmitter | Operation bus |
Common Workflows
Read and set a param value
import { initCDF } from "@espressif/rainmaker-base-cdf";
const espCDF = await initCDF({ sdkAdaptorRegistry });
const node = espCDF.nodeStore.getNodeById("node-id")!;
const param = node.devices?.[0]?.params.find((p) => p.name === "Power");
console.log(param?.value);
await param?.setValue(true);
Reactive control (MobX)
import { observer } from "mobx-react-lite";
import type { ESPCDFDeviceParam } from "@espressif/rainmaker-base-cdf";
const PowerSwitch = observer(function PowerSwitch({
param,
}: {
param: ESPCDFDeviceParam;
}) {
return (
<Switch
value={param.value as boolean}
onValueChange={(v) => param.setValue(v)}
/>
);
});
Time-series data (when adaptor supports it)
if (param?.getSimpleTSData) {
const series = await param.getSimpleTSData({
startTime: start,
endTime: end,
} as any);
}
getTSData and getRawTSData follow the same pattern when implemented on operations.
Error Handling
try {
await param!.setValue(50);
} catch (e) {
showErrorBanner("Update rejected by device");
}
Calling getSimpleTSData without adaptor support throws "getSimpleTSData is not implemented".
Related Resource
- ESPCDFDevice
- ESPCDFNode
- Subscription store — push updates to
value - ESPCDFDeviceParam source
- API Reference: