自定义类型与标准类型
about
自定义类型与标准预定义类型
在 ESP RainMaker 固件开发中,“类型”指用于描述设备及其属性(如参数或 UI 元素)在手机应用中呈现方式的预定义模式。
使用自定义类型时,你需要手动定义设备的每个方面(如名称、电源、亮度等参数),包括它们的数据类型、UI 提示、取值范围等,从而灵活地建模任何设备。
而标准类型(如 esp_rmaker_lightbulb_device_create)则是针对常见设备(如灯泡、风扇或温度传感器等)提供的简化辅助 API。这些 API 会自动处理参数设置、分配标准 UI 元素,并提升与 RainMaker 手机应用及第三方服务(如 Alexa 或谷歌助手)的兼容性。标准类型适用于常见场景,能够以最少的代码实现高效集成。
示例用法
创建自定义设备
创建一个设备通常需要多次调用。例如,创建一个带有名称、电源和亮度的灯泡:
esp_rmaker_device_t *device = esp_rmaker_device_create("Light", NULL, NULL);
esp_rmaker_device_add_param(device, esp_rmaker_param_create("name", NULL, esp_rmaker_str("Light"),
PROP_FLAG_READ | PROP_FLAG_WRITE | PROP_FLAG_PERSIST));
esp_rmaker_param_t *power_param = esp_rmaker_param_create("power", NULL, esp_rmaker_bool(true), PROP_FLAG_READ | PROP_FLAG_WRITE);
esp_rmaker_param_add_ui_type(power_param, ESP_RMAKER_UI_TOGGLE);
esp_rmaker_device_add_param(device, power_param);
esp_rmaker_device_assign_primary_param(device, power_param);
esp_rmaker_param_t *brightness_param = esp_rmaker_param_create("brightness", NULL, esp_rmaker_int(100), PROP_FLAG_READ | PROP_FLAG_WRITE);
esp_rmaker_param_add_ui_type(brightness_param, ESP_RMAKER_UI_SLIDER);
esp_rmaker_param_add_bounds(brightness_param, esp_rmaker_int(0), esp_rmaker_int(100), esp_rmaker_int(1));
esp_rmaker_device_add_param(device, brightness_param);
这种灵活性可以让你定义任何类型的设备。但为简化常见场景,我们也定义了标准类型并提供了辅助 API。
创建标准设备
使用标准类型,上述代码可简化为:
light_device = esp_rmaker_lightbulb_device_create("Light", NULL, true);
esp_rmaker_device_add_cb(light_device, write_cb, NULL);
esp_rmaker_device_add_param(light_device, esp_rmaker_brightness_param_create("brightness", 100));
标准类型还便于在手机应用或 Alexa、谷歌语音助手等第三方应用中定义某些特殊的处理逻辑。
标准类型
以下是标准设备、服务、参数和 UI 元素列表。随着新类型的加入,该列表会持续更新。
设备
警告
加粗参数为必选。*
表示主参数。
部分设备的 C API 可查阅此处。其他设备可通过原始 API 构建。此处列出仅为说明这些设备在 Alexa/GVA 等客户端中有特殊处理。
名称 | 类型 | 参数 | GVA | Alexa | 图片 |
---|---|---|---|---|---|
开关 | esp.device.switch | 名称,电源* | SWITCH | SWITCH | ![]() |
调光器 | esp.device.dimmer | 名称,电源* | SWITCH | SWITCH | ![]() |
灯泡 | esp.device.lightbulb | 名称,电源*,亮度,色温,色调,饱和度,强度,灯光模式 | LIGHT | LIGHT | ![]() |
灯 | esp.device.light | 名称,电源*,亮度,色温,色调,饱和度,强度,灯光模式 | LIGHT | LIGHT | ![]() |
风扇 | esp.device.fan | 名称,电源*,速度,方向 | FAN | FAN | ![]() |
温度传感器 | esp.device.temperature-sensor | 名称,温度* | X | TEMPERATURE _SENSOR | ![]() |
插座 | esp.device.outlet | 名称,电源* | OUTLET | SMARTPLUG | ![]() |
插头 | esp.device.plug | 名称,电源* | OUTLET | SMARTPLUG | ![]() |
插孔 | esp.device.socket | 名称,电源* | OUTLET | SMARTPLUG | ![]() |
门锁 | esp.device.lock | 名称, 锁状态* | LOCK | SMARTLOCK | ![]() |
内部窗帘 | esp.device.blinds-internal | 名称, 窗帘位置* | BLINDS | INTERIOR_BLIND | ![]() |
外部窗帘 | esp.device.blinds-external | 名称, 窗帘位置* | BLINDS | EXTERIOR_BLIND | ![]() |
车库门 | esp.device.garage-door | 名称, 车库位置*,锁状态 | GARAGE | GARAGE_DOOR | ![]() |
扬声器 | esp.device.speaker | 名称,电源*,媒体状态,媒体控制,音量,静音 | SPEAKER | SPEAKER | ![]() |
空调 | esp.device.air-conditioner | 名称,电源*,设定温度 |