副標(biāo)題:AWS IoT設(shè)定手順和樹莓派mosquitto安裝
看到AWS登錄信用卡后可以免費(fèi)使用1年的消息,正好手頭有個(gè)樹莓派3,看看能不能連動(dòng)做點(diǎn)好玩的東西。
下面內(nèi)容就是我初次使用AWS的云服務(wù)IoT,做了一個(gè)動(dòng)態(tài)監(jiān)控并郵件報(bào)警的小系統(tǒng)。
場(chǎng)景
樹莓派作為一個(gè)消耗電力極少的微型計(jì)算機(jī),可以作為很好的長(zhǎng)時(shí)運(yùn)行服務(wù)器。當(dāng)然也包括監(jiān)控用途。我想定的場(chǎng)景是,利用樹莓派和USB攝像頭,做成一個(gè)監(jiān)控?cái)z像頭。如果監(jiān)控的范圍內(nèi)有變動(dòng)的話,截圖上傳到GoogleDrive,將截圖地址發(fā)送給指定的Gmail郵箱。
需要有的硬件
- 樹莓派 3B
- 作業(yè)用Macbook/PC
- USB攝像頭
- 我使用的羅技 C370 USB攝像頭。免安裝驅(qū)動(dòng)。最好買官方驗(yàn)證過(guò)的攝像頭,可以繞過(guò)很多坑。
- 下面的手順到今天還沒(méi)有用到USB攝像頭,可以先提前準(zhǔn)備和測(cè)試。
1 整體概念
這篇文章里實(shí)現(xiàn)的是 mosquitto→AWS→Gmail(紅框中內(nèi)容)的流程。
AWS IoT流程概念圖:下面按照這個(gè)流程圖設(shè)定AWS。
2 AWS IoT配置
準(zhǔn)備工作
注冊(cè)AWS帳號(hào)
- 這個(gè)帳號(hào)跟amazon購(gòu)物用的帳號(hào)不通用,請(qǐng)另外申請(qǐng)。注意,需要綁定信用卡。
正式作業(yè)
2-0 選擇對(duì)應(yīng)的服務(wù)。圖標(biāo)和名稱如下
2-1 進(jìn)入IoT設(shè)置頁(yè)面。
※ 類型(type)暫時(shí)無(wú)視,不需要?jiǎng)?chuàng)建。
2-2 創(chuàng)建規(guī)則
點(diǎn)擊 Add action創(chuàng)建規(guī)則對(duì)應(yīng)的反應(yīng)事件
2-3 創(chuàng)建規(guī)則對(duì)應(yīng)的反應(yīng)事件
這里做成發(fā)送通知郵件。
在下面頁(yè)面登記MQTT需要的主題(Topic)和訂閱者列表(Subscriptions)。
創(chuàng)建主題
創(chuàng)建完成的頁(yè)面
點(diǎn)擊 Public to topic 和 Create Subscription按鈕,開始登記收聽端列表(只創(chuàng)建一個(gè)測(cè)試用)
在彈出窗口中輸入信息
郵箱會(huì)收到驗(yàn)證用郵件,點(diǎn)擊鏈接通過(guò)驗(yàn)證
驗(yàn)證后,就變成下面的狀態(tài)
此時(shí)進(jìn)入之前規(guī)則制定窗口(主題創(chuàng)建的網(wǎng)頁(yè)可以關(guān)掉),選擇對(duì)應(yīng)選項(xiàng)后,點(diǎn)擊 Add action按鈕
在下面頁(yè)面,點(diǎn)擊Create rule,完成創(chuàng)建
創(chuàng)建完成如下圖
2-4 創(chuàng)建策略
- 可以簡(jiǎn)單理解成,把事務(wù),規(guī)則,主題什么的配置在同一個(gè)文件中用于管理的一個(gè)方式。
-
需要注意的是,創(chuàng)建完成后,需要跟保證安全的CA證書,事務(wù),主題綁定。
點(diǎn)擊 Policies和Create a policy
創(chuàng)建后的策略
2-5 安全對(duì)策
AWS平臺(tái)發(fā)行CA證書以及密鑰,保證通信的安全性。
按照下圖選擇1 Certificates和點(diǎn)擊2 Create a certificate 按鈕
點(diǎn)擊Create certificate 按鈕
生成后的密鑰下載頁(yè)面。先下載保存在本地,最終會(huì)上傳到Raspberry pi上。
證書情報(bào)查看頁(yè)面,但是已經(jīng)生成的密鑰不能再檢索。
證書生成完成后,就需要綁定事務(wù)和策略
首先選擇 Attach policy
CA證書用同樣的方式進(jìn)行綁定。
接下來(lái)就是激活證書,使其可用。
點(diǎn)擊下面頁(yè)面中 Activate
提示已被激活
3 Raspberry Pi配置
Raspberry Pi 和AWS IoT之間的通信采用MQTT協(xié)議,請(qǐng)google自行學(xué)習(xí)?;蛘邊⒄瘴业牧硪黄?a href="http://www.lxweimin.com/p/b7bbd116a02c" target="_blank">MQTT協(xié)議理解。
準(zhǔn)備工作
Raspberry Pi 3 提前安裝好raspbain系統(tǒng)。
開通SSH或者VNC,以便通過(guò)自己的macboook/PC操控
Raspberry Pi 設(shè)置
3-1 執(zhí)行下面命令,按照MQTT客戶端。
$ sudo apt-get install -y mosquitto-clients
3-2 做成作業(yè)目錄。用來(lái)保存CA證書。
$ mkdir aws-iot && cd $_
3-3將本地保存的下面三個(gè)CA證書,上傳到2中生成的文件夾中。
XXXX-certificate.pem.crt
XXXX-private.pem.key
rootCA.pem
※不包含XXXX-public.pem.key證書
※rootCA.pem如果丟失,可以從下面url下載
rootCA.pem下載
執(zhí)行下面命令,分別把3個(gè)證書上傳到aws-iot中
scp 本地文件路徑 pi@192.168.0.X:/home/pi/aws-iot
3-4 執(zhí)行pub命令,測(cè)試
mosquitto_pub --cafile rootCA.pem
--cert 發(fā)行證書前半部分-certificate.pem.crt
--key 發(fā)行key前半部分-private.pem.key
-h 服務(wù)地址前半部分.iot.ap-northeast-1.amazonaws.com
-p 8883 -q 1 -d
-t topic/sns
-m '{"message":"Raspberry Pi "}'
※ -m '{"message":"Raspberry Pi "}',最后"Raspberry Pi "部分會(huì)換成GoogleDrive的地址,此時(shí)內(nèi)容可以隨意。
★★★★★★★★★★★★
mosquitto_pub執(zhí)行是坑最多最多的地方。以下幾點(diǎn)需要注意!
要保證命令執(zhí)行位置在aws-iot
-
確保mosquitto是最新。
- 現(xiàn)在最新版本是1.4.12
- 檢查mosquitto_pub版本命令
mosquitto_pub --help | grep version
- 升級(jí)mosquitto_pub版本命令方法1
>$ sudo apt-get update
>$ sudo apt-get install mosquitto-clients- 升級(jí)mosquitto_pub版本命令方法2
GPG key安裝
$ sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
$ sudo apt-key add mosquitto-repo.gpg.key
安裝mosquitto-jessie.list
$ sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list -O /etc/apt/sources.list.d/mosquitto-jessie.list
安裝mosquitto
$ sudo apt-get update
$ sudo apt-get install mosquitto mosquitto-clients
-
Error: The connection was lost....發(fā)生的時(shí)候
- 確保AWS上的 事務(wù),CA,策略 是綁定OK的,且CA是激活狀態(tài)。
- 確保-h參數(shù)的主題名稱和策略中的Resource匹配。最簡(jiǎn)單辦法是Resource設(shè)置成* 。
降級(jí)mosquitto(估計(jì)用不著,網(wǎng)上找的解決方案記錄一下)
查詢已經(jīng)安裝的程序,順便記住程序全名
apt list mosquitto*刪除對(duì)應(yīng)程序
apt-get –purge remove XXXX(第一步里面的名稱)
重啟系統(tǒng)
安裝舊版本程序
然后下載代碼,自己編譯1.安裝和使用注意點(diǎn)
1.1 安裝
版本為mosquitto-1.4.5
下載源代碼包
wget http://mosquitto.org/files/source/mosquitto-1.4.5.tar.gz
解壓
tar zxfv mosquitto-1.4.5.tar.gz
進(jìn)入目錄
cd mosquitto-1.4.5
編譯
make
安裝
sudo make install
1.2 安裝注意點(diǎn)
【1】編譯找不到openssl/ssl.h
【解決方法】——安裝openssl
sudo apt-get install libssl-dev
【2】編譯過(guò)程找不到ares.h
sudo apt-get install libc-ares-dev
【3】編譯過(guò)程找不到uuid/uuid.h
sudo apt-get install uuid-dev
【4】使用過(guò)程中找不到libmosquitto.so.1
error while loading shared libraries: libmosquitto.so.1: cannot open >shared object file: No such file or directory
【解決方法】——修改libmosquitto.so位置創(chuàng)建鏈接
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
更新動(dòng)態(tài)鏈接庫(kù)
sudo ldconfig
【5】make: g++:命令未找到
【解決方法】
安裝g++編譯器
sudo apt-get install g++
★★★★★★★★★★★★
3-5 測(cè)試結(jié)果(gmail郵件)
到這一步為止,Raspberry Pi→ AWS IoT → SNS 已經(jīng)疏通。
下一步
使用motion程序,進(jìn)行動(dòng)態(tài)監(jiān)控和觸發(fā)警報(bào)郵件