副標題:AWS IoT設(shè)定手順和樹莓派mosquitto安裝
看到AWS登錄信用卡后可以免費使用1年的消息宽堆,正好手頭有個樹莓派3码荔,看看能不能連動做點好玩的東西谓松。
下面內(nèi)容就是我初次使用AWS的云服務(wù)IoT拴事,做了一個動態(tài)監(jiān)控并郵件報警的小系統(tǒng)。
場景
樹莓派作為一個消耗電力極少的微型計算機弓摘,可以作為很好的長時運行服務(wù)器焚鹊。當然也包括監(jiān)控用途。我想定的場景是韧献,利用樹莓派和USB攝像頭末患,做成一個監(jiān)控攝像頭。如果監(jiān)控的范圍內(nèi)有變動的話锤窑,截圖上傳到GoogleDrive璧针,將截圖地址發(fā)送給指定的Gmail郵箱。
需要有的硬件
- 樹莓派 3B
- 作業(yè)用Macbook/PC
- USB攝像頭
- 我使用的羅技 C370 USB攝像頭渊啰。免安裝驅(qū)動探橱。最好買官方驗證過的攝像頭申屹,可以繞過很多坑。
- 下面的手順到今天還沒有用到USB攝像頭隧膏,可以先提前準備和測試哗讥。
1 整體概念
這篇文章里實現(xiàn)的是 mosquitto→AWS→Gmail(紅框中內(nèi)容)的流程。
AWS IoT流程概念圖:下面按照這個流程圖設(shè)定AWS胞枕。
2 AWS IoT配置
準備工作
注冊AWS帳號
- 這個帳號跟amazon購物用的帳號不通用杆煞,請另外申請。注意腐泻,需要綁定信用卡决乎。
正式作業(yè)
2-0 選擇對應(yīng)的服務(wù)。圖標和名稱如下
2-1 進入IoT設(shè)置頁面派桩。
※ 類型(type)暫時無視瑞驱,不需要創(chuàng)建。
2-2 創(chuàng)建規(guī)則
點擊 Add action創(chuàng)建規(guī)則對應(yīng)的反應(yīng)事件
2-3 創(chuàng)建規(guī)則對應(yīng)的反應(yīng)事件
這里做成發(fā)送通知郵件窄坦。
在下面頁面登記MQTT需要的主題(Topic)和訂閱者列表(Subscriptions)。
創(chuàng)建主題
創(chuàng)建完成的頁面
點擊 Public to topic 和 Create Subscription按鈕凳寺,開始登記收聽端列表(只創(chuàng)建一個測試用)
在彈出窗口中輸入信息
郵箱會收到驗證用郵件鸭津,點擊鏈接通過驗證
驗證后,就變成下面的狀態(tài)
此時進入之前規(guī)則制定窗口(主題創(chuàng)建的網(wǎng)頁可以關(guān)掉)肠缨,選擇對應(yīng)選項后逆趋,點擊 Add action按鈕
在下面頁面,點擊Create rule晒奕,完成創(chuàng)建
創(chuàng)建完成如下圖
2-4 創(chuàng)建策略
- 可以簡單理解成闻书,把事務(wù),規(guī)則脑慧,主題什么的配置在同一個文件中用于管理的一個方式魄眉。
-
需要注意的是,創(chuàng)建完成后闷袒,需要跟保證安全的CA證書坑律,事務(wù),主題綁定囊骤。
點擊 Policies和Create a policy
創(chuàng)建后的策略
2-5 安全對策
AWS平臺發(fā)行CA證書以及密鑰晃择,保證通信的安全性。
按照下圖選擇1 Certificates和點擊2 Create a certificate 按鈕
點擊Create certificate 按鈕
生成后的密鑰下載頁面也物。先下載保存在本地宫屠,最終會上傳到Raspberry pi上。
證書情報查看頁面滑蚯,但是已經(jīng)生成的密鑰不能再檢索浪蹂。
證書生成完成后抵栈,就需要綁定事務(wù)和策略
首先選擇 Attach policy
CA證書用同樣的方式進行綁定。
接下來就是激活證書乌逐,使其可用竭讳。
點擊下面頁面中 Activate
提示已被激活
3 Raspberry Pi配置
Raspberry Pi 和AWS IoT之間的通信采用MQTT協(xié)議,請google自行學習浙踢【盥或者參照我的另一篇MQTT協(xié)議理解。
準備工作
Raspberry Pi 3 提前安裝好raspbain系統(tǒng)洛波。
開通SSH或者VNC胰舆,以便通過自己的macboook/PC操控
Raspberry Pi 設(shè)置
3-1 執(zhí)行下面命令,按照MQTT客戶端蹬挤。
$ sudo apt-get install -y mosquitto-clients
3-2 做成作業(yè)目錄缚窿。用來保存CA證書。
$ mkdir aws-iot && cd $_
3-3將本地保存的下面三個CA證書焰扳,上傳到2中生成的文件夾中倦零。
XXXX-certificate.pem.crt
XXXX-private.pem.key
rootCA.pem
※不包含XXXX-public.pem.key證書
※rootCA.pem如果丟失,可以從下面url下載
rootCA.pem下載
執(zhí)行下面命令吨悍,分別把3個證書上傳到aws-iot中
scp 本地文件路徑 pi@192.168.0.X:/home/pi/aws-iot
3-4 執(zhí)行pub命令扫茅,測試
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 "部分會換成GoogleDrive的地址育瓜,此時內(nèi)容可以隨意葫隙。
★★★★★★★★★★★★
mosquitto_pub執(zhí)行是坑最多最多的地方。以下幾點需要注意躏仇!
要保證命令執(zhí)行位置在aws-iot
-
確保mosquitto是最新恋脚。
- 現(xiàn)在最新版本是1.4.12
- 檢查mosquitto_pub版本命令
mosquitto_pub --help | grep version
- 升級mosquitto_pub版本命令方法1
>$ sudo apt-get update
>$ sudo apt-get install mosquitto-clients- 升級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ā)生的時候
- 確保AWS上的 事務(wù),CA焰手,策略 是綁定OK的糟描,且CA是激活狀態(tài)。
- 確保-h參數(shù)的主題名稱和策略中的Resource匹配书妻。最簡單辦法是Resource設(shè)置成* 蚓挤。
降級mosquitto(估計用不著,網(wǎng)上找的解決方案記錄一下)
查詢已經(jīng)安裝的程序驻子,順便記住程序全名
apt list mosquitto*刪除對應(yīng)程序
apt-get –purge remove XXXX(第一步里面的名稱)
重啟系統(tǒng)
安裝舊版本程序
然后下載代碼灿意,自己編譯1.安裝和使用注意點
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
進入目錄
cd mosquitto-1.4.5
編譯
make
安裝
sudo make install
1.2 安裝注意點
【1】編譯找不到openssl/ssl.h
【解決方法】——安裝openssl
sudo apt-get install libssl-dev
【2】編譯過程找不到ares.h
sudo apt-get install libc-ares-dev
【3】編譯過程找不到uuid/uuid.h
sudo apt-get install uuid-dev
【4】使用過程中找不到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
更新動態(tài)鏈接庫
sudo ldconfig
【5】make: g++:命令未找到
【解決方法】
安裝g++編譯器
sudo apt-get install g++
★★★★★★★★★★★★
3-5 測試結(jié)果(gmail郵件)
到這一步為止,Raspberry Pi→ AWS IoT → SNS 已經(jīng)疏通崇呵。
下一步
使用motion程序缤剧,進行動態(tài)監(jiān)控和觸發(fā)警報郵件