Metadata-Version: 2.1
Name: aioblescan
Version: 0.2.7
Summary: Scanning Bluetooth for advertised info with asyncio.
Home-page: http://github.com/frawau/aioblescan
Author: François Wautier
Author-email: francois@wautier.eu
License: MIT
Description: # aioblescan
        
        aioblescan is a Python 3/asyncio library to listen for BLE advertized packets.
        
        [![PyPI version fury.io](https://badge.fury.io/py/aioblescan.svg)](https://pypi.python.org/pypi/aioblescan)
        [![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-licen)
        [![GITHUB-BADGE](https://github.com/frawau/aioblescan/workflows/black/badge.svg)](https://github.com/psf/black)
        
        # Installation
        
        We are on PyPi so
        
             pip3 install aioblescan
        or
        
             python3 -m pip install aioblescan
        
        
        
        # How to use
        
        Essentially, you create a function to process the incoming
        information and you attach it to the `BTScanRequester`. You then create a Bluetooth
        connection, you issue the scan command and wait for incoming packets and process them.
        
        You can use Eddystone or RuuviWeather to retrieve specific information
        
        
        The easiest way is to look at the `__main__.py` file.
        
        You can run the module with
        
            python3 -m aioblescan
        
        Add `-h` for help.
        
        To see the RuuviTag weather information try:
        
            python3 -m aioblescan -r
        
        You will get
        
            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}
        
        To check Eddystone beacon
        
            python3 -m aioblescan -e
        
        You get
        
            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}
        
        To check ATC_MiThermometer with [custom firmware](https://github.com/atc1441/ATC_MiThermometer) beacon
        
            python3 -m aioblescan -A
        
        You get
        
            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}
        
        For a generic advertise packet scanning
        
            python3 -m aioblescan
        
        You get
        
            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
        
        Here the first packet is from a Wynd device, the second from a Ruuvi Tag
        
        
        aioblescan can also send EddyStone advertising. Try the -a flag when running the module.
        
        
        # FAQ
        
        Why not use scapy?
        
            Scapy is great and you can do
        
                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)
        
            to get things going. But... the great thing with Scapy is that there is so
            many versions to choose from.... and not all have all the same functions ... and
            installation can be haphazard, with some version not installing at all. Also
            scapy inludes a lot of other protocols and could be an overkill... lastly it
            is never too late to learn...
        
        What can you track?
        
            aioblescan will try to parse all the incoming advertised information. You can see
            the raw data when it does not know what to do. With Eddystone beacon you can see the
            URL, Telemetry and UID
        
Keywords: bluetooth,advertising,hci,ble
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Description-Content-Type: text/markdown
Provides-Extra: dev
