Skip to content

OliveiraCharles/Estudo-IoT-ThingsBoard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Estudo IoT - ThingsBoard

Este estudo foi feito usando WSL2 e Docker rodando em Windows 11

Subindo containers

  1. Crie o diretório do projeto

    mkdir estudo-iot
    cd estudo-iot
  2. Crie o arquivo docker-compose

    nano docker-compose.yml
  3. Faça alterações se julgar necessário

    version: '3.0'
    services:
    mytb:
        restart: always
        image: "thingsboard/tb-postgres"
        ports:
        - "8080:9090"
        - "1883:1883"
        - "7070:7070"
        - "5683-5688:5683-5688/udp"
        environment:
        TB_QUEUE_TYPE: in-memory
        volumes:
        - ./.mytb-data:/data
        - ./.mytb-logs:/var/log/thingsboard
    
    mkdir -p ./.mytb-data && chown -R 799:799 ./.mytb-data
    mkdir -p ./.mytb-logs && chown -R 799:799 ./.mytb-logs
  4. Coloque os containers no "ar"

    Execute os comandos abaixo e aguarde até que os serviços estejam rodando, pode demorar alguns minutos para serem inicializados

    docker compose up -d
    docker compose logs -f mytb
  5. acesse a aplicação

    Com os containers devidamente utilize seu navegador para acessar http://localhost:8080 acesse usando as credenciais:

Simulando o dispositivo com aplicação em python

  1. crie um ambiente virtual

    python -m venv .venv
    .venv/Scripts/activate
  2. instale as dependências

    python -m pip install -U pip
    pip install -r requirements.txt
  3. crie o arquivo dispositivo.py

    nano dispositivo.py
    """
    Este script simula um dispositivo IoT enviando requisições HTTP POST para aplicação ThingsBoard
    """
    # Imports
    import json
    import random
    import time
    from os import environ
    
    import httpx
    from dotenv import load_dotenv
    
    load_dotenv()
    
    # Funções
    def temperature():
        return round(random.uniform(23.7, 32.4), 2)
    
    
    def humidity():
        return round(random.uniform(50.7, 100.4), 2)
    
    
    def send_message():
        temperatura = temperature()
        umidade = humidity()
    
        body = {'temperatura': temperatura, 'umidade': umidade}
    
        response = httpx.post(data=json.dumps(body), headers=headers, url=url)
    
        print(f'\nTemperatura:  {temperatura}°C')
        print(f'Umidade:  {umidade}%')
        print(f'Status Code:  {response.status_code}', response.text)
    
    
    # Variáveis
    ACCESS_TOKEN = environ.get('ACCESS_TOKEN')
    BASE_URL = environ.get('BASE_URL')
    
    url = f'{BASE_URL}/api/v1/{ACCESS_TOKEN}/telemetry'
    print(url)
    headers = {'ContentType': 'application/json'}
    
    if __name__ == '__main__':
        while True:
            send_message()
            time.sleep(5)

Configure as variáveis de ambiente

  1. Crie o arquivo .env na pasta raiz do projeto

    nano .env
  2. Altere o valor do ACCESS_TOKEN de acordo com a configuração do dispositivo criado em http://localhost:8080/entities/devices

    ACCESS_TOKEN=abc123
    BASE_URL=http://localhost:8080

Execute a aplicação

python dispositivo.py

Referencias

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages