1

什么是终极玩法?

可能很多人买了树莓派只是装了个系统,就放在家里吃灰了。
我之前也只是简单的装个 shairplay 拿它来当 airplay 的 server,用iPhone 控制它放音乐。

前一段在 name.com 买了个域名,修改 A 记录的设置特别快(几乎秒生效)。
而且发现住处的电信宽带是有公网 IP 的,然后决定给树莓派绑个域名,这样就可以在任何能上网的地方访问它了。

然后你就可以在树莓派上装各种传感器、摄像头、红外遥控,并在任何地方获取到传感器的数据,或者遥控操作家里的各种电器。

今天先讲第一步:搭建平台

需要准备的东西

  1. 树莓派(装好 raspbian 系统)
  2. 自己的域名
  3. 有公网IP的宽带和能设置DMZ的路由器

具体方法

  1. 设置路由器
    进入路由器的设置页面,设置 DMZ 指向内网树莓派所用的IP地址,这样树莓派就可以暴露给外网了。

  2. 设置DNS
    去域名服务商哪里添加一条A记录,指向路由器的共网IP(可以在路由器的设置页看到)
    clipboard.png

  3. 上面的设置生效后,你已经可以从公网访问你的树莓派了。为了防止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。

通过上面的努力,我们成功把树莓派变成了能在公网访问到的服务器。

恭喜你,平台搭建到此已成功结束,下一篇会讲如何用树莓派和摄像头做些好玩的东西。


Integ
5.6k 声望295 粉丝

全栈溢出工程师,兼职拆段错误水表,代写内核紧张拉丁语情书。