Skip to content

Commit

Permalink
openhaystack: store battery status in FindMy packet
Browse files Browse the repository at this point in the history
See also:
  seemoo-lab/openhaystack#185
  https://github.com/MatthewKuKanich/FindMyFlipper/blob/e5a678e33dd17af46bb63050be4c9d10e17f6252/FindMyFlipper/findmy_state.c#L126-L137

From biemster/FindMy#53
  Advertising byte:
    ?xx1rrmrr
    r: reserved
    m: maintained
    x: can be set. x must be:
      00: full
      01: medium
      10: low
      11: critical

  this doesn't seem to correspond with the above links
  • Loading branch information
bobrippling committed Sep 10, 2024
1 parent 4d8c46b commit 924f963
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
1 change: 1 addition & 0 deletions apps/openhaystack/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
0.01: New App!
0.02: Keep advertising when connected
0.03: Use ble_advert module to work with other BLE advert apps
0.04: Update battery status in advertising packet
7 changes: 6 additions & 1 deletion apps/openhaystack/custom.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,12 @@
{
const key = E.toUint8Array(atob(${JSON.stringify(keyValue)})); // public key
const mac = [ key[0] | 0b11000000, key[1], key[2], key[3], key[4], key[5] ].map(x => x.toString(16).padStart(2, '0')).join(':'); // mac address
const adv = [ 0x1e, 0xff, 0x4c, 0x00, 0x12, 0x19, 0x00, key[6], key[7], key[8], key[9], key[10], key[11], key[12], key[13], key[14], key[15], key[16], key[17], key[18], key[19], key[20], key[21], key[22], key[23], key[24], key[25], key[26], key[27], key[0] >> 6, 0x00 ]; // advertising packet
let batt = E.getBattery();
if (batt > 80) batt = 0x0; // full
else if (batt > 50) batt = 0x50; // medium
else if (batt > 20) batt = 0xa0; // low
else batt = 0xf0; // critical
const adv = [ 0x1e, 0xff, 0x4c, 0x00, 0x12, 0x19, batt, key[6], key[7], key[8], key[9], key[10], key[11], key[12], key[13], key[14], key[15], key[16], key[17], key[18], key[19], key[20], key[21], key[22], key[23], key[24], key[25], key[26], key[27], key[0] >> 6, 0x00 ]; // advertising packet
NRF.setAddress(mac);
require("ble_advert").push(adv, {whenConnected: true, interval: 1000}); // advertise AirTag *and* normal device name (to remain connectable)
}
Expand Down
2 changes: 1 addition & 1 deletion apps/openhaystack/metadata.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{ "id": "openhaystack",
"name": "OpenHaystack (AirTag)",
"icon": "icon.png",
"version":"0.03",
"version":"0.04",
"description": "Copy a base64 key from https://github.com/seemoo-lab/openhaystack and make your Bangle.js trackable as if it's an AirTag",
"tags": "openhaystack,bluetooth,ble,tracking,airtag",
"type": "bootloader",
Expand Down

0 comments on commit 924f963

Please sign in to comment.