[PYTHON] Führen Sie SwitchBot mit Bleak unter Windows 10 aus

Einführung

Dieser Artikel ist ein Tutorial-Artikel für diejenigen, die eine BLE-Kommunikation von SwitchBot mit Bleak unter Windows 10 durchführen möchten. Es stellt eine Verbindung zu SwitchBot her und sendet Anweisungsbytes. Die Sprache ist Python. Obwohl SwitchBot in diesem Artikel verwendet wird, kann es für andere BrueTooth-Geräte als BLE-Kommunikation mit Bleak verwendet werden, da nur Befehlsbytes verbunden und gesendet werden. (Wahrscheinlich)

Bedarf

SwitchBot Es ist ein Switch, der über Bluetooth ferngesteuert werden kann. Es gibt mehrere Typen, aber dieses Mal werde ich den folgenden SwitchBot verwenden https://www.switchbot.jp/bot

BLE Kommunikation

Die BLE-Kommunikation (Bluetooth Low Energy) ist ein Standard, der ab Bluetooth Version 4.0 hinzugefügt wurde und die Kommunikation mit Bluetooth-Geräten mit geringem Stromverbrauch ermöglicht. Ich denke, es ist einfacher, diesen Bereich zu verstehen, wenn Sie sich auf den Artikel des Vorgängers beziehen. https://houwa-js.co.jp/blog/2018/06/20180629/
https://jellyware.jp/kurage/bluejelly/ble_guide.html

Pyblues kann unter Windows nicht verwendet werden

Wenn Sie die BLE-Kommunikation von SwitchBot unter Windows ausführen möchten, kann Pybluez, die wichtigste verwendete BLE-Kommunikationsbibliothek, unter Windows nicht verwendet werden. (Referenz: https://atatat.hatenablog.com/entry/2020/07/09/003000#3-Bleak%E3%81%AE%E5%88%A9%E7%94%A8) Darüber hinaus verfügt SwitchBot über github für die BLE-Kommunikation auf dem PC. Dieser Code wird jedoch nur von Pyblues unterstützt Es kann nicht so verwendet werden, wie es ist.

Verwendung von düsteren

Aus diesem Artikel Da gesagt wurde, dass ein Modul namens Bleak für die BLE-Kommunikation in der Windows-Umgebung verwendet werden kann, werde ich es verwenden. Führen Sie den folgenden Befehl pip aus.

pip install bleak

Finden Sie die MAC-Adresse des SwitchBot heraus

Führen Sie das Programm aus, um auf Ihrem PC nach Bluetooth-Geräten in der Nähe zu suchen, während Sie auf das offizielle Dokument verweisen.

Discover.py


import asyncio
from bleak import discover

async def run():
    devices = await discover()
    for d in devices:
        #Zeigen Sie die Mac-Adresse, den Namen und die Entfernung des gefundenen Geräts an
        print(d.address,d.name,d.rssi)
        print(d)

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

Wenn SwitchBot hier gefunden wird, wird die MAC-Adresse von SwitchBot angezeigt. Kopieren Sie sie daher. Wenn Sie es nicht finden können, laden Sie den Bluetooth-Treiber von hier herunter und überprüfen Sie, ob der SwitchBot korrekt erkannt wird. Da die Möglichkeit eines anfänglichen Ausfalls von SwitchBot besteht, wird empfohlen, den Verbindungstest über die von der Android / iOS-App bereitgestellte SwitchBot-App durchzuführen. Die detaillierte Methode ist in der dem Switchbot beiliegenden Kurzanleitung beschrieben.

Verbindung mit SwutchBot

Wenn die MAC-Adresse abgerufen werden kann, stellen Sie über BLE-Kommunikation eine Verbindung zu SwitchBot her → Senden Sie einen Befehl. Das folgende Programm ist ein Beispiel für die erstellte Verbindung und Übertragung.

Bleak_Connect_SwitchBot.py


import asyncio
from bleak import discover

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

#Switchbot Mac-Adresse.[Discover.py]Müssen in herausfinden
address = " "
#Switchbot-UUID.Aus dem Github von SwitchBot ausgegraben
UUID = "cba20002-224d-11e6-9fb8-0002a5d5c51b"


async def run(address, loop):
    async with BleakClient(address, loop=loop) as client:
        #Pause, um Synchronisationsfehler zu vermeiden.
        time.sleep(5)

        #Verbindungstest unten.[Connected: False]Wird angezeigt, ist die Verbindung fehlgeschlagen.
        x = await client.is_connected()
        print("Connected: {0}".format(x))
        #Überprüfen Sie den aktuellen Status des Switchbots
        y = await client.read_gatt_char(UUID)
        print(y)
        print("Die Verbindung war erfolgreich. Bitte geben Sie den Befehl ein.\n Befehl → drücken,on,off,exit")
        while True:
            #Eingaben empfangen. Ändern Sie den Befehl, der für jeden Befehl gesendet werden soll. beenden, wenn beenden
            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]Wenn Sie eingeben, endet es in 1 Sekunde
                await asyncio.sleep(1.0, loop=loop)
                break
            else:
                print("Bitte geben Sie den Befehl ein.\n Befehl → drücken,on,off,exit")
                continue

            #Senden Sie Anweisungen an switchbot
            await client.write_gatt_char(UUID, write_byte)
            #Überprüfen Sie den aktuellen Status des Switchbots
            y = await client.read_gatt_char(UUID)
            print(y)
            #Pause wegen Synchronisationsfehler
            time.sleep(2)


#Starten Sie die Kommunikation mit dem Switchbot düster
loop = asyncio.get_event_loop()
loop.run_until_complete(run(address, loop))

Dieses Programm wartet auf die Eingabe von Standard-E / A, wenn die Verbindung erfolgreich ist. Sie können den folgenden Befehl eingeben:

Schalten Sie das Anweisungsbyte entsprechend der Operation um, die Sie ausführen möchten, und senden Sie die Anweisung per client.write_gatt_char (UUID, write_byte) an Switchbot. Wenn der SwitchBot ordnungsgemäß funktioniert, sind Sie erfolgreich.

Zusammenfassung

Ich habe erklärt, wie SwitchBot für die BLE-Kommunikation (Python) unter Windows verwendet wird. Der in diesem Artikel erläuterte Inhalt kann nur verbunden und gesendet werden, und ich weiß immer noch nicht, wie ich den Modus von SwtichBot wechseln soll, da ich nicht studiert habe. Wenn ich in Zukunft einen Weg finde, den Modus vom offiziellen Dokument oder Github zu wechseln, möchte ich ihn hinzufügen und in einem anderen Artikel beschreiben.

[]( Der Github, der den Code zusammenfasst, ist hier (nur der Code in diesem Artikel ist verfügbar) ) Postscript (2020/09/11): Die SwitchBot-API verwendet BlueZ und kann daher unter Windows nicht verwendet werden. https://github.com/RoButton/switchbotpy

Recommended Posts

Führen Sie SwitchBot mit Bleak unter Windows 10 aus
Führen Sie das Servo mit Python unter ESP32 (Windows) aus.
Führen Sie Jupyter unter Ubuntu unter Windows aus
Führen Sie Openpose unter Python (Windows) aus.
Führen Sie Jupyter Notebook unter Windows aus
Bloggen mit Pelican unter Windows
Führen Sie Tensorflow mit nativer Unterstützung für Windows aus
Verwenden Sie Tensorflow 2.1.0 mit Anaconda unter Windows 10!
Führen Sie XGBoost unter Bash unter Ubuntu unter Windows aus
Beginnend mit USD unter Windows
Erste Schritte mit Python 3.8 unter Windows
Führen Sie die Radeon-GPU unter Windows unter QEMU / KVM aus
Verwenden Sie Tabpy mit Cloud Run (auf GKE)
Django + Apache mit mod_wsgi unter Windows Server 2016
Führen Sie py.test unter Windows Anaconda und MinGW aus
Führen Sie (ältere) Windows-Apps mit dem Windows-Anwendungstreiber aus
Führen Sie matplotlib in einem Windows Docker-Container aus
Führen Sie Linux mit ARM-Architektur mit QEMU aus
Python unter Windows
Janken Poi mit Python Lassen Sie uns für Anfänger auf einem lokalen Windows-Server laufen
Installieren Sie Python3.5 + NumPy + SciPy und führen Sie es unter Windows 10 aus
Führen Sie eine Django-Anwendung unter Windows + Apache + mod_wsgi + aus.
Setzen Sie MicroPython unter Windows ein, um ESP32 unter Python auszuführen
Installieren Sie OpenCV 4.0 und Python 3.7 unter Windows 10 mit Anaconda
Führen Sie yolov4 "vorerst" in Windows aus
Starten Sie CentOS 8 von Windows 10 mit Wake On LAN
Führen Sie Flask unter CentOS mit Python3.4, Gunicorn + Nginx aus.
Führen Sie die LED-Matrix interaktiv mit Raspberry Pi 3B + auf Slackbot aus
Führen Sie Python mit VBA aus
Führen Sie Tensorflow von Jupyter Notebook unter Bash unter Ubuntu unter Windows aus
Führen Sie prepDE.py mit python3 aus
Das Problem, dass Windows Python in pipenv auf WSL aufgerufen wird
Pylint unter Windows Atom
Linux (WSL) unter Windows
Führen Sie Django auf PythonAnywhere aus
Führen Sie mysqlclient auf Lambda aus
Führen Sie Blender mit Python aus
Python ab Windows 7
Versuchen Sie, den toio core cube unter Windows 10 / macOS / Linux mit der düsteren Python-Bibliothek auszuführen
Anaconda auf Windows Terminal
Installieren Sie Anaconda unter Windows 10
Python Basic ② in Windows
PIL in Python unter Windows8 (für Google App Engine)
Installieren Sie Python unter Windows
Installieren Sie pycuda unter Windows10
Erstellen Sie eine Open AI Gym-Umgebung mit Bash unter Windows 10
Führen Sie OpenMVG auf einem Mac aus
Erstellen Sie TensorFlow unter Windows
Probieren Sie FEniCS unter Windows aus!
Erstellen Sie XGBoost unter Windows
Installieren Sie pygraphviz unter Windows 10
Verwenden Sie Ansible unter Windows
Versuchen Sie Poerty unter Windows
Installieren Sie Chainer 1.5.0 unter Windows
Bis Sie mit Python unter Windows 7 eine maschinelle Lernumgebung erstellen und ausführen
Verwenden Sie QuTiP unter Windows
So führen Sie Django unter IIS auf einem Windows-Server aus
Verwenden Sie pip unter Windows
Hinweise zum Betrieb von Firefox mit Selen unter Windows