AWS IoT+樹莓派 打造動(dòng)態(tài)監(jiān)控(1)

副標(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)郵件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容