在 Intel® Edison 板上设置 AWS IoT 设备 SDK
本教程将引导您完成安装 AWS IoT SDK 的过程,并展示如何进行基本的 MQTT 调用。
获取新的 Intel® IoT Developer Kit,这是一个完整的硬件和软件解决方案,使开发人员能够使用 Intel® Galileo 和 Intel® Edison 主板创建令人兴奋的新解决方案。请访问 Intel® 物联网开发者专区。
本教程将引导您完成安装 AWS IoT SDK 的过程,并展示如何进行基本的 MQTT 调用。在开始连接您的 Intel® Edison 主板之前,您需要确保已安装最新的操作系统映像。为此,请按照您主机机器的入门说明进行操作:Windows、Mac 或 Linux。按照标准的 Intel® Edison 设置说明操作后,您需要从您的计算机建立与设备的串行连接。一旦与您的 Intel® Edison 主板建立了串行连接(命令行),您就可以使用以下说明继续安装 AWS IoT SDK。
开始之前…
- 确保您已运行 configure_edison --setup 命令来设置您的主板
- 确保您的 Intel® Edison 主板已通过本地 Wi-Fi 网络在线(应该在 configure_edison 设置过程中发生)
安装 AWS CLI
AWS CLI 是一种从您的主板管理 AWS 服务的方式。您首先需要它来下载 SDK。
首先,您需要安装 pip(Python 包管理器)
curl https://bootstrap.pypa.io/ez_setup.py -o - | python
easy_install pip
接下来,使用 pip 安装 AWS CLI
pip install awscli
注意:为了查看帮助文件(“aws iot help”),您需要安装 Groff 和一个非 BusyBox 版本的 less。
对于 Groff
wget http://ftp.gnu.org/gnu/groff/groff-1.22.3.tar.gz
tar -zxvf groff-1.22.3.tar.gz
cd groff-1.22.3
./configure
make
make install
export PATH=$PATH:/usr/local/bin/
cd ~
对于 Less
首先重命名旧版本的 less
mv /usr/bin/less /usr/bin/less-OLD
然后安装新版本的 less
wget http://www.greenwoodsoftware.com/less/less-458.zip
unzip less-458.zip
cd less-458
chmod 777 /*
./configure
make
make install
cd ~
要确保所有内容都已正确安装,请运行 iot help 文件
aws iot help
获取 AWS 凭证
此时,您应该已安装 AWS CLI。按照 http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html#cli-signup 中的说明,从 AWS 控制台创建新用户并获取凭证。一旦您有了访问 ID 和密钥,就可以使用以下命令配置 AWS 并输入 ID 和密钥:
aws configure
注意:对于默认区域,您必须输入 us-east-1 才能配置 AWS IoT。默认格式可以保留为 json。
为了获得下载 AWS IoT 工具的权限,您需要将管理员帐户策略与您创建的用户关联。为此,请转到 IAM 控制台中的用户面板,选择您创建的用户,附加策略,然后选择管理员帐户。
生成证书
首先创建一个文件夹来存储您的证书
mkdir aws_certs
cd aws_certs
使用 openssl 生成私钥
openssl genrsa -out privateKey.pem 2048
openssl req -new -key privateKey.pem -out cert.csr
填写您的信息。
运行以下命令来激活证书
aws iot --endpoint-url https://i.us-east-1.pb.iot.amazonaws.com create-certificate --certificate-signing-request file://cert.csr --set-as-active > certOutput.txt
运行以下命令将证书保存到 cert.pem 文件中
aws iot --endpoint-url https://i.us-east-1.pb.iot.amazonaws.com describe-certificate --certificate-id <certificate ID> --output text --query certificateDescription.certificatePem > cert.pem
注意:将 <certificate ID> 替换为存储在 certOutput.txt 文件“certificateId”字段中的 ID。要查看文件,请输入:more certOutput.txt
为 AWS IoT SDK 创建一个 Json 策略文档
复制以下文本(ctrl-c)
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action":["iot:*"],
"Resource": ["*"]
}]
}
输入 vi policy.doc ,按 a 键,然后右键单击以粘贴文本
按 Escape 键,然后输入 :wq 保存并退出
首先输入
aws iot --endpoint-url https://i.us-east-1.pb.iot.amazonaws.com create-policy --policy-name PubSubToAnyTopic --policy-document file://policy.doc
然后使用以下命令将策略附加到证书
aws iot --endpoint-url https://i.us-east-1.pb.iot.amazonaws.com attach-principal-policy --principal-arn <principal arn> --policy-name "PubSubToAnyTopic"
注意:将 <principal arn> 替换为 outputCert.txt 文件中“certifcateArn”字段的值。
使用 MQTT 订阅和发布到 AWS
现在证书已准备就绪,我们可以使用 MQTT 在云端进行订阅和发布。
首先获取根 CA pem 文件
curl https://www.symantec.com/cerisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem > rootCA.pem
使用 moquitto 客户端订阅一个主题
mosquitto_sub --cafile rootCA.pem --cert certs\cert.pem --
key privateKey.pem -h g.us-east-1.pb.iot.amazonaws.com -p 8883
-q 1 -d -t <topic> -i <client_id>
注意:将 <topic> 和 <client_id> 替换为您希望订阅的主题和您希望拥有的 ID。
使用 mosquitto 发布到一个主题
mosquitto_pub --cafile rootCA.pem --cert certs\cert.pem --
key privateKey.pem -h g.us-east-1.pb.iot.amazonaws.com -p 8883
-q 1 -d -t <topic> -i <client_id> -m <"message">
注意:将 <topic>、<client_id> 和 <"message"> 替换为您希望发布的主题、客户端 ID 和消息。消息必须用引号括起来。
有关展示如何在 Intel Edison 主板上的 AWS IoT SDK 中使用各种功能的教程,请参阅 https://github.com/intel-iot-devkit/aws-iot-intel