1、bluepy 简介

bluepy 是github上一个很好的蓝牙开源项目,其地址在 LINK-1, 其主要功能是用python实现linux上BLE的接口。

This is a project to provide an API to allow access to Bluetooth Low Energy devices from Python. At present it runs on Linux only; I've mostly developed it using a Raspberry Pi, but it will also run on x86 Debian Linux.

支持python版本:The code is tested on Python 2.7 and 3.4; it should also work on 3.3.

2、安装

直接源码安装,python3加持:

sudo apt-get install git build-essential libglib2.0-dev

git clone https://github.com/IanHarvey/bluepy.git

cd bluepy

python3 setup.py build

sudo python3 setup.py install

注:不要用python2,这辈子都不会用python2!

注:进行到这一步突然惊醒我的台式机无蓝牙,遂开启我的无屏幕树莓派,用命令找其ip,并用ssh登录:

➜ Downloads sudo nmap -sS -p 22 192.168.31.0/24 | grep -B 5 -A 0 "Pi"

Nmap scan report for 192.168.31.51

Host is up (0.19s latency).

PORT STATE SERVICE

22/tcp open ssh

MAC Address: B8:27:EB:71:33:AE (Raspberry Pi Foundation)

➜ Downloads ssh pi@192.168.31.51

pi@192.168.31.51's password: 1234

3、看文档,玩DEMO

bluepy 的文档地址 LINK-2

在bluepy中新建一个examples文件夹,用来存放接下来我们的测试DEMO:

3.1 scan devices demo

这里第一个DEMO是BLE设备扫描,这里用到了Scanner对象,该对象可以用来搜索BLE设备的广播包数据。在大多数情况下该对象将会扫描出周围所有可连接设备。

下面是我改造为python3的代码:

➜ examples git:(master) ✗ cat scan.py

#!/usr/bin/env python

# coding=utf-8

from bluepy.btle import Scanner, DefaultDelegate

class ScanDelegate(DefaultDelegate):

def __init__(self):

DefaultDelegate.__init__(self)

def handleDiscovery(self, dev, isNewDev, isNewData):

if isNewDev:

print("Discovered device", dev.addr)

elif isNewData:

print("Received new data from", dev.addr)

scanner = Scanner().withDelegate(ScanDelegate())

devices = scanner.scan(10.0)

for dev in devices:

print("Device %s (%s), RSSI=%d dB" % (dev.addr, dev.addrType, dev.rssi))

for (adtype, desc, value) in dev.getScanData():

print(" %s = %s" % (desc, value))

其中Scanner([index=0])用于产生并初始化一个新的scanner对象,index 用来指名哪一个蓝牙设备就会被用(默认0表示使用/dev/hci0)。扫描知道调用start或scan函数之后才会开始;

其中withDelegate(delegate)存储对委托对象的引用,委托对象在接收来自设备的广播时接收回调。有关详细信息,请参阅DefaultDelegate的文档;

其中scan([timeout = 10])开始扫描并带有超时,在此扫描期间扫描到的设备会触发Delegate的回调函数,我们可以在其回调函数中实时获取并打印。当超时后会返回一个设备列表;

执行效果如下:

注:注意用sudo运行,更详细的接口见 LINK-3

3.2 get services

bluepy 的DEMO有点少,我又找了个专是DEMO的github项目:LINK-5

将其中的getServices.py改造下:

➜ examples git:(master) ✗ cat get_setvices.py

import sys

from bluepy.btle import UUID, Peripheral

if len(sys.argv) != 2:

print("Fatal, must pass device address:", sys.argv[0], "")

quit()

p = Peripheral(sys.argv[1],"public")

services=p.getServices()

#displays all services

for service in services:

print(service)

其中Peripheral(sys.argv[1],"public")是用mac地址创建一个连接,由于我们上一步用scan搜索到的mac地址为public类型,因此这里第二个参数为"public",更详细的介绍见 LINK-6;

其中getServices会返回所连接设备的服务;

执行效果如下:

3.3 get characteristics

同3.2获取characteristic的代码如下:

➜ examples git:(master) ✗ cat get_characteristics.py

import sys

from bluepy.btle import UUID, Peripheral

if len(sys.argv) != 2:

print("Fatal, must pass device address:", sys.argv[0], "")

quit()

p = Peripheral(sys.argv[1],"public")

chList = p.getCharacteristics()

print("Handle UUID Properties")

print("-------------------------------------------------------")

for ch in chList:

print(" 0x"+ format(ch.getHandle(),'02X') +" "+str(ch.uuid) +" " + ch.propertiesToString())

执行效果如下:

3.4 get device name

直接上代码:

➜ examples git:(master) ✗ cat get_device_name.py

import sys

from bluepy.btle import UUID, Peripheral

dev_name_uuid = UUID(0x2A00)

if len(sys.argv) != 2:

print("Fatal, must pass device address:", sys.argv[0], "")

quit()

p = Peripheral(sys.argv[1],"public")

try:

ch = p.getCharacteristics(uuid=dev_name_uuid)[0]

if (ch.supportsRead()):

print(ch.read())

finally:

p.disconnect()

运行效果如下:

小结

bluepy 是非常棒的一款蓝牙BLE工具,掌握它会为你节省比较多的时间~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: bluepy 一款python封装的BLE利器简单介绍

本文地址: http://www.cppcns.com/jiaoben/python/263410.html

python利器怎么编程-bluepy 一款python封装的BLE利器简单介绍相关推荐

  1. python利器怎么用-bluepy 一款python封装的BLE利器简单介绍

    1.bluepy 简介 bluepy 是github上一个很好的蓝牙开源项目,其地址在 LINK-1, 其主要功能是用python实现linux上BLE的接口. This is a project t ...

  2. python利器-[python] bluepy 一款python封装的BLE利器

    1.bluepy 简介 bluepy 是github上一个很好的蓝牙开源项目,其地址在 LINK-1, 其主要功能是用python实现linux上BLE的接口. This is a project t ...

  3. python利器-bluepy 一款python封装的BLE利器简单介绍

    1.bluepy 简介 bluepy 是github上一个很好的蓝牙开源项目,其地址在 LINK-1, 其主要功能是用python实现linux上BLE的接口. This is a project t ...

  4. python的编程工具spider_7款Python开发神器,拿走不谢

    在人工智能开启的时代,Python作为人工智能的首选语言,前景可以预见.因此学习Python的人越来越多.今天,快快小编准备给大家介绍7款Python开发神器,欢迎收藏转发! 1.Micro Pyth ...

  5. python编程工具-7款Python开发工具介绍,你最中意哪一款

    工欲善其事必先利其器,有一款好用上手的Python编辑器能够大大提高码代码的效率,而且所带来的提升不是从 1 到 1.1 倍速,是从 1 到 10 倍速.所以行哥这里来推荐几个常用的Python开发工 ...

  6. python可以在线编程吗-有哪些 python 的在线练习题或编程挑战的网站?

    github上优秀的Python练习项目 黑板报 实用的nlp搜集 HelloGitHub 月报 实用项目 fastapi glances 系统监控 python-fire PySnooper 调试代 ...

  7. 学python用什么软件开发-5款Python程序员高频使用开发工具推荐

    很多Python学习者想必都会有如下感悟:最开始学习Python的时候,因为没有去探索好用的工具,吃了很多苦头.后来工作中深刻体会到,合理使用开发的工具的便利和高效.今天,我就把Python程序员使用 ...

  8. python微控制器编程从零开始-单片机可以使用Python语言来控制了!

    告诉广大Python爱好者一个好消息,单片机可以使用Python语言来控制了. Arudino虽然在开源硬件领域非常流行,但是对于不懂C/C++编程语言的玩家来说,还是需要一段学习时间. Damien ...

  9. 编程小白的第一本python入门书-编程小白的第一本 Python 入门书

    编程小白的第一本 Python 入门书 侯爵 (作者) 既然笨办法不能让我学会 Python,那么我决定用一种聪明方法来学,为自己创造学习的捷径.这种高效学习法的核心在于: 1.精简:学习最核心的关键 ...

最新文章

  1. PHP - 如何在函数内访问另一个文件中的变量
  2. python中与时间有关的对象-datetime、time、date
  3. 自定义数据格式的矢量地图实现
  4. 中python执行shell_IPython,在探索中学习编程
  5. Spring: ConfigurationClassUtils类
  6. [USACO4.1]麦香牛块Beef McNuggets By cellur925
  7. [原]防火墙安装配置(日志)
  8. 删除数组中重复的元素
  9. websocket php apache,PHP第一篇:PHP WebSocket实现前后端数据交互,亲测可用(windows+ apache2.4 +php5.6 )...
  10. gitgithub 的使用
  11. 如何在SQL Server计算XX年第XX周是哪几天
  12. 服务器群晖系统安装,使用电脑为群晖NAS安装DSM操作系统
  13. Win10微软拼音使用小鹤双拼方案
  14. Python中的timezone
  15. 能在学生用计算机的面上画的图画,小学生电脑绘画作品欣赏
  16. 向淘宝学运营:移动MM速长成
  17. JAVA毕业设计共享充电宝管理系统计算机源码+lw文档+系统+调试部署+数据库
  18. 基于PyQt的网站后台工具
  19. 《Java 8实战》
  20. 搁浅一笺思念,静候几度时光。

热门文章

  1. 宠物乘机的三种模式【转】
  2. ledisDB底层实现——本质上就是用leveldb这样的底层存储,和ssdb一样,meta里存的是hash、list等的元数据...
  3. spark 任务运行原理
  4. Python数据结构与算法—队列
  5. 查看端口被哪个进程占用
  6. c++模板库的一些基本使用
  7. 【动态规划】loj#2485. 「CEOI2017」Chase
  8. 使用Navicat创建数据库,外键出现错误ERROR 1005: Can't create table (errno: 121)
  9. iOS 系统版本判断
  10. 参数定义sql 递归查询子目录