Pular para o conteúdo principal

Edge IoT - Enviando Dados de Sensores para a Nuvem

Este tutorial demonstra como ler valores de sensores conectados ao ODYSSEY - X86J41x5 e enviar os dados para o Microsoft Azure IoT Hub, onde esses dados podem ser exibidos ou processados para outras aplicações de IoT.

Recebendo Dados Brutos​

Visualização dos Dados​

Introdução​

IoT Hub é um serviço da Microsoft Azure que permite ingerir grandes volumes de telemetria dos seus dispositivos IoT na nuvem para armazenamento ou processamento.

Pré-requisitos​

  • Instale o Python 3 no ODYSSEY - X86J41x5

  • Uma conta Microsoft Azure. Se você não tiver uma, crie uma conta gratuita antes de começar.

  • Baixe e instale o Azure CLI, uma ferramenta de linha de comando para gerenciar recursos do Azure.

Depois de instalar o Azure CLI, abra o cmd ou o Powershell e execute o comando az; você deverá ver uma tela como a abaixo:

Pré-configurações do Azure CLI​

Fazer login no Azure​

Abra o cmd ou o Powershell e execute o comando az login. Uma janela do navegador aparecerá para você entrar na sua conta Microsoft Azure.

Adicionando as Extensões Microsoft IoT Azure ao Azure CLI​

Execute o seguinte comando para adicionar a Microsoft Azure IoT Extension para Azure CLI à sua instância do Cloud Shell. A IoT Extension adiciona comandos específicos do IoT Hub, IoT Edge e IoT Device Provisioning Service (DPS) ao Azure CLI.

az extension add --name azure-cli-iot-ext

Criando um IoT Hub​

Esta parte descreve como criar um IoT Hub usando o portal do Azure:

1.Faça login no portal do Azure.

2.Escolha Create an resource e, em Search the Marketplace, procure por IoT Hub.

3.Selecione IoT Hub e clique em Create.

4.Na guia Basics, preencha os campos:

  • Subscription: Selecione a assinatura a ser usada para o seu hub.

  • Resource Group: Selecione um grupo de recursos ou crie um novo. Para criar um novo, selecione Create new e preencha o nome que você deseja usar.

  • Region: Selecione a região na qual o seu hub será localizado. Escolha a região que estiver mais próxima de você.

  • IoT Hub Name: Insira um nome para o seu IoT hub. Este nome deve ser globalmente exclusivo. Se o nome estiver disponível, um ícone de marca de seleção verde aparecerá.

Nota importante: o IoT Hub será publicamente descoberto como um endpoint DNS, portanto, garanta que você evite qualquer informação sensível ao nomear o IoT Hub.

1.Selecione Next: Size and scale para continuar:

  • Pricing and scale tier: Selecione F1: Free tier por enquanto. Você pode escolher entre vários níveis, dependendo de quantos recursos e quantas mensagens você envia por dia na sua solução.

2.Selecione a guia Review + create para revisar as configurações e clique em Create para criar seu novo IoT Hub. A criação do IoT Hub pode levar alguns minutos.

Registrar um Dispositivo​

Um dispositivo deve ser registrado no seu IoT Hub antes que possa se conectar:

1.Execute o seguinte comando no cmd ou no Powershell para adicionar a extensão IoT Hub CLI e criar a identidade do dispositivo:

az iot hub device-identity create --hub-name iot-test-1 --device-id MyPythonDevice

Nota​

  • hub-name -> Substitua iot-test-1 pelo nome do IoT Hub que você criou.

  • device-id -> MyPythonDevice. Este é o nome do dispositivo que está sendo registrado. No meu caso, MyPythonDevice é o ID do dispositivo.

2.Execute os seguintes comandos para obter a string de conexão do dispositivo para o dispositivo que registramos.

az iot hub device-identity show-connection-string --hub-name iot-test-1 --device-id MyPythonDevice --output table

Anote a string de conexão do dispositivo, que se parece com: HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyPythonDevice;SharedAccessKey={YourSharedAccessKey}. Ela será usada mais tarde.

Nota​

  • Substitua o seu hub-name e device-id, os mesmos de acima.

Coletando Dados usando Arduino Core​

Esta seção simplesmente usa o Arduino core para ler valores de sensores e imprimir as leituras no Monitor Serial, que podem ser lidas usando Python de outro lugar.

1.Siga o Getting Started para baixar, instalar e configurar a Arduino IDE.

2.Conecte o fio de sinal de um sensor de luz Grove ao A0 do ODYSSEY - X86J41x5, além de alimentação e terra. Por favor, consulte o diagrama de pinagem em Getting Started para mais informações.

3.Envie o seguinte código para o ODYSSEY - X86J41x5 usando a Arduino IDE. Lembre-se de selecionar a Placa e a Porta corretas. Anote a Porta aqui, pois ela será usada depois. No meu caso, a porta é COM4.

Código Arduino​

#define LIGHT A0
#define Serial SerialUSB

void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(LIGHT, INPUT);

}

void loop() {
// put your main code here, to run repeatedly:
int state = analogRead(LIGHT);
Serial.println(state);

delay(500);

}

4.Abra o Serial Monitor na Arduino IDE para verificar se o programa está sendo executado corretamente.

Enviando Leituras do Sensor de Luz para o Azure IoT Hub​

As leituras do sensor de luz são impressas na Serial, e o Python é usado para extrair esses dados e enviá-los para o Azure IoT Hub.

1.Abra o Powershell e execute o seguinte comando para instalar as bibliotecas Python necessárias.

pip install azure-iot-device
pip install pyserial

2.Copie o código Python a seguir e salve-o na sua unidade local. Use um editor de texto para fazer as seguintes alterações.

  • Substitua o valor da variável serialPort pela porta serial que anotamos anteriormente.

  • Substitua o valor da variável CONNECTION_STRING pela string de conexão do dispositivo que também anotamos anteriormente.

Código Python​

# Copyright (c) Microsoft. All rights reserved.
# Licensed under the MIT license. See LICENSE file in the project root for full license information.

import time
import serial


# Using the Python Device SDK for IoT Hub:
# https://github.com/Azure/azure-iot-sdk-python
# The sample connects to a device-specific MQTT endpoint on your IoT Hub.
from azure.iot.device import IoTHubDeviceClient, Message

# Settings for reading from Arduino Serial
serialPort= "COM4" #Change it to your Serial Port, Check in Arudino IDE
baudRate = 115200
ser = serial.Serial(serialPort, baudRate, timeout=0.5)

# The device connection string to authenticate the device with your IoT hub.
# Using the Azure CLI:
# az iot hub device-identity show-connection-string --hub-name {YourIoTHubName} --device-id MyNodeDevice --output table
CONNECTION_STRING = "HostName=iot-test-1.azure-devices.net;DeviceId=MyPythonDevice;SharedAccessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# Define the JSON message to send to IoT Hub.
MSG_TXT = '{{"Light": {light}}}'

def iothub_client_init():
# Create an IoT Hub client
client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)
return client

def iothub_client_telemetry_sample_run():

try:
client = iothub_client_init()
print ( "IoT Hub device sending periodic messages, press Ctrl-C to exit" )

while True:
# Build the message with simulated telemetry values.
time.sleep(0.1)
light = ser.readline().decode("UTF-8")[:-2]
if light:
msg_txt_formatted = MSG_TXT.format(light=light)
message = Message(msg_txt_formatted)

# Send the message.
print( "Sending message: {}".format(message) )
client.send_message(message)
print ( "Message successfully sent" )
time.sleep(1)


except KeyboardInterrupt:
print ( "IoTHubClient sample stopped" )
ser.close()

if __name__ == '__main__':
print ( "IoT Hub Quickstart #1 - Simulated device" )
print ( "Press Ctrl-C to exit" )
iothub_client_telemetry_sample_run()

3.No Powershell, navegue até o diretório em que você acabou de salvar o arquivo Python. Execute o script Python para enviar os dados do sensor ao Azure IoT Hub.

Nota: No meu caso, o arquivo Python se chama SendingData.py; altere o comando para o nome com que você salvou o arquivo.

python3 SendingData.py

A captura de tela a seguir mostra a saída do envio de dados do sensor para o Azure IoT Hub.

Lendo Dados do Azure IoT Hub​

A extensão IoT Hub CLI pode se conectar ao endpoint de eventos do lado do serviço no IoT Hub. A extensão recebe as mensagens de dispositivo-para-nuvem enviadas a partir do nosso dispositivo.

Execute o seguinte comando em qualquer terminal e você poderá começar a monitorar as mensagens enviadas ao Azure IoT Hub.

az iot hub monitor-events --hub-name iot-test-1 --device-id MyPythonDevice

Nota​

  • Substitua o seu hub-name e device-id, os mesmos de acima.

A captura de tela a seguir mostra as mensagens enviadas do ODYSSEY - X86J41x5 para o IoT Hub. Esses dados podem ser processados ou exibidos.


Visualização em tempo real de dados do sensor usando o Microsoft Power BI​

Nesta seção, vamos exibir a leitura do sensor de luz em tempo real usando o Microsoft Power BI. Se você não tiver uma conta Power BI, crie uma conta gratuita antes de começar.

Nota: Certifique-se de ter seguido todas as etapas anteriores e que as mensagens possam ser recebidas com sucesso pelo IoT Hub.

Adicionar um grupo de consumidores ao seu IoT Hub​

Consumer groups fornecem visões independentes do fluxo de eventos que permitem que aplicativos e serviços Azure consumam dados de forma independente do mesmo endpoint do Event Hub.

Para adicionar um grupo de consumidores:

1.Faça login no portal do Azure.

2.Abra seu IoT Hub, selecione Built-in endpoints, em Consumer Groups insira um nome para criar um novo grupo de consumidores e clique em Save.

No meu caso, lightsensor é o novo grupo de consumidores.

Criar, configurar e executar um Stream Analytic Job​

Para criar um Stream Analytic Job:

3.Faça login no portal do Azure.

4.Escolha Create an resource e, em Search the Marketplace, pesquise por Stream Analytics job.

5.Selecione Stream Analytics job e clique em Create.

6.Preencha os campos da seguinte forma e clique em Create:

  • Job name: O nome do job. O nome deve ser globalmente exclusivo. No meu caso, é light-analytic

  • Resource group: Use o mesmo resource group que o seu IoT Hub usa.

  • Location: Use a mesma localização do seu resource group.

Adicionar uma entrada (Input) ao Stream Analytics job​

1.Abra o Stream Analytics job

2.Em Job topology clique em Inputs.

3.Clique em Add stream input -> IoT Hub

4.Preencha os campos da seguinte forma:

  • Input alias: Seu nome de entrada. Pode ser qualquer coisa.

  • IoT Hub: Escolha o que usamos até agora.

  • Consumer group: Escolha o que acabamos de criar.

1.Selecione Save.

Adicionar uma saída (Output) ao Stream Analytics Job​

2.Abra o Stream Analytics job

3.Em Job topology clique em Outputs.

4.Clique em Add -> Power BI

5.Authorize com sua conta Microsoft Power BI.

6.Preencha os campos da seguinte forma:

  • Output alias: Seu nome de saída. Também pode ser qualquer coisa.

  • Authentication mode: Escolha User token.

7.Selecione Save.

Configurar a consulta do Stream Analytics job​

1.Em Job topology clique em Query.

2.Substitua [YourInputAlias] pelo alias de entrada. No meu caso, é SensorReadings.

3.Substitua [YourOutputAlias] pelo alias de saída. No meu caso, é SensorOutput.

Executar o Stream Analytics job​

1.Em Overview clique em Start -> Now -> Start. O status do job muda de Stopped para Running.

Nota: Para começar a obter leituras do sensor, lembre-se de executar o script Python no ODYSSEY - X86J41x5 para enviar dados para a nuvem.

Criar e publicar um relatório Power BI para visualizar os dados​

1.Faça login na sua conta do Power BI.

2.Em Workplaces -> My workspace, selecione Datasets e você deverá ver a planilha de dados que especificou anteriormente.

3.Em Actions selecione o primeiro ícone (Create report)

4.Crie um gráfico de linhas para mostrar em tempo real o valor do sensor de luz ao longo do tempo.

  • Em Visualizations selecione Line chart.

  • Em Fields selecione EventEnqueuedUtcTime.

  • Em Fields selecione Light.

5.Clique em Save para salvar o relatório.

6.Clique em File -> Publish to web -> Create embed code -> Publish

Agora você pode visualizar a leitura do sensor em um dashboard via Power BI!

A Microsoft também oferece os Power BI mobile apps para visualizar e interagir com seus dashboards e relatórios do Power BI em seu dispositivo móvel.

Desenvolvimento adicional​

Você configurou com sucesso o seu ODYSSEY - X86J41x5 para um dos cenários de IoT, agora pode implementar isso e criar suas próprias soluções de IoT!

Para mais suporte técnico, visite Azure IoT.

Suporte Técnico e Discussão sobre o Produto​

Agradecemos 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...