Detect which room you are in with BLE Beacons - beacon

We are trying to set in place a system of indoor localization based on BLE Beacons. The precize location of the client does not really matter, the valuable information is the room he is in.
The building to be equipped has large concrete walls. We thought that using one beacon per room, we could detect the closer beacon to the guest.
Are concrete wall able to stop most of the BLE signal? We tried some tests, but we are searching for serious studies.

Any wall will reduce BLE signals by some amount. A signal of -50 dBm on one side might be -60 dBm on the other side, a reduction of 10 dB. Because decibels are logarithmic, every 10 dB reduction in the signal level represents a loss of 90 percent of the power in the signal. So while it is typically true that a concrete wall will "stop most of the BLE signal", it doesn't really matter because there may still be enough signal on the other side of the wall to detect the beacon.
How much of a reduction in signal level there is depends on thickness of the wall and other materials in it (metal will increase the attenuation.) Of course, windows, doors and other breaks in walls provide other paths for the signals to travel and complicate the issue.
Since you are unlikely to create a system where signals from beacons in one room will never be detected in an adjacent room, your best bet is to use other algorithms. For example, you may detect all visible beacons in a time interval, determine which has the highest signal strength, and if above a certain threshold, use this as an indicator of which room you are in.

Related

Beacon Detection in Swift

I am building an app in swift that helps me detect beacons and display their RSSI values. I was using the native CoreLocations library from apple to detect beacons but noticed that the rate of detection is set to 1 second and it cannot be changed. Is there a way to reduce the detection interval to say 100-500ms so that I can get more RSSI values?
You can also use CoreBluetooth APIs to detect beacons, which give you a separate RSSI measurement for each packet detected. For a beacon advertising at 10 times per second, this would give you an RSSI update approximately every 100ms.
There are two big catches to using CoreBluetooth:
It cannot detect iBeacon because Apple blocks it. CoreBluetooth can detect AltBeacon and Eddystone.
The API is harder to use with beacons — you have to parse out the identifiers from the packets manually.
Also, be aware that the RSSI value returned by CoreLocation once per second is actually an average based on all packets received over the previous second, so it is more stable than individual samples taken at a higher frequency. Depending on what you want the samples for, you may find the higher variation is a problem.
Finally, be aware that the max rate at which you get samples with CoreBluetooth depends on the beacon transmission rate. Some beacons advertise only once per second. If you are working with such a beacon, you will not get any more samples with CoreBluetooth.

Controlling GPS sampling on iPhone

I have two questions regarding GPS sampling on iPhone:
1.Is it possible to use CLLocationManager (or any other method) for location readings based on GPS alone without WiFi or Cellular network affecting it?
2.Given a stationary device, is it possible to control the sampling rate? Can I use CLLocationManager to get nonstop location readings from GPS in nanoseconds resolution? If not, what's the best resolution I can get?
regarding number 1, apparently, you cannot directly control gps data. having said that: if you have speed > 0 AND high accuracy, then you can infer that your data has a high probability of having come from a gps reading.
as far as i know, gps fixing is not measured in nanoseconds, but rather in seconds. what you mean exactly by resolution (reading frequency?) is a bit unclear. but, if it is frequency, most navigational software (google, for example) refreshes location every second or so.
hi frequency position updating is very costly in terms of storage cost (server side), query times (server side), battery use (iphone) and heats the phone up bigtime. i would be going in the opposite direction, especially for stationary devices (sending a heartbeat every 5 minutes or so is usually more than enough).
reference on CLLocationManager

How accurate can indoor WiFi positioning be when it comes to tracking movement?

Imagine I'm standing in a large room that has a router in the corner. Now I'm holding my iPhone and I start moving around in the room.
Is there a way I can track my movement inside that room using as static reference that router?
Imagine I take one or two steps to the left. Will such a small change in location be captured accurately under such conditions?
Do I need more than one hotspots in order to find my precise location inside the room?
Can the tracking be precise since we're talking about movement inside a room and not out on the streets?
If you're interested in tracking physical movement of the phone using a single wireless router as a point of reference, no, it's not going to work. It's defiantly not going to give you a foot or two of resolution, either.
You'd be using the wireless signal strength as a position indicator. However, you'd need two signals (two static points) minimum to give any sort of triangulation. Furthermore, signal-strength triangulation is really, really imprecise - the Wikipedia article gives a network-based tracking a resolution of around 50m. Handset based tracking uses both GPS and signal strength to give a better resolution, but it's still not within a foot or two.
To get good position tracking, a signal is timed between the source and receiver, then triangulated. This gives quite good resolution - Wikipedia articles on "Trilateration", "Time-Of-Flight", and "Multilateration" would give a decent overview of that kind of system.
Long story short? No, you can't get a physical position using a single static router as a point of reference with any degree of accuracy, or precision.
I think you're misunderstanding how Wi-Fi based location tracking works. I'm not sure about the exact process but if I'm right, it involves your IP address assigned by the hotspot you're connected to. And the accuracy of Wi-Fi based location is not as accurate as the degree (a couple of feet to the left or right) you're referring to.
No matter where you are in that room, or even in the same building connected to that same hotspot, your location is going to be reported as the same place.
So to answer your question, NO, the tracking cannot be precise. If you're using you're using the GPS component of your device, that's a totally different story.

How this iphone application works?

I am just looking iphone apps at apple store, and i have found this app g8, http://www.dynolicious.com/, but can you give some ideas or logic that how this app works, i mean how it is possible to measure car performance without using or communicating with any external hardware ...??? By using just hardware built into iphone, ie. accelerometer.
It works as follows. The data provided as results are actually estimates, not absolutely correct values measured attaching external hardware to the car. The estimates come from the GPS unit and the accelerometer embedded within the iPhone. Using the GPS you can estimate from the positions detected in different temporal instants the distance travelled and therefore the velocity. Then you can also estimate the acceleration using the accelerometer.
This is just a guess, but I would expect that you tell it your car make and model which will give the manufacturer's performance and fuel consumption figures. Then using the accelerometer and positional information in the phone you can calculate the speed of the car. A relatively simple equation can then be used to calculate the expected performance.
I would guess it uses the GPS to measure the 0-60 acceleration (start a stopwatch and stop when GPS says you're moving at 60 mph) and the built-in accelerometer to detect G-force. The horsepower estimate is just that - an estimate. They may have a performance table of various known cars and their 0-60 performance and horsepower. Based on that, they can give an estimate for yours.

Is there a technology that can pinpoint an iPhone's *exact* location (to the feet/couple feet, indoors)?

Is there is a way to determine an iPhone's exact location (indoors, and to a distance of just a couple of feet) via use of radio/antenna's or some other infrastructure located around premises (i.e a hospital, shopping mall, school). Will appreciate any ideas/direction (technologies, research) as for how to overcome this limitation.
If you mean for an area you have control over (setting up a location network for a specific school/hospital) as opposed to generic location, you'd be able to triangulate your position based on wifi signal power for APs with known locations.
If you wanted it to be a generic solution, and you know there would be multiple APs in/around the buildings you wanted, you could triangulate all wifi signals while you have GPS outside the building, and then reference those locations when you lose gps accuracy. The first part is something that many wardriving applications already do.
Here's an article describing a commercial technology for this purpose in high-level detail: link
And here's a link to a SO page where people have started discussing possible methodologies: link
Use the GPS and hope that you got good coverage.
Other than this, you can deploy several wifi hotspots that can measure the signal strength for each packet and do a triangulation to calculate the iPhone position with regards to three or more of these hotspots based on the signal strength each of them measured.
A quick search for "signal triangulation" on the internet reveals a Wi-Fi Based Real-Time Location Tracking technology from Cisco. I have not used it, so I can't vouch for it; and I suspect it's rather expensive. There might be other solutions as well.
The alternative would be to buy several wifi routers or access points and flash them with your own version of the firmware. You can probably use OpenWRT or DD-WRT as a base for this.