Lopy - picking up MAC address from Ibeacon

  • hello,

    After an extensive search on the forum (I might be a horrible searcher, or the forum search mechanisms might be sloppy - I don't know), I didn't find anything that enlightened me on my issue:

    I have 4 Ibeacon BLE devices that I want to detect with a single lopy unit using bluetooth.
    All I need is their RSSI, and since printing out the bluetooth.get_adv shows me something that looks like a MAC address as the first thing, I thought that reckognizing the beacons on that would be the most straightforward approach. I might be wrong..

    The printed MAC address looks something like this: b'FS\xbd\x8c\xd2\x11' (this is just one of many), but the MAC address on my beacons look like this: ED:BE:D4:8D:0B:87

    What are these different formats ? Especially the first one I find hard to identify. And how would one go about converting it into something like the second one?

    Thanks a bunch <3

  • The MAC address printed on your beacons is just a nicely formatted version in hexadecimal of the 6 byte address. What you get from Python are the actual 6 bytes themselves (hence the b' at the start) and when you print them they get turned into the correspond ASCII characters for that value (or \xYY if it's not a printable character)

    You can use the binascii.hexlify function to turn each of those bytes into hexadecimal and make a string which is closer to what you have. For example your b'FS\xbd\x8c\xd2\x11'

    >>> import binascii
    >>> binascii.hexlify(b'FS\xbd\x8c\xd2\x11')

    So this address is 46:53:bd:8c:d2:11

    Of course you can split into pairs, add the colons and make all letters uppercase too using standard string manipulation.

Pycom on Twitter