Dash Mobile iBeacon Support - How It Will Work


  • So we are integrating iBeacon Support into Dash Mobile! It will communicate to your URC Controller when events occur allowing you to create micro-presence solutions. Now I'm still learning this but here is generally how iBeacon Works!

    1. iBeacons will have a UUID. This is meant to identify the location and separate events from picking up any bluetooth devices it may find. Generally you will set all your iBeacons to the same UUID and this number will henceforth be ignored.

    2. iBeacons have a "MAJOR" and "MINOR" number available to them. These are ID's that essentially work as "Category" and "ID." In our case we will likely generally use MAJOR as a "Zone" and MINOR as a number to identify the specific beacon. For example, lets look at how we may setup our Beacons:

    MAJOR 1 = First Floor

    • MINOR 1 = Kitchen
    • MINOR 2 = Office
    • MINOR 3 = Bathroom

    MAJOR 2 = Second Floor

    • MINOR 1 = Living Room
    • MINOR 2 = Guest Bedroom

    MAJOR 3 = Third Floor

    • MINOR 1 = Master Bedroom
    • MINOR 2 = Master Bathroom

    There we have it. Now that we have done this we will be able to start monitoring which devices are in which areas! I will update with more information as the solution matures.

    Here we can see Dash OS Module receiving iBeacon data as I walk into my bathroom! This isn't how it will look when finished, but just an example showing that the solution is pretty much completed other than the final polish.

    upload-5875da91-5367-447a-87c1-52dc097589be

    --
    Braden R. Napier


  • 5
    Posts
    972
    Views
    Log in to reply


  • iBeacons accuracy reading (meters) can not be entirely accurate. It will be important to understand how that works and I will try to make the API within Accelerator extremely straight forward. As of right now I will be sending "deviation" as likely the main processor. It will determine if the user is getting closer or further from the beacon and will only report if the reports are consistent enough that they appear to be accurate.

    In the screenshot below you can see me moving away from the beacon then getting closer (quickly).

    upload-32956406-31be-4bd9-bee0-05cd78caac29

    Deviation sensitivity is also a setting that will be setup for each mobile device. It will only report to the system should deviation increase more than the deviation sensitivity. Default is curently 0.50 (estimated meters) which seems like a fairly good number.

    --
    Braden R. Napier



  • iBeacons will not report the same way when the app is not open. When the app is not open we instead only receive "didEnter" and "didExit" events. I haven't tested that yet, but essentially it will likely not be as accurate and will work similar to GeoFencing.

    When the user has the Dash Mobile app open, accuracy to the controller will be reported in the manner shown above and you will be able to trigger app events based on the values. For example, "When user has app open and walks into the bathroom - automatically open the Bathroom Keypad"

    My current thoughts on how that will work, is that you will place your iBeacons where you want them, then we will have you or the user run an "Event Calibration Wizard" which will basically record the values of the beacon as the user triggers the event they want. For example, if you want to create an "When I walk from my Bedroom to my Bathroom" event, you would simply start the event recording and walk from your bedroom to your bathroom. We will read the event and figure out what happened with all the beacons that are currently reporting. Then we will attempt to match it whenever it happens on that device.

    Should be pretty cool! :-)

    --
    Braden R. Napier



  • So will the App open to the bathroom keypad if it detects its in range of the bathroom beacon? This seems more likely in most standard use situations.

    Justin Spiniolas



  • Correct, it will be able to do that no problem.

    --
    Braden R. Napier


5
Posts
972
Views
Log in to reply

Internal error.

Oops! Looks like something went wrong!