estimote / ios-fleet-management-sdk Goto Github PK
View Code? Open in Web Editor NEWEstimote Fleet Management SDK for iOS
Home Page: https://developer.estimote.com
License: MIT License
Estimote Fleet Management SDK for iOS
Home Page: https://developer.estimote.com
License: MIT License
builds will fail for iphone 5s
Hi everyone,
I'm using my new iPhone 5s to track beacons.
I would like to receive a notification depending on the distance to the beacon.
For that, i'm using the accuracy property.
Unfortunately, it often returns -1.000000.
Can you help me please ?
-(void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region {
if([beacons count] > 0) {
self.estBeacon = [beacons objectAtIndex:0]; // nearest
NSLog(@"accuracy %f", self.estBeacon.ibeacon.accuracy);
if( self.estBeacon.ibeacon.accuracy > 2 ) {
[...];
}
}
Thank you
Using a an Empty iOS Project with a basic Podfile:
platform :ios, "7.0"
target "fsdfasfa" do
pod 'EstimoteSDK', git: 'https://github.com/Estimote/iOS-SDK.git'
end
I get a linker error framework not found XCTest for architecture...
when building.
Sorry that I am being vague -- I have not had time to look into what may be causing this, yet.
The issue I'm facing is that the three iBeacons I've received are detected with different RSSI values if put at the same distance. They've the same hardware version (D3.2) and firmware (A1.8) #16 and even the same power level (4) #15.
In the attached image you can see two iBeacons at the same distance, one reporting -65 and the other -51.
This is a real issue as we cannot use two beacons one besides the other.
What do you suggest?
Thanks.
hi all
lets say i want my app to do something specific when she is getting close to a specific beacon. i believe that this beacon have a specific id, but i cant find it.
i've looked in ESTBeacon it has a property called beacon which is CLBeacon object. it has a property called proximityUUID but this property is always the same.
how can i get a unique id from the beacon?
thanks!
Hi,
don't know if this is the place for the question bellow.
Is it possible to listen to "dienterregion" when the app is not running (neither in background or foreground). I was hopping that this was the working mode for notification sample but its not.
When another device, for instance EstimoteEditor is connected to a beacon it stops broadcasting, is this an intended effect? or will/is it possible to still broadcast while another device is connected?
thanks.
Currently it's spelled "baterryLevel".
I've been working with an iPhone 5s and if it detects an ibeacon far off -94 or greater or there abouts it returns the value -5 for the rssi, I haven't come across this on other versions of iphone, possible bug, possibly the iphone 5s, this is with quite a number of ibeacons around. It messes up my app but of course I can work around that. Just thought I should bring it up see if anyone else has found this.
I've bought the developer preview kit and it seems that now apps which use your libEstimoteBLE library are going to be pretty limited. My iPhone connects with only one beacon and there is now way to tell if there are any other beacon in the range. There is no method to switch to the other beacons either. I even do not know what are criteria of choosing a beacon my iPhone connects to because during my tests it is not always the nearest one... When are you going to improve this library? Is there a way to find UUID used by Estimote beacons?
Best regards,
matthew
The demos (DistanceDemo, NotificationDemo, ProximityDemo) never calls the delegate method managerDidConnectToBeaconWithID, even if it does connect, but it will call managerDidDisconnectBeaconWithID once I turn the bluetooth off... please I need help ASAP
Hi, I've just got my Developer Kit and I'm trying to work with the Notification Demo but it does not seem to be triggering didEnterRegion and didExitRegion on my iPhone 5S.
I've traced through the code a bit and noticed that this is not getting called at all:
-(void)beaconManager:(ESTBeaconManager *)manager
didDetermineState:(CLRegionState)state
forRegion:(ESTBeaconRegion *)region
I've downloaded the most recent demo app and haven't modified the code at all. Any idea why the notifications are not working for me?
Thank you for the help.
Hello All,
Couple of questions/issues
Thanks!
Hi, is it possible to get callbacks for beaconManager:didRangeBeacons:inRegion: while an app is running in the background? I would like to trigger events while the app is in background only when a certain rssi threshold is hit (region monitoring isn't precise enough for my use case).
I'm not sure whether this is an implementation problem, but after I get a list of beacons I try to connect to them and to have a list of successful connections.
I have added the following lines to the proximity demo.
In ESTViewController.m
(void)beaconConnectionDidSucceeded:(ESTBeacon *)beacon
{
NSLog(@"Connected!");
}
(void)beaconDidDisconnect:(ESTBeacon *)beacon withError:(NSError *)error
{
NSLog(@"Disconnected!");
}
(void)beaconConnectionDidFail:(ESTBeacon *)beacon withError:(NSError *)error
{
NSLog(@"Failure!");
}
-(void)beaconManager:(ESTBeaconManager *)manager
didRangeBeacons:(NSArray *)beacons
inRegion:(ESTBeaconRegion *)region
{
// Let's try and get the connection
for(ESTBeacon *beacon in beacons)
{
[beacon connectToBeacon];
}
//...
}
None of the above methods is called, though.
Reachability seems to be part of your library. Unfortunately you've added it to your library without renaming it. This causes duplicate symbol errors on compile for projects that already contain Reachability. To fix this and be able to compile I've had to rename my Reachability class.
Hey guys,
Any thoughts on open-sourcing the files that make up the Estimote SDK library? It's great that you put this on GitHub to make it easy for people to include in their own projects, but you might get a lot more contributions if people are allowed to suggest changes at the core level of the SDK.
With the actual Estimote beacon preview for developer, the settings can be read and write by anyone. It's bad and you already say that will be improved.
Before going any further, I think it will be interesting to specify that this security should be password less and hardware based.
To implement a good security process for iBeacon device settings, you should avoid software based security, to keep security breach away from you.
IMHO, the good security process for a device like this one is a toggle button hidden on the device to switch the device from read only to read and write for a small amount of time.
To avoid stealing, those device will be on hidden / unaccessible area. Use this specificity to avoid default config / brute force attack on software based security would be great I think.
Hi,
I've been playing with the SDK since a few day using the distance demo and everything works nicely.
Since yesterday I'm trying to use the NotificationDemo but for my demo I would like to get notification when I come in the "near" zone instead of getting notification while moving inside an outside of the Estimote range. Do you think it's possible ?
Hi,
P2P connection gives an alternative way to protect data transfer?
When we change minor and major number what we are changing? complete UUID?
Minor & Major number is part of UUID?
Thank you
BR
Jordi
Hey guys, we got your motes this week. They look and work great, and I'm looking forward to creating a lot of cool apps for these.
Here's a tiny issue I found with the podspec. As written thespec looks for tags written as v1.0.0, but you tagged the repo as 1.0.0 instead. So you can either update the tag in your repo, or remove the v in the podspec.
Keep up the great work!
I have just updated SDK to the latest version and found out that connecting to the beacons is no longer working. Neither beaconConnectionDidFail
nor beaconConnectionDidSucceeded
is being called after connectToBeacon
.
From what I've tested this seems to be a breaking commit.
In going through the Estimote SDK and comparing it to some of my previous tinkerings with iBeacons, I noticed a couple of things:
ESTBeaconRegion
's initRegionWithIdentifier:
? Is there a way to add specific estimotes to a region with an identifier specified in the above API? If not, what is the purpose of this identifier?initRegionWithMajor:identifier:
. Is there a way to mitigate this besides just "use a minor"?I have created an async connection to three beacons.
Before connection, the following
-(void)beaconManager:(ESTBeaconManager *)manager
didRangeBeacons:(NSArray *)beacons
inRegion:(ESTBeaconRegion *)region
{
// We have the beacons
for(ESTBeacon *beacon in beacons){
NSLog(@"Beacon %u %u %f",beacon.major.intValue, beacon.minor.intValue, beacon.distance.floatValue);
}
}
will produce this
2013-12-21 09:58:56.076 TT[4029:60b] Beacon 666 0 1.128744
2013-12-21 09:58:56.077 TT[4029:60b] Beacon 666 2 0.744323
2013-12-21 09:58:57.073 TT[4029:60b] Beacon 666 1 0.717318
After connecting any beacon, the following is read
2013-12-21 09:59:07.073 TT[4029:60b] Beacon 666 0 -1.000000
Is this the expected outcome?
For example, major value,power level,.. can be changed by anyone.
If a malicious user can be a problem.
Security measures do you have?
Hi Everyone,
I'm currently using Estimote SDK and my App recognizes the beacon.
However, the accuracy is not very good. I heard that i could change the power of a beacon.
I tried in the delegate method beaconManager:didRangeBeacons:inRegion:
ESTBeacon* closestBeacon;
[closestBeacon connectToBeacon];
[closestBeacon writeBeaconPower:ESTBeaconPowerLevel6 withCompletion:^(unsigned int value, NSError *error) {
NSLog(@"change power to STBeaconPowerLevel6 ");
}];
[closestBeacon readBeaconPowerWithCompletion:^(unsigned int value, NSError *error) {
NSLog(@"power value %i", value);
}];
Unfortunately, i receive : power value -1, and the power is not changed.
How can a change the power, how can i read the power ?
By the way, if i try [closestBeacon.isConnected], it returns 0.
Emal
Which each broadcaster seems to limit the interaction to only 4 receivers. Only 4 out of 5 iPads are connecting - and it is a different iPad each time.
Hello,
there's a typo in the ESTBeacon
class:
@property (nonatomic, strong) NSNumber* baterryLevel;
Probably it should be batteryLevel
.
:)
Hi can you provide myself with a more detailed explanation on how to update the firmware on the device. I realize that there is a method to do this but do I just call it with the device nearby? Do I need something to connect to the device beforehand? Is there any feedback on this process? Thank you
Hi All,
I have been playing around with the beacons for some time now, however I havn't been able to get accurate and reliable readings from the beacons.
can anyone suggest the best settings in terms of power level and advertising interval to achieve this ?
Hi,
I am trying to test DemoDistance sample code in Androidx86. Pretty much, my device is installed in VirtualBox with Android Tablet ISO. The VirtualBox is installed in a laptop with Bluettooth 4.0 But each time I ran the DemoDistance applic in Androidx86 this method beaconManager.hasBluetooth() will always return false.
Any suggestion on how could I get over thise.
Thanks
Regarding Ola informations available here http://helpdesk.estimote.com/hc/communities/public/questions/200472403-Accepted-range-for-minor-and-major-number
The accepted range for major and minor number is 0 to 65 000 (maybe 65 535 no?). At this time the requested argument when editing those settings is a short.
On iOS, minimum value for short is -32768, and maximum 32767. So the requested type don't reflect the range limitation.
API must be updated to use unsigned short to represent major and minor number.
The update must concern read and write API, like that you can introduce some consistency in data type (actually we get unsigned int when reading and you ask a short when writing…).
Hi,
I would like to write data to a database when the user performs an action (is leaving the store) & when the application is running in the background. How do I do this?
I am able to get a local notification when I am leaving the store to alert me that I am leaving, but at the same time I would also like to execute code to write certain information to a database (in the cloud, not local). How do I do this?
Thanks,
Varun
Hi there,
I've noticed that despise that the development kit iBeacons are set to emit every 200ms, the beaconManager:didRangeBeacons:inRegion:
method is called once per second.
How can we get the update with the desired frequency?
Best regards,
Matteo
Hello, on the Estimote site is written that the beacon hardware comprehends also a temp sensor and an accelerometer. Looking through the headers I wasn't able to find any API about them. Will they be implemented?
I'm trying to set the lowest power value on the connected beacon:
[self.connectedBeacon writeBeaconPower:ESTBeaconPowerLevel1 withCompletion:^(unsigned int value, NSError *error){
}];
error
is nil
but I can see that self.connectedBeacon
still has an old power value.
Any ideas what's happening?
Firmware version: A1.6
Hello,
I'm trying to check if I've a firmware update for my Estimote, and I get this error:
Error Domain= Code=401 "Hardware not supported" UserInfo=0x178260580 {NSLocalizedDescription=Hardware not supported}
My hardware version is D3.2 and the actual running firmware is A1.8.
Hi Everyone,
I have a problem with receiving notification in Background.
If the app is in foreground, i receive the notification properly,
but if the app goes in background, i don't receive a sound notification alert.
I would like to receive a notification when i am very close to the estimote beacon,
I tried something like this :
if( self.estBeacon.ibeacon.accuracy < 2 && [self.estBeacon.ibeacon.minor intValue] == 57532 ) {
UILocalNotification * theNotification = [[UILocalNotification alloc] init];
theNotification.alertBody = @"Notification from iBeacon";
theNotification.alertAction = @"Thanks";
theNotification.fireDate = [[NSDate date] dateByAddingTimeInterval:0.2];
theNotification.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication] scheduleLocalNotification:theNotification];
}
I've done some test with the apple iBeacon API and used an Ipad 3 as broadcaster.
It works very well, i receive notification in foreground and in background.
But since i'm using the estimote, i can't receive notification with sound in the background.
I have tried the Apple iBeacon API and the Estimote API, but it ends to the same result.
By the way, in Xcode, in Target Capabilities, i have checked Location updates and Uses Bluetooth accessories.
Thank you for your help.
Best Regards
when I received the beacons they have numbers much higher than that, but I can only write a short sized number back. Is there a way round this?
Hi,
As far as I understand, the only difference between the Estimote SDK and the native CoreLocation + CoreBluetooth is that Estimote SDK only works with Estimote beacons.
Did I get it right? Or is there something else? Why would I use Estimote SDK instead of Core?
Hello,
Please note: I am using your development kit in an iOS environment.
Is it necessary to calibrate the motes? If so, what is the best method to follow for calibrating them?
I am monitoring the data coming in from the didRangeBeacons delegate method. I would like to
determine which mote of the three provided is consistently closest.
One example test:
mint green mote: 2.5 ft to the left of the iPad
dark blue mote: 2.5 ft from the top of the iPad
light blue mote: 2.5 ft from the right of the iPad
Please note the numbers are averages over a short period of time:
Test 1 (EstBeaconPowerLevel4, 200ms advertising interval - both factory settings)
mint green mote: 6.68 ft, -79 rssi
light blue mote: 4.44 ft, -77 rssi
dark blue mote: 3.01 ft, -73 rssi
Test 2 (power level set to EstBeaconPowerLevel6, 200 ms advertising interval)
mint green mote: 3.89 ft, -68 rssi
light blue mote: 2.91 ft, -74 rssi
dark blue mote: 0.64 ft, -61 rssi
Test 3 (power level back to EstBeaconPowerLevel4, 50ms advertising interval)
mint green mote: 13.15 ft, -77 rssi
light blue mote: 5.02 ft, -77 rssi
dark blue mote: 2.34 ft, -72 rssi
Also, is it best to use distance or rssi from the didRangeBeacons method to determine
which beacon is consistently closer?
Finally how can I read the one meter calibration value? When I tried to read the measuredPower
variable from the beacon, it always returns nil.
Thanks
Will it be possible to customize the UUID of the iBeacons?
How else could i e.g. distinguish all my beacons (from my company) belonging to a specific store belonging to a brand? As the UUID is some sort of namespace.
Thanks,
masiar
Hi there,
with our first tests the accuracy obtained with (ESTBeacon *)beacon.iBeacon.accuracy
is very different with the one obtained with a virtual iBeacon using CoreLocation as emitter on an iOS device.
Probably the devices needs to be calibrated and the power level should be set with writeBeaconPower:(ESTBeaconPower)power...
however the calibration procedure suggested by Apple's AirLocate sample code provides a number, but the ESTBeaconPower
has completely different values:
typedef enum : char
{
ESTBeaconPowerLevel1 = -30,
ESTBeaconPowerLevel2 = -20,
ESTBeaconPowerLevel3 = -16,
ESTBeaconPowerLevel4 = -12,
ESTBeaconPowerLevel5 = -8,
ESTBeaconPowerLevel6 = -4,
ESTBeaconPowerLevel7 = 0,
ESTBeaconPowerLevel8 = 4
} ESTBeaconPower;
Do you have a conversion matrix or function?
What should we set to obtain accuracy in meters?
Best regards,
Matteo
I'm having trouble getting the SDK examples to detect the beacon app from the app store. I've previously built the broadcaster/receiver demo and got it working fine, and everything seems to work when I use the apps from the app store, but when attempting to build the Distance Demo from the SDK I get a successful build, but the beacon and receiver never see each other. Any idea where I should look for the problem?
You can later change the UUID in the API will be added to the plans?
I am through I want to UUID want to integrate with other Virtual Beacon Service.
It is possible that in the near future?
UUID that Esitmote Beacon supported in the prototype do not care,
Actual product configuration seems to be a problem too.
Plan to support UUID, so I can write?
I'm having some major problems with the documentation here. I can't figure out at all how I control the distance that triggers some sort of event (like the notification). Also, I've used the editor to change the advertising interval, but there's no way that the time I set here matches the actual time that there's a delay before a notification appears. The interval is set in milliseconds, but it seems like it's actually seconds. Where am I missing these things in the documentation?
Hello,
in the CLBeacon
class there is the accuracy
value useful in some ways (from Apple's documentation):
The accuracy of the proximity value, measured in meters from the beacon. (read-only)
Indicates the one sigma horizontal accuracy in meters. Use this property to differentiate between beacons with the same proximity value. Do not use it to identify a precise location for the beacon. Accuracy values may fluctuate due to RF interference.
A negative value in this property signifies that the actual accuracy could not be determined.
In the ESTBeacon
that value is missing.
However the ESTBeacon
includes an ibeacon
property of type CLBeacon
.
Can we safely use the accuracy
from the ibeacon
property?
Otherwise we should be able to calculate the accuracy
from rssi
or measuredPower
. Do you have a formula to accomplish that?
Best regards,
Matteo
I tried setting power level to highest level using the following code :
[self.selectedBeacon connectToBeacon];
NSLog(@"Version %@", self.selectedBeacon.firmwareVersion);
[self.selectedBeacon writeBeaconPower:ESTBeaconPowerLevel1 withCompletion:^(ESTBeaconPower power, NSError *error) {
NSLog(@"Written power level %d", power);
if (error) {
NSLog(@"Error = %@", error);
}
}];
[self.selectedBeacon disconnectBeacon];
I was doing this every time in the routine
And now the beacon has stopped working altogether . What do I do ? Is there something in the software I can do ? The FW version is 1.8.
It seems that in the 1.2 version, the reference to the CLBeacon object was removed. How does one now read the 'accuracy' that used to be available via beacon.accuracy?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.