DEV Community

Railander Marques
Railander Marques

Posted on

Configure IOT Fake - Python MQQT - Test IoTCore

Configure IOT Fake - Python MQQT - Test IoTCore


1. Configurar o IoT Core no AWS

Criar uma "Thing" no IoT Core:

  1. No console do AWS IoT Core, vá para "Manage" e depois "Things".
  2. Clique em "Create things" e crie uma "Thing".

Criar Certificados:

  1. Após criar a "Thing", crie um certificado para ela.
  2. Baixe os arquivos de certificado e chave privada.
  3. Anexe uma política ao certificado que permita operações de publicação.

2. Criar o Script Python para Simular o Dispositivo

Instale a biblioteca paho-mqtt:

pip install paho-mqtt
Enter fullscreen mode Exit fullscreen mode

Crie um script Python para simular o envio de dados de geolocalização:

import paho.mqtt.client as mqtt
import ssl
import json
import time
import random

# Configurações AWS IoT
client_id = "geolocation_device"
endpoint = "<seu-endpoint-iot>.iot.<sua-regiao>.amazonaws.com"
root_ca = "/path/to/AmazonRootCA1.pem"
certificate = "/path/to/device-certificate.pem.crt"
private_key = "/path/to/private.pem.key"
topic = "geolocation/topic"

# Callback para quando a conexão for estabelecida
def on_connect(client, userdata, flags, rc):
    print("Conectado com o código: " + str(rc))
    client.subscribe(topic)

# Callback para quando uma mensagem for recebida
def on_message(client, userdata, msg):
    print("Mensagem recebida: " + msg.topic + " -> " + msg.payload.decode())

# Inicializa o cliente MQTT
client = mqtt.Client(client_id)
client.tls_set(root_ca, certfile=certificate, keyfile=private_key, tls_version=ssl.PROTOCOL_TLSv1_2)
client.on_connect = on_connect
client.on_message = on_message

# Conecta ao AWS IoT Core
client.connect(endpoint, 8883, 60)

# Função para simular dados de geolocalização
def simulate_geolocation_data():
    data = {
        'latitude': round(random.uniform(-90.0, 90.0), 6),
        'longitude': round(random.uniform(-180.0, 180.0), 6),
        'timestamp': int(time.time())
    }
    return data

# Publica dados de geolocalização em intervalos regulares
while True:
    geolocation_data = simulate_geolocation_data()
    client.publish(topic, json.dumps(geolocation_data))
    print(f"Publicado: {geolocation_data}")
    time.sleep(5)  # Espera 5 segundos antes de enviar novos dados

# Mantém a conexão e espera por mensagens
client.loop_forever()
Enter fullscreen mode Exit fullscreen mode

3. Configurar uma Instância EC2

Criar e Configurar a Instância EC2:

  1. Lançar uma instância EC2:

    • No console do EC2, escolha "Launch Instance".
    • Selecione uma AMI (Amazon Machine Image), como Amazon Linux 2.
    • Escolha o tipo de instância (t2.micro é suficiente para testes).
    • Configure as opções da instância e adicione armazenamento, se necessário.
    • Configure um security group para permitir acesso SSH (porta 22) e saída (outbound) para todos os destinos (por padrão, todas as saídas são permitidas).
  2. Conectar à Instância EC2:

    • Conecte-se à sua instância EC2 usando SSH.
   ssh -i "seu-par-de-chaves.pem" ec2-user@seu-endereço-ec2
Enter fullscreen mode Exit fullscreen mode
  1. Instalar Python e Bibliotecas Necessárias:
    • Atualize os pacotes e instale o Python se não estiver instalado.
   sudo yum update -y
   sudo yum install -y python3
   sudo pip3 install paho-mqtt
Enter fullscreen mode Exit fullscreen mode
  1. Transferir o Script para a Instância EC2:
    • Transfira o script Python e os arquivos de certificado para a instância EC2 usando SCP (Secure Copy).
   scp -i "seu-par-de-chaves.pem" /caminho/para/o/script.py ec2-user@seu-endereço-ec2:/home/ec2-user/
   scp -i "seu-par-de-chaves.pem" /caminho/para/AmazonRootCA1.pem ec2-user@seu-endereço-ec2:/home/ec2-user/
   scp -i "seu-par-de-chaves.pem" /caminho/para/device-certificate.pem.crt ec2-user@seu-endereço-ec2:/home/ec2-user/
   scp -i "seu-par-de-chaves.pem" /caminho/para/private.pem.key ec2-user@seu-endereço-ec2:/home/ec2-user/
Enter fullscreen mode Exit fullscreen mode
  1. Executar o Script na Instância EC2:
    • Navegue até o diretório onde você transferiu os arquivos e execute o script Python.
   cd /home/ec2-user/
   python3 script.py
Enter fullscreen mode Exit fullscreen mode

Verificação

  • No console do AWS IoT Core: Verifique se os dados estão sendo publicados no tópico correto.
  • Logs no EC2: Verifique a saída no terminal para confirmar que os dados estão sendo enviados corretamente.

Seguindo esses passos, você conseguirá simular um dispositivo IoT que envia dados de geolocalização para o AWS IoT Core a partir de uma instância EC2. Isso permite que você teste e valide o fluxo de dados em um ambiente realista.

Top comments (0)