Comment créer un scanner Bluetooth simple sous Windows avec Python
Trouvez tous les gadgets intelligents de votre région avec un ordinateur et un code Windows.
Une version Mac OS de cet article est également disponible, ainsi qu'une version condensée avec du code uniquement.
Si vous êtes assis à la maison ou dans votre bureau (c'est la même chose pour beaucoup de gens de nos jours), vous êtes entouré d'appareils Bluetooth sans fil qui communiquent tous entre eux à la vitesse de la lumière . Peut-être que vous venez d'acheter un de ces appareils particuliers (une ampoule intelligente, un four intelligent, une carte Arduino , etc.) et que vous souhaitez essayer de vous y connecter et de le contrôler.
Que vous souhaitiez espionner votre quartier ou éventuellement vous connecter à votre nouveau gadget intelligent, la première étape consiste à trouver ces appareils en créant un scanner Bluetooth .
Remarque : Ce didacticiel concerne le Bluetooth Low Energy (BLE), le type de Bluetooth le plus courant dans les appareils portables et intelligents modernes. La plupart des écouteurs et des appareils Bluetooth plus anciens utilisent à la place Bluetooth Classic . Le code qui fonctionne pour Bluetooth LE ne fonctionnera pas pour les appareils Bluetooth Classic.
Un scanner Bluetooth n'est pas une chose physique mais un morceau de code. Il peut fonctionner sur votre ordinateur et trouver tous les appareils Bluetooth près de chez vous, et il ne s'agit que d'environ 10 lignes de Python.
C'est possible, car les appareils Bluetooth envoient toujours des signaux dans les airs disant : « Je m'appelle [Steve's Smart Watch], et je veux me connecter ! Ensuite, d'autres appareils, comme votre ordinateur portable, peuvent écouter l'émission comme une radio. Ces signaux sont appelés "publicités".
Notre scanner fonctionnera en collectant ces "Je veux me connecter!" messages de chaque appareil dans la zone pendant 5 à 10 secondes, mais au lieu de se connecter à l'un des appareils, nous écrirons simplement les informations des publicités de ces appareils sur notre écran d'ordinateur.
Ci-dessus se trouvent les adresses ( 2C:16:15:A4:B5:CC) et les noms ( Samsung AU8000 50 TV) de chaque appareil Bluetooth dans notre région. Dans les prochains tutoriels, nous pourrons alors nous connecter à ces appareils et commencer réellement à les contrôler. Notez que tous les appareils ne sont pas assez gentils pour nous dire leur nom (beaucoup de None réponses). Heureusement, l'adresse est suffisante pour s'y connecter plus tard.
Remarque : les adresses de ces appareils sont appelées « adresses MAC » et elles aident les appareils sans fil à se distinguer. Ils sont comme une adresse IP permanente intégrée au matériel.
Commençons par la construction du scanner.
Les pré-requis techniques
- Windows 10+
- Python 3
- Bleak (une bibliothèque Python Bluetooth LE)
- Appareils Bluetooth LE dans un rayon de 20 à 100 mètres autour de vous
Le code du scanner est assez simple :
import asyncio
from bleak import BleakScanner
async def main():
devices = await BleakScanner.discover()
for device in devices:
print(device)
asyncio.run(main())
Les parties les plus fastidieuses sont :
- Installation de Bleak (la bibliothèque Bluetooth Python)
- Compréhension
asyncio(bien que cela soit facultatif)
Mais si vous êtes nouveau sur asyncio et Bleak…
Comment installer Bleak
Bleak est une bibliothèque Python robuste qui nous aidera à trouver des appareils Bluetooth LE.
Si vous connaissez Pip , vous pouvez installer Bleak avec ce qui suit et passer à la section suivante :
pip install bleak
Pour vérifier si vous avez Pip sur votre ordinateur , ouvrez l'invite de commande et tapez pip. Si vous l'avez, vous verrez un menu d'aide.
Si vous ne le faites pas, vous obtiendrez une erreur :
‘pip’ is not recognized as an internal or external command,
operable program or batch file.
py -m ensurepip --upgrade
Maintenant que Pip est installé, nous pouvons installer Bleak dans l'invite de commande en exécutant :
pip install bleak
Écrire notre scanner Bluetooth
Nous vous donnerons le code complet, puis vous expliquerons ses éléments :
# 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 première chose qui diffère du script Python moyen est que nous utilisons asyncio, qui inclut asyncet await.
C'est ce qu'on appelle le code asynchrone , et il est nécessaire lors du codage pour les appareils Bluetooth. Asyncio est utilisé pour dire à notre code de démarrer notre scanner Bleak mais d'attendre ensuite les messages des appareils Bluetooth. Sans asyncio, notre code démarrerait l'analyseur Bleak, se rendrait compte qu'il n'entendait rien en retour dans les 2 millisecondes qu'il a fallu pour s'exécuter, puis s'arrêtait immédiatement sans aucun résultat d'analyse.
Étant donné que Bluetooth (et le sans fil et le réseau en général) reposent sur l'attente d' autres appareils pour faire leur travail, nous utilisons du code asynchrone pour dire à notre script d'attendre un peu avant de quitter ou de se tromper en raison du manque de réponses Bluetooth. Un guide complet sur Asyncio et le code asynchrone est disponible ici.
Ce qu'il y a à l'intérieur main()est super simple :
devices = await BleakScanner.discover()
for device in devices:
print(device)
Les mots clés async/ awaitne sont pas toujours intuitifs. Voir le guide de Real Python sur Asyncio pour une explication plus approfondie de la raison pour laquelle nous utilisons awaitci-dessus.
Exécution du scanner Bluetooth
Si vous débutez dans l'exécution de scripts Python sur votre ordinateur, consultez notre article Comment créer un script Python autonome pour Mac OS et Windows.
Pour exécuter le script :
- Enregistrez le code du scanner de la section précédente dans un nouveau fichier,
scanner.py - Exécuter
scanner.pyà partir de l'invite de commande
Nous voyons les adresses MAC à gauche ( AB:CD:EF:12:34:56) et les noms de périphériques à droite.
Notre simple scanner Bluetooth LE est complet.
Dépannage
- Si vous obtenez une
device not founderreur ou quelque chose de similaire, assurez-vous que le Bluetooth de votre ordinateur est activé . - Si votre script n'imprime rien du tout, essayez de l'exécuter à nouveau. Parfois, il y a si peu d'appareils à proximité que votre ordinateur ne capte aucun signal.
Si vous avez des questions ou des commentaires, écrivez-nous à [email protected] ou envoyez-nous un message sur Instagram (@protobioengineering) .
Si cet article vous a plu, pensez à nous soutenir en offrant un café .
Articles Liés
D'autres didacticiels Windows sont en préparation, mais vous pourrez peut-être coopter le code des articles Mac OS ci-dessous pour continuer à fonctionner sous Windows.
- Comment se connecter à un appareil Bluetooth avec un MacBook et Python
- Comment créer un scanner Bluetooth LE détaillé avec Mac et Python
- GitHub pour les biologistes
- Comment créer des cartes de pays colorées en Python (cartes choroplèthes)
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































