Intel® Edison与AWS IoT集成指南

随着物联网(IoT)技术的快速发展,越来越多的开发者开始使用Intel® Edison和Intel® Galileo这样的开发板来创建创新的解决方案。本文将为提供一个详细的步骤指南,展示如何使用MQTT协议将Intel® Edison开发板连接到Amazon Web Services (AWS) IoT。

AWS IoT初始设置

在开始之前,需要在AWS官网上创建一个账户。如果还没有账户,请访问进行注册。

接下来,需要安装AWS命令行接口(CLI)。请按照的指引进行安装。

在Windows操作系统中,为了能够方便地使用AWS CLI,需要将其路径添加到系统的环境变量中。以下是具体步骤:

  1. 打开控制面板,点击“系统”。
  2. 点击“高级系统设置”。
  3. 在“高级”标签页中,点击“环境变量”。
  4. 在“用户变量”区域,双击“Path”变量。
  5. 点击“新建”,添加AWS CLI安装目录的完整路径,然后点击“确定”。
  6. 在“系统变量”区域,双击“Path”变量。
  7. 如果AWS CLI安装目录没有列出,重复步骤5的操作。
  8. 在“环境变量”窗口中点击“确定”。
  9. 在“系统属性”窗口中点击“确定”。

为了在Windows上使用AWS CLI时更加方便,建议在克隆了本教程仓库的目录下执行后续步骤。例如,可以在C:\Users\me\Documents\GitHub\intel-iot-examples-mqtt\support\aws路径下操作。

通过运行以下命令来验证设置是否成功:

aws iot help

如果一切设置正确,应该能够看到类似于以下输出的结果:

创建新设备

要创建一个新的设备,可以使用以下命令:

aws iot create-thing --thing-name "edison1"

执行后,应该能够看到相应的输出结果。

获取设备列表

要列出设备,可以使用以下命令:

aws iot list-things

执行后,将看到设备列表的输出结果。

为设备获取并配置证书

首先,需要为设备配置一个证书:

aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile cert.pem --public-key-outfile publicKey.pem --private-key-outfile privateKey.pem

执行后,将看到证书创建的输出结果。

接下来,需要创建并附加一个策略:

aws iot create-policy --policy-name "PubSubToAnyTopic" --policy-document file:///intel/how-to-code-samples/docs/mqtt/aws-device-policy.json

执行后,将看到策略创建的输出结果。

然后,需要将证书附加到设备上(需要使用步骤1中获得的certificate-arn):

aws iot attach-principal-policy --principal "certificate-arn" --policy-name "PubSubToAnyTopic"

执行后,将看到证书附加到设备的输出结果。

确定AWS IoT端点

可以通过运行以下命令来获取AWS IoT的主机地址:

aws iot describe-endpoint

执行后,将看到端点的输出结果。

将证书安装到Intel® Edison开发板

从计算机上,运行以下命令:

scp -r cert.pem USERNAME@xxx.xxx.x.xxx:/home/root/.ssh scp -r publicKey.pem USERNAME@xxx.xxx.x.xxx:/home/root/.ssh scp -r privateKey.pem USERNAME@xxx.xxx.x.xxx:/home/root/.ssh

其中USERNAME@xxx.xxx.x.xxx是为开发板设置的用户名和IP地址。

在Windows系统上,将使用WinSCP来进行接下来的步骤。安装指导请参考。

使用WinSCP登录设备,并确保主机计算机位于之前运行AWS CLI命令的目录下。

将cert.pem、privateKey.pem和publicKey.pem复制到Intel® Edison开发板的/home/root目录下。

如果已经按照上述所有步骤操作,那么程序应该已经拥有了连接到MQTT服务器所需的所有信息:

  • MQTT_SERVER - 使用通过运行aws iot describe-endpoint命令获得的host值,以及ssl://(对于C++)或mqtts://协议(对于JavaScript)。
  • MQTT_CLIENTID - 使用设备名称。
  • MQTT_TOPIC - 使用devices/设备名称。
  • MQTT_CERT - 使用上述描述的设备证书文件名。
  • MQTT_KEY - 使用上述描述的设备密钥文件名。
  • MQTT_CA - 使用CA证书文件名(例如/etc/ssl/certs/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem)。

C++的额外设置

当在Intel® Edison开发板上运行C++代码时,需要在Eclipse中设置MQTT客户端参数。以下是具体步骤:

  1. 转到运行配置。
  2. 在“执行应用程序前要执行的命令”字段中,输入以下内容:
chmod 755 /tmp/; export MQTT_SERVER="ssl://:8883"; export MQTT_CLIENTID=""; export MQTT_CERT="/home/root/.ssh/cert.pem"; export MQTT_KEY="/home/root/.ssh/privateKey.pem"; export MQTT_CA="/etc/ssl/certs/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem"; export MQTT_TOPIC="devices/"

点击“应用”按钮以保存这些设置。

{ "MQTT_SERVER": "mqtts://:8883", "MQTT_CLIENTID": "", "MQTT_CERT": "/home/root/.ssh/cert.pem", "MQTT_KEY": "/home/root/.ssh/privateKey.pem", "MQTT_TOPIC": "devices/" }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485