AWS IoT+树莓派 打造动态监控(1)

副标题:AWS IoT设定手顺和树莓派mosquitto安装

看到AWS登录信用卡后可以免费使用1年的消息,正好手头有个树莓派3,看看能不能连动做点好玩的东西。

下面内容就是我初次使用AWS的云服务IoT,做了一个动态监控并邮件报警的小系统。

场景

树莓派作为一个消耗电力极少的微型计算机,可以作为很好的长时运行服务器。当然也包括监控用途。我想定的场景是,利用树莓派和USB摄像头,做成一个监控摄像头。如果监控的范围内有变动的话,截图上传到GoogleDrive,将截图地址发送给指定的Gmail邮箱。

需要有的硬件

  • 树莓派 3B
  • 作业用Macbook/PC
  • USB摄像头
    • 我使用的罗技 C370 USB摄像头。免安装驱动。最好买官方验证过的摄像头,可以绕过很多坑。
    • 下面的手顺到今天还没有用到USB摄像头,可以先提前准备和测试。

1 整体概念

AWS IoT+树莓派 打造动态监控(1)_第1张图片

这篇文章里实现的是 mosquitto→AWS→Gmail(红框中内容)的流程。

AWS IoT流程概念图:下面按照这个流程图设定AWS。

AWS IoT+树莓派 打造动态监控(1)_第2张图片

2 AWS IoT配置

准备工作

注册AWS帐号

  • 这个帐号跟amazon购物用的帐号不通用,请另外申请。注意,需要绑定信用卡。

正式作业

2-0 选择对应的服务。图标和名称如下
2-1 进入IoT设置页面。
AWS IoT+树莓派 打造动态监控(1)_第3张图片

AWS IoT+树莓派 打造动态监控(1)_第4张图片

AWS IoT+树莓派 打造动态监控(1)_第5张图片

※ 类型(type)暂时无视,不需要创建。

2-2 创建规则
AWS IoT+树莓派 打造动态监控(1)_第6张图片

AWS IoT+树莓派 打造动态监控(1)_第7张图片

点击 Add action创建规则对应的反应事件

2-3 创建规则对应的反应事件

这里做成发送通知邮件。


AWS IoT+树莓派 打造动态监控(1)_第8张图片

AWS IoT+树莓派 打造动态监控(1)_第9张图片

在下面页面登记MQTT需要的主题(Topic)和订阅者列表(Subscriptions)。


AWS IoT+树莓派 打造动态监控(1)_第10张图片

创建主题
AWS IoT+树莓派 打造动态监控(1)_第11张图片

创建完成的页面
AWS IoT+树莓派 打造动态监控(1)_第12张图片

点击 Public to topic 和 Create Subscription按钮,开始登记收听端列表(只创建一个测试用)


AWS IoT+树莓派 打造动态监控(1)_第13张图片

在弹出窗口中输入信息


AWS IoT+树莓派 打造动态监控(1)_第14张图片

邮箱会收到验证用邮件,点击链接通过验证


AWS IoT+树莓派 打造动态监控(1)_第15张图片

验证后,就变成下面的状态


AWS IoT+树莓派 打造动态监控(1)_第16张图片

此时进入之前规则制定窗口(主题创建的网页可以关掉),选择对应选项后,点击 Add action按钮


AWS IoT+树莓派 打造动态监控(1)_第17张图片

在下面页面,点击Create rule,完成创建


AWS IoT+树莓派 打造动态监控(1)_第18张图片

创建完成如下图


AWS IoT+树莓派 打造动态监控(1)_第19张图片
2-4 创建策略
  • 可以简单理解成,把事务,规则,主题什么的配置在同一个文件中用于管理的一个方式。
  • 需要注意的是,创建完成后,需要跟保证安全的CA证书,事务,主题绑定。
    点击 Policies和Create a policy


    AWS IoT+树莓派 打造动态监控(1)_第20张图片

    AWS IoT+树莓派 打造动态监控(1)_第21张图片

创建后的策略

AWS IoT+树莓派 打造动态监控(1)_第22张图片
2-5 安全对策

AWS平台发行CA证书以及密钥,保证通信的安全性。
按照下图选择1 Certificates和点击2 Create a certificate 按钮


AWS IoT+树莓派 打造动态监控(1)_第23张图片

点击Create certificate 按钮


AWS IoT+树莓派 打造动态监控(1)_第24张图片

生成后的密钥下载页面。先下载保存在本地,最终会上传到Raspberry pi上。
AWS IoT+树莓派 打造动态监控(1)_第25张图片

证书情报查看页面,但是已经生成的密钥不能再检索。
AWS IoT+树莓派 打造动态监控(1)_第26张图片

证书生成完成后,就需要绑定事务和策略
首先选择 Attach policy


AWS IoT+树莓派 打造动态监控(1)_第27张图片

AWS IoT+树莓派 打造动态监控(1)_第28张图片

CA证书用同样的方式进行绑定。
接下来就是激活证书,使其可用。
点击下面页面中 Activate


AWS IoT+树莓派 打造动态监控(1)_第29张图片

提示已被激活
AWS IoT+树莓派 打造动态监控(1)_第30张图片

3 Raspberry Pi配置

Raspberry Pi 和AWS IoT之间的通信采用MQTT协议,请google自行学习。或者参照我的另一篇MQTT协议理解。

准备工作

Raspberry Pi 3 提前安装好raspbain系统。
开通SSH或者VNC,以便通过自己的macboook/PC操控

Raspberry Pi 设置

3-1 执行下面命令,按照MQTT客户端。

$ sudo apt-get install -y mosquitto-clients

3-2 做成作业目录。用来保存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下载
执行下面命令,分别把3个证书上传到aws-iot中

scp 本地文件路径 [email protected]:/home/pi/aws-iot

3-4 执行pub命令,测试

mosquitto_pub --cafile rootCA.pem
--cert 发行证书前半部分-certificate.pem.crt
--key 发行key前半部分-private.pem.key
-h 服务地址前半部分.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的地址,此时内容可以随意。
★★★★★★★★★★★★

mosquitto_pub执行是坑最多最多的地方。以下几点需要注意!

  • 要保证命令执行位置在aws-iot

  • 确保mosquitto是最新。

    • 现在最新版本是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....发生的时候

    • 确保AWS上的 事务,CA,策略 是绑定OK的,且CA是激活状态。
    • 确保-h参数的主题名称和策略中的Resource匹配。最简单办法是Resource设置成* 。
  • 降级mosquitto(估计用不着,网上找的解决方案记录一下)

查询已经安装的程序,顺便记住程序全名
apt list mosquitto*

删除对应程序
apt-get –purge remove XXXX(第一步里面的名称)

重启系统

安装旧版本程序
然后下载代码,自己编译

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位置

创建链接

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1

更新动态链接库

sudo ldconfig
【5】make: g++:命令未找到
【解决方法】
安装g++编译器
sudo apt-get install g++

★★★★★★★★★★★★

3-5 测试结果(gmail邮件)
AWS IoT+树莓派 打造动态监控(1)_第31张图片

到这一步为止,Raspberry Pi→ AWS IoT → SNS 已经疏通。

下一步

使用motion程序,进行动态监控和触发警报邮件

你可能感兴趣的:(AWS IoT+树莓派 打造动态监控(1))