13个版本
0.8.8 | 2023年7月20日 |
---|---|
0.8.6 | 2023年3月12日 |
0.8.5 | 2022年10月12日 |
0.8.2 | 2022年1月16日 |
0.1.0 | 2020年9月25日 |
#3 in #smart-home
24KB
496 行代码
rust-tuya-mqtt
Rust程序,通过MQTT控制Tuya/Smart Life设备。它使用rust-tuyapi库与设备通信。
- 从“发布”页面获取最新版本,并将其解压到文件夹中。
- 将
config.json.sample -> config.json
重命名,并更新到正确的MQTT代理地址。 - 运行二进制文件。
先决条件
您需要知道Tuya设备的key和id。根据我的经验,找到这些信息的最简单方法如下:添加Tuya灯泡的步骤指南。
日志记录
程序使用env_logger,并可以使用RUST_LOG=level
变量配置为不同级别的日志。也可以通过TUYA_LOG=level
仅打开rust-tuya组件的日志记录。默认情况下,id和key将在日志输出中混淆。要获取完整的id和key信息,请设置TUYA_FULL_DISPLAY=true
。
在计算机启动时启动rust-tuya-mqtt
在支持systemd的系统上运行,这是以服务形式启动应用的一种方法。此示例服务与openhab服务器并行运行,因此有Wants=、After=和User=行。WorkingDirectory是rust-tuya-mqtt查找配置文件的位置,可能与实际二进制文件不同。
rust-tuya-mqtt.service的内容
#!/bin/sh -
[Unit]
Description=rust-tuya-mqtt
Wants=openhab.service
After=openhab.service
[Service]
ExecStart=/etc/openhab/scripts/rust-tuya-mqtt
Restart=always
RestartSec=10
User=openhab
Group=openhab
Environment=TUYA_LOG=debug
WorkingDirectory=/etc/openhab/scripts/
StandardOutput=append:/var/log/rust-tuya-mqtt.log
StandardError=append:/var/log/rust-tuya-mqtt.log
[Install]
WantedBy=multi-user.target
此服务可以放置在/usr/lib/systemd/system/
文件夹中,当使用sudo systemctl enable rust-tuya-mqtt.service
启用时,它将在系统启动时启动。
配置
程序使用名为config.json的文件进行配置。
config.json
这是config.json文件。应将其放置在工作目录中。
{
"mqtt_id": "test-tuya", <-- optional, default is "rust-tuya-mqtt"
"host": "192.168.1.14",
"port": 1883,
"topic": "tuya/", <-- optional, default is "tuya/"
"mqtt_user": "", <-- provide user and pass to...
"mqtt_pass": "", <-- ...login to secure tuya broker
"qos": 0 <-- valid values are 0, 1 or 2
}
主题
有两种方式为与rust-tuya-mqtt
通信设计MQTT主题。主题可以包含所有用于识别和与Tuya兼容设备通信的信息。在这种情况下,主题看起来像这样
tuya/ver3.[1|3]/<tuya-id>/<tuya-key>/<tuya-ip>/[command|state]
.
另一种配置方法是保持设备特定配置在一个名为 devices.json
的文件中,并将其放置在工作目录中。
devices.json
devices.json 是一个可选的配置文件,可能包含有关设备的信息。这是为两个设备提供必要信息的一种可能方式
[
{
"name": "my_awesome_device",
"id": "<tuya_device_id>",
"ip": "192.168.1.5",
"key": "<tuya_device_key>",
"version": "3.3"
},
{
"name": "my_other_awesome_device",
"id": "<tuya_device_id>",
"ip": "192.168.1.6",
"key": "<tuya_device_key>",
"version": "3.1"
}
]
主题可能看起来像 tuya/my_awesome_device/[command|state]
。配置的两种方法,通过主题或配置文件,可以混合使用。
依赖项
~14–31MB
~441K SLoC