概述
树莓派利用Instapush服务推送信息到手机
作者:半点闲
时间:2015-12-18 9:11
博客:blog.csdn.net/cg_i
邮箱:b_dx@sohu.com
关键字:树莓派,instapush,ifconfig,grep,sed,shell
背景
玩树莓派有一段时间了。平时通过PL2303串口线联接上去进行操作,我购买了个RTL8188CUS USB的无线网卡给它用于联网。PL2303串口线提供了电源输出接口,树莓派官方文档也声明支持串口供电。实际使用发现串口供电能加电启动系统,确无法加电驱动USB无线网卡。所以,只将PL2303的数据线联接到树莓派上用于通信,再单独用一根MiniUsb电源线给其供电。
像我这种有轻度洁癖的人,看着需要两根链接线而使用的树莓派,着实有些别扭。树莓派系统一但配置好后,完全可以通过SSH登录上去远程进行一些操作,而我办公室里联网的设备较多,WIFI路由是通过DHCP服务,为大家动态分配IP,每次联上网络分配的IP都不相同,这就为SSH登上树莓派带来不便(手里没有路由管理密码,也不能每次都扫描一下所有网络设备吧),在多个已知的WIFI网络里切换使用更是如此。
我使用了一个名为Instapush的免费推送服务。Instapush在iOS和Android上有免费的APP,而且这个平台上也有一个易于使用的REST API供软件开发者使用。这里每当树莓派启动正确连上WIFI后,就会将WIFI的ESSID名及路由器分配到的IP信息推送到手机上,方便了通过SSH远程登录操作树莓派。下面将这个过程记录并提供给大家,我不是树莓派的专家,我写的代码也不是很简洁,而且可能还有其它更好的办法,我个人很乐意接受建设性的批评和建议。如果有任何改进的建议,请在评论栏中告诉我。
(图1通过串口与树莓派通信)
配置树莓派发送推送消息需要完成的
1.在Instapush上建立推送服务,并安装移动APP。
2.编写Shell代码。
3.测试,获取推送通知。
4.配置开机执行代码。
在Instapush上建立推送服务,并安装移动APP
1.首先,在https://instapush.im/注册并登陆。
2.下载移动APP(iOS版,Android版)。
3.登陆到APP上,使用你在网站上注册的账户即可。
4.在APP上登陆后,你会发现控制面板中已经显示你的设备已连接到Instapush的账户上了。去这里查看https://instapush.im/dashboard。
5.然后点击设备标签。我有两台设备都连接到了Instapush的账户上,如图2。
(图2 instapush上我的设备)
6.接下来,点击APP标签。然后选择添加应用。
7.为你的应用选择一个名称,然后点击Add。我把应用命名为“rpi-connection”。
8.添加了你的应用之后,你会进入事件界面。点击添加事件。
9.为你的事件选择一个标题。事件名中不要加入任何空格。我用的是“NetworkingAlert”。
10.你需要添加至少一个tracker。这基本上就是一个用在推送通知中的变量。我给它命名为“message”。
11.最后,输入你想要推送的消息内容。我的Shell代码将变量{message}传给Instapush服务,因此我建议你只把{message}添加到Message字段即可。如图3。
(图3 添加的事件)
12.点击Basic Info标签,记下Application ID和Application Secret fields这两个字段的内容。在编写Shell代码时需要用到这些。当然,我把我的ID做了些处理。如图4。
(图4 我的ID)
直接给出编写Shell代码
#!/bin/sh
###################################################################################################
# 文件:puship.sh
# 功能:获取指定接口IP并推送到instapush
# 目地:树莓派自身不带显示器,通过开机执行此程序,将本机IP信息推送到手机上,#便于使用SSH登录到树莓派进行远程操作。
# 作者:高玉涵
# 时间:2015/12/17
# 平台:raspberrypi
###################################################################################################
if [ "$1= "" ]
then
echo"$1:error fetching interface information: Device not found"
exit
fi
ip=$(ifconfig $1|grep -o 'inetaddr:[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'|sed 's/inetaddr://')
if [ -z $ip ]
then
echo"Not Network!"
exit
fi
#获取WIFI SSID名
ssid=$(iwconfig $1|grep -o '".*s'|sed 's/"//g'|sed 's/s//g')
#HTTP状态码非200,sleep 10秒后重试,成功退出循环
until curl -X POST
-H "x-instapush-appid:xxxxxx你的IDxxxxxx"
-H "x-instapush-appsecret:xxxxxx你的IDxxxx"
-H "Content-Type:application/json"
-d '{"event":"NetworkingAlert","trackers":{"message":"'$ssid-$ip'"}}'
https://api.instapush.im/v1/post | grep-o '200'
do
sleep10
done
上面的代码比较简单的(为了少费脑子。获取ESSID名是一处硬编码,有兴趣的朋友可以自已完善并给我一份哈,呵呵),相信大家理解起来应该是没有难度的,大家也可以参见官方开发文档https://instapush.im/developer/rest。
测试,获取推送通知
登录到树莓派,在$提示符下执行脚本
$puship.sh wlan0
程序执行后。会将连接WIFI的ESSID名和分配的IP推送到你的手机上。如图5。
(图5我接收的推送消息)
配置开机执行代码
登录到树莓派,并输入以下命令
$cd /etc
$sudo vi rc.local
在exit0行之上添加脚本的执行路径,保存退出。如图6。
(图6 我的rc.local)
至此,每次树莓派开机时,只要它身处在一个已知的WIFI环境里,手机就将获取到当前连接的WIFI名称及分配到的IP信息,便于你通过SSH登录使用它。当然了,你也可以发挥你的想象,将你感兴趣的信息推送到你的手机上。最后,这就是工具论:有了一点点正确的知识,你就可以做出任何东西来。
最后
以上就是飞快魔镜为你收集整理的树莓派利用Instapush服务推送信息到手机的全部内容,希望文章能够帮你解决树莓派利用Instapush服务推送信息到手机所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复