Skip to main content

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

PartesWiki
Intel® Edison for ArduinoLeer Aquí
Base ShieldLeer Aquí
Grove - Temperature&Humidity Sensor (High-Accuracy & Mini)Leer Aquí
Grove - Moisture SensorLeer Aquí
Grove - Light SensorLeer Aquí
Grove - UV SensorLeer Aquí
Grove - PIR Motion SensorLeer Aquí
Grove - EncoderLeer Aquí
Grove - ButtonLeer Aquí
Grove - LCD RGB BacklightLeer Aquí
Grove - RelayLeer Aquí
Grove - ServoLeer Aquí
Grove - BuzzerLeer Aquí
Cable USB; 480mm-Negro
Fuente de Alimentación USB de Pared

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.

Loading Comments...