什么是终极玩法?
可能很多人买了树莓派只是装了个系统,就放在家里吃灰了。
我之前也只是简单的装个 shairplay 拿它来当 airplay 的 server,用iPhone 控制它放音乐。
前一段在 name.com 买了个域名,修改 A 记录的设置特别快(几乎秒生效)。
而且发现住处的电信宽带是有公网 IP 的,然后决定给树莓派绑个域名,这样就可以在任何能上网的地方访问它了。
然后你就可以在树莓派上装各种传感器、摄像头、红外遥控,并在任何地方获取到传感器的数据,或者遥控操作家里的各种电器。
今天先讲第一步:搭建平台
需要准备的东西
- 树莓派(装好 raspbian 系统)
- 自己的域名
- 有公网IP的宽带和能设置DMZ的路由器
具体方法
设置路由器
进入路由器的设置页面,设置 DMZ 指向内网树莓派所用的IP地址,这样树莓派就可以暴露给外网了。设置DNS
去域名服务商哪里添加一条A记录,指向路由器的共网IP(可以在路由器的设置页看到)-
上面的设置生效后,你已经可以从公网访问你的树莓派了。为了防止IP地址变化我在树莓派上用crontab每小时跑一次下面的脚本。作用是当公网IP改变时向我的邮箱发邮件。
checkIP.sh 内容:
#!/bin/bash IP=`wget -q -O - http://www.biranchi.com/ip.php` SCRIPTSHOME=$(dirname $0) IPLOG=$SCRIPTSHOME/last.ip source $SCRIPTSHOME/checkIP.conf SUBJECT='IP Address' DEPS=`which sendemail` if [[ $DEPS = "" ]]; then echo "The program 'sendemail' is currently not installed. You can install it by typing:" echo "sudo apt-get install sendemail" exit 1; fi if [ ! -f "$IPLOG" ]; then touch $IPLOG fi LASTIP=`cat $IPLOG` if [[ "$LASTIP" != "$IP" ]]; then M="Current IP $IP was $LASTIP" echo $M echo $IP > $IPLOG sendemail -u $SUBJECT -s $SMTP -t $TO -f $FROM -m $M -xu $USERNAME -xp $PASSWORD -o tls=yes else echo "Current IP $IP didn't change" fi exit 0
同级目录下还需要一个 checkIP.conf 文件:
#SMTP Config SMTP=smtp.qq.com FROM=integ@integ.me USERNAME=integ@integ.me PASSWORD=XXXXXX #Send email to TO=812797963@qq.com
然后在crontab里加一个每小时执行一次的任务:
$ crontab -e #添加每小时一次的任务 0 * * * * /home/pi/checkIP.sh
然后当你的邮箱收到改变IP的通知时,去域名商那里改下IP。
通过上面的努力,我们成功把树莓派变成了能在公网访问到的服务器。
恭喜你,平台搭建到此已成功结束,下一篇会讲如何用树莓派和摄像头做些好玩的东西。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。