A casa hai il tuo Raspberry Pi ad aspettarti, con collegati sensori, tapparelle, basculanti automatiche ed assistenti vocali, allarmi e quant’altro.. Ti manca solo un sistema per fargli sapere che sei rientrato in casa. Un buon modo, riconoscimento facciale e/o della retina a parte, sarebbe fargli rilevare il Bluetooth del tuo smartphone e di quello di ogni tuo familiare.
Il Bluetooth versione 4.0 attualmente ha un raggio di 30m , sufficente per vessere rilevato fuori dal garage, i nuovi Raspberry Pi poi hanno già integrato il modulo Bluetooth e WIFI risparmiandoci l’utilizzo di eventuali adattatori usb, limitando i costi, i problemi di compatibilità, i consumi e le dimensioni.
Ogni dispositivo Bluetooth ha un codice univoco, come per le schede di rete, chiamato MAC address, faremo in modo che il nostro Raspberry Pi lo rilevi, identificando in modo univoco il device di ogni familiare che l’abbia attivato e successivamente eseguirà un vostro script Python.
Prerequisiti
Per iniziare bisogna impostare lo smartphone in modo che conceda di essere rilevato da tutti gli altri dispositivi, di norma questa opzione sii trova nelle impostazioni, naturalmente sotto la voce Bluetooth.
Dopodichè, andranno intallati i software per la gestione del Bluetooth tramite Python3.
apt update ; apt install -y libbluetooth-dev python-dev python3-pip pip3 install pybluez
Trovare l’indirizzo dello smartphone
Se già non lo conosciamo, dobbiamo trovare il MAC address proprio del nostro cellulare con il seguente comando.
python3 import bluetooth bluetooth.discover_devices(lookup_names=True) Premere ctrl-d per uscire
Lo script
Veniamo ora al sodo: diamo un occhiata al “canovaccio” per il vostro script in Python3.
Creiamo il file rileva.py , sotto trovate uno spunto su come comporre lo script, poi naturalmente sta alla vostra fantasia adattarlo alle vostre specifiche esigenze.
nano rileva.py
#!/usr/bin/python3 import bluetooth from time import sleep CELL1 = 'indirizzo rilevato prima' def rilevato(): Lista di comandi da eseguire in caso di rilevamento def nonrilevato(): Lista di comandi da eseguire in caso di non rilevamento while 1: LISTA = bluetooth.discover_devices() if CELL1 in LISTA: rilevato() sleep(30) else: nonrilevato()
Un extra nel caso volessimo attivare dei relè
from gpiozero import LED rele = LED(27) def rilevato(): rele.on() def nonrilevato(): rele.off()
Utilizzo
Per avviare lo script è sufficente eseguire
python3 rileva.py
oppure
chmod +x rileva.py./rileva.py
Per abilitare l’avvio automatico
crontab
@reboot /usr/lib/python3 /percorso/script/rileva.py &
per avviarlo da ssh e lasciarlo attivo usiamo il comando nohup, oppure per chi volesse, il software Screen è una valida alternativa.
nohup python3 /percorso/script/rileva.py