Skip to main content

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

PropertyTypeDescription
namestringParam name in device model
valueanyCurrent value (observable)
dataTypeoptionalSchema hint
boundsoptionalMin/max for numeric params
uiTypeoptionalUI rendering hint
deviceNameoptionalParent device name
operationsESPCDFDeviceParamOperationSDK delegates
_rawanyOriginal SDK param
eventsESPCDFOperationEventEmitterOperation 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".



On this page