# 自动化

把摄像头的检测事件接到通知、喊话、智能家居。一条规则 = 触发 + 条件 + 动作。

## 什么是自动化规则

一条规则 = **触发**（被什么事件唤醒）+ **条件**（当前环境满不满足）+ **动作**（做什么）。例：「门口识别到陌生人、且当前是夜间 → 给手机推送 + 客厅摄像头喊话」。

网页后台 → 自动化 → 新建规则。内置 13 个常用预设模板（陌生人到访、已知人脸欢迎、跌倒报警、跌倒联动 HA 亮灯、婴儿哭声提醒、手势 SOS 报警、手势触发情景、车辆到达开 HA 设备、离家自动关 HA、逗留 Webhook 等），挑一个改改参数就能用；也可以从空白规则自己搭。

## 触发：什么事件唤醒规则

自动化**只由摄像头的检测事件触发**——没有「定时 / cron」触发器，也没有「收到 MQTT 消息」触发器。触发分两层：**事件类型** + **主体过滤**。

### 事件类型

- 运动、物体（人 / 车 / 猫狗等）
- 人脸识别、车牌识别
- 跌倒、婴儿哭声、手势
- 进入区域 / 离开区域 / 区域无人 / 逗留
- 画面明暗变化

### 主体过滤

在事件类型之上再挑「是谁」：

- **任意** — 不挑主体
- **人物** — 任意人 / 只家人 / 只陌生人（家人还可指定具体姓名）
- **车辆** — 任意车 / 指定车牌号
- **手势** — 指定手势（如 SOS、OK、比心）

还能限定：触发的摄像头范围、敏感区范围、最低置信度，以及冷却 / 节流时间（防止短时间内反复触发）。

## 条件：唤醒后再判断环境

规则被事件唤醒后、执行动作前，可以再加附加条件（多个条件是 AND，全部满足才执行）。目前有两种：

- **时间段** — 每天 `HH:MM`～`HH:MM` + 限定周几，支持跨零点、支持取反（「工作时间不打扰」）。注意是时间**段**，不是 cron 表达式。
- **画面明暗** — 仅当画面「暗」或「亮」时通过。典型用法：「有人进入 + 此刻天黑」才开灯。

> ℹ️ 时间是「条件」不是「触发器」——规则永远先被检测事件唤醒，再判断是否落在时间段内。所以「每天 22:00 自动做某事」这种**纯定时任务，自动化做不了**（没有对应的摄像头事件就不会触发）。

## 动作：规则做什么

一条规则可以挂多个动作，依次执行。共 5 种：

| 动作 | 说明 |
| --- | --- |
| **推送通知** | 推到手机 App + 网页后台（不含邮件 / 短信） |
| **TTS 喊话** | 合成语音，通过摄像头喇叭播出来 |
| **Webhook** | HTTP 请求推到任意 URL（接飞书机器人 / IFTTT / 自建服务） |
| **MQTT 发布** | 向 MQTT broker 发一条消息 |
| **Home Assistant 服务调用** | 直接调 HA：开灯 / 关开关 / 跑场景，见下方〈Home Assistant〉 |

## 文案变量

通知文案、TTS 文本、Webhook body、MQTT payload、HA 参数里都能用 `{{变量}}`，云瞰 执行时替换成事件的实际值。常用变量：

| 变量 | 含义 |
| --- | --- |
| `{{camera_name}}` | 触发事件的摄像头名 |
| `{{event_type}}` | 事件类型（person / fall / gesture …） |
| `{{face_name}}` | 识别到的人名（人脸事件） |
| `{{zone_name}}` | 触发的敏感区名 |
| `{{gesture_label}}` | 识别到的手势（手势事件） |
| `{{event_time_iso}}` | 事件发生时间 |
| `{{confidence}}` | 识别置信度 |

> ⚠️ 必须是**双花括号** `{{camera_name}}`。写成单花括号 `{camera}`、或用错名字（如 `{name}`）都不会被替换，会原样出现在文案里。

## TTS 喊话

云瞰 内置语音合成，整个流程在 云瞰 内部完成，不依赖外部服务。

1. **选音色**

   6 个中文声线：晓晓 / 云希 / 云扬 / 晓伊 / 云健 / 晓北（东北话），可调语速和音调；编辑规则时能在浏览器里直接试听。

2. **写文案**

   支持 `{{变量}}`（见上节），如「{{camera_name}} 识别到 {{face_name}}」。

3. **选目标摄像头**

   喊话的摄像头不一定是触发事件那台（门口检测到人、客厅摄像头喊话也行）；目标摄像头需支持 ONVIF 对讲通道。

4. **测试**

   保存后对规则点「测试」即可跑一遍看效果。

> **⚠️ 撞车保护**
>
> 如果有人正按住对讲讲话，自动化的 TTS 会被直接丢弃，不打断真人。

## Webhook 例子

推送到飞书机器人：动作选 Webhook，URL 填飞书机器人的 webhook 地址，body 模板填：

```json
{"msg_type":"text","content":{"text":"{{camera_name}} 检测到 {{event_type}}"}}
```

云瞰 会把 `{{camera_name}}` `{{event_type}}` 等替换成实际值，再发出去。

## Home Assistant

云瞰 和 Home Assistant 有**两种对接方式**，相互独立——可以只用一种，也可以都用。

### 方式一：云瞰 直接控制 HA（推荐）

让 云瞰 检测到事件后直接开灯 / 关开关 / 触发场景。**不需要 MQTT。**

1. **在 HA 生成长期访问令牌**

   Home Assistant → 左下角点你的用户名 → 安全 → 长期访问令牌 → 创建，复制那串令牌。

2. **在 云瞰 填 HA 连接**

   网页后台 → 设置 → 自动化 → 「Home Assistant」面板，填 HA 地址（如 `http://homeassistant.local:8123`）和刚才的令牌，保存。

3. **规则里加「Home Assistant 服务调用」动作**

   云瞰 会自动从 HA 拉实体和服务列表，下拉直接选（如「开客厅灯」= `light.turn_on` + 对应灯实体），不用手敲 entity_id。

### 方式二：云瞰 作为传感器接入 HA（MQTT）

想反过来——在 HA 里看到 云瞰 的区域占用传感器、在 HA 端写自动化——走 MQTT discovery。

1. **HA 装 Mosquitto**

   HA → 设置 → 加载项 → Mosquitto broker，按默认装，记下账号密码。

2. **云瞰 配 MQTT**

   网页后台 → 设置 → 自动化 → 「MQTT」面板，填 broker 地址 / 端口 / 账号密码并启用。

3. **自动注册**

   云瞰 会把每个敏感区的占用状态以 binary_sensor 形式注册到 HA，HA 端立刻能看到。

> 💡 想让 **云瞰 控制 HA**（开灯等）→ 方式一；想让 **HA 用 云瞰 的传感器** → 方式二。多数人方式一就够，而且更简单。

---

来源:https://yun-kan.com/ja/docs/automation
