使用 asyncio 扫描蓝牙以获取广告信息。
项目描述
aioblescan
aioblescan 是一个 Python 3/asyncio 库,用于侦听 BLE 广告数据包。
安装
我们在 PyPi 上,所以
pip3 install aioblescan
或者
python3 -m pip install aioblescan
如何使用
本质上,您创建了一个函数来处理传入的信息并将其附加到BTScanRequester。然后创建蓝牙连接,发出扫描命令并等待传入数据包并处理它们。
您可以使用 Eddystone 或 RuuviWeather 来检索特定信息
最简单的方法是查看__main__.py文件。
您可以使用
python3 -m aioblescan
添加-h以获得帮助。
要查看 RuuviTag 天气信息,请尝试:
python3 -m aioblescan -r
你会得到
Weather info {'rssi': -64, 'pressure': 100300, 'temperature': 24, 'mac address': 'fb:86:84:dd:aa:bb', 'tx_power': -7, 'humidity': 36.0}
Weather info {'rssi': -62, 'pressure': 100300, 'temperature': 24, 'mac address': 'fb:86:84:dd:aa:bb', 'tx_power': -7, 'humidity': 36.0}
检查 Eddystone 信标
python3 -m aioblescan -e
你得到
Google Beacon {'tx_power': -7, 'url': 'https://ruu.vi/#BEgYAMR8n', 'mac address': 'fb:86:84:dd:aa:bb', 'rssi': -52}
Google Beacon {'tx_power': -7, 'url': 'https://ruu.vi/#BEgYAMR8n', 'mac address': 'fb:86:84:dd:aa:bb', 'rssi': -53}
使用 [自定义固件]( https://github.com/atc1441/ATC_MiThermometer ) 信标检查 ATC_MiThermometer
python3 -m aioblescan -A
你得到
Temperature info {'mac address': 'a4:c1:38:40:52:38', 'temperature': 2.8, 'humidity': 62, 'battery': 72, 'battery_volts': 2.863, 'counter': 103, 'rssi': -76}
Temperature info {'mac address': 'a4:c1:38:40:52:38', 'temperature': 2.8, 'humidity': 62, 'battery': 72, 'battery_volts': 2.863, 'counter': 103, 'rssi': -77}
检查 ThermoBeacon 传感器
python3 -m aioblescan -T
你得到
- ::
温度信息 {'mac 地址': '19:c4:00:00:0f:5d', 'max_temperature': 27.0625, 'min_temperature': 21.75, 'max_temp_ts': 0, 'min_temp_ts': 2309} 温度信息 {' mac地址':'19:c4:00:00:0f:5d','温度':21.75,'湿度':49.5,'电池电压':3234,'计数器':2401,'rssi':-67}
对于通用广告数据包扫描
python3 -m aioblescan
你得到
HCI Event:
code:
3e
length:
19
LE Meta:
code:
02
Adv Report:
num reports:
1
ev type:
generic adv
addr type:
public
peer:
54:6c:0e:aa:bb:cc
length:
7
flags:
Simul LE - BR/EDR (Host): False
Simul LE - BR/EDR (Control.): False
BR/EDR Not Supported: False
LE General Disc.: True
LE Limited Disc.: False
Incomplete uuids:
ff:30
rssi:
-67
HCI Event:
code:
3e
length:
43
LE Meta:
code:
02
Adv Report:
num reports:
1
ev type:
no connection adv
addr type:
random
peer:
fb:86:84:dd:aa:bb
length:
31
flags:
Simul LE - BR/EDR (Host): False
Simul LE - BR/EDR (Control.): False
BR/EDR Not Supported: False
LE General Disc.: True
LE Limited Disc.: True
Complete uuids:
fe:aa
Advertised Data:
Service Data uuid:
fe:aa
Adv Payload:
10:f9:03:72:75:75:2e:76:69:2f:23:42:45:77:59:41:4d:52:38:6e
rssi:
-59
这里第一个数据包来自 Wynd 设备,第二个来自 Ruuvi 标签
aioblescan 还可以发送 EddyStone 广告。运行模块时尝试 -a 标志。
常问问题
为什么不使用scapy?
Scapy很棒,你可以做到
import scapy.all as sa test=sa.BluetoothHCISocket(0) command=sa.HCI_Cmd_LE_Set_Scan_Enable(enable=1,filter_dups=0) chdr=sa.HCI_Command_Hdr(len=len(command)) hdr=sa.HCI_Hdr(type=1) test.send(hdr / chdr / command)
让事情顺利进行。但是...... Scapy 的伟大之处在于有很多版本可供选择......。并且并非所有功能都相同……安装可能很随意,有些版本根本无法安装。scapy 还包含许多其他协议,可能有点矫枉过正......最后学习永远不会太晚......
你能追踪什么?
aioblescan 将尝试解析所有传入的广告信息。当它不知道该怎么做时,您可以看到原始数据。使用 Eddystone 信标,您可以查看 URL、遥测和 UID
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
aioblescan -0.2.13.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 28632e32c8180ea4b792f4cf9b88968dd100f4d3cee0cf16d27c193cf954422a |
|
| MD5 | 0601cf9335e5d89166a88f53597c79bf |
|
| 布莱克2-256 | bd04c6798c76704d57da22f19c2e47485821d4b23144ef75f9c0e18dbfe47565 |
aioblescan -0.2.13-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 8b76d05e65f9c88f7a5832e000fba552c3894936892fe212d9118564a399ab50 |
|
| MD5 | 333b0f8109fef5d8738434d660d773df |
|
| 布莱克2-256 | 009efd25cb126e991879696c4749ac82ca1074036f79bc084525c66744a30240 |