Tuya MCU
tuya 组件创建一个与 Tuya MCU 的串行连接,供其他平台使用。
tuya 串行组件需要配置一个 UART 总线。
将 tuya 组件放入配置中,它会在配置日志中列出可能的设备。
# 注册 Tuya MCU 连接tuya:以下是 Tuya 风扇控制器的示例输出:
[12:39:45][C][tuya:023]: Tuya:[12:39:45][C][tuya:032]: Datapoint 1: switch (value: ON)[12:39:45][C][tuya:036]: Datapoint 3: enum (value: 1)[12:39:45][C][tuya:036]: Datapoint 6: enum (value: 0)[12:39:45][C][tuya:034]: Datapoint 7: int value (value: 0)[12:39:45][C][tuya:032]: Datapoint 9: switch (value: OFF)[12:39:45][C][tuya:046]: Product: '{"p":"hqq73kftvzh8c92u","v":"1.0.0","m":0}'以下是 Tuya ME-81H 温控器的另一个示例输出:
[08:51:09][C][tuya:032]: Tuya:[08:51:09][C][tuya:043]: Datapoint 1: switch (value: ON)[08:51:09][C][tuya:045]: Datapoint 24: int value (value: 220)[08:51:09][C][tuya:045]: Datapoint 16: int value (value: 22)[08:51:09][C][tuya:049]: Datapoint 2: enum (value: 1)[08:51:09][C][tuya:045]: Datapoint 19: int value (value: 40)[08:51:09][C][tuya:045]: Datapoint 101: int value (value: 1)[08:51:09][C][tuya:045]: Datapoint 27: int value (value: -2)[08:51:09][C][tuya:049]: Datapoint 43: enum (value: 1)[08:51:09][C][tuya:049]: Datapoint 102: enum (value: 1)[08:51:09][C][tuya:051]: Datapoint 45: bitmask (value: 0)[08:51:09][C][tuya:043]: Datapoint 10: switch (value: ON)[08:51:09][C][tuya:041]: Datapoint 38: raw (value: 06.00.14.08.00.0F.0B.1E.0F.0C.1E.0F.11.00.16.16.00.0F.08.00.16.17.00.0F (24))[08:51:09][C][tuya:049]: Datapoint 36: enum (value: 1)[08:51:09][C][tuya:057]: GPIO Configuration: status: pin 14, reset: pin 0 (not supported)[08:51:09][C][tuya:061]: Status Pin: GPIO14[08:51:09][C][tuya:063]: Product: '{"p":"gogb05wrtredz3bs","v":"1.0.0","m":0}'-
time_id (可选, ID):某些 Tuya 设备支持从 ESPHome 获取本地时间。 指定要使用的 时间 组件的 ID。
-
status_pin (可选, 引脚方案):某些 Tuya 设备仅支持通过 GPIO 引脚报告 WiFi 状态。 指定配置转储中报告的引脚,否则留空。 更多信息请参阅 Tuya 开发者文档。
-
ignore_mcu_update_on_datapoints (可选, 列表):要忽略 MCU 更新的数据点列表。对于某些故障/不稳定的硬件和调试很有用。
自动化:
- on_datapoint_update (可选):当收到 Tuya 数据点更新时执行的自动化。请参阅
on_datapoint_update。
Tuya 自动化
Section titled “Tuya 自动化”on_datapoint_update
Section titled “on_datapoint_update”此自动化将在收到 Tuya 数据点更新时触发。
变量 x 会传递给自动化以在 lambda 中使用。
x 变量的类型取决于 datapoint_type 配置变量:
- raw:
x是std::vector<uint8_t> - string:
x是std::string - bool:
x是bool - int:
x是int - uint:
x是uint32_t - enum:
x是uint8_t - bitmask:
x是uint32_t - any:
x是 API Reference: tuya::TuyaDatapoint
tuya: on_datapoint_update: - sensor_datapoint: 6 datapoint_type: raw then: - lambda: |- ESP_LOGD("main", "on_datapoint_update %s", format_hex_pretty(x).c_str()); id(voltage).publish_state((x[0] << 8 | x[1]) * 0.1); id(current).publish_state((x[3] << 8 | x[4]) * 0.001); id(power).publish_state((x[6] << 8 | x[7]) * 0.1); - sensor_datapoint: 7 # 示例数据点 datapoint_type: string then: - lambda: |- ESP_LOGD("main", "on_datapoint_update %s", x.c_str()); - sensor_datapoint: 8 # 示例数据点 datapoint_type: bool then: - lambda: |- ESP_LOGD("main", "on_datapoint_update %s", ONOFF(x)); - sensor_datapoint: 6 datapoint_type: any # 这是可选的 then: - lambda: |- if (x.type == tuya::TuyaDatapointType::RAW) { ESP_LOGD("main", "on_datapoint_update %s", format_hex_pretty(x.value_raw).c_str()); } else { ESP_LOGD("main", "on_datapoint_update %hhu", x.type); }- sensor_datapoint (必需, 整数):传感器的数据点 ID 编号。
- datapoint_type (必需, 字符串):数据点类型,可选值为 raw、string、bool、int、uint、enum、bitmask 或 any。
- 请参阅 自动化。