Rapid iot 套件只有蓝牙和Thread,那么如何使用Rapid iot 套件实现物联网技术?这需要借助网关,将其数据转发到互联网上。在online ide中,使用的网关是手机。不过使用手机当网关的应用还是少数。使用PC端或者树莓派这样的设备当网关可能更实用。因此选择使用笔记本的蓝牙来实现网关功能。
使用的编程语言是python3,使用的库是bleak。使用这个库能够实现蓝牙BLE的连接与通讯。
现在实现了读取套件的数据的功能。
下面是python的代码
- import asyncio
- from bleak import discover
- from bleak import BleakClient
- import time
- class My_Bluetooth():
- def __init__(self,name):
- self.devices = None
- self.loop = asyncio.get_event_loop()
- self.name = name
- async def find_devices(self):
- self.devices = await discover()
- def scan_devices(self):
- print("Find devices..")
- self.loop.run_until_complete(self.find_devices())
- def get_device_addr(self):
- for d in self.devices:
- if d.name == self.name:
- self.addr = d.address
- def connect_device(self):
- print("Try to connect "+self.addr+" ...")
- self.client = BleakClient(self.addr,self.loop)
- self.loop.run_until_complete(self.client.connect())
- ##print(self.client.is_connected())
- async def get_services(self):
- self.svcs = await self.client.get_services()
-
- def print_services(self):
- self.loop.run_until_complete(self.get_services())
- print("Services:", self.svcs)
-
- async def read_battery(self):
- BATTERY_UUID = "00002a19-0000-1000-8000-00805f9b34fb"
- self.value = await self.client.read_gatt_char(BATTERY_UUID)
- def print_battery_value(self):
- self.loop.run_until_complete(self.read_battery())
- print(int(self.value.hex(),16))
- print("Start..")
- BT = My_Bluetooth("RPK-AF90")
- BT.scan_devices()
- BT.get_device_addr()
- BT.connect_device()
- BT.print_services()
- while True:
- BT.print_battery_value()
- time.sleep(5)
复制代码
实现的效果是每5秒显示一下电量。
此内容由EEWORLD论坛网友manhuami2007原创,如需转载或用于商业用途需征得作者同意并注明出处