Skip to content

r0zbot/BLE_presence_detector

Repository files navigation

Detector de presença BLE com integração ao Home Assistant

Link do repositório

Este repositório contém o código do projeto final da matéria MAC0546/6929 - Fundamentos da Internet das Coisas (2020) e instruções para uso e compilação.

Objetivo

O objetivo desse projeto é permitir que, a partir do endereço MAC de um dispositivo Bluetooth, verificar se ele está ou não presente em um determinado local, implementando também mensagens de um binary_sensor do Home Assistant com MQTT. Para isso, são detectados os beacons de anúncio dos dispositivos que contém o MAC address e medido o sinal de recepção. Caso o sinal seja maior que um valor definido em RSSI_THRESHOLD, o dispositivo será considerado presente. Caso nenhum beacon seja recebido dos dispositivo em SEEN_TICKS ticks, tendo um tick a duração de SCAN_TIME segundos, ele é considerado como ausente.

Foi implementado um binary_sensor do Home Assistant da seguinte forma:
Para cada dispositivo rastreado, ele envia ON para homeassistant/binary_sensor/ble_presence_00-00-00-00-00-00/state (sendo 00-00-00-00-00-00 o endereço MAC do dispositivo rastreado em questão) ao detectar a presença, e OFF quando ele não está mais presente (para aumentar a quantidade de dispositivos compatíveis, esse projeto foi implementado como um binary_sensor ao invés de um módulo de room_presence).

Com isso, você pode detectar a presença ou não de determinados indivíduos em um ambiente. Caso você possua mais sensores e mais Zonas registradas no Home Assistant, também é possível rastrear em qual delas o indivíduo está.

home

home

Instruções

Pré requisitos

Para utilizar este projeto você vai precisar de um módulo ESP32 programável e uma instância do Home Assistant (veja aqui como instalar) com uma integração de MQTT (caso você ainda não tenha recomendo utilizar o Mosquitto). Você vai precisar também da IDE Arduino instalada.

Instalando dependências

Para poder usar a IDE Arduino com o ESP32, você precisa baixar as especificações e ferramentas da placa. Para isso, abra a IDE Arduino e clique em Arquivo → Configurações, e no campo URLs Adicionais para Gerenciadores de Placas adicione a seguinte URL:
https://dl.espressif.com/dl/package_esp32_index.json
e clique em ok.

home

Depois disso, vá até Ferramentas → Placa → Gerenciador de Placas e procure por ESP32 e a instale.

Configurando

Faça uma cópia do arquivo BLE_presence_detector/config.h.example para BLE_presence_detector/config.h e modifique as configurações de acordo com a sua rede.

Os BLEAddress são os endereços MAC dos dispositivos a serem rastreados. Caso você não saiba qual é o MAC de seus dispositivos, você pode executar o sketch BLE_scan para verificar quais são os dispositivos encontrados (ele as exibirá no Monitor Serial). Logo abaixo, há mais algumas configurações que podem ser editadas caso necessário.

Enviando o sketck ao ESP32

Este passo vai variar muito dependendo de qual placa você está utilizando. Caso esteja utilizando um NodeMCU ESP32 no Windows, siga as instruções abaixo.

Conecte seu ESP32 no computador utilizando um cabo microUSB e verifique em qual porta COM ele foi adicionado. Em seguida, configure o upload no menu Ferramentas conforme a imagem abaixo:

configurações

OBS: é importante alterar a Partition Scheme para Huge Apps, pois caso contrário faltará espaço na hora de enviar o sketch.

Em seguida, clique em Carregar na barra superior. Após a compilação, você verá algo como:

O sketch usa 1331410 bytes (42%) de espaço de armazenamento para programas. O máximo são 3145728 bytes.
Variáveis globais usam 57884 bytes (17%) de memória dinâmica, deixando 269796 bytes para variáveis locais. O máximo são 327680 bytes.
esptool.py v2.6
Serial port COM8
Connecting........_____....._____....._____....._____.....

Quando aparecer o Connecting..., pressione o botão BOOT do seu ESP32 por alguns segundos e o upload será iniciado.

configurações

Se tudo der certo, você deve receber uma notificação no Home Assistant que um novo dispositivo foi encontrado.


Ignorando linhas no commit

Isso é mais uma curiosidade para caso deseje contribuir com esse projeto. Você pode utilizar os comandos abaixo (junto ao .gitattributes presente nesse repositório) para filtrar linhas que contenham conteúdo sensível dos seus commits.

Veja mais detalhes nessa resposta do stack overflow.

git config filter.gitignore.clean "sed '/#gitignore/d'"
git config filter.gitignore.smudge cat

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages