跳到主要内容

自定义类型与标准类型

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 等客户端中有特殊处理。

名称类型参数GVAAlexa图片
开关esp.device.switch名称电源*SWITCHSWITCH
调光器esp.device.dimmer名称电源*SWITCHSWITCH
灯泡esp.device.lightbulb名称电源*,亮度,色温,色调,饱和度,强度,灯光模式LIGHTLIGHT
esp.device.light名称电源*,亮度,色温,色调,饱和度,强度,灯光模式LIGHTLIGHT
风扇esp.device.fan名称电源*速度,方向FANFAN
温度传感器esp.device.temperature-sensor名称温度*XTEMPERATURE
_SENSOR
插座esp.device.outlet名称电源*OUTLETSMARTPLUG
插头esp.device.plug名称电源*OUTLETSMARTPLUG
插孔esp.device.socket名称电源*OUTLETSMARTPLUG
门锁esp.device.lock名称
锁状态*
LOCKSMARTLOCK
内部窗帘esp.device.blinds-internal名称
窗帘位置*
BLINDSINTERIOR_BLIND
外部窗帘esp.device.blinds-external名称
窗帘位置*
BLINDSEXTERIOR_BLIND
车库门esp.device.garage-door名称
车库位置*,锁状态
GARAGEGARAGE_DOOR
扬声器esp.device.speaker名称电源*媒体状态媒体控制音量,静音SPEAKERSPEAKER
空调esp.device.air-conditioner名称电源*设定温度温度风速空调模式AC_UNITAIR_CONDITIONER
温控器esp.device.thermostat名称设定温度*温度空调模式,电源THERMOSTATTHERMOSTAT
电视esp.device.tv名称电源*媒体状态媒体控制 应用选择器输入选择器音量,静音TVTV
洗衣机esp.device.washer名称,模式WASHERWASHER
门磁传感器esp.device.contact-sensor名称,
接触检测状态*
SENSORCONTACT_SENSOR
人体传感器esp.device.motion-sensor名称
运动检测状态*
XMOTION_SENSOR
门铃esp.device.doorbell名称
按下状态*
XDOORBELL
安防面板esp.device.security-panel名称布防状态*
火警状态,
水警状态,
一氧化碳警报状态,
入侵警报状态
XSECURITY_PANEL
热水器esp.device.water-heater名称温度WATERHEATERWATER_HEATERX
机顶盒esp.device.set-top名称电源媒体状态媒体控制应用选择器输入选择器音量,静音SETTOPOTHERX
遥控器esp.device.remote名称电源媒体状态媒体控制应用选择器输入选择器音量,静音REMOTEOTHERX
冰箱esp.device.refrigerator名称电源设定温度(摄氏度)REFRIGERATOROTHERX
其他esp.device.otherXOTHER

服务

警告

加粗参数为必选。

相关 C API 可在这里查阅。

名称类型参数
OTAesp.service.otaOTA URLOTA 状态OTA 信息
日程esp.service.schedulesSchedules
时间esp.service.timeTZTZ-POSIX
系统esp.service.system重启,恢复出厂设置,Wi-Fi 重置

参数

部分参数的 C API 可在这里查阅。其他参数可通过原始 API 构建。此处列出仅为说明这些参数在 Alexa/GVA 等客户端有特殊处理。

名称类型数据类型UI 类型属性最小值,最大值,步长
名称esp.param.name字符串读,写1,32,-
电源esp.param.power布尔esp.ui.toggle读,写N/A
亮度esp.param.brightness整型esp.ui.slider读,写0,100,1
色温esp.param.cct整型esp.ui.slider读,写2700,6500,100
色调esp.param.hue整型esp.ui.slider读,写0,360,1
饱和度esp.param.saturation整型esp.ui.slider读,写0,100,1
强度esp.param.intensity整型esp.ui.slider读,写0,100,1
速度esp.param.speed整型esp.ui.slider读,写0,5,1
方向esp.param.direction整型esp.ui.dropdown读,写0,1,1
环境温度esp.param.temperature浮点N/A
目标温度esp.param.setpoint-temperature整型/浮点esp.ui.slider读/写N/A
环境湿度esp.param.humidity浮点N/A
OTA URLesp.param.ota_url字符串N/AN/A
OTA 状态esp.param.ota_status字符串N/AN/A
OTA 信息esp.param.ota_info字符串N/AN/A
时区esp.param.tz字符串N/A读,写N/A
时区 POSIXesp.param.tz_posix字符串N/A读,写N/A
日程esp.param.schedules数组N/A读,写,重启后仍保留N/A
重启esp.param.reboot布尔N/A读,写N/A
恢复出厂设置esp.param.factory-reset布尔N/A读,写N/A
Wi-Fi 重置esp.param.wifi-reset布尔N/A读,写N/A
切换控制器esp.param.toggle布尔任何适用类型读,写N/A
范围控制器esp.param.range整型/浮点任何适用类型读,写应用自定义
模式控制器esp.param.mode字符串esp.ui.dropdown读,写N/A
锁状态esp.param.lockstate整型esp.ui.toggle读,写0,2,1
0:未锁定
1:已锁定
2:卡死
窗帘位置esp.param.blinds-position整型esp.ui.slider读/写0,100,1
车库位置esp.param.garage-position整型esp.ui.slider读/写0,100,1
灯光模式esp.param.light-mode整型esp.ui.dropdown/
esp.ui.hidden
读/写0,2,1
0:无效
1:HSV
2:CCT
空调模式esp.paran.ac-mode字符串esp.ui.dropdown读/写N/A
媒体状态esp.param.media-activity-state字符串esp.ui.dropdown读/写N/A
媒体控制esp.param.media-activity-control字符串esp.ui.dropdown读/写N/A
音量esp.param.volume浮点esp.ui.slider读/写0,20,1
静音esp.param.mute布尔esp.ui.toggle读/写N/A
应用选择器esp.param.app-selector字符串esp.ui.dropdown读/写N/A
输入选择器esp.param.input-selector字符串esp.ui.dropdown读/写N/A
接触检测状态esp.param.contact-detection-state布尔esp.ui.toggleN/A
运动检测状态esp.param.motion-detection-state布尔esp.ui.toggleN/A
布防状态esp.param.arm-state布尔esp.ui.toggle读/写N/A
火警状态esp.param.fire-alarm布尔esp.ui.toggleN/A
水警状态esp.param.water-alarm布尔esp.ui.toggleN/A
一氧化碳检测状态esp.param.carbon-monoxide-alarm布尔esp.ui.toggleN/A
入侵警报状态esp.param.burglary-alarm布尔esp.ui.toggleN/A

UI 元素

这些定义了参数在手机应用中的呈现方式。

名称类型数据类型要求示例
文本(默认)esp.ui.text所有N/A
切换开关esp.ui.toggle布尔N/A
滑块esp.ui.slider整型,浮点边界(最小值、最大值)
亮度滑块esp.ui.slider整型参数类型 =
esp.param.brightness
色温滑块esp.ui.slider整型参数类型 = esp.param.cct
饱和度滑块esp.ui.slider整型参数类型 =
esp.param.saturation
色调滑块esp.ui.hue-slider整型参数类型 =
esp.param.hue
色调圆环esp.ui.hue-circle整型参数类型 =
esp.param.hue
大按钮esp.ui.push-btn-big布尔N/A
下拉框esp.ui.dropdown整型/字符串整型需边界(最小/最大)
字符串需有效值
触发器
(仅安卓)
esp.ui.trigger布尔N/A
隐藏
(仅安卓)
esp.ui.hidden布尔N/A参数将被隐藏

On this page