随着物联网(IoT)技术的快速发展,越来越多的开发者开始使用Intel® Edison和Intel® Galileo这样的开发板来创建创新的解决方案。本文将为提供一个详细的步骤指南,展示如何使用MQTT协议将Intel® Edison开发板连接到Amazon Web Services (AWS) IoT。
在开始之前,需要在AWS官网上创建一个账户。如果还没有账户,请访问进行注册。
接下来,需要安装AWS命令行接口(CLI)。请按照的指引进行安装。
在Windows操作系统中,为了能够方便地使用AWS CLI,需要将其路径添加到系统的环境变量中。以下是具体步骤:
为了在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 describe-endpoint
执行后,将看到端点的输出结果。
从计算机上,运行以下命令:
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服务器所需的所有信息:
当在Intel® Edison开发板上运行C++代码时,需要在Eclipse中设置MQTT客户端参数。以下是具体步骤:
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/"
}