SmartThings Routines 深度教程 — IF-THEN 条件组合、延迟、嵌套
Routines 的逻辑内核
SmartThings Routine = IF(触发条件)+ THEN(执行动作)。这是整个 SmartThings 自动化的核心语言。
IF 条件详解
单条件 vs 多条件
一个 Routine 可以有多个 IF 条件,关系由你选:
| 关系 | 含义 | 示例 |
|---|---|---|
| All conditions(AND) | 所有条件同时满足才触发 | 晚上 10 点 且 所有人在家 → 执行 Good night |
| Any condition(OR) | 任一条件满足即触发 | 主卧门开 或 门厅运动传感器触发 → 开主卧灯 |
建议:条件过多(5 个以上 AND)反而容易漏触发,保持 2-3 个为佳。
可用的 IF 条件类型
| 条件类型 | 具体选项 |
|---|---|
| 时间 | 指定时间、每天重复、每周重复、日出、日落、日出前 X 分钟、日落前 X 分钟 |
| Geofencing | 到家、离家、到达特定地理围栏 |
| 设备状态 | 开关变化、数值变化(温度、亮度)、电池电量、传感器触发 |
| 手动 | 手动运行按钮、语音命令 |
| 存在 | 某人不在家、某设备在线/离线 |
延迟条件(Grace Period)
可以在 IF 链中插入延迟等待:
IF 冰箱门开启 → +1 分钟延迟 → THEN 推送通知
这 1 分钟就是"给你个缓冲期"——开冰箱拿东西时门开着,不立刻报警;开了 1 分钟不关才触发。对传感器误触发的缓解特别有用。
THEN 动作详解
设备控制类
| 动作 | 选项 |
|---|---|
| 开关设备 | 开/关/切换 |
| 调节数值 | 温度、亮度、音量、风速(可设为百分比或绝对数值) |
| 预设场景 | 调用另一个 Routine |
通知类
| 动作 | 说明 |
|---|---|
| 推送通知 | 推送到手机,可自定义消息文本 |
| Family Hub 屏幕提示 | 仅三星 Family Hub 冰箱可用 |
| 语音播放 | 在三星 TV 或音箱上播放文本 |
控制流
| 动作 | 说明 |
|---|---|
| 延迟等待 | 在 THEN 动作序列中插入等待时间 |
| 发送 SMS | 给指定手机号发短信(部分地区可用) |
嵌套调用
THEN 动作中可以运行另一个 Routine:
IF 晚上 10 点 → THEN 运行 Good night Routine → 推送通知 "Good night 已开启"
注意:手动 Routine 可以被嵌套调用;自动 Routine 不要直接嵌套(容易造成死循环)。
Routine 管理技巧
临时禁用 vs 删除
在 Routine 详情页底部,有一个 Enabled / Disabled 开关:
- 临时禁用(Holiday Mode):关掉开关,Routine 不再触发,但保留配置
- 删除:彻底移除,不可恢复
过年离家时,先把日常 Routines 禁用,避免异常触发。
复制快速创建
在 Routines 列表页长按一个 Routine → 选复制 → 修改几个条件就能快速创建新的。比如 Good morning 复制一份,改成 Good afternoon。
命名规范
给 Routine 起描述性强的名字:
- ✅ Good night(关全部灯 + 锁门 + 调空调)
- ✅ Arriving home(到家自动开玄关灯)
- ❌ Routine 1(半年后忘了是啥)
- ❌ Test(永远不要用)
Routines 数量建议
SmartThings 本身不限 Routine 数量,但推荐控制在 200 条以内:
- 太多会让 Routines Tab 变得混乱
- 建议每类场景命名清晰,按功能分组管理(虽然 SmartThings 本身不强制分组,但你可以用命名前缀如
Light-Lock-Energy-)
实战例子
例 1:冰箱门未关报警
IF:
冰箱门传感器 → 开启
延迟 2 分钟
THEN:
推送通知 "冰箱门未关,请检查"
Family Hub 屏幕提示
例 2:雨天提醒关窗
IF:
气象服务检测到降雨
THEN:
推送通知 "今天有雨,记得关窗"
调用 Secure Home Routine(关所有窗、锁门)
例 3:回家自动开空调
IF:
Geofencing:我到家了
当前温度 > 30°C
THEN:
开客厅空调 → 制冷 → 26°C
开玄关灯
检查 Routine 是否真的在触发
有时候你以为 Routine 在运行,其实条件没满足。排查方法:
- SmartThings App → Routines Tab → 找到目标 Routine
- 进入详情页 → 查看「最近运行记录」
- 看有没有触发日志、触发时间、触发原因