bluepy python 봉 인 된 BLE 이기 소개

1.bluepy 안내
bluepy 는 github 의 좋 은 블 루 투 스 오픈 소스 프로젝트 로 주 소 는LINK-1이 며,주요 기능 은 python 으로 Liux 의 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 버 전 지원:코드 는 Python 2.7 및 3.4 에서 테스트 됩 니 다.it should also work on 3.3.
2.설치
직접 원본 설치,python 3 추가:

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
주:python 2 를 쓰 지 마 세 요.평생 python 2 를 쓰 지 않 을 거 예요!
주:이 단계 까지 진행 되 었 습 니 다.갑자기 제 데스크 톱 에 블 루 투 스 가 없어 서 제 무 스크린 크 랜 베 리 파 이 를 열 었 습 니 다.명령 으로 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 [email protected]
[email protected]'s password: 1234
3,문서 보기,데모 게임
bluepy 문서 주소LINK-2
다음 테스트 데모 를 저장 하기 위해 bluepy 에 examples 폴 더 를 새로 만 듭 니 다.
3.1 scan devices demo
여기 서 첫 번 째 DEMO 는 BLE 장치 스 캔 입 니 다.Scanner 대상 을 사 용 했 습 니 다.이 대상 은 BLE 장치 의 라디오 패 킷 데 이 터 를 검색 할 수 있 습 니 다.대부분의 경우 이 대상 은 주변 에 연결 가능 한 모든 장 치 를 검색 할 것 이다.
다음은 제 가 python 3 으로 개조 한 코드 입 니 다.

➜ 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/hci 0 을 사용 합 니 다)스 캔 은 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], "<device address="">")
    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], "<device address="">")
    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], "<device address="">")
    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 도구 입 니 다.그것 을 파악 하면 많은 시간 을 절약 할 수 있 습 니 다~
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기