博客 / 詳情

返回

樹莓派(raspberryPi)的終極玩法 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。

通過上面的努力,我們成功把樹莓派變成了能在公網訪問到的服務器。

恭喜你,平台搭建到此已成功結束,下一篇會講如何用樹莓派和攝像頭做些好玩的東西。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.