跳转到内容

快速开始

用仓库自带的 examples/quickstart 走一遍完整链路:一台虚拟温度计 10 秒内爬过 28°C,触发规则把一台虚拟风扇自动打开。全程不需要任何真实设备。

  1. 构建

    Terminal window
    cargo build --release
  2. 生成一个 token(API 鉴权用,随便一串就行)

    Terminal window
    export RHA_TOKEN=$(openssl rand -hex 16)
  3. 校验配置

    Terminal window
    ./target/release/rha --config examples/quickstart check

    输出 config ok: 2 entities, 2 rules 就说明配置能正常加载。改配置之后都先跑一遍 这条,全过才生效。

  4. 启动

    Terminal window
    ./target/release/rha --config examples/quickstart serve

    这条命令常驻,占住当前终端;日志里能看到 rha api listening addr=127.0.0.1:8420

  5. 另开一个终端,设置同一个 token,看状态、看 trace、手动控制

    Terminal window
    export RHA_TOKEN=<同上>
    ./target/release/rha --config examples/quickstart status

    一开始 thermo_demo.temperature 在 25°C 左右、fan_demo.powerfalse;10 秒内 温度会穿过 28°C,再看一次 status 就会看到 fan_demo.power 变成 true。查规则为什么 触发:

    Terminal window
    ./target/release/rha --config examples/quickstart trace demo_fan_on_hot

    示例输出(时间戳每次都不同):

    2026-07-30T16:19:33.938691Z done 1 action(s)
    2026-07-30T16:19:33.938390Z fired thermo_demo.temperature: Some(Float(27.5)) -> Float(29.0)
    2026-07-30T16:19:28.936246Z no_match thermo_demo.temperature: Some(Float(25.0)) -> Float(27.5)
    2026-07-30T16:19:24.934636Z no_match thermo_demo.temperature: None -> Float(25.0)

    最后手动把风扇关掉,覆盖规则刚下发的状态:

    Terminal window
    ./target/release/rha --config examples/quickstart set fan_demo.power off

examples/quickstart/ 就是一个完整的配置目录:

examples/quickstart/
rha.toml 必须存在——API 监听地址与 token
devices.toml 必须存在,哪怕是空文件——设备清单
bridges.toml 可选——对外协议(HomeKit 等),本例里全部注释掉
automations/
demo.toml 可选目录——自动化规则,按文件名字典序加载
spec.d/
10-generated.toml 仅当有 miot 设备时才需要,由 `rha spec-gen` 生成

rha.tomldevices.toml 是无条件读取的,缺了直接报错;bridges.tomlautomations/ 只在存在时才加载,不存在就当没配。四份主文件的完整字段说明在配置参考区: rha.tomldevices.tomlbridges.tomlautomations/*.tomlspec.d/*.toml 是给 miot 设备用的型号表,不算配置文件,见 spec.d/*.toml