AWS IoT 能够通过 MQTT 和 HTTP 在连接 Internet 的设备 (如传感器、执行器、嵌入式设备或智能设备) 和 AWS 云之间实现安全的双向通信。
device端:nodejs (aws-iot-device-sdk)
client端:aws iot 控制台mqtt客户端
设备网关:使设备能够安全高效地与 AWS IoT 进行通信。
消息代理:提供安全机制以供设备和 AWS IoT 应用程序用于相互发布和接收消息。用于通信
规则引擎:提供消息处理及与其他 AWS 服务进行集成的功能。用于触发其他AWS服务。
Device Shadow 服务:在 AWS 云中提供您的设备的永久性表示形式。我们一般通过shadow间接控制设备
任务服务:允许您定义一组远程操作,这些操作发送到一个或多个连接到 AWS IoT 的设备并在这些设备上执行。
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上
进入AWS IOT后台
注册事物-创建单个事物-输入名称(该名称会被阴影操作使用)-类型和组均可以暂时不选。
然后选择一键创建证书
下载相应证书,点击激活,点击完成。设备创建完成后,这样就回到了控制台了。
刚才创建的证书现在并没有相应的权限我们需要为刚才创建的证书附加相应的策略(权限策略)。
输入策略名并点击高级模式
将下面的配置复制进去,点击创建
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"iot:Publish",
"iot:Subscribe",
"iot:Connect",
"iot:Receive"
],
"Effect": "Allow",
"Resource": [
"*"
]
}
]
}
回到控制台点击安全-证书
附加策略将刚才创建的策略名附加进去既可以。
到这里我们一个IOT设备就注册好了。
npm install aws-iot-device-sdk
pem.crt private.pem.key root-CA.crt放到目录下
var awsIot = require('aws-iot-device-sdk');
var device = awsIot.device({
keyPath: `b889270888-private.pem.key`,
caPath: 'root-CA.crt',
certPath: `b889270888-certificate.pem.crt`,
clientId: `arn:aws:iot:ap-northeast-1:xxxxxxxx:thing/test_device_tokyo`,
host: `xxxxxxx.iot.ap-northeast-1.amazonaws.com`
});
device.on('connect', function(err) {
console.log('connect');
device.subscribe(`server`);
});
device.on('message', function(topic, payload) {
console.log(topic, payload);
device.publish('device', `device say hello to server ${uid}`);
});
keyPath: 私匙路径,
caPath: CA文件路径,
certPath: 证书路径,
clientId: 事物ARN 在AWSIOT 后台查看,
host: xxxxx.iot.ap-northeast-1.amazonaws.com
Host 终端节点,可在AWS IOT 后台查看
上面那段device测试code实现功能:
Device 端订阅了 server这个topic的消息。
AWS MQTT客户端 端订阅了 device 这个topic的消息。
当mqtt客户端发起topic的push, device即会收到该消息,并发起 topic 为device的push,mqtt客户端也会收到来自device的消息