惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
Webroot Blog
Webroot Blog
GbyAI
GbyAI
S
SegmentFault 最新的问题
Cyberwarzone
Cyberwarzone
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 【当耐特】
S
Secure Thoughts
酷 壳 – CoolShell
酷 壳 – CoolShell
AWS News Blog
AWS News Blog
Engineering at Meta
Engineering at Meta
S
Security Affairs
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
Spread Privacy
Spread Privacy
T
Threatpost
Forbes - Security
Forbes - Security
C
Cisco Blogs
Scott Helme
Scott Helme
Attack and Defense Labs
Attack and Defense Labs
Simon Willison's Weblog
Simon Willison's Weblog
腾讯CDC
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
Last Week in AI
Last Week in AI
Recorded Future
Recorded Future
小众软件
小众软件
V
Vulnerabilities – Threatpost
美团技术团队
人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
Hacker News - Newest:
Hacker News - Newest: "LLM"
I
Intezer
月光博客
月光博客
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 司徒正美
C
Cybersecurity and Infrastructure Security Agency CISA
Martin Fowler
Martin Fowler
博客园 - 聂微东

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
入门智能家居,从 IFTTT 到 HomeKit 自动化(二) - 少数派
2017-08-28 · via 少数派

本章讲一讲「高级版自动化」。你可以现在设想一下:天气预报说要下雨了,网关灯变红!如果爸爸回家,手机接入 Wi-Fi,赶紧推送告诉我不要看小视频了!只要米家 + IFTTT + HomeAssistant 就可以做到!

前情回顾

上一章题目是《入门智能家居,从米家到 HomeKit(一)

主要讲的是在「树莓派」上通过 HomeBridge 把米家智能家居接入到 iOS 的 HomeKit 中。

实在非常抱歉,因为本人本职工作最近负责开发一个项目,一月赶工无休,所以实在没法抽出时间更新这个系列,现在项目有一些模块已经上线,时间相对宽裕一些,遂把这个坑填了。

这一章我们除了使用到上一章的 HomeBridge,还会使用 HomeAssistant。

那么,问题来了:

null

0. HomeKit、HomeBridge、HomeAssistant 分别是什么?关系是什么?

0.1. 概念

  • HomeKit:苹果于 2015 年 5 月发布的智能家居平台。
  • HomeBridge:一个开源程序,用于让 HomeKit 支持一些原生不支持 HomeKit 的设备(如米家家居)。
  • HomeAssistant:一个第三方的智能家居平台。

0.2. 关系

  • 上一章的关系图:
null

可以看到,上一章米家设备通过插件 HomeBridge-Mi-Aqara 来与 HomeBridge 沟通,让我们的 iPhone 通过 Siri(HomeKit)来接入 HomeBridge 达到最终控制米家设备的目的。

  • 本章的关系图:
null

可以看到,这一章将要介绍的情况,米家、IFTTT 这些智能家居并没有直接接入到 HomeBridge,而是先接入到第三方智能家居平 HomeAssistant,然后 HomeAssistant 与 HomeBridge 通过插件 HomeBridge-HomeAssistant 进行交互沟通,最后把结果反馈到你的手机上。

0.3. 我为什么要搞多一个 HomeAssistant?

因为接入了 HomeAssistant,能够给你的家居智能化上升到一个新的高度,HomeAssistant 支持一系列的组件。

HomeBridge 因为自身的一些条件限制,以及条件束缚,只能够一次控制一类家居,比如 HomeBridge-Mi-Aqara 就只能控制米家类家居。

而 HomeAssistant 能够做到,「如果天气预报说要下雨了,网关灯变红,多云变黄,晴天就变绿啊」,或者是「爸爸回家了手机自动联入 Wi-Fi,会发推送告诉我不要看小视频了」等等,可以说,让更多的事情加入到智能化这一行列。

让事情变得更好玩,更有趣,更智能,是我引入 HomeAssistant 的目的所在。

null

0.4. 我想告诉你的

如果你是希望「用 iPhone 或者 Siri 控制一些米家家居,或者回到家打开门台灯自动亮起来欢迎你」,那么其实 上一章内容 已经完全满足你的需求,已经 OK 了。

这一章虽然带来了很多新的有趣的「骚操作」,但是因为引入了 HomeAssistant,所以也会相应的增加了操作量,所以你要自我衡量考虑一下要不要继续折腾噢~

涉及到的新操作 IFTTT动态域名解析Liunx 部分新命令

1. 开始前的准备

准备:

  1. 你需要有一个树莓派,它是一个已知 IP 地址开启了 SSH干净正常耐操的树莓派。
  2. 希望你最好有 linux 的基础。

通关路线:

  • 如果对于上面两条你已经做到了,那么直接从往下看。
  • 如果你是完全按照上一章内容操作,并且完成了所有功能实现,那么请看这里,为你跳过重复部分。
  • 如果你对于这个准备毫无头绪,不妨先回顾一下 上一章内容,在上一章的第 0~1 章有相应的手把手教学
  • 如果你已经配置好了 HomeAssistant & HomeBridge,可以直接拉到下面查看关于「联动 IFTTT 的骚操作教程」。

2. 整个应用框架的安装

2.1. 安装 NodeJS

在终端中输入

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - 
sudo apt-get install -y nodejs
null

安装完要使用nodejs -v看看版本是不是 v6.xx,如果不是的话,再次执行这两条命令。

2.2. 安装 avahi 包

在终端中输入

sudo apt-get install libavahi-compat-libdnssd-dev
null

2.3. 安装 HomeBridge

在终端中输入

sudo npm install -g --unsafe-perm homebridge
null

2.4. 安装 HomeBridge-HomeAssistant

在终端中输入

sudo npm install -g homebridge-homeassistant
null

2.5. 安装 HomeAssistant

在终端中输入

sudo pip3 install homeassistant
null

2.6. 配置 HomeAssistant

2.6.1. 初始化 HomeAssistant 配置文件

在终端中输入

mkdir ~/.homeassistant
vi ~/.homeassistant/configuration.yaml

在打开的编辑器中,单击键盘的i键,进入输入状态

复制以下初始化内容到文件中。

homeassistant:
  # Name of the location where Home Assistant is running
  name: Home
  # Location required to calculate the time the sun rises and sets
  # 设置你的经纬度,判断日落时间
  latitude: 42.7683
  longitude: 129.3364
  # Impacts weather/sunrise data (altitude above sea level in meters)
  elevation: 0
  # metric for Metric, imperial for Imperial
  unit_system: metric
  # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
  time_zone: Asia/Shanghai

# Show links to resources in log and frontend
introduction:

# Enables the frontend
frontend:

# Enables configuration UI
config:

http:
  # Uncomment this to add a password (recommended!)
  # 这里推荐设置一个登陆密码
  api_password: HaHb7890
  # Uncomment this if you are using SSL/TLS, running in Docker container, etc.
  # base_url: example.duckdns.org:8123

# Checks for available updates
# Note: This component will send some information about your system to
# the developers to assist with development of Home Assistant.
# For more information, please see:
# https://home-assistant.io/blog/2016/10/25/explaining-the-updater/
updater:
  # Optional, allows Home Assistant developers to focus on popular components.
  # include_used_components: true

# Discover some devices automatically
discovery:

# Allows you to issue voice commands from the frontend in enabled browsers
conversation:

# Enables support for tracking state changes over time
history:

# View all events in a logbook
logbook:

# Track the sun
sun:

# Weather prediction
sensor:
  - platform: yr

# Text to speech
tts:
  - platform: google

group: !include groups.yaml
automation: !include automations.yaml

然后点击键盘 esc,输入 :wq 进行保存并推出编辑器。

2.6.2. 安装 HomeAssistant 初始化所需要的插件

HomeAssistant 安装完后,其实只是安装了一个主体程序,实际上还需要安装很多小控件的安装,往往需要 Root 权限,所以在终端中输入

sudo hass --open-ui

等待程序自动运行,他会安装一些 HomeAssistant 所需要的一些组件。

我们可以在浏览器中输入http://树莓派IP地址:8123 进行访问,去了解 HomeAssistant 是否初始化成功。

null

null

当你的浏览器看到这个页面,表示已经成功初始化插件安装了。这个时候你需要多按几次 Ctrl+C(Mac 电脑是 Control+C)来退出这个程序,一直按到你出到能输出命令的终端页面。如下图所示:

ha-hb-8
ha-hb-8

注意,以 Root 权限运行的 HomeAssistant 在实际操作中发现,并不能按照我们的配置文件进行配置,所以我们还需要以当前用户 pi 权限来运行 HomeAssistant。

然后在终端中输入

hass --open-ui

等待片刻,我们用浏览器访问 http://树莓派IP地址:8123,如果你在前面配置文件中有设置密码 HaHb7890,就会显示一个登陆页面,说明你能够正式使用 HomeAssistant 系统了。

null

2.6.3. 记录米家智能家居硬件的相关信息

打开 米家 App(小米智能家居官方硬件),选择智能网关设备,点选右上角的 ··· 功能符号,进入后点选 关于

null

然后你看到的是下图左边的样子,这时候你需要疯狂输出,要不断的点击空白处,片刻后界面就会变成右边的样子,多了局域网通信协议还有网关信息选项。

null

这时候,分别点选他们,记录你的网关的局域网通信协议密码以及网关的 MAC 地址,请记好噢。

null

2.6.4. 把 HomeAssistant 配置米家智能家居

需要注意的是,HomeAssistant 在 50.0 版本后,已经从官方上集成对小米智能家居,所以我们直接在 HomeAssistant 配置文件上配置即可。

在终端中输入

vi ~/.homeassistant/configuration.yaml

进入编辑器后,按住 shift 然后单击键盘 g 键,会自动跳转到最后一行(Vim 的 G 键代表跳到最后一行)。然后单击键盘 o 键,开始进入编辑模式。

输入以下字段:

xiaomi:
  gateways:
      - mac: B827EBDA70F9(你的小米网关MAC地址,地址中间如果加`-`会报错)
        key: 通讯密码(请全部大写,不然只能看智能家居状态不能控制)

然后,单击键盘esc键,再输入:wq进行保存退出。

null

Ok,配置好,就要软重启一下 HomeAssistant,进入 HomeAssistant 页面,选择左下角的Developer Tools(开发者工具)下的第一个图标,然后在右边的标签页中填写相应的信息:

  • Domain: homeassistant
  • Service: restart

然后点击CALL SERVICE来唤起 HomeAssistant 的重启。

null

原理介绍:HomeAssistant 把很多功能都以组件来看待,然后我们就是调用了核心组件homeassistant里面其中一个方法restart来对 HomeAssistant 进行重启。

这个时候,HomeAssistant 的页面会告诉你已经与服务器断开连接了,事实上你只要静静地等待就好了,等到重新正常连接就 OK 了。但是耐不住寂寞的你肯定想看看进度如何对吧,这个时候,你知道打开刚刚输入了hass --open-ui代码的终端窗口,就可以看到实时情况,如下面的截图就是说,我在安装的过程中,而且安装过程已经超过 10s 了。

null

稍安勿躁,去泡杯茶回来,网页版的 HomeAssistant 已经能够正常连接了,你点击左边栏的States按钮,回到总览页面,你就可以看到,小!米!智!能!家!居!出!现!了!

null

OK,那说明你的小米智能家居已经成功的接入了 HomeAssistant 平台了,恭喜你往高端玩家又进了一步请继续阅读下文哈。

2.7. 配置 HomeBridge-HomeAssistant

在终端中输入

mkdir ~/.homebridge
cd ~/.homebridge
vi config.json

在打开的文件界面中,单击键盘的i键,进入输入状态

复制以下内容到文件中。

{
    "bridge": {
        "name":"Homebridge",
        "username":"B8:27:EB:DA:70:F9",
        "port":51826,
        "pin":"233-78-123"
    },

"platforms": [
  {
    "platform": "HomeAssistant",
    "name": "HomeAssistant",
    "host": "http://127.0.0.1:8123",
    "password": "HaHb7890",
    "supported_types": ["binary_sensor", "climate", "cover", "device_tracker", "fan", "group", "input_boolean", "light", "lock", "media_player", "remote", "scene", "sensor", "switch"]
  }]
}
  • bridge-name : 你在 iPhone 的 HomeKit 上面看到桥接设备网关的名称
  • bridge-username : 树莓派 MAC 地址
  • bridge-port : HomeBridge 使用的端口,默认就好
  • bridge-pin : 在 iPhone 上认证 HomeBridge 网关的密码,这个按照你自己喜好来输入吧
  • platforms-host : 你访问 HomeAssistant 的地址+端口
  • platforms-password : 你在 HomeAssistant 设置的登陆密码

2.8. 配置 HomeBridge

在终端中输入

homebridge -D

运行成功后,会如下图所示:

null

2.9. iOS 的 HomeKit 配置

进入家庭App,添加配件,你就可以看到 HomeBridge 了

null

把里面的配件添加进来,你的 HomeKit 就已经具备了他应该有的功能了。

null

2.10. 设置长久运行的 Homebridge

事实上,你现在如果关闭了 SSH 链接,那么你的 HomeKit 也会处于失效状态,因为你的 Homebridge 随着 SSH 的连接关闭导致被关闭了,如果解决?

使用SCREEN工具,在终端下输入:

sudo apt-get install screen

然后输入

SCREEN -dmS hb homebridge       # 开启一个名字叫做hb的窗口并运行homebridge命令,hb这个名字你随意取
SCREEN -dmS ha hass --open-ui   # 开启一个名字叫做ha的窗口并运行'hass --open-ui'命令,hb这个名字你随意取

在 screen 里开启的 Homebridge 不会随着 SSH 关闭而被关闭。那么如何暂时退出这个窗口呢?

先按Ctrl+A然后按完再按一下d就可以跳出来做其他事情了,如何回去?使用screen -x hb即可。

2.11. 设置开机自启动 HomeBridge & HomeAssistant

事实上,树莓派关机后,两个程序会被关闭,可以使用SCREEN工具,并且在rc.local里面添加开机自启动任务。

在终端中输入

sudo vi /etc/rc.local

然后进入了编辑器,单击键盘的i键进入编辑模式。在exit 0这一行前面添加:

su -c "screen -dmS hb homebridge" -s /bin/sh pi
su -c "screen -dmS ha hass --open-ui" -s /bin/sh pi

然后单击键盘esc退出编辑模式,然后输入:wq保存文件并推出编辑器。

2.12. 设置远程化运行的 HomeKit

苹果规定,HomeKit 一般情况下,只能在同一个 Wi-Fi 下操作,如果你要远程化和自动化操作。请充(yao)值(mai)信(mai)仰(mai)!

远程控制起步是iPad mini 2 或者 Apple TV 3

自动化起步是iPad mini2 或者 Apple TV 4

null

[地址戳我]


终于来到激动人心的时刻了,要开始真正的骚操作了。

3.1. 给 HomeAssistant 配置 IFTTT 组件

类似小米智能家居的通信密钥,IFTTT 有一个 key,从[Webhook 这个位置]获取得到。

拿到之后,在终端中输入以下命令:

vi ~/.homeassistant/configuration.yaml

进入编辑器后,按住shift然后单击键盘g键,会自动跳转到最后一行(vim 的 G 键代表跳到最后一行)。然后单击键盘o键,开始进入编辑模式,输入以下字段:

ifttt:
  key: xxxxx_xxxxxxxxxxxxx

然后,单击键盘esc键,再输入:wq进行保存退出。

然后按照上面的教程,重新 restart 一下 HomeAssistant。

3.2. IFTTT 作为触发条件

做一个简单演示,如果我们用 HomeAssistant 调用了 IFTTT,就给手机版的 IFTTT 发一条推送。

作为 IF 条件,Event Name 就是我们给这个事件声明的名字,我们以HA_TEST来做这个事件的声明名字。

null

然后触发条件,选择Notification,推送的内容,可以设置一些预设的变量函数,包含我们给这个事件声明的名字Event Name,也可以包含我们传过去的 Value 值。

null

创建完 IFTTT 的 Applets,我们回到 HomeAssistant 测试一下。

在 HomeAssistant 的Developer Tools的第一个图标,然后配置如图。Data 一般是以JSON格式来传输的。

null

点击调用后,几秒钟你的手机的 IFTTT 就会给你发来一条推送了。

null

实际上,用 HomeAssistant 还能用内置的automation来调用 IFTTT,相当于内置的 IFTTT,但是支持的控件没 IFTTT 那么丰富。

3.3. IFTTT 作为触发结果

OK,前面是一个小的应用,最主要的还是要介绍 IFTTT 作为触发结果。

3.3.1. HomeAssistant API

HomeAssistant 支持丰富的 API,通俗来说,就是你访问一个网络地址就能控制你家的台灯开与关

OK,地址是http://树莓派地址:8123/api/services?api_password=登陆密码,你可以看到所有 HomeAssistant 能支持的 API,抽取其中一个给大家介绍一下。

其中一个是关于对灯光的 API 介绍。

{
    domain: "light",
    services: {
        turn_on: {
            description: "Turn a light on",
            fields: {
                brightness: {
                    description: "Number between 0..255 indicating brightness",
                    example: 120
                },
                color_name: {
                    description: "A human readable color name",
                    example: "red"
                },
                entity_id: {
                    description: "Name(s) of entities to turn on",
                    example: "light.kitchen"
                },
                rgb_color: {
                    description: "Color for the light in RGB-format",
                    example: "[255, 100, 100]"
                }
            }
        }
    }
}

所以你发起一个 POST 请求,我是使用了 Mac 版的 Paw 软件来发起请求,当然你可以使用 Chrome 上面的 PostMan 扩展来做测试。

我请求的地址是/api/services/light/turn_on然后附上 URL 的 PARAMS 是entity_id代表要开的灯的 id,然后附上 API 调用密码api_password.

然后在主体 BODY PARAMS 里面写入灯光的颜色color_name,以及亮度brightness

POST 192.168.1.100:8123/api/services/light/turn_on?entity_id=Gateway_Light_34ce0088d139&api_password=HaHb7890

Body Params {"color_name":"red","brightness":"50"}
ha-hb-19
ha-hb-19

调用后,你家里的网关灯就会变红了,而且亮度设定在 50。

3.3.2. 如果明天下雨,我的网关灯要变红

流程图

+ - - - - - - - - - - - - - - - +     + - - - - - - - - - - - - - - - - - -+
' IFTTT:                        '     ' HomeAssistant:                     '
'                               '     '                                    '
' +----------+     +----------+ '     ' +-------------------+     +------+ '
' | 外面下雨  | --> | 调用事件  | ' --> ' | HomeAssistant API | --> | 灯亮  | '
' +----------+     +----------+ '     ' +-------------------+     +------+ '
'                               '     '                                    '
+ - - - - - - - - - - - - - - - +     + - - - - - - - - - - - - - - - - - -+

其实关于 HomeAssistant 部分,我们在3.4.1已经介绍了。现在需要介绍IFTTT设定以及IFTTT 如何调用HomeAssistant.

3.3.2.1. 域名动态解析

我们现在调用的 API 地址是一个局域网的地址,形如192.168.x.x,这个在广域网(互联网)是无法调用的,简单来说就是,你在公司的网络是调用不了你在家里的这台树莓派的 API 的,更何况 IFTTT。

所以,为了解决这个问题,你可以:

  • 购买固定 IP:向宽带提供商 ISP 购买一个固定 IP,无论你如何重启路由器啊,这个IP就是能指向你家路由器,这个一般费用比较高昂,不推荐。
  • 使用动态解析域名(推荐):现在一般的路由器都内置了动态解析的组件,可以把内网的某一个机器的某一个端口映射到指定的域名端口,或者整个内网机器映射到外网,推荐前者,比较安全。具体自己找方法啦
  • 内网穿透:可以了解一下ngrok
3.3.2.2. IFTTT 设置

IF条件,你可以选择 IFTTT 中的Weather Underground中的Current condition changes to触发器,选择Rain。代表,如果天气预报发现你那里快要下雨了,就触发这个事件。

null

THEN条件,选择IFTTT的webhook:

  • 请求地址URL跟我们的3.4.1中的地址一样,只是树莓派的地址和端口换成动态解析后的域名与端口
  • 请求方法METHOD选择POST,
  • 传输内容类型Content Type选择application/json,
  • 传输内容Body写关于灯光的详细配置,颜色变红亮度50{"color_name":"red","brightness":"50"}
  • 点击Creata action进行保存
null

最后,Review一下,给这个自动化设定一个名字,下面的按钮的意思是每次出发了这个自动化,要不要给你手机的 IFTTT 发一个推送证明它发送了。

null

OK,那么整个流程到这里就算是完成搞掂了~

其实这个流程有 1 点不太安全的是,IFTTT 的 POST 请求明文调用了树莓派的 API 密码,我研究了一下好像 IFTTT 的 Applet 只会针对个人,不对外分享,所以还算是安全。然后动态解析尽量针对端口吧,对外开放太多端口容易受到攻击,同时 API 密码请申请的高强度一下,SSH 使用密钥登陆。

4. 其他

4.1. 已经完全实施了上一章的读者

因为上一章的完全实施,所以你已经安装了 HomeBridge-Mi-aqara,Homebridge 对于插件好像有些蜜汁互斥,所以你需要先卸载他,再按照上面的教程继续走。

在终端中输入

sudo npm uninstall -g homebridge-mi-aqara

5. 致谢


对树莓派感兴趣?欢迎到「明明白白玩派」专栏了解更多树莓派技巧 👾