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
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
-
[PDF] AWS IoT Developer Guide
-
[Wiki] Página Principal dos Grove IoT Starter Kits Alimentados por AWS
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.
