Skip to content

Cheku-Corporation/data-generator

Repository files navigation

Gerador de dados

Este gerador de dados pretende simular os dados enviados por um carro inteligente enquanto este faz a sua viagem. São gerados dados como a velocidade a que o veículo se encontra, a sua localização atual, a mudança em que se encontra, as RPMs atuais, as quantidades de combustivel, óleo e água que o veículo tem, pressão dos pneus, temperatura dos pneus e temperatura do motor, estado das luzes. Também são gerados acontecimentos aleatórios, como avarias do motor, falta de combustivel, paragem para abastecimento, mudança do estado das luzes, etc.

Pré-requisitos

Pré-requisitos:

  • rabbitmq
  • python
  • pip
  • venv
  1. Instalar o rabbitmq:

Para que a geração de dados seja feito com sucesso é necessária a instalação do rabbitmq, para isso basta seguir as instruções no site oficial: https://www.rabbitmq.com/download.html .
A nossa recomendação é correr a aplicação num container do docker, para isso basta correr o seguinte comando:

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.11-management

Em outro terminal:

  1. Criar o virtual enviroment:
$ python3 -m venv venv
  1. Ativar o virtual enviroment:
$ source venv/bin/activate
  1. Instalar as *dependências:
$ pip install -r requirements.txt

As dependências que estão no ficheiro requirements.txt são o pika, que serve para realizar a conexão com o RabbitMQ e o numpy que serve para gerar probabilidades aleatórias.


Execução

Antes de correr a aplicação é necessário verificar que os pré-requisitos estão a correr e que a porta do RabbitMQ é a correta.
De forma a conseguirmos visualizar que os dados estão realmente a ser enviados para o RabbitMQ, podemos utilizar o RabbitMQ Management que é uma interface web que nos permite visualizar as filas e os dados que estão a ser enviados para elas, ou então utilizar o data_receiver.py que foi personalizado para receber os dados das filas específicas do gerador.

Existem 2 maneiras de correr a aplicação:

  1. Correr o ficheiro sensor_data_generator.py:
$ python3 sensor_data_generator.py
  1. Correr o ficheiro run.sh:
$ ./run.sh

Antes de correr o ficheiro run.sh é necessário dar permissões de execução ao ficheiro:

$ chmod +x run.sh

Configuração

Execução utilizando diretamente o ficheiro sensor_data_generator.py

Para configurar o gerador de dados é possível passar diversos parametros para o ficheiro sensor_data_generator.py:

  • -ho, --host: Host do RabbitMQ
  • -id, --id: ID do carro que está a enviar os dados
  • -f, --fuel: Nível de combustível inicial do carro
  • -w, --water: Nível de água inicial do carro
  • -o, --oil: Nível de óleo inicial do carro
  • -tt, --time_trips: Tempo entre cada viagem
  • -ts, --time_speed: Velocidade das paragens do carro (Quanto maior o valor, o carro ficará parado durante menos tempo)

Os tipos de dados dos argumentos são:

  • -ho: str
  • -id: int - sendo que o valor tem de ser maior ou igual a 0
  • -f: float - sendo que o valor tem de ser maior ou igual a 0 e menor ou igual a 100
  • -w: float - sendo que o valor tem de ser maior ou igual a 0 e menor ou igual a 100
  • -o: float - sendo que o valor tem de ser maior ou igual a 0 e menor ou igual a 100
  • -tt: float - sendo que o valor tem de ser maior ou igual a 0 e menor ou igual a 100
  • -ts: float - sendo que o valor tem de ser maior ou igual a 0 e menor ou igual a 100

Nenhum Argumento é obrigatório, sendo que os valores por defeito são:

  • -ho: localhost
  • -id: 0
  • -f: 100
  • -w: 100
  • -o: 100
  • -tt: 30*60
  • -ts: 1

Exemplo:

$ python3 sensor_data_generator.py -ho localhost -id 1 -f 100 -w 100 -o 100 -tt 10 -ts 10

Execução utilizando diretamente o script run.sh

Ao executar o script python através do ficheiro run.sh também é possível passar os mesmos argumentos que são passados para o ficheiro sensor_data_generator.py, apesar de os parametros serem ligeiramente diferente:

  • -h: Host do RabbitMQ
  • -i: ID do carro que está a enviar os dados
  • -f: Nível de combustível inicial do carro
  • -w: Nível de água inicial do carro
  • -o: Nível de óleo inicial do carro
  • -t: Tempo entre cada viagem
  • -s: Velocidade das paragens do carro (Quanto maior o valor, o carro ficará parado durante menos tempo)

Exemplo:

$ ./run.sh -w 20 -f 46 -o 85 -s 10000 -t 1 -h localhost -i 0

Viagens

As viagens são algo que teve de ser pré-definido e encontram-se nos ficheiros do diretório csv_trips. As viagens são sempre escolhidas aleatóriamente.


Logs

O gerador de dados conta com um sistema de logs que nos permite visualizar o que está a acontecer durante a execução do programa, ou seja, permite visualizar as tentativas de conexão com o RabbitMQ, todas as mensagens que são enviadas, e o dia e a hora de cada acontecimento. Os logs são guardados no diretório logs que é criado, caso não exista, e esses ficheiros de logs são guardados com o nome no formato logfile_YYYY-MM-DD.log e são gerados a cada dia que o gerador é utilizado.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors