6 minutes

Pebble. How a QA Tool Translates Into Product Feature


When helping a US-based agency with location tracking functionality, we’ve discovered (and wrote about it in one of our previous posts, QA of location tracking) that usage of a watch would save us time, save money for our customer,and be a great aid for skiers and snowboarders, while saving their device’s battery life.

Pebble. How a QA Tool Translates Into Product Feature - Lemberg Solutions Blog

We made up a list of key requirements to such watch, and it seems that Pebble is our best choice:

  • Easy to access on wrist.
  • Proper battery life.
  • Bluetooth support.
  • Delivered with a nice SDK for integration with iPhone and Android devices.

How it is helpful

Pebble did a good job for our QA team because:

  • it helps improve automatisation level of QA
  • saves time spent on location tracking QA
  • translates a QA Tool into a useful feature for skier or snowboarder

Pebble. How a QA Tool Translates Into Product Feature - Lemberg Solutions BlogPebble. How a QA Tool Translates Into Product Feature - Lemberg Solutions Blog

When it’s better to use Pebble rather than your phone

Pebble. How a QA Tool Translates Into Product Feature - Lemberg Solutions Blog

  • At mountain you need to take out your device and set it up for a QA session. You can partially do this at some rest zone, but the actual testing session launch should be performed at the foot of the mountain anyway (lift entrance point). But if it’s also snowing, freezing, or even a blizzard, or other things that mother nature can throw on you at such altitude, you will remember with regret the comfort of the resort restroom and will dream about some remote control for you mobile device.
  • During a run you need to check from time to time whether your device and the launched app are still alive. The device may be dead because of the battery, and the application can be frozen or stopped due to some crash planted by developers. In order not to lose a run session, you need to make these checks and restart in time if anything happens.
  • During a run, you need to track how the application changes its state at specific conditions. For example, at a specific point of a path the app should count a run increase. If that doesn’t happen, you need to log this and investigate later why this happened.
  • During a run, while accelerating you need to check how the app behaves, whether the speed is increasing.
  • During a lift, you need to check whether the app ignores location change as the case relates to a LIFT.

All these examples require to take our device and look at how it works and what it shows. During the actual run, it may even appear to be dangerously active.

As a result we ended up with the following user stories set:

  • As a Skier I would like to use my watch to initiate and manage runs recording so that I don’t retrieve my phone from my ski jacket
  • As a Skier I would like to be notified that my recording session was terminated because of some reasons so that I can stop skiing/snowboarding to restart services so I don’t lose the run record unexpectedly
  • As a Skier I would like to be notified about losing connection with my mobile phone so that I don’t lose it somewhere in the snow

These are our forcing wheels and next chapters overviews our re-use of standard Pebble solution and some thoughts about our custom implementation.

What will the Pebble App do?

Our application’s main goal is to view skier statistics:

RUNS COUNTHow many times you run down a hill
CURRENT SPEEDYour current speed
TOP SPEEDTop speed in all your runs
VERTICALVertical distance you passed
DISTANCEOverall distance you passed

A standard Pebble app will cover only the current speed and distance.

Pebble. How a QA Tool Translates Into Product Feature - Lemberg Solutions Blog

While our custom solution covers all these property fields.

Pebble. How a QA Tool Translates Into Product Feature - Lemberg Solutions BlogPebble. How a QA Tool Translates Into Product Feature - Lemberg Solutions Blog

Lost my phone

There is a risk of losing your phone during skiing. To decrease it we added the Phone Lost function. When the watch looses connection with the paired phone, this feature makes your Pebble vibrate and shows an informative message on it. Even the last gps location of your device could be shown in it.

Pebble. How a QA Tool Translates Into Product Feature - Lemberg Solutions Blog

What every screen displays

Pebble smart watch comes with built-in watchapps (applications that came with Pebble by default) to support various sports, including golf, and time- and distance-based sports.

By integrating PebbleKit (library that provides simple interface to work with Pebble) into your mobile phone apps, you can:

  • Change the title and icon of the watchapp to match your branding.
  • Present or close the watchapp programmatically from your phone app.
  • Push time, distance, and pace from your phone app to fill the fields of the watchapp.

But, unfortunately, those three fields were not enough for us. Our application’s main purpose is to count skier’s runs and calculate vertical distance that the skier passed. That’s why we needed a custom Pebble application with custom UI.

Data exchange scheme

Pebble. How a QA Tool Translates Into Product Feature - Lemberg Solutions Blog

All communication between Pebble and Android is via Bluetooth and is managed with local Pebble Service. Service is a part of the official Pebble Android app. It translates events and messages from Pebble into intents. And conversely, it listens to intents from application, transforms them into messages and then sends them to Pebble.

Pebble provides you The PebbleKit Android library that will help you to communicate with Pebble Service. It is a simple intents wrapper.

  • All magic is worked by one com.getpebble.android.kit.PebbleKit class and a collection of static functions.
  • There are few nested classes for event handling.
  • Use a PebbleDictionary class to read and create Pebble dictionary objects. (The same as Dictionary objects on Pebble side).
  • Use the sendDataToPebble() and registerReceivedDataHandler() methods to send and receive data.
  • The messages are arbitrary sets of key/value pairs.
  • To send or receive data, you need to create an UUID object. It should be the same as on your Pebble app.
  • Also, the Pebble app can use the AppMessage API or the AppSync API for sending and receiving messages.

Device setup for Pebble app

To connect your Pebble and phone, you should follow a few easy steps:

Then, to install custom watch application you will need to:

  • Register.
  • Log in at cloudpebble.net.
  • Click import and select the zipped folder with source code.
  • Connect to Pebble watch via Bluetooth.
  • Open the Pebble application on the phone.
  • Go to cloudpebble.net and select project->compilation->Install and run.

Thats it. Pretty simple, don’t you think so? For more details, you can go through the official Pebble documentation.


Pebble certainly holds some new exciting possibilities for action sports, active lifestyle in general, and just about any use case you can think of that requires using your phone for tracking your activity indirectly, but through a practical wristwatch interface. It was so comfortable for live testing in the mountains that we decided to integrate it into the app for users.

  • You can use your watch to initiate and manage run recording so that you don’t need to retrieve your phone from your ski jacket.
  • With the Pebble watch application, you have less of a chance of losing your phone while skiing or snowboarding.
  • Even your battery will be not under attack. Bluetooth is now so dangerous for it.

We recommend Pebble for all sorts of action sports and active lifestyle apps. Pebble watch opens up new possibilities when it comes to keeping track of your activity while focusing on what you are doing.

For more information on developing applications for Pebble or any other latest IoT gadgets check out our experience section Apps for Connected Devices.


Article Contents: