Come creare un semplice scanner Bluetooth su Windows con Python
Trova tutti i gadget intelligenti nella tua zona con un computer e un codice Windows.
È disponibile anche una versione per Mac OS di questo articolo , nonché una versione ridotta con solo codice.
Se sei seduto a casa o nel tuo ufficio di lavoro (lo stesso per molte persone in questi giorni), sei circondato da dispositivi Bluetooth wireless che parlano tutti tra loro alla velocità della luce . Forse hai appena acquistato uno di questi particolari dispositivi (una lampadina intelligente, un forno intelligente, una scheda Arduino , ecc.) e vuoi provare a connetterti ad esso e controllarlo.
Sia che tu voglia curiosare nel tuo quartiere o eventualmente connetterti al tuo nuovo gadget smart, il primo passo è trovare questi dispositivi realizzando uno scanner Bluetooth .
Nota: questo tutorial è per Bluetooth Low Energy (BLE), il tipo più comune di Bluetooth nei moderni dispositivi indossabili e smart. La maggior parte delle cuffie e dei dispositivi Bluetooth meno recenti utilizza invece Bluetooth Classic . Il codice che funziona per Bluetooth LE non funzionerà per i dispositivi Bluetooth Classic.
Uno scanner Bluetooth non è una cosa fisica ma un pezzo di codice. Può funzionare sul tuo computer e trovare tutti i dispositivi Bluetooth vicino a te, e sono solo circa 10 righe di Python.
Questo è possibile, perché i dispositivi Bluetooth inviano sempre segnali nell'aria dicendo: "Mi chiamo [Steve's Smart Watch] e voglio connettermi!" Quindi altri dispositivi, come il tuo laptop, possono ascoltare la trasmissione come una radio. Questi segnali sono chiamati "pubblicità".
Il nostro scanner funzionerà raccogliendo questi "Voglio connettermi!" messaggi da ogni dispositivo nell'area per 5-10 secondi, ma invece di connetterci a uno qualsiasi dei dispositivi, scriveremo semplicemente le informazioni dagli annunci pubblicitari di quel dispositivo sullo schermo del nostro computer.
Sopra ci sono gli indirizzi ( 2C:16:15:A4:B5:CC) e i nomi ( Samsung AU8000 50 TV) di ogni dispositivo Bluetooth nella nostra zona. Nei prossimi tutorial, saremo quindi in grado di connetterci a questi dispositivi e iniziare effettivamente a controllarli. Nota come non tutti i dispositivi sono abbastanza carini da dirci il loro nome (molte None risposte). Per fortuna, però, l'indirizzo è sufficiente per connettersi in seguito.
Nota: gli indirizzi di questi dispositivi sono chiamati " indirizzi MAC " e aiutano i dispositivi wireless a distinguersi a vicenda. Sono come un indirizzo IP permanente inserito nell'hardware.
Cominciamo con la costruzione dello scanner.
Requisiti tecnici
- Finestre 10+
- Pitone 3
- Bleak (una libreria Python Bluetooth LE)
- Dispositivi Bluetooth LE entro 20-100 metri da te
Il codice per lo scanner è piuttosto semplice:
import asyncio
from bleak import BleakScanner
async def main():
devices = await BleakScanner.discover()
for device in devices:
print(device)
asyncio.run(main())
Le parti più noiose sono:
- Installazione di Bleak (la libreria Bluetooth Python)
- Comprensione
asyncio(anche se questo è facoltativo)
Ma se non conosci asyncio e Bleak...
Come installare Bleak
Bleak è una robusta libreria Python che ci aiuterà a trovare i dispositivi Bluetooth LE.
Se hai familiarità con Pip , puoi installare Bleak con quanto segue e passare alla sezione successiva:
pip install bleak
Per verificare se hai Pip sul tuo computer , apri il prompt dei comandi e digita pip. Se ce l'hai, vedrai un menu di aiuto.
Se non lo fai, riceverai un errore:
‘pip’ is not recognized as an internal or external command,
operable program or batch file.
py -m ensurepip --upgrade
Ora che Pip è installato, possiamo installare Bleak nel prompt dei comandi eseguendo:
pip install bleak
Scrivere il nostro scanner Bluetooth
Ti forniremo il codice completo e poi spiegheremo i suoi pezzi:
# scanner.py
import asyncio
from bleak import BleakScanner
async def main():
devices = await BleakScanner.discover()
for device in devices:
print(device)
asyncio.run(main())
La prima cosa che differisce dallo script Python medio è che usiamo asyncio, che include asynce await.
Questo è chiamato codice asincrono ed è necessario durante la codifica per i dispositivi Bluetooth. Asyncio viene utilizzato per dire al nostro codice di avviare il nostro scanner Bleak ma poi attendere i messaggi dai dispositivi Bluetooth. Senza asyncio, il nostro codice avvierebbe lo scanner Bleak, si renderebbe conto di non aver sentito nulla nei 2 millisecondi necessari per l'esecuzione, quindi si chiuderebbe immediatamente senza alcun risultato di scansione.
Poiché il Bluetooth (e il wireless e il networking in generale) si basano sull'attesa che altri dispositivi facciano le loro cose, usiamo il codice asincrono per dire al nostro script di attendere un po' prima di uscire o di uscire in errore a causa della mancanza di risposte Bluetooth. Una guida completa su Asyncio e sul codice asincrono è disponibile qui.
Cosa c'è dentro main()è semplicissimo:
devices = await BleakScanner.discover()
for device in devices:
print(device)
Le parole chiave async/ awaitnon sono sempre intuitive. Vedi la guida di Real Python su Asyncio per una spiegazione più approfondita del motivo per cui usiamo awaitsopra.
Esecuzione dello scanner Bluetooth
Se non conosci l'esecuzione di script Python sul tuo computer, consulta il nostro articolo Come creare uno script Python autonomo sia per Mac OS che per Windows.
Per eseguire lo script:
- Salva il codice dello scanner dalla sezione precedente in un nuovo file,
scanner.py - Esegui
scanner.pydal prompt dei comandi
Vediamo gli indirizzi MAC a sinistra ( AB:CD:EF:12:34:56) e i nomi dei dispositivi a destra.
Il nostro semplice scanner Bluetooth LE è completo.
Risoluzione dei problemi
- Se ricevi un
device not founderrore o qualcosa di simile, assicurati che il Bluetooth del tuo computer sia attivo . - Se il tuo script non stampa nulla, prova a eseguirlo di nuovo. A volte, ci sono così pochi dispositivi vicino a te che il tuo computer non rileva alcun segnale.
Se hai domande o commenti, scrivici a [email protected] o inviaci un messaggio su Instagram (@protobioengineering) .
Se ti è piaciuto questo articolo, considera di sostenerci donando un caffè .
articoli Correlati
Sono in lavorazione altri tutorial su Windows, anche se potresti essere in grado di cooptare il codice dagli articoli di Mac OS seguenti per funzionare ancora su Windows.
- Come connettersi a un dispositivo Bluetooth con un MacBook e Python
- Come realizzare uno scanner Bluetooth LE dettagliato con Mac e Python
- GitHub per i biologi
- Come creare mappe colorate dei paesi in Python (mappe coropletiche)

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































