Kit de Inicio IoT Intel® Edison y Grove Impulsado por AWS
Artículos principales: Comience aquí Kits de Inicio IoT Grove Impulsados por AWS , Intel Edison
Diseñado para makers expertos, emprendedores y empresas de IoT industrial, el módulo Intel Edison proporciona un prototipado más fácil con un entorno de desarrollo de hardware y software completamente de código abierto. Soporta conectividad Wi-Fi y BLE 4.0. Este kit contiene once sensores y actuadores Grove selectivos para que pueda monitorear el ambiente interior así como crear aplicaciones de casa inteligente.
Incluido en la Caja
Características
-
Listo para usar, conectar y funcionar, no se requiere trabajo de protoboard o soldadura.
-
Totalmente compatible con los servicios de AWS y las prácticas de AWS.
-
Tutoriales paso a paso para desarrolladores y creadores para un prototipado más rápido.
Primeros Pasos
Configure Su Servicio AWS IoT
Visite la consola de AWS de Amazon, regístrese e inicie sesión en su cuenta.
1.Vaya al panel de control, haga clic en Service --> AWS IoT
2.Haga clic en Get started
3.Crear un nuevo usuario
4.Guardar nombre de usuario y descargar Credenciales de Seguridad
5.Configuración de Adjuntar Política con AdministratorAccess
6.Crear una cosa
En esta sección también puede consultar la wiki de Beagle Bone para otra forma de crear una cosa y terminar las tareas restantes. La diferencia es que Beagle Bone no usó la herramienta CLI de AWS para Obtener Certificaciones.
Configuración del SDK de dispositivo AW IoT en la placa Intel Edison
Antes de comenzar
-
Asegúrese de haber ejecutado el comando configure_edison --setup para configurar su placa
-
Asegúrese de que su placa Intel® Edison esté en línea a través de su red Wi-Fi local (debería ocurrir durante la configuración de configure_edison)
-
Inicie sesión en la consola de Edison con ssh (Use putty o Xshell).
Instalar CLI de AWS
El CLI de AWS es una forma de administrar sus servicios de AWS desde su placa. Necesita esto primero para descargar el SDK.
1.Primero, necesita instalar pip (administrador de paquetes de Python):
curl https://bootstrap.pypa.io/ez_setup.py -o - | python
easy_install pip
2.A continuación, instala la CLI de AWS con pip:
pip install awscli
Nota: Para ver los archivos de ayuda ("aws iot help") necesitas instalar Groff y una versión no-BusyBox de less.
3.Para 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.Para Less: Primero renombra la versión antigua de less
mv /usr/bin/less /usr/bin/less-OLD
Then install the new version of 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.Para asegurarte de que todo se ha instalado correctamente, ejecuta el archivo de ayuda de iot:
aws iot help
Obtener credenciales de AWS:
En este punto, deberías tener AWS CLI instalado. Y el ID de Acceso y la Clave que descargaste antes, configura AWS e ingresa el ID y la Clave con:
aws configure
1.Primero crea una carpeta para almacenar tus certificados:
mkdir aws_certs
cd aws_certs
2.Genera una clave privada con open ssl:
openssl genrsa -out privateKey.pem 2048
openssl req -new -key privateKey.pem -out cert.csr
3.Completa los campos con tu información.
4.Ejecuta lo siguiente para activar el certificado:
aws iot create-certificate-from-csr --certificate-signing-request file://cert.csr --set-as-active > certOutput.txt
5.Ejecuta lo siguiente para guardar el certificado en un archivo cert.pem:
aws iot describe-certificate --certificate-id <certificate ID> --output text --query certificateDescription.certificatePem > cert.pem
NOTA: Reemplaza <certificate ID> con el ID almacenado en el campo "certificateId" en certOutput.txt. Para ver el archivo ingresa: more certOutput.txt
6.Crea un documento de política Json para el SDK de AWS IoT:
- Copia el siguiente texto (ctrl-c):
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action":["iot:*"],
"Resource": ["*"]
}]
}
- Ingresa vi policy.doc presiona a y haz clic derecho para pegar el texto
- Presiona escape y escribe :wq para guardar y salir
7.Primero ingresa:
aws iot create-policy --policy-name PubSubToAnyTopic --policy-document file://policy.doc
Aviso: El nombre de la política puede ser cualquier cosa.
8.Después de eso, una política y un certificado pueden mostrarse en tu consola de AWS.
9.Luego adjunta la política al certificado con:
aws iot attach-principal-policy --principal <principal arn> --policy-name "PubSubToAnyTopic"
NOTA: reemplaza <principal arn> con el valor almacenado en "certifcateArn" en el archivo outputCert.txt.
10.Deberías ver que tu certificado se ha adjuntado a tu política.
Usar MQTT para suscribirse y publicar en AWS
- Ahora que los certificados están en orden podemos usar MQTT para suscribirnos y publicar en la nube.
- Primero obtén el archivo pem de la CA raíz:
curl https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem > rootCA.pem
Codificando tu aplicación con nodejs
1.Crear un proyecto nodejs
cd ~
mkdir aws_nodejs && cd aws_nodejs
npm init
npm install --save aws-iot-device-sdk
touch main.js
2.Copia y guarda el código de demostración en main.js
vi main.js
// Plug Grove - Relay to base shield port D2
// Plug Grove - Temperature&Huminity(High quality) to i2c port
var sensor1 = require('jsupm_th02');
var th02 = new sensor1.TH02();
var sensor2 = require('jsupm_grove');
var relay = new sensor2.GroveRelay(2);
// Simulate device value
var temp = 24.00;
var humi = 50;
var relayState = false;
var reported_state = {"Temperature":temp, "Humidity": humi, "RelayState": relayState};
//
// Client token value returned from thingShadows.update() operation//app deps
const thingShadow = require('./node_modules/aws-iot-device-sdk/thing');// Plug Grove - Relay to base shield port D2
// Plug Grove - Temperature&Huminity(High quality) to i2c port
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'
});
// Simulate device value
var temp = 24.00;
var humi = 50;
var relayState = false;
//
// Client token value returned from thingShadows.update() operation
//
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));
//
// These events report the status of update(), get(), and delete()
// calls. The clientToken value associated with the event will have
// the same value which was returned in an earlier call to get(),
// update(), or delete(). Use status events to keep track of the
// status of shadow operations.
//
});
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);
//
// In the event that a shadow operation times out, you'll receive
// one of these events. The clientToken value associated with the
// event will have the same value which was returned in an earlier
// call to get(), update(), or 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}}; // Use desired attribute can receive delta
// More info refer to 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.iniciar aplicación nodejs
-
Conecta los sensores Grove como se muestra a continuación
-
Relé - D2
-
Sensor de temperatura - puerto i2c
node main.js
4.Observa los datos en la consola de AWS
5.Actualiza la sombra para cambiar el estado del relé
6.Si la carga es exitosa, Grove - Relay se encenderá.
Recursos
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.