美文网首页玩转树莓派树莓派树莓派
AWS IoT+树莓派 打造动态监控(1)

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

作者: 今後次 | 来源:发表于2017-06-02 13:07 被阅读1807次

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

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

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

    场景

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

    需要有的硬件

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

    1 整体概念

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

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

    2 AWS IoT配置

    准备工作

    注册AWS帐号

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

    正式作业

    2-0 选择对应的服务。图标和名称如下
    2-1 进入IoT设置页面。



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

    2-2 创建规则


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

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

    这里做成发送通知邮件。




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



    创建主题

    创建完成的页面

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


    在弹出窗口中输入信息


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


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


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


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


    创建完成如下图


    2-4 创建策略
    • 可以简单理解成,把事务,规则,主题什么的配置在同一个文件中用于管理的一个方式。
    • 需要注意的是,创建完成后,需要跟保证安全的CA证书,事务,主题绑定。
      点击 Policies和Create a policy



    创建后的策略

    2-5 安全对策

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



    点击Create certificate 按钮



    生成后的密钥下载页面。先下载保存在本地,最终会上传到Raspberry pi上。

    证书情报查看页面,但是已经生成的密钥不能再检索。

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




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



    提示已被激活

    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 本地文件路径 pi@192.168.0.X:/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邮件)

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

    下一步

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

    相关文章

      网友评论

        本文标题:AWS IoT+树莓派 打造动态监控(1)

        本文链接:https://www.haomeiwen.com/subject/fviyfxtx.html