通过 Windows 脚本(.bat)文件发送 PushOver 消息
CloudWatcher, Dragonfly…
在天文台里,或者哪怕只是在电脑上,当某些事件发生时能够即时收到通知,往往非常有用。
目前我们推荐使用 PushOver 这个工具来实现这一点——它支持多种设备,运行稳定,而且虽然不是完全免费,但价格非常合理(在撰写本文时,终身授权只需 5 美元):https://pushover.net/pricing
本文力求覆盖目前仍在使用的大多数 Windows 版本和电脑,包括 32 位系统。
注意: 我们带有内置网产品 (the Solo, Dragonfly…)本身已经内置了这一功能;本文的目的是为了提供更多灵活的玩法。
第一步:创建 PushOver 账户
如果你还没有 PushOver 账户,先创建一个。它提供试用期,所以暂时不需要付费。
你需要两个“密钥”或“令牌(token)”:
一个是与你的用户账号绑定的(注册后在 PushOver 首页就能清楚看到)
另一个是与你创建的应用程序绑定的。在同一个首页中,你可以创建一个应用程序:

(过程非常简单,你甚至可以上传一张 PNG 图片来个性化你的通知消息。)
接下来我们需要在 Windows 端进行设置。为了尽可能通用,我们将使用 32 位版本的 curl 工具。在 curl 官方网站的 Windows 栏目下载。

为了让事情更简单,我们制作了一个精简版的压缩包,只包含本教程所需的文件(包括版权说明)。可以在这里下载:https://lunaticoastro.com/aagcw/Min-Curl32b.zip
你需要选择一个合适的文件夹来解压这些文件。我个人会使用“用户”目录,并在其中创建一个名为 scripts 的子文件夹,比如: C:\Users\Jaime\scripts
无论你选择哪个位置,都可以打开 zip 文件,选中所有文件,复制到目标文件夹中,或者直接解压。
压缩包中包含一个示例脚本:sample-message.bat。可以用记事本编辑。
rem You will probably need to “cd” (change directory) to the folder where the curl program is installed
cd \Users\MyUser\scripts
curl -s –cacert curl-ca-bundle.crt –form-string “token=APPLICATION_TOKEN_HERE” –form-string “user=YOUR_PUSHOVER_USER_TOKEN_HERE” –form-string “message=Hello there!” https://api.pushover.net/1/messages.json
你需要修改脚本中的四个地方:
1:第二行中 cd 的路径(curl 所在的文件夹)
2 、3:应用程序的 token 和用户的 token
4:要发送的消息内容(否则你会收到 Kenobi 的 “Hello there”)
一个可正常运行的脚本示例如下:
cd \Users\Jaime\scripts
curl -s –cacert curl-ca-bundle.crt –form-string “token=laksdfasdfasdfasdfasdfasdf” –form-string “user=ththsethsethsqrwt” –form-string “message=Hello there!” https://api.pushover.net/1/messages.json
完成后,请运行这个脚本。如果一切正常,几秒钟内就会在手机上收到一条消息。
应用到 CloudWatcher上
CloudWatcher 的 Windows 软件可以设置在两种情况下运行脚本天气变为安全和天气变为不安全。该设置位于:setup → script。
请以刚才的脚本为模板,创建一个或两个新脚本,并设置希望在天气变化时收到的提示内容。示例将它们命名为: “weatherSafe.bat” 和 “weatherUnsafe.bat“。

这个界面看起来有点笨拙,是为了兼容目前仍在使用的各种 Windows 版本。天文学家通常对“一个运行良好的 Windows 系统”非常不愿意升级……未来我们会移除对 XP 的兼容,并改进界面友好性。
点击“路径”选择你之前存放脚本的文件夹,然后输入脚本文件名。如果你希望在两种状态下都运行脚本,需要分别设置。

.
完成!
就是这样。
如果你不想在白天(或夜里)收到烦人的通知,可以在 PushOver 中设置 “勿扰时间”。
另一方面,如果你绝对不能错过消息,可以在脚本中加入以下参数:
–form-string ‘priority=2’ –form-string ‘retry=30’ –form-string ‘expire=600’
这样会发送一个高优先级消息,每 30 秒重试一次,直到你确认收到,或 600 秒超时为止。
完整的 curl 命令如下:
curl -s –cacert curl-ca-bundle.crt –form-string “token=laksdfasdfasdfasdfasdfasdf” –form-string “user=ththsethsethsqrwt” –form-string ‘priority=2’ –form-string ‘retry=30’ –form-string ‘expire=600’ –form-string “message=Hello there!” https://api.pushover.net/1/messages.json
……虽然不如 Good Night System,那样万无一失,但在很多场景下依然非常实用。
当然,你也可以把这一功能加入到 Dragonfly 的脚本中使用。
curl 真的是一个非常好用的工具。可以用它来访问 Dragonfly 的继电器和传感器,比如通过一个简单脚本来关闭继电器,或者从 Solo 下载 JSON 数据文件。