android-beacon-scanner icon indicating copy to clipboard operation
android-beacon-scanner copied to clipboard

add support for Estimote telemetry packets

Open thomasleveil opened this issue 7 years ago • 7 comments

Hi,

Could you consider adding support for Estimote telemetry packets as described here : https://github.com/Estimote/estimote-specs/blob/master/estimote-telemetry.js ?

I did one Android app about 4 years ago but I'm struggling at implementing this myself. I found this doc which might help https://estimote.github.io/Android-SDK/JavaDocs/com/estimote/sdk/telemetry/EstimoteTelemetry.html

thomasleveil avatar Dec 24 '18 14:12 thomasleveil

Hi, I think the Telemetry you're talking about is already supported, it's marked as "TLM" when you detect an Eddystone beacon :)

https://github.com/Bridouille/android-beacon-scanner/blob/master/app/src/main/java/com/bridou_n/beaconscanner/models/BeaconSaved.kt#L113

Bridouille avatar Dec 27 '18 17:12 Bridouille

The Estimote-TLM packet is not the same as the Eddystone-TLM. Estimote beacons are able to broadcast different kinds of packets:

  • Estimote packets
  • iBeacon packets
  • Eddystone packets (UID and TLM)

I'm already using your nice library for reading Eddystone-TLM packets broadcasted by some of my Estimote beacons, and I know looking for a way to also read the Estimote-TLM packets which convey more data:

  • acceleration on the X axis
  • acceleration on the Y axis
  • acceleration on the Z axis
  • motion state
  • "previous" motion state duration
  • "current" motion state duration
  • GPIO pin0 state
  • GPIO pin1 state
  • GPIO pin2 state
  • GPIO pin3 state
  • firmware error code
  • clock error code
  • atmospheric pressure
  • magnetic field on the X axis
  • magnetic field on the Y axis
  • magnetic field on the Z axis
  • ambient light level
  • beacon uptime
  • ambient temperature
  • battery voltage

thomasleveil avatar Dec 27 '18 22:12 thomasleveil

Ohhh, pardon my mistake I confused Eddystone and Estimote.

I can have a look and leave the issue open. My issue is that I don't have a physical Estimote beacon so it would be hard for me to implement it to be honest.

Bridouille avatar Dec 27 '18 22:12 Bridouille

would a pcap file with captured trames help ?

thomasleveil avatar Dec 27 '18 22:12 thomasleveil

That could help, however since I'm using https://github.com/AltBeacon/android-beacon-library to handle the beacon detection, I wouldn't be sure on how they internaly parse the Estimote data in their Beacon object (like which fields contains which data).

Bridouille avatar Dec 27 '18 22:12 Bridouille

I see. Estimote packets do not conform the the AltBeacon spec, so it seems a custom parser must be implemented using the Altbeacon BeaconParser class.

I found this StackOverflow answer which does some of the work with the BeaconParser class, but I don't know for what kind of estimote packet it work.

This other StackOverflow answer is closer to what would be needed, but parse Estimote-nearable packets.

The Estimote-telemetry packets are described here. I'm now will try to get frame samples so we can work on the correct setBeaconLayout paramter.

thomasleveil avatar Dec 27 '18 23:12 thomasleveil

Well, the WTF protocol award goes to Estimote I guess :/ Here are my findings.

image

image

image

thomasleveil avatar Dec 28 '18 00:12 thomasleveil