在MotionEyeOS引导时发送Pushover通知

2

现在我’我家周围有一些基于MotionEyeOS的相机,我想以一种更简单的方式来知道何时重新启动它们,并且我的手机上也有一个链接,以便更轻松地访问相机源。一世’我的手机上有出色的Pushover应用程序,因此我决定让MotionEyeOS在重新启动时发送Pushover通知。该通知将说明IP地址是什么,并提供一个方便的链接以供单击。

什么是推送通知?

Pushover通知如下所示:

MotionEyeOS推送通知

带有单独的Pushover通知,如下所示:

推覆服务

要使用Pushover,您需要在上注册一个帐户 Pushover.net 并安装移动应用。该应用程序要花钱,但是是一次性的,我很乐意付钱。在用户帐户信息中心内,您将找到一个用户“token”. New “applications”可以创建,每个都有一个独特的“API 代币”。我创建了一个名为“MotionEyeOS” and used it’s 代币 for both my 相机s.

您可以将Pushover用于其他项目,’与可以调用Web URL的任何编程语言兼容。

转发端口

Pushover通知提供从外部查看的网络IP地址。路由器“port forwarding”可用于将来自网络外部的请求定向到运行MotionEyeOS的特定Pi。您的网络将只有一个外部IP地址,但是有许多设备,并且使用端口可以与每个设备进行通信。

In the examples in this post I am using port 40001 and my router is re-directing this to the Pi 上 my network. The router redirects all incoming traffic to port 40001 to the internal IP address of my Pi (e.g. 192.168.0.11) using the port number defined in as the “HTTP Port” in the MotionEyeOS admin “Expert Settings”. Internally I use http://192.168.0.11:80 to access my Garden 相机 but externally I use http://123.123.123.123:40001.

So the notification includes a link to “http://123.123.123.123:40001”. 通过 setting up multiple rules you can access different MotionEyeOS installations 上 the same network. Just give them each a different port. A second 相机 could use 40002 and the router would just redirect to appropriate internal IP address ( e.g. 192.168.0.12) .

如果不确定如何设置路由器Google“端口转发netgear r8000” but replace “netgear r8000”路由器的品牌和型号。某个地方的某人将编写一份指南进行解释。

SSH文件上传

为了将脚本放到Raspberry Pi上,可以使用SSH客户端,例如WinSCP,FileZilla或MobaXterm。有两种技术。

方法1– Upload to Pi

将下面描述的两个脚本文件下载到您的PC。编辑userinit.sh并添加您的Pushover键。然后使用SSH客户端上传到Raspberry Pi。

方法二–下载直接到Pi

使用SSH或提供命令行界面的客户端连接到Raspberry Pi。导航到适当的目录,并使用curl命令直接从BitBucket下载脚本文件。使用nano编辑userinit.sh并添加您的Pushover键。

Bash脚本– 用户init.sh

要使MotionEyeOS在启动时运行一些自定义命令,您需要将userinit.sh文件放入/ data / etc /目录。这是一个内置功能,可以用于许多其他目的。

用户="replace_me_with_your_user_key"
token="replace_me_with_your_api_token"
port="40001"
sleep 15
ip=$(curl -s //api.ipify.org)
ip="$ip:$port"
python /data/pushover_boot.py $ip $user $token > / var / log / pushover &

那里’s无需在文件开头添加shebang(即#!/ bin / sh),也无需使其可执行。

您可以找到示例的副本 用户init.sh 在我的BitBucket存储库中。

如果使用命令行,则可以使用以下命令导航到正确的目录:

cd /data/etc

然后可以使用“curl” command:

卷曲 //bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/motionEyeOS/userinit.sh --output 用户init.sh

确保此脚本以/ data / etc目录结尾。

如果使用命令行,则可以编辑内容以使用nano添加您的Pushover键:

nano 用户init.sh

使用CTRL-X,Y,ENTER保存更改并返回命令行。

注意 : 更改“user” and “token” variables with 您的 own 用户 and api 代币s. If you don’t do this it 将不会 工作。

蟒蛇脚本– pushover_boot.py

系统启动时“userinit.sh”脚本将等待15秒钟,使用ipify.org服务获取互联网IP地址,然后运行“pushover_boot.py” script. The “pushover_boot.py”脚本应放在/ data /目录中。

This script sends the 代币s, title, message and URL to include in the message to Pushover. If successful the notification will be sent to 您的 phone and will appear in the app.

您可以找到的副本 pushover_boot.py 在我的BitBucket存储库中。

如果使用命令行,则可以使用以下命令导航到正确的目录:

cd /data/

然后可以使用“curl” command:

卷曲 //bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/motionEyeOS/pushover_boot.py --output pushover_boot.py

该脚本必须位于/ data /目录中!

记录中

任何“print”Python脚本中的语句将被定向到“/var/log/pushover”文件。当系统启动时,您可以使用以下命令查看此文件的内容:

cat / var / log / pushover

At the moment it just 打印s the notification title but you could enhance the 蟒蛇 script to 打印 more detailed information and maybe a time-stamp.

故障排除

为了使该机制起作用,需要正确设置所有内容。如果您错了一步,那可能根本就行不通。这是要检查的一些事情:

  • 您的MotionEyeOS系统应该已启动并正在运行,并且Web界面在本地网络上可用。
  • 您应该拥有一个已安装移动应用程序的有效Pushover帐户。
  • 在Pushover中,您应该创建一个应用程序,它将为您提供“API Token/Key”.
  • 脚本pushover_boot.py应该存在于/ data /中
  • pushover_boot.py应该匹配 我的BitBucket存储库中的脚本 究竟。
  • The script 用户init.sh should exist  in /data/etc/
  • 用户init.sh should match 我的BitBucket存储库中的脚本 准确,但应使用 您的 Pushover 用户 key, api key and Port number.
  • 您的路由器应将userinit.sh中使用的传入端口号映射到“HTML Port”在MotionEyeOS中定义“Expert Settings”.
分享。

2条留言

发表评论

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.