[PYTHON] Exécutez SwitchBot avec Bleak sur Windows 10

introduction

Cet article est un article de didacticiel destiné à ceux qui souhaitent effectuer une communication BLE de SwitchBot à l'aide de Bleak sous Windows 10. Il se connecte à SwitchBot et envoie des octets d'instructions. Le langage est python. De plus, bien que SwitchBot soit utilisé dans cet article, je pense qu'il peut être utilisé pour d'autres appareils BrueTooth en tant que communication BLE utilisant Bleak car il se connecte et envoie uniquement des octets d'instructions. (Probablement)

Exigences

SwitchBot C'est un interrupteur qui peut être commandé à distance par Bluetooth. Il existe plusieurs types, mais cette fois, j'utiliserai le SwitchBot suivant https://www.switchbot.jp/bot

Communication BLE

La communication BLE (Bluetooth Low Energy) est une norme ajoutée à partir de la version Bluetooth 4.0 qui permet la communication avec des appareils Bluetooth à faible puissance. Je pense qu'il est plus facile de comprendre ce domaine si vous vous référez à l'article du prédécesseur. https://houwa-js.co.jp/blog/2018/06/20180629/
https://jellyware.jp/kurage/bluejelly/ble_guide.html

Pyblues ne peut pas être utilisé sous l'environnement Windows

Si vous souhaitez effectuer une communication BLE de SwitchBot sous l'environnement Windows, pybluez, qui est la principale bibliothèque de communication BLE utilisée, ne peut pas être utilisé sous Windows. (Référence: https://atatat.hatenablog.com/entry/2020/07/09/003000#3-Bleak%E3%81%AE%E5%88%A9%E7%94%A8) De plus, SwitchBot a github pour la communication BLE sur PC, mais c'est un code qui n'est pris en charge que par pyblues, donc Il ne peut pas être utilisé tel quel.

Utilisation de Bleak

De cet article Puisqu'il a été dit qu'un module appelé Bleak peut être utilisé pour la communication BLE sous l'environnement Windows, je vais l'utiliser. Exécutez la commande pip suivante.

pip install bleak

Découvrez l'adresse MAC du SwitchBot

En vous référant au Document officiel, exécutez le programme pour rechercher les appareils Bluetooth à proximité sur votre PC.

Discover.py


import asyncio
from bleak import discover

async def run():
    devices = await discover()
    for d in devices:
        #Afficher l'adresse Mac, le nom et la distance de l'appareil trouvé
        print(d.address,d.name,d.rssi)
        print(d)

loop = asyncio.get_event_loop()
loop.run_until_complete(run())

Si SwitchBot est trouvé ici, l'adresse MAC de SwitchBot sera affichée, alors copiez-la. Si vous ne le trouvez pas, téléchargez le pilote Bluetooth depuis ici et vérifiez si le SwitchBot est correctement reconnu. De plus, il existe une possibilité de défaillance initiale de SwitchBot, il est donc recommandé d'effectuer un test de connexion à partir de l'application SwitchBot fournie par l'application Android / iOS. La méthode détaillée est décrite dans le guide de démarrage rapide fourni avec Switchbot.

Connexion avec SwutchBot

Si l'adresse MAC peut être obtenue, connectez-vous au SwitchBot via la communication BLE → envoyez une commande. Le programme suivant est un exemple de la connexion et de la transmission créées.

Bleak_Connect_SwitchBot.py


import asyncio
from bleak import discover

async def run():
import asyncio
from bleak import BleakClient
import time

#Adresse Mac du switchbot.[Discover.py]Besoin de savoir dans
address = " "
#switchbot UUID.Excavé du github de SwitchBot
UUID = "cba20002-224d-11e6-9fb8-0002a5d5c51b"


async def run(address, loop):
    async with BleakClient(address, loop=loop) as client:
        #Faites une pause pour éviter les erreurs de synchronisation.
        time.sleep(5)

        #Test de connexion ci-dessous.[Connected: False]S'affiche, la connexion a échoué.
        x = await client.is_connected()
        print("Connected: {0}".format(x))
        #Vérifiez l'état actuel du switchbot
        y = await client.read_gatt_char(UUID)
        print(y)
        print("La connexion a réussi. Veuillez entrer la commande.\commande n → appuyez sur,on,off,exit")
        while True:
            #Recevez des commentaires. Modifiez la commande à envoyer pour chaque commande. sortie si sortie
            command = input()
            if command == "press":
                write_byte = bytearray(b'\x57\x01\x00')
            elif command == "on":
                write_byte = bytearray(b'\x57\x01\x01')
            elif command == "off":
                write_byte = bytearray(b'\x57\x01\x02')
            elif command == "exit":
                #[exit]Si vous entrez, cela se terminera dans 1 seconde
                await asyncio.sleep(1.0, loop=loop)
                break
            else:
                print("Veuillez entrer la commande.\commande n → appuyez sur,on,off,exit")
                continue

            #Envoyer des instructions à switchbot
            await client.write_gatt_char(UUID, write_byte)
            #Vérifiez l'état actuel du switchbot
            y = await client.read_gatt_char(UUID)
            print(y)
            #Pause en raison d'une erreur de synchronisation
            time.sleep(2)


#Commencez la communication avec Switchbot par Bleak
loop = asyncio.get_event_loop()
loop.run_until_complete(run(address, loop))

Ce programme attend l'entrée des E / S standard si la connexion est réussie. Vous pouvez entrer la commande suivante:

Basculez l'octet d'instruction en fonction de l'opération que vous souhaitez effectuer et envoyez l'instruction à Switchbot par client.write_gatt_char (UUID, write_byte). Si le SwitchBot fonctionne correctement, vous avez réussi.

Résumé

J'ai expliqué comment utiliser SwitchBot pour la communication BLE (python) sous environnement Windows. Le contenu expliqué dans cet article ne peut que se connecter et envoyer, et je ne sais pas encore comment changer de mode de SwtichBot en raison de mon manque d'étude. Si je trouve une méthode de changement de mode dans le document officiel ou github à l'avenir, je voudrais l'ajouter et la décrire dans un autre article.

[]( Le github qui résume le code est ici (seul le code de cet article est disponible) ) Postscript (11/09/2020): l'API SwitchBot utilise BlueZ, elle ne peut donc pas être utilisée sous Windows. https://github.com/RoButton/switchbotpy

Recommended Posts

Exécutez SwitchBot avec Bleak sur Windows 10
Exécutez le servo avec Python sur ESP32 (Windows)
Exécutez Jupyter sur Ubuntu sous Windows
Exécutez Openpose sur Python (Windows)
Exécutez Jupyter Notebook sous Windows
Bloguer avec Pelican sur Windows
Exécutez Tensorflow avec la prise en charge native de Windows
Utilisez Tensorflow 2.1.0 avec Anaconda sur Windows 10!
Exécutez XGBoost sur Bash sur Ubuntu sous Windows
Commençant par USD sur Windows
Premiers pas avec Python 3.8 sous Windows
Exécutez le GPU Radeon sous Windows sur QEMU / KVM
Utiliser Tabpy avec Cloud Run (sur GKE)
Django + Apache avec mod_wsgi sur Windows Server 2016
Exécutez py.test sur Windows Anaconda et MinGW
Exécutez des applications Windows (héritées) avec le pilote d'application Windows
Exécutez matplotlib sur un conteneur Windows Docker
Exécutez Linux avec l'architecture ARM à l'aide de QEMU
Python sur Windows
Janken Poi avec Python Exécutons sur un serveur local Windows pour les débutants
Installez et exécutez Python3.5 + NumPy + SciPy sur Windows 10
Exécutez une application django sur Windows + Apache + mod_wsgi + service.
Mettez MicroPython sur Windows pour exécuter ESP32 sur Python
Installez OpenCV 4.0 et Python 3.7 sur Windows 10 avec Anaconda
Exécutez yolov4 "pour le moment" dans Windows
Démarrez CentOS 8 à partir de Windows 10 avec Wake On LAN
Exécutez Flask sur CentOS avec python3.4, Gunicorn + Nginx.
Exécutez la matrice LED de manière interactive avec Raspberry Pi 3B + sur Slackbot
Exécutez Python avec VBA
Exécutez Tensorflow à partir de Jupyter Notebook sur Bash sur Ubuntu sous Windows
Exécutez prepDE.py avec python3
Le problème que Windows python est appelé dans pipenv sur WSL
Pylint sur Windows Atom
Linux (WSL) sous Windows
Exécutez Django sur PythonAnywhere
Exécutez mysqlclient sur Lambda
Exécutez Blender avec python
Python à partir de Windows 7
Essayez d'exécuter le cube core toio sur Windows 10 / macOS / Linux avec la bibliothèque Python bleak
Anaconda sur le terminal Windows
Installez Anaconda sur Windows 10
python basic ② sous windows
PIL en Python sur Windows8 (pour Google App Engine)
Installez python sur Windows
Installez pycuda sur Windows10
Créez un environnement Open AI Gym avec Bash sur Windows 10
Exécutez OpenMVG sur Mac
Construire TensorFlow sous Windows
Essayez FEniCS sur Windows!
Construisez XGBoost sur Windows
Installez pygraphviz sur Windows 10
Utilisez Ansible sur Windows
Essayez Poerty sur Windows
Installez Chainer 1.5.0 sur Windows
Jusqu'à ce que vous créiez un environnement d'apprentissage automatique avec Python sur Windows 7 et que vous l'exécutiez
Utilisez QuTiP sur Windows
Comment exécuter Django sur IIS sur un serveur Windows
Utiliser pip sur Windows
Remarques sur la façon d'utiliser Firefox avec du sélénium sous Windows