Trouble reading beacon's battery level

Battery level information is only available (i.e. non-null) after connecting to the beacon.

About how to do that: you can take a look at Examples app, bundled with the iOS SDK.

Here’s how to initiate the connection:
https://github.com/Estimote/iOS-SDK/blob/master/Examples/beacons/Examples/ESTUpdateFirmwareDemoVC.m#L39

And here’s the delegate method which’ll get called once connections succeeds, here you’ll be able to read the battery level:
https://github.com/Estimote/iOS-SDK/blob/master/Examples/beacons/Examples/ESTUpdateFirmwareDemoVC.m#L108

One more thing: to be able to connect to your beacon, you need to provide your authorization ID and token, so that the app knows it’s you trying to connect, not some unauthorized 3rd party. Here’s an appropriate line in our Examples:
https://github.com/Estimote/iOS-SDK/blob/master/Examples/beacons/Examples/ESTAppDelegate.m#L24

You can get your ID and token on https://cloud.estimote.com/ in the Account Settings section.