#mqtt #smart-home #tuya #smartlife #openhab

app rust-tuya-mqtt

此软件包是TheAgentK在NodeJS中实现的tuya-mqtt的Rust版本。

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

Build Status

Rust程序,通过MQTT控制Tuya/Smart Life设备。它使用rust-tuyapi库与设备通信。

  1. 从“发布”页面获取最新版本,并将其解压到文件夹中。
  2. config.json.sample -> config.json重命名,并更新到正确的MQTT代理地址。
  3. 运行二进制文件。

先决条件

您需要知道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