这个应该是系列“再论智能家居与生态融合”的第二篇文章!
但是名字太中二了,我就不写了,只留标签方便检索。
为什么需要自动化平台?
我这里的自动化和 github actions 等 CI 不同,我的自动化是要求在某些条件发生改变时执行某些操作。
比如,我的某个朋友发了一篇博客,我用 rss 订阅了,我希望将它推送到上文所说的消息推送服务。
就这么简单的一个功能,我翻遍全网都没有什么很好的免费解决方案。
我先说说我踩过的坑吧,大家先不要动手。
Integrately
是国外一家自动化平台,配置十分友好,但美中不足的是没有免费计划方案(webhook 是付费计划才有的内容)。
新用户有两周试用,因为我问了他们客服这方面的问题还多送了我两周以及一堆优惠券,但是两周之后你的自动化流程就会被暂停并且无法运行。
如果付费并且不想自己搭建的话,我十分推荐 Integrately,很可惜我没啥钱。
工作流概览:Inoreader 文件夹 --oauth--> Integrately --webhook--> push service
。
IFTTT
也是一家自动化平台,免费计划够用。
但是这次 Inoreader 不行了,对于 IFTTT 的应用连接,必须要 Inoreader 的付费计划,那个计划真的贵死。
不过 Inoreader 的付费计划是自带 rss webhook 推送的。
工作流概览:Inoreader 文件夹 --oauth--> IFTTT --webhook--> push service
。
node-red
这个我之前大力推荐,是智能家居圈子里享有盛名的自动化平台。
但是现在似乎有些衰落了,这是我之前的 rss 推送代码:
用了一个 rss 的第三方库,但是那个库的 bug 超级多,有一次某人发了一篇文章,这个文章被重复推送了至少 20 次,而且在我的博客上,我收到的推送信息永远都是 Rickyxrc/CF575A题解
。
不是,尽管我对那道题印象深刻,你也没必要每次都推吧(
当我点进依赖的时候,我才意识到为什么:
node-red 是优秀的平台,但由于软件生态长期未更新和文档的不完善,在实际场景下会出现很多问题,所以我最后放弃了。
n8n
最初不知道这玩意可以离线部署,云端的必须付费。
本地部署挺好的,因为家里刚好有跑 Homeassistant 的机子,占用很低,顺便部署一个。
本地部署我用的是 Docker
,贴出 Casaos
(一个开源的家庭管理系统,用于在你的家用服务器或者树莓派上可视化管理 docker 容器)自动生成的 compose 文件。
您需要按需修改里面的部分,我这份 compose 文件在我的机器上可以正常运行。
x-casaos
段可以删除,不过如果您也是 CasaOS 用户的话(这么巧!?),这份 compose 文件应该可以不修改一个字地正常运行。
name: playful_chorok
services:
main_app:
cpu_shares: 10
command: []
container_name: n8n
deploy:
resources:
limits:
memory: 256M
environment:
- GENERIC_TIMEZONE=Asia/Shanghai
image: n8nio/n8n
labels:
icon: https://icon.casaos.io/main/all/n8n.png
ports:
- target: 5678
published: "5678"
protocol: tcp
restart: unless-stopped
volumes:
- type: bind
source: /tmp/casaos-compose-app-2408285898/n8n
target: /home/node/.n8n
devices: []
cap_add: []
network_mode: bridge
privileged: false
x-casaos:
author: self
category: self
hostname: ""
icon: https://icon.casaos.io/main/all/n8n.png
index: /
port_map: "5678"
scheme: http
store_app_id: playful_chorok
title:
custom: n8n
进去之后需要你注册一个账户,随便输就行。
然后就创建工作流并调试运行即可,所有的代码都可以基于 Javascript 编写,十分方便。
我的工作流如下:
还有一个定时起床,通过 homepod 语音 tts 播报的 node-red 流,准备迁移到 n8n 上,改天回去写这部分(开鸽)。