Pular para o conteúdo principal

Intel® Edison e Grove IoT Starter Kit com tecnologia AWS

Artigos principais: Comece aqui Grove IoT Starter Kits Powered by AWS , Intel Edison

Projetado para makers experientes, empreendedores e empresas de IoT industrial, o módulo Intel Edison oferece prototipagem mais fácil com um ambiente de desenvolvimento de hardware e software totalmente open source. Ele oferece suporte a conectividade Wi‑Fi e BLE 4.0. Este kit contém onze sensores e atuadores Grove selecionados para que você possa monitorar o ambiente interno e criar aplicações de casa inteligente.

Conteúdo da Caixa

PeçasWiki
Intel® Edison for ArduinoLeia aqui
Base ShieldLeia aqui
Grove - Temperature&Humidity Sensor (High-Accuracy & Mini)Leia aqui
Grove - Moisture SensorLeia aqui
Grove - Light SensorLeia aqui
Grove - UV SensorLeia aqui
Grove - PIR Motion SensorLeia aqui
Grove - EncoderLeia aqui
Grove - ButtonLeia aqui
Grove - LCD RGB BacklightLeia aqui
Grove - RelayLeia aqui
Grove - ServoLeia aqui
Grove - BuzzerLeia aqui
Cabo USB; 480mm-Preto
Fonte de Alimentação USB para Parede

Recursos

  • Pronto para uso imediato, plug and play, sem necessidade de protoboard ou soldagem.

  • Totalmente compatível com os serviços e práticas da AWS.

  • Tutoriais passo a passo para desenvolvedores e makers, para prototipagem mais rápida.

Primeiros Passos

Configure Seu Serviço AWS IoT

Visite a AWS console da Amazon, registre-se e faça login na sua conta.

1.Vá para o painel, clique em Service --> AWS IoT

2.Clique em Get started

3.Crie um novo usuário

4.Salve o nome de usuário e faça o download das Credenciais de Segurança

5.Configurando Attach Policy com AdministratorAccess

6.Criar um thing

Nesta seção você também pode consultar o Beagle Bone wiki para outra forma de criar um thing e concluir as tarefas restantes. A diferença é que o Beagle Bone não usou a ferramenta AWS CLI para obter certificações.

Configurando o SDK de dispositivo AW IoT na placa Intel Edison

Antes de começar

  • Certifique-se de ter executado o comando configure_edison --setup para configurar sua placa

  • Certifique-se de que sua placa Intel® Edison esteja online por meio da sua rede Wi‑Fi local (isso deve ocorrer durante a configuração do configure_edison)

  • Faça login no console do Edison com ssh (use putty ou Xshell).

Instalar o AWS CLI

O AWS CLI é uma forma de gerenciar seus serviços AWS a partir da sua placa. Você precisa disso primeiro para poder fazer o download do SDK.

1.Primeiro, você precisa instalar o pip (gerenciador de pacotes do Python):

curl https://bootstrap.pypa.io/ez_setup.py -o - | python
easy_install pip

2.Em seguida, instale o AWS CLI com o pip:

pip install awscli

Observação: Para visualizar os arquivos de ajuda ("aws iot help") você precisa instalar o Groff e uma versão do less que não seja BusyBox.

3.Para o 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: Primeiro renomeie a versão antiga do 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 garantir que tudo foi instalado corretamente, execute o arquivo de ajuda do iot:

aws iot help

Obter credenciais da AWS:

Neste ponto, você já deve ter o AWS CLI instalado. E o Access ID e a Key que você fez download antes, configure a AWS e insira o ID e a Key com:

aws configure

1.Primeiro crie uma pasta para armazenar seus certificados em:

mkdir aws_certs
cd aws_certs

2.Gere uma chave privada com open ssl:

openssl genrsa -out privateKey.pem 2048
openssl req -new -key privateKey.pem -out cert.csr

3.Preencha os campos com suas informações.

4.Execute o seguinte para ativar o certificado:

aws iot create-certificate-from-csr --certificate-signing-request file://cert.csr --set-as-active > certOutput.txt

5.Execute o seguinte para salvar o certificado em um arquivo cert.pem:

aws iot describe-certificate --certificate-id <certificate ID> --output text --query certificateDescription.certificatePem  > cert.pem

NOTA: Substitua <certificate ID> pelo ID armazenado no campo "certificateId" em certOutput.txt. Para visualizar o arquivo, digite: more certOutput.txt

6.Crie um documento de política Json para o AWS IoT SDK:

  • Copie o texto a seguir (ctrl-c):
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action":["iot:*"],
"Resource": ["*"]
}]
}
  • Digite vi policy.doc, pressione a e clique com o botão direito para colar o texto
  • Pressione Esc e digite :wq para salvar e sair

7.Primeiro digite:

 aws iot create-policy --policy-name PubSubToAnyTopic --policy-document file://policy.doc

Observação: o nome da política pode ser qualquer um.

8.Depois disso, uma política e um certificado podem ser exibidos no seu console AWS.

9.Em seguida, anexe a política ao certificado com:

aws iot attach-principal-policy --principal <principal arn> --policy-name "PubSubToAnyTopic"

NOTA: substitua <principal arn> pelo valor armazenado em "certifcateArn" no arquivo outputCert.txt.

10.Você deve ver que seu certificado foi anexado à sua política.

Use MQTT para assinar e publicar na AWS

  • Agora que os certificados estão em ordem, podemos usar MQTT para assinar e publicar na nuvem.
  • Primeiro obtenha o arquivo root CA pem:
curl https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem > rootCA.pem

Programando seu aplicativo com nodejs

1.Crie um projeto nodejs

cd ~
mkdir aws_nodejs && cd aws_nodejs
npm init
npm install --save aws-iot-device-sdk
touch main.js

2.Copie e salve o código de demonstração em 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.inicie o aplicativo nodejs

  • Conecte os sensores Grove como abaixo

  • Relay - D2

  • Sensor de temperatura - porta i2c

  node main.js

4.Acompanhe os dados no console da AWS

5.Atualize o shadow para alterar o estado do relay

6.Se o upload for bem-sucedido, o Grove - Relay será ligado.

Recursos

Suporte Técnico & Discussão de Produto

Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...