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.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more