AWS IOT接入及测试

AWS IoT 能够通过 MQTT 和 HTTP 在连接 Internet 的设备 (如传感器、执行器、嵌入式设备或智能设备) 和 AWS 云之间实现安全的双向通信。

device端:nodejs (aws-iot-device-sdk)
client端:aws iot 控制台mqtt客户端

1 AWS IOT基本概念

1.1 AWS IoT组件(功能)

设备网关:使设备能够安全高效地与 AWS IoT 进行通信。
消息代理:提供安全机制以供设备和 AWS IoT 应用程序用于相互发布和接收消息。用于通信
规则引擎:提供消息处理及与其他 AWS 服务进行集成的功能。用于触发其他AWS服务。
Device Shadow 服务:在 AWS 云中提供您的设备的永久性表示形式。我们一般通过shadow间接控制设备
任务服务:允许您定义一组远程操作,这些操作发送到一个或多个连接到 AWS IoT 的设备并在这些设备上执行。

1.2 mqtt协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上

2 AWS IOT设备注册

进入AWS IOT后台

2.1 创建事物

注册事物-创建单个事物-输入名称(该名称会被阴影操作使用)-类型和组均可以暂时不选。
这里写图片描述
然后选择一键创建证书
这里写图片描述
下载相应证书,点击激活,点击完成。设备创建完成后,这样就回到了控制台了。

2.2 附加策略

刚才创建的证书现在并没有相应的权限我们需要为刚才创建的证书附加相应的策略(权限策略)。
这里写图片描述
输入策略名并点击高级模式
这里写图片描述
将下面的配置复制进去,点击创建

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "iot:Publish",
        "iot:Subscribe",
        "iot:Connect",
        "iot:Receive"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ]
}

回到控制台点击安全-证书
这里写图片描述
附加策略将刚才创建的策略名附加进去既可以。
到这里我们一个IOT设备就注册好了。

3 测试

3.1 下载aws-iot-device-sdk包

npm install aws-iot-device-sdk

3.2 将证书放置在该目录下

pem.crt private.pem.key root-CA.crt放到目录下

3.3 新建文件并复制下面这段code

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}`);
});

3.4 配置参数

keyPath: 私匙路径,
caPath: CA文件路径,
certPath: 证书路径,
clientId: 事物ARN 在AWSIOT 后台查看,
host: xxxxx.iot.ap-northeast-1.amazonaws.com
Host 终端节点,可在AWS IOT 后台查看
这里写图片描述

3.5 测试

上面那段device测试code实现功能:
Device 端订阅了 server这个topic的消息。
AWS MQTT客户端 端订阅了 device 这个topic的消息。
当mqtt客户端发起topic的push, device即会收到该消息,并发起 topic 为device的push,mqtt客户端也会收到来自device的消息

测试结果:
这里写图片描述
device端收到信息且,控制台收到返回消息,说明AWS IOT设备已经连入IOT网络。

猜你喜欢

转载自blog.csdn.net/m0_37263637/article/details/80989986
AWS