Intel® Edison 和 Grove IoT 入门套件,由 AWS 提供支持
主要文章:从这里开始 Grove IoT 入门套件,由 AWS 提供支持 , Intel Edison
专为专业创客、企业家和工业物联网公司设计,Intel Edison 模块通过完全开源的硬件和软件开发环境提供更简便的原型制作。它支持 Wi-Fi 和 BLE 4.0 连接。该套件包含十一个精选的 Grove 传感器和执行器,供您跟踪室内环境以及创建智能家居应用。
套件内容
特性
-
开箱即用,即插即用,无需面包板或焊接工作。
-
完全符合AWS的服务和AWS的实践。
-
为开发者和制造商提供逐步教程,以便更快地进行原型制作。
入门指南
配置您的AWS IoT服务
访问亚马逊AWS控制台,注册并登录您的账户。
1.转到仪表板,点击服务 --> AWS IoT
2.点击开始使用
3.创建新用户
4.保存用户名并下载安全凭证
5.设置附加策略为AdministratorAccess
6.创建一个物品
在这一部分,您也可以参考Beagle Bone wiki了解另一种创建物品和完成剩余任务的方法。不同之处在于Beagle Bone没有使用AWS CLI工具来获取证书。
在Intel Edison板上设置AWS IoT设备SDK
开始之前
-
确保您已运行configure_edison --setup命令来设置您的板子
-
确保您的Intel® Edison板通过本地Wi-Fi网络在线(应在configure_edison设置期间发生)
-
使用ssh登录edison控制台(使用putty或Xshell)。
安装AWS CLI
AWS CLI是从您的板子管理AWS服务的一种方式。您首先需要这个来下载SDK。
1.首先,您需要安装pip(Python包管理器):
curl https://bootstrap.pypa.io/ez_setup.py -o - | python
easy_install pip
2.接下来,使用 pip 安装 AWS CLI:
pip install awscli
注意:为了查看帮助文件("aws iot help"),您需要安装 Groff 和非 BusyBox 版本的 less。
3.对于 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 ~
4.对于 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 ~
5.为了确保所有内容都已正确安装,运行 iot 帮助文件:
aws iot help
获取 AWS 凭证:
此时,您应该已经安装了 AWS CLI。使用您之前下载的访问 ID 和密钥,配置 AWS 并输入 ID 和密钥:
aws configure
1.首先创建一个文件夹来存储您的证书:
mkdir aws_certs
cd aws_certs
2.使用 openssl 生成私钥:
openssl genrsa -out privateKey.pem 2048
openssl req -new -key privateKey.pem -out cert.csr
3.填写您的信息到相应字段中。
4.运行以下命令来激活证书:
aws iot create-certificate-from-csr --certificate-signing-request file://cert.csr --set-as-active > certOutput.txt
5.运行以下命令将证书保存到 cert.pem 文件中:
aws iot describe-certificate --certificate-id <certificate ID> --output text --query certificateDescription.certificatePem > cert.pem
注意:将 <certificate ID> 替换为存储在 certOutput.txt 文件中 "certificateId" 字段的 ID。要查看文件,请输入:more certOutput.txt
6.为 AWS IoT SDK 创建 Json 策略文档:
- 复制以下文本(ctrl-c):
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action":["iot:*"],
"Resource": ["*"]
}]
}
- 进入 vi policy.doc,按 a 键并右键粘贴文本
- 按 Escape 键并输入 :wq 保存并退出
7.首先输入:
aws iot create-policy --policy-name PubSubToAnyTopic --policy-document file://policy.doc
注意:策略名称可以是任何名称。
8.之后,您可以在AWS控制台上看到一个策略和一个证书。
9.然后使用以下命令将策略附加到证书:
aws iot attach-principal-policy --principal <principal arn> --policy-name "PubSubToAnyTopic"
注意:将 <principal arn> 替换为存储在 outputCert.txt 文件中 "certifcateArn" 的值。
10.您应该看到您的证书已附加到您的策略。
使用 MQTT 订阅和发布到 AWS
- 现在证书已经准备就绪,我们可以使用 MQTT 订阅和发布到云端。
- 首先获取根 CA pem 文件:
curl https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem > rootCA.pem
使用 nodejs 编写您的应用程序
1.创建一个 nodejs 项目
cd ~
mkdir aws_nodejs && cd aws_nodejs
npm init
npm install --save aws-iot-device-sdk
touch main.js
2.复制并保存演示代码到 main.js
vi main.js
// 将 Grove - 继电器插入底板扩展板的 D2 端口
// 将 Grove - 温湿度传感器(高精度)插入 i2c 端口
var sensor1 = require('jsupm_th02');
var th02 = new sensor1.TH02();
var sensor2 = require('jsupm_grove');
var relay = new sensor2.GroveRelay(2);
// 模拟设备值
var temp = 24.00;
var humi = 50;
var relayState = false;
var reported_state = {"Temperature":temp, "Humidity": humi, "RelayState": relayState};
//
// 从 thingShadows.update() 操作返回的客户端令牌值//app deps
const thingShadow = require('./node_modules/aws-iot-device-sdk/thing');// 将 Grove - 继电器插入底板扩展板的 D2 端口
// 将 Grove - 温湿度传感器(高精度)插入 i2c 端口
var sensor1 = require('jsupm_th02');
var th02 = new sensor1.TH02();
var sensor2 = require('jsupm_grove');
var relay = new sensor2.GroveRelay(2);
var awsIot = require('aws-iot-device-sdk');
var thingShadows = awsIot.thingShadow({
keyPath: '/home/root/aws_certs/privateKey.pem',
certPath: '/home/root/aws_certs/cert.pem',
caPath: '/home/root/aws_certs/rootCA.pem',
clientId: 'myAwsClientId',
region: 'us-east-1'
});
// 模拟设备值
var temp = 24.00;
var humi = 50;
var relayState = false;
//
// 从 thingShadows.update() 操作返回的客户端令牌值
//
var clientTokenUpdate;
var thingName = "EdisonDemo";
thingShadows.on('connect', function() {
thingShadows.register(thingName);
console.log(thingName + ' registering...');
setInterval(function(){
readSensor(sendData);
}, 5000);
});
thingShadows.on('status', function(thingName, stat, clientToken, stateObject) {
console.log(' received '+stat+' on '+thingName+': '+ JSON.stringify(stateObject));
//
// 这些事件报告 update()、get() 和 delete() 调用的状态。
// 与事件关联的 clientToken 值将具有与之前调用 get()、
// update() 或 delete() 时返回的相同值。使用状态事件来跟踪
// 影子操作的状态。
//
});
thingShadows.on('delta', function(thingName, stateObject) {
console.log(' received delta on '+thingName+': '+ JSON.stringify(stateObject));
if(stateObject.state.RelayState == true){
relay.on();
console.log('Relay is on.');
}
else if(stateObject.state.RelayState == false) {
relay.off();
console.log('Relay is off.');
}
});
thingShadows.on('timeout', function(thingName, clientToken) {
console.log(' received timeout on '+thingName + ' with token: '+ clientToken);
//
// 如果影子操作超时,您将收到这些事件之一。
// 与事件关联的 clientToken 值将具有与之前调用
// get()、update() 或 delete() 时返回的相同值。
//
});
function readSensor(callback){
temp = th02.getTemperature();
humi = th02.getHumidity();
relayState = relay.isOn();
callback();
};
function sendData(){
var reported_state = {"Temperature":temp, "Humidity": humi, "RelayState": relayState};
var relayTH02State = {"state":{desired: reported_state}}; // 使用 desired 属性可以接收 delta
// 更多信息请参考 http://docs.aws.amazon.com/iot/latest/developerguide/thing-shadow-mqtt.html#update-pub-sub-message
clientTokenUpdate = thingShadows.update(thingName, relayTH02State);
if (clientTokenUpdate === null)
{
console.log('update shadow failed, operation still in progress');
}
};
3.启动 nodejs 应用程序
-
按照下图连接 Grove 传感器
-
继电器 - D2
-
温度传感器 - i2c 端口
node main.js
4.在 AWS 控制台查看数据
5.更新影子以改变继电器状态
6.如果上传成功,Grove - 继电器将会打开。
资源
-
[PDF] AWS IoT 开发者指南
-
[Wiki] Grove IoT 入门套件(由 AWS 驱动)主页面
技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。