We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Bringing beacons to the Windows platform

00:00

Formal Metadata

Title
Bringing beacons to the Windows platform
Title of Series
Number of Parts
96
Author
License
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Beacons are small Bluetooth LE devices that can bring physical context to your mobile apps. They were first embraced by the iOS ecosystem when Apple introduced iBeacons a few years ago. Last year Google announced project Eddystone that uses a similar concept, but expands it by adding a few features on top of that and by making it more open. It seems like Windows is running a bit behind in this area, and until recently there were no APIs in Windows stack to access beacons - but this has changed. This talk will be a crash course in beacon technology and interesting applications for them before we move on to technical part: how to write code that interacts with beacons on the Windows platform. If you are a Windows mobile developer and are interested in adding physical context to your applications - or just interested in beacons as a technology in general - then this talk is for you!
Computing platformComa BerenicesBitInformation technology consulting.NET FrameworkProjective planeWeb 2.0Computer animation
Web 2.0Projective planeInformation technology consultingClient (computing)Self-organizationShared memoryFocus (optics)JSON
Maxima and minimaMobile WebFood energyWater vaporData modelTrailMobile appFood energyContext awarenessElectronic visual displayLevel (video gaming)Density of statesInformationBookmark (World Wide Web)WindowRange (statistics)Multiplication signMereologyOffice suiteService (economics)CASE <Informatik>SpacetimeNormal (geometry)Latent heatStress (mechanics)IdentifiabilityUniform resource locatorInternet service providerBitMoving averageDataflowBroadcasting (networking)Basis <Mathematik>Form factor (electronics)Differential (mechanical device)MetreFrequencyWater vaporTrailClosed setComputer animation
Network socketVideoconferencingShape (magazine)Video gameRing (mathematics)CASE <Informatik>Real numberPower (physics)Context awarenessPresentation of a groupPlastikkarteAndroid (robot)InformationComputer animation
outputTouchscreenInformationMenu (computing)Table (information)Order (biology)Electronic mailing listContext awarenessMeeting/InterviewComputer animation
Context awarenessRange (statistics)Product (business)Graph coloringInformationPlastikkarteComputer animationMeeting/Interview
DistanceSpacetimeSingle sign-onUniform resource locatorData managementCartesian coordinate systemSpacetimeService (economics)Electronic program guideMultiplication signLink (knot theory)AbstractionMathematicsMobile appWell-formed formulaDistortion (mathematics)MetreTriangulation (psychology)MereologyContext awarenessDistanceIdentifiabilityInformationLevel (video gaming)Electronic visual displayFile formatPower (physics)Goodness of fitLine (geometry)Broadcasting (networking)Uniform resource locatorType theoryPrice indexWeb 2.0Standard deviationInternetworkingPhysicalismGoogolFlagAndroid (robot)Graphical user interfaceBusiness modelSpectrum (functional analysis)Power setCASE <Informatik>ChainAreaImplementationDependent and independent variablesFrame problemProduct (business)BitForcing (mathematics)CAN busNormal (geometry)Right angleComputer animation
Data managementPoint cloudService (economics)Normed vector spaceWindows SDKCodeWindowCartesian coordinate systemDivisoroutputClient (computing)Uniform resource locatorAreaBus (computing)Wave packetSheaf (mathematics)InformationReal numberInternet der DingeConnected spaceVideo gamePeripheralComputing platformBlogAndroid (robot)PlastikkarteCloud computingPoint cloudAsynchronous Transfer ModeRange (statistics)Level (video gaming)Filter <Stochastik>Computer hardwareDifferent (Kate Ryan album)Multiplication sign2 (number)DistanceMobile appFood energyMetreSet (mathematics)Message passingMathematicsProjective planeSoftwareNeuroinformatikWordNumberAbstractionWater vaporDemo (music)TouchscreenCASE <Informatik>Computer animation
WindowWater vaporType theoryConnected spaceSmoothingMultiplication signTelecommunicationVideo gameMessage passing2 (number)BitOpen sourceComputing platformLevel (video gaming)SoftwareUniverse (mathematics)Sampling (statistics)Cartesian coordinate systemCellular automatonInformationPresentation of a groupComputing platformComputer fontComputer clusterOpen setMultilaterationSource codeComputer animationJSON
CodeAsynchronous Transfer ModeMobile appPower (physics)CodeComputer animation
Range (statistics)TouchscreenObject (grammar)Point cloudInformation securityPresentation of a groupAsynchronous Transfer ModeCartesian coordinate systemMultilaterationBitComputer animation
Presentation of a groupWater vaporDistanceWell-formed formulaLogical constantMetreAlpha (investment)Game controllerLevel (video gaming)Integrated development environmentLibrary (computing)PlanningComputer configurationSurfaceConfiguration spaceProof theoryLine (geometry)WindowRange (statistics)Data structureSingle sign-onObject (grammar)Event horizonBitDemo (music)Block (periodic table)Cartesian coordinate systemTouchscreenRight angleProjective planeTelecommunicationMobile appRaw image formatState of matterSmoothingView (database)Electronic mailing listSoftware testingComputer animation
Information securityCodeRepository (publishing)Coma BerenicesPresentation of a groupInformation securityLink (knot theory)Point cloudWindowLibrary (computing)Repository (publishing)Software development kitInternetworkingJava appletAlgorithmCartesian coordinate systemAndroid (robot)3 (number)Set (mathematics)Endliche ModelltheorieCloud computingImplementationInformationInternet service providerData storage devicePower (physics)MeasurementUniverse (mathematics)Game theoryFlow separationCodeMathematicsExistential quantificationSampling (statistics)Computing platformDemo (music)Connected spaceMobile appUsabilityComputer animation
InternetworkingShared memoryConnected spacePoint cloudSet (mathematics)Flow separationComputer animation
Food energyMobile appInformation securityPoint cloudInformationAnalytic setSet (mathematics)MathematicsData miningArithmetic meanBroadcasting (networking)Computer animationSource codeXML
NP-hardCore dumpGraphical user interfaceSystem call
Transcript: English(auto-generated)
I think we can start. Good morning. My name is Mihai Wyszak. I came here from Sweden, although it's a little bit complicated story. I really like this picture. This is a picture from International Space Station,
and it shows my both current homes right now. We're somewhere around here, and I originally come from here, from northern Holland, and now I live in southern Sweden, which some people say is technically Denmark. I work for this company. We're a consultancy focused mostly on dotnet projects and also web projects.
We also like to say that we create value by sharing knowledge, and we try to not only be consultants hired by ours, but also consultant consultants that we help our clients reach their goals
and share our knowledge with them and organize knowledge activities and so on. We're mostly based in Sweden. If you came here because you heard something about bacon, that's the wrong talk. We're going to talk about beacons. Beacons are small Bluetooth low energy devices that you can use to add physical context to your mobile applications.
How many of you have done anything with beacons so far? Okay, how many of you know what beacons are?
All right, cool. I've seen this before, and I just talked two weeks ago, so I changed it a little bit, and it's much more about beacons, much less about Windows, so you get a grasp of what they are and how you can use them.
Let's roll back a little bit and talk about Bluetooth low energy first. Bluetooth low energy is also marketed as Bluetooth Smart, and it's part of Bluetooth 4.0 specification. It's not your mother's Bluetooth that you have to pair that was very slow and has very low range.
Bluetooth low energy works more on the basis of broadcasting. There's one device that's broadcasting, and there are others that can reach out to them. There is also a sense of pairing, and you can also do it, and you have GATT services like with normal Bluetooth,
but we're going to focus more on broadcasting part of Bluetooth low energy here today. Technically, I saw in specification that it has a range up to 100 meters. My own experience says it's more about 70 or even 50 enclosed spaces.
It uses the same frequency as normal Bluetooth, also as the Wi-Fi and the microwaves, and the reason microwaves use them is because water resonates at 2.4 megahertz or gigahertz. Gigahertz, yeah. Thank you. Gigahertz.
This causes some problems with beacons because bottles of water disturb the signal, and humans are big walking bottles of water, if you look at it. There will be some problems with beacons with very crowded spaces.
Yeah, so let's go to beacons. The technology of Bluetooth low energy was there a couple years ago already or even more. It was like Bluetooth low energy was co-invented with Nokia and a few other companies,
but it got really much more traction when Apple came with something they called iBeacon, which is nothing else than just specification, how the packets look like and how they should be interpreted. As I said, you don't really have to pair with those beacons,
and primarily what they do, they just broadcast a few bytes of data, and what you do with this data is up to you. So they cannot track people, but you can use the data within your app to track what people do.
So for example, you set up in space like these four or six beacons, and they broadcast some data, basically an identifier, and your app is aware where those identifiers are physically located, because you deployed them by yourself. And based on those signals, you can triangulate and provide interlocations about the place,
or you can provide information that I'm close to stage and display some information based on that, and so on. Yeah, they can also broadcast additional data. This really depends what producer put in there.
For example, those are my favorites. They were made in Poland, and they were pretty quick to market. They have temperature sensor and also an accelerometer. So basically they know if they're in the MOF, for example, or how hot it is. And they have another feature, because you can switch off them by turning them upside down for a saving battery, for example.
You can turn it off, but it's quite useful if you do it for deployment and you just don't use them all the time. They can also be updated over the year, because they can receive some data.
We'll talk more about imputing data to be considered later, because there are some other possibilities. And they're usually battery-powered, although that's not the case. And they could be much smaller if not the battery. Usually the battery determines how big they are. Those batteries, again, theoretically are for two years.
I managed to run them down in a few months, so I have to open up and switch the battery. But they come in very many form factors. There are many producers, and they made them in a lot of shapes. There are different sizes.
There are beacons that are like socket power, so we connect them to electrical sockets. And you don't need to care about the battery. There are USB dongles that you connect into, speeder keyrings, and so on. I'm going to play a short video from a producer of those beacons. They explain a few use cases, how you can use them in real life.
So, let's go. There are many nearby beacons in the background as you move around. And when you want info about something you're near, it's ready to swipe on your notification screen.
So, if you take out your phone as you pass a new restaurant, you can see their lunch specials, or menu reviews. Since your phone knows that you just arrived at the table with the red beacon, the menu will be ready when you pick up your phone. So, if you're in a hurry, you can send your order straight to the kitchen. You can have beacons at home, too.
So, if your context is the kitchen, and you're near the fridge, your shopping list will be ready and waiting when you look at your phone. And then when you walk by the beacon in the dairy aisle, your phone can give you a reminder to make sure you don't forget to pick up milk. And because the range awareness for beacons is sensitive down to a few inches, it can tell what you're closest to, or what product you pick up.
So, when you look at your phone, it'll already show product information, or let you know if your size is in stock, or let you see what other colors are available. And then you can order it right from your phone. And if you've been at the restaurant for a while, your phone will be ready if you want to order another drink or pay the check with the push of a button.
Your phone is always with you. Smart beacons give it some context. Yeah, this guy didn't pay me for that, I just really like their product. Just a disclaimer. So let's now move a little bit to technicalities, and what exactly is transmitted, and what use you can make of it.
That's how an iBeacon format packet looks like. I think it's 26 bytes or something like that. We go through all of them. Basically, first two are just indicators.
It's an Apple manufacturer ID. It's like normal in a beacon standard, you have manufacturer ID and some flags on the first two bytes. Then you go to what type of data you have, and how long is it. And those things are fixed for iBeacons.
Then you have UUID, which is like identifier. And then you have two other identifiers, major and minor. So this is what you're going to use mostly with the iBeacons.
You will use those three identifiers. For example, let's say you run a cafe in Oslo that's part of a bigger chain. So probably you'll have the UUID for your whole chain. Like, I don't know, NDC coffee. And then you'll have a first major ID for a coffee house located at Spectrum.
And some beacon located at one similar space will use some minor ID. Or you can use some other ID. Basically, those are like three identifiers that are up to you to use. And how you interpret them is pretty much up to you.
The one case I showed is just one of the suggestions, most commonly suggested. And as I said, based on this part, your app can... Oh, I received this ID, which means the person using the app is near this place.
Just let's show them this notification or this context or something else. And the last part is TX, which is measured power. So device send also information with how much power they're broadcasting.
Because thanks to that, you can calculate actually how close you are to the beacon. Because you can know you're somewhere within 50 meters of beacon or 30 or 70, depending on the power settings. But it's usually not enough information for you to give any relevant context. You also want to know how close we are usually.
The other thing you know, like when you receive the packet, your device will show you how strong was the signal you received. So you have two information. How strong signal should be one meter from the device and how strong you received that. And based on that and some math, you can figure out how far you're like.
But I'll show you later that's a little bit shaky. But that's the basic math for that. So basically, RSSI is this received signal. That's the formula for that. And n is a constant you use.
2 is usually how you use it in empty spaces. Like I would consider this pretty much empty space. I think you have to bump it up higher. Yeah, it makes sense. If you have more abstraction.
It's a lot of trying and failing. Because you can't really figure out what will bring how much distortion. So you probably have to like... When you deploy beacons into space, you put them. You have some idea how they should be. And then just adapt slowly to make better solution.
Yeah, these distance in meters. So when you turn around this formula, you get the formula for distance in meters. And also what I mentioned, if you have more beacons in space, technically 3 is enough to do triangulation, as the name suggests.
4 or more is better. And the bigger the space, the more beacons you will need to cover the area. To have a good precision of inter-location. Now let's talk about other solution or implementation. It's Google's Eddystone that came last year.
As a response to Apple's iBeacons. And they have more frame times. So you don't only have one identifier type, the one iBeacons had. But you have a few other types of data you can broadcast. This one is really cool. Because you don't really need an app for that.
You just have a broadcasting URL. So using iBeacons forces your customers to have your app, for example, for your cafe. But what if you don't have those apps installed? So Google came with that, which is broadcasting URLs.
And it also ties to their concept of physical web. We have also internet surrounding us. So let's say you come near your cafe. You don't get some random notifications that your phone doesn't really understand. So you wouldn't even get them. But you get pop-up with a URL.
And this works fine on Android. And what they did on Apple is really, really smart. Because they put it in all their applications. So if you have Google Maps, Google Chrome, Google anything on your iPhone, you'll get that too. Which is pretty sneaky, but I like that.
There's also Eddystone UID, which is the same concept as iBeacon. The format is slightly different because they have two levels of identifiers. But the idea is the same. And there's telemetry, which allows you to do a few things.
First, you can have packets that send information about the health of your beacons. Which makes fleet management easier. This is all fun when you have to deal with three or two beacons in your room. But if you deploy 6,000 beacons to the airport, it's not that fun to actually maintain those.
Some beacons have additional sensors. I mentioned that. So those packets are also used to send information from those sensors. Which makes it much easier, available, than actually have to physically connect them and get those sensor data to GATT services. Because that's how it works with Apple iBeacons.
Right now I think it's good. There's some competition. And there are a few other proprietary packets for beacons. And I think Apple will probably follow with URL format and so on.
I think it's good. An example application that I've seen done to use iBeacons. Mostly like museums. Just like indoor locations or showing some information about what you're actually seeing.
Getting links and so on. But a very cool application I saw was a guide for visually impaired people to go around the museum. And telling them what they're seeing and what they can experience. Retail space is pretty big because there's a lot of money there.
So retailers would be really happy to know where they actually spend most of the time in the shop and so on. This is really... I think it's not really good for customers who would like to be tracked. So the business models here should probably include some gratification for people also.
They're using that app so there are some coupons and so on. Airports are pretty big in this. I know Heathrow have been spiked with beacons and British Airways is using them in their apps. And there are many other airports that are trying out with this.
Also stadiums. I know that Barcelona stadium in Barcelona is also full of beacons. They actually posted a blog post yesterday about Estimote, the producer of the beacons. It's really interesting because they were also telling a lot about issues they have with placing beacons and different heights and so on.
Public transport is something I've been working within recently. So ideas like you get to the bus and you get automatically started your trip. And when you get out of bus you get your bus trip stopped and you get charged automatically and so on.
So things like that. Also I heard about some uses in healthcare. So I know there are some beacons in rooms of patients and when doctors run around they get information that something is wrong and so on that's connected. It's really experimental and I didn't see real life application of this but I've seen some demos of that.
It's also probably interesting. Home automation is one that was an example and that's people who are nerds in IoT. First they spike their homes with Arduinos and cables and stuff and they have their coffee pots connected.
I haven't seen anything that was really sensible but there are a few things you can see. For example, a lot of those smart light bulbs can connect with ST Mode and give you some things working together.
Or with other beacons too. I also told about inputting data and basically custom data for beacons. As I mentioned, there are some ways that you can connect over the air to beacons and get the data from sensors.
There are some custom SDKs that make it harder to do on different platforms. It's all fine and dandy if you're on Android or iOS but then things get slightly complicated. Like this one beacons, that's something we've been working on last month.
They have GPIO input and you can send data over UART and create own packages. We have a solution that sends custom packages to our application. It's based on some external factor from some external device it's connected to.
It's used in the public transport area. The idea is that the beacon is connected to bus but we simulate it with Raspberry Pi for now. The client tries to use location with GPS but it didn't work well in big cities with skyscrapers and underground.
But their trains have the data where they are based on some other things. They want to connect those beacons to the trains or buses in the future
and send information about where you are and some other messages about traffic obstructions. So that's an interesting concept. There are also ways to manage your fleet of beacons through cloud services.
It's also one sneaky thing that's been done because let's assume you have beacons deployed all over some airport. You don't really want to go physically within 1 or 50 meters to every one of it just to update them.
So what you can do is set the updates or some settings changes in the cloud. And then everybody who actually uses an app that's based on SDK of a beacon vendor or use their apps will basically be used as a way to carry out the updates.
So it's a very distributed way of using your customers to update your beacons. Also very sneaky so I like it very much. Let's move to the main topic of today which is beacons and Windows Phone.
I've been using Windows Phone for 3 years now and I'm also using iOS for some time. When I first heard about beacons I was really excited. Let's bring it somehow to Windows because it should be easy. And it wasn't because first of all none of the major vendors officially support Windows Phone.
I mean why would they? It's so small a market.
But the hardware was there like all higher end Lumios had the radios that supported Bluetooth low energy. After all it was Nokia's invention so why wouldn't they put it in? The problem was software because Windows 8 on computers has some ways to deal with Bluetooth 4.0.
And like with much of a pain you can actually do something with beacons. You could receive those signals and it was very low level talking to hardware pretty much. With Windows 10 but there was no support on phones because there was some difference between APIs and Windows 8.
With Windows 10 the APIs are consistent and support Bluetooth low energy on all devices. And they also specifically support Bluetooth advertisement packets which is what we exactly want.
Which makes things a lot easier. So when you start working with beacons and you start your Windows Phone project very important is to manage to take capability Bluetooth. Because without it nothing will work and you won't know why actually you don't receive any signals.
So that's very common mistake and very important to turn on Bluetooth on your phone and turn Bluetooth in your capabilities of application. And the way you do it these days is you have a Bluetooth advertisement watcher, you set some filters.
So here I set up a manufacturer ID for Apple and some low and high values for when I consider a beacon to be in range. Those values are between a minus 127 to around plus 16.
So basically when your beacon is touching your phone it's gonna be very like slightly over zero. Minus 127 it usually means that the packet was wrongly formatted that's when you get this number.
So that's the range I usually use to have like when my beacons are getting into proximity and getting out of proximity. And then you have like time so when you don't see the beacons for like two seconds you consider it like the watcher will stop showing as visible.
And then it will pop up again and you will see it again. Ok, I'll try to connect my screen and show what we can see.
So that's the application that's coming from a sample, Universal Windows Platform sample.
It's on GitHub, full open source, so I'll link that in the presentation. So you can use those examples to start playing with the beacons. I'm gonna run a watcher that will start getting information but my beacons are all switched up so I'll switch them on and hopefully start seeing something coming in.
Oh yes. So you can see like information, type is a type of connection. This is like Bluetooth thingy, basically we're not gonna bother about this. And do you see those RSSIs going which is like the signal with how much strength we receive the beacons.
And you can see it shakes a lot because it really depends on a lot of features. I have some electronics here around that disturbs that. I'm a bottle of water, I disturb that too. So what you're gonna do probably, what you would like to do in real life is probably do some smoothing over time.
So do like average over last second or something like that. So you don't get this data very chaotic and spiking but a little bit smoothened.
This one should show you something else but it doesn't cooperate with me. So I just have only one beacon going on sending messages.
And RSSIs are on the levels like 60 or minus 27 if there's some problem with that. So yeah, you can see it's 60, 70. I've seen with Windows font especially there's a lot of packages like with minus 127 like it has some problem parsing it.
I don't know it's like problem of software or quality of the radio and so on. But in my solution I just try to filter them out because there's usually just rubbish data. So when I put it a little bit more far away it should probably get worse really.
Now it's stopped. It's really, it's dead now.
I wonder why. Let's try another one. Yeah, as you can see it's not always very reliable with Windows font for some reason.
We'll get back to this later.
So that's what it usually looks like. And when you do something more interesting like we have like full blown Bluetooth device in this font.
So we can also transmit Bluetooth. So if we know how the package looks like, can we fake the beacon? And that's the code that pretty much does it. I put in the data the usual package that's used by this company, by Estimote.
So it should show up in their app and I'm gonna try it out. And also I put like the last bytes are minor ID and major ID and also some power.
So I put minor and major ID to 30 and 37. So hopefully we'll see them on the iPhone app looking like that. So I'm just gonna switch to my iPhone and show the Estimote app that shows their beacons. And hopefully I will see my spoofed beacon.
I first fire it up. So it should be running right now.
So I have four beacons on the screen but only three that are legitimate Estimotes.
So let's put them far away so I know which one is the one that I actually created.
You can see it slowly. You can see it has some slow updates. So you have to also include that in your application that the updates will be... You won't see instantly that beacon went far away.
There is some... One even went blank because I switched it away. But I think this is the one that... I need to do it with my finger. Which also shows that I cannot connect to Estimote cloud because they don't really recognize this as their own beacon. Even though I'm faking it.
And there is major and minor 1337 which I set up in the bytes. So yeah, you can fake beacons. Which brings some security considerations.
I'll get to that a little bit later. Let's get back to our presentation.
So what I did is... Right now it's a lot of pain to unpack those packets because you still get raw advertisement packets which is like 26 bytes.
So I started doing some small library that will make it easier. I call it SmokyBeacon. It's already in very alpha state on GitHub. So basically I provide the water configuration this way. I put it on for a demo purpose hardcoded but there are some options right now.
But this is basically a configuration you need to listen for beacons that are iBeacons. And I also add some structures. You have objects with UID major, minor, calculating distance and so on. And that's the way you listen for beacons, pretty much.
In your view in Windows Phone. You start the watcher, you start the discovery and then just add the event handler. So on every bit of advertisement you fire up events.
And you get beacons listed. So I made very simple demo application that lists the beacons going around. So I'll show it to you now.
I had problems when testing with demo because I technically connected to beacon that was my phone and it blocked any communication because now it's very occupied to talk with my iPhone, pretending it's beacon. So demo didn't work but hopefully when I kill the app this should work.
So let's see. I'll switch the screen again. And the range. And this app shows beacons that we see in range. I'll bring them closer.
We got all three. And on the left there's minor and major ID. On the right you have received your RSSI and the distance I calculated. So right now they show for example that they're around 1 meter when there's no 127, 60 centimeters and so on.
And so you can see it's like the formula I use. I should probably adjust the constant that was there to be more reflecting the environment that's in this room.
And as you can see it's also very jumpy. So as I said you should really provide some smoothening. And that's one of the plans I have for this library to make those beacons using from Windows painless. I want to go two ways. One way is you have full control so you can basically do the smoothing yourself if you wish to.
Provide your own formula for distance and so on. And full automatic so basically give me those beacons and how far away they are with all the stuff.
Hopefully this will evolve. Although as I said it's more of a fun project to actually prove something because Windows Phone is not growing in popularity anymore. I think it's going the other way around. It's interesting what Microsoft is going to do with this. I think the Lumia line is slowly going to die and maybe they invest in Surface more so we'll see more Surface phones.
So maybe there's still hope for Windows Phone. We'll see. Let's move forward a bit. I'll get back to our presentation.
There's some security implications as I mentioned. The problem is that let's say you don't like your competition and you know they have beacons set up in their store. You can put your own beaker in the same UOID transmitting with very
very high power to overrun their beacons and send some other information that's maybe come to us we have better prices or stuff like that. And that's really bad. So beacon providers came with several ways to solve it. For example one of them is a secure UOID.
So the way you act and work with beacons through their SDK is that you still use the same UOID so you know which beacons you're talking about. But what they do, they actually algorithmically switch the UOID randomly every some time.
And your app also is aware because the SDK uses the same algorithm for that. The problem with that is that you basically render those beacons unusable without their SDK. And this will prove problems for using them with Windows Phone. And because right now the way we use it we just use the official advertisement packet and non-official APIs.
The good side is a lot of them put their libraries on the internet and they're in the Java. Because for Android which means it's easy to see the code by decompiling them.
I don't say you should do this because it's probably on the gray side of legality but that's the way you can see how they do those algorithms.
And the other way is probably work with those suppliers to have a working solution with them. So because one of the vendors got interested that I'm doing this Windows Phone application so we'll probably do the full thing for them.
Which is cool and maybe we'll have also those security features. The implication is that usually when somebody enables this security UID or another way of securing those beacons. It's not going to be easy to use them the way they were designed so just reading the UIDs.
Because this wasn't a very secure solution and they realized very quickly that it's probably not going to work well. There are probably going to be some other ways of securing them so we'll see. For example with those beacons again, I talk about them a lot because I've
been working with them for two years so I have the most experience with them. They have this cloud service that if you want to change any settings within them you have to actually log into your cloud account. So you have to be logged into a cloud account in their application and then you can update the beacons even though technically you don't really need to do it.
But they have security measures put in that do it. So there are some code repositories I mentioned. There is a Microsoft Universal Platform samples, that's where I took the first demo.
They're very useful to play around with them, you can just change things and fire up and you have some things working. There's my library and last week I discovered there's some other library that also helps to deal with beacons on a Windows phone.
This is much more mature and complete so I'll link that here, you can also use that too. That's all from me, thank you for coming. If you have questions I'll gladly take them.
Yeah, so you mean like updating because you want to change some...
The problem is that usually you have to do it manually but as I said for example stmodeling is with that that you can change them in a cloud.
I think I can show you my cloud account, how does it look like. Sure, connection from my phone.
Yeah, and you can connect through the cloud and then set up all the settings for the separate beacons.
And then they will be updated over the air while your phone is closed there or some other person using their app. So you can do it like... no.
You can use people to actually update your beacons, you just have to... So I think the way it works, they are broadcasting and when your phone that you used to update will see the broadcasting,
they can send a request to connect through GATT service. Yeah, and that's how you...
Yeah, because those are the packets that I was reading too and there's like...
What we've seen was just packets and they're probably sending some other packets also because of Bluetooth. And I was just looking for those advertisement packets. So those are my beacons I have connected and I can change settings here. I have information of battery, I don't have any analytics set up, so I don't see it.
But when you have your beacons set up to send telemetry, then also other people will receive them and just send it up to the cloud.
So I can edit settings, so for example change name, change minor, minor, turn on security ID and so on.
And when I save those changes, they will be somehow populated to my phone, probably very quickly because my phone running up is very quickly to the beacon. But that's how it works.
Okay, there's one more thing. There are two of my colleagues speaking from my company. Karl Henrik is on the next slot and also today evening and tomorrow morning. He's talking mostly about IoT and there is Henrik on Friday. He will talk about what you can do with GIT that you can't do with GUI but you can do with command line.
Henrik is a really hard core GIT guy, so if you're interested I'll also suggest you that. Thank you for coming. Please vote and have a great conference.