使用 n8n + Quote/0 监控每日朝霞晚霞信息

最近买了少数派共创的一个玩具 Quote/0,它是一个可以接收推送信息的墨水屏,而且可以通过 API 自定义推送信息。

6c908ed8-1c2d-efaf-7e49-fbbede0aa23b

正好青岛八月有好几次大烧的朝霞和晚霞,我用 n8n 和它做了一个监控朝霞和晚霞信息的自动化 Workflow。

注意,本文并不是零基础入门,学习之前还是要有一定的 n8n 操作基础的。

数据来源

朝霞晚霞的数据是从 SunsetBot 网站抓的。这个网站可以提供当天和次日的朝霞和晚霞信息。

直接在网站查询某个城市的朝霞晚霞信息时,网站的 URL 并不会改变,所以我是在检查元素的「Network」里,通过 XHR/Fetch 去找到的 cURL。

具体来讲,就是用 Chrome 打开该网站,先按下 F12,然后找到 Network 里的 Fetch/XHR 标签,再在网页中输入你要查询的城市。比如我要查青岛,就输入「山东省-青岛」,直辖市应该是直接输「北京」「上海」,然后点击搜索。

这时先不用管左边的页面,直接右边Fetch/XHR 标签里,点击最新的一条以 ?query_id 开头的记录,看右边的预览,应该是如下图的信息。

kWFL4w

这里可以看到很多查询参数,先不用管,我们后面在 n8n 里配置 workflow 的时候再说。

右键点击该条记录,复制,选择「以 cURL 格式复制」。

3dc99e1ea4d3955dc6a8effcb4057a7f

这个复制出来的东西先找地方保存好,后面进入 n8n 里要用。到这里 SunsetBot 网站的工作就结束了。让我们打开 n8n 开始后面的事。

配置 n8n workflow

在 n8n 里创建一个 workflow。我们当然是希望这个数据应该是每天都能推送到我的 Quote/0 设备商,所以应当是定时执行。不过在测试阶段,我们就先做成 Trigger manually(手动触发),后面再调整。

然后在触发器的后面加一个 HTTP Request 节点,Method 选择 Get,点击 Import cURL,粘贴上一步复制的 cURL 进去。再点右上角的 Execute step 执行该节点,此时右侧 OUTPUT 应当会有输出,下方 Query Parameters 里应该会出现一些变量。

sKawEN

我们不必要看懂这里的所有参数,只需要知道几个重要的:

  • query_id:查询 ID,目测是一个随机数
  • query_city:你要查询的城市
  • event:你要查的是朝霞还是晚霞,这里一共可以填写四个值,分别是:
    • set_1:今日晚霞
    • set_2:明日晚霞
    • rise_1:今日朝霞
    • rise_2:明日朝霞
  • model:预测模型,有 GFSEC 两种,其实准确率差不多,因为推送过来的信息也只是给我们一个参考,所以不必过度在意这里用哪个模型,如果真的追求准确度,还是应该自己去 Windy 上看云图。

对我们来说,重要的就是查询的城市,以及具体哪一天的朝霞和晚霞信息。这里有两个设置思路,一个是在该 HTTP Request 节点里直接填写要查询的信息;另外一个在前面加一个 Edit Fields(也就是 Set)节点,然后在 Set 节点里填好参数信息之后,传给后面。

这里我选择第二种思路。

CoijDD

顺便说一下 query_id 这个参数。估计是我测试后的时候,查询频率也不高,所以直接自己随便填数字也能跑起来。不过后来为了稳定,我还是加了一个随机数生成器。也是直接用的外部工具生成,然后 HTTP Request 来获取:

这一个可以自动生成 100000–999999 之间随机数的工具,每次获取 1 个,然后在在后面调用即可。于是上面那个 Set 节点就变成了这样:

9Tdky8

这时可以点一下右上角的 Execute step 测试一下,右侧应当能够正常输出信息:

Tdi0AT

然后在后面查询信息的 HTTP Request 节点里,把前面的参数传进去,并且执行后右侧也能正常输出,接下来就是想办法推送到 Quote/0 设备里。

pfj5Hp

推送到 Quote/0

首先在你的 Quote/0 设备上添加一个「文本 API」页面,然后根据 Dot. 手册获取设备序列号API 密钥,保存好后,找到「文本 API」相关的说明,我自己配置的是「复杂文本并立即显示」。

找到 cURL 示例,复制,然后在刚才的 n8n workflow 里再新建一个 HTTP Request 节点,导入复制好的 cURL 信息,并填入自己的 API 和设备 ID。

ujhJCf

下方有编辑 titlemessage 的部分,根据自己的需求填写即可,这里可以根据 Dot. 手册相关文档来写。下面是我填的信息:

cGYEPP

填写好之后,再执行一遍,如果右侧输出显示的是「设备文本 API 内容已更新并将在下一次内容切换时显示」,并且你的 Quote/0 屏幕上真的显示了你设定的朝霞或晚霞信息,那么这个基本流程就跑通了。

IMG_9D01660AE01F-1

详细流程与延伸思路

现在就是完善整个 workflow 的时候了。我先贴一下我的 workflow:

ytmsWa

它的大致思路是每天上午 11 点获取当天的晚霞信息,然后下午 5 点再获取第二天的朝霞信息,这样无论是想拍朝霞还是晚霞,我都能有充足的时间准备。具体来讲,流程是:

  1. 每天上午 11 点执行
  2. 生成随机数
  3. 用一个 Set 节点接收随机数,并设置好自定义参数
  4. HTTP Request 获取当日晚霞的数据
  5. 用一个 Set 节点提取要传给 Quote/0 的数据1
  6. 推送给 Quote/0 设备
  7. 延迟六小时,也就是到下午 5 点时,获取次日朝霞数据
  8. 后面就是重复的,再生成随机数,然后查询、整理和推送数据

其实这套 Workflow 可以延伸的功能非常多,比如我还设置了几个把朝霞和晚霞信息推送给 iPhone 手机的 Workflow,以其中一个为例:

JYy3SG

这个就是每天晚上 10 点获取第二天朝霞和晚霞的信息,然后分别增加了一个 If 节点,用来判断具体「烧」的大不大,如果是「中等烧」或者「大烧」,再推送给 iPhone。

iPhone 上接收推送信息的工具是 Bark,相关教程网上也有很多了,本文就不再赘述具体设置。

  1. 这一步我前面并没有提,属于一个个人习惯,主要是因为前面输出的数据比较多,有些用不上的,所以就多加一个节点相当于提取和整理数据,方便下一步推送用,。实际上有没有这一步都一样的。