libpebble
Interact with your Pebble from OSX, Ubuntu or Debian operating systems.
Warning and Complications
- Supported OSes are
OSX 10.8
,Ubuntu
,Debian
- OSes which can utilize a faster Bluetooth library, Lightblue-0.4, are
OSX 10.8
andUbuntu
- Detailed Lightblue-0.4 installation instructions for earlier version of OSX (10.6) and other OSes can be found here
##1. Install Dependencies
All supported OSes will require python 2.7
to operate libpebble. It can be installed here
Pyserial
will also be required, is can be installed via pip
###a. OSX Additional Dependencies
Installing Lightblue-0.4 in OSX will require the following be installed:
PyObjC
which can be installed via pipXcode 2.1 or later
to build LightAquaBlue framework
###b. Ubuntu Additional Dependencies
Installing Lightblue-0.4 in Ubuntu requires some extra dependencies be installed via apt-get install
:
python-dev
libopenobex1-dev
python-tk
if you wish to use the GUI selection toolpython-bluez
###c. Debian Additional Dependencies
Support for lightblue is untested in Debian, however the following should be installed/completed for use with PySerial:
-
Install rfcomm
sudo apt-get install rfcomm
-
Bind the device
sudo rfcomm bind 0 PEBBLE_BLUETOOTH_ADDRESS 1
-
Make the following code change to
pebble/pebble.py
: Change:self._ser = serial.Serial("/dev/tty.Pebble"+id+"-SerialPortSe", 115200, timeout=2)
to:
self._ser = serial.Serial("/dev/rfcomm0", 115200, timeout=2)
-
Note that you may have to run libpebble as root with
sudo python pebble.py
in Debian
##2. Install Libpebble and Lightblue
- To install libpebble, clone the current libpebble with lightblue support from
[email protected]:pebble/libpebble.git
to a location of your choosing - To install lightblue clone
lightblue-0.4
fromhttps://github.com/pebble/lightblue-0.4
and then:cd lightblue-0.4
sudo python setup.py install
##3. Testing the Connection Note: you should have your bluetooth module enabled before continuing
###a. OSX
When using libpebble on OSX, it is recommended that --lightblue
be utilized.
#####Using libpebble with --lightblue on OSX
-
First install the OSX dependencies, general dependencies and lightblue
-
From the
libpebble
folder, execute the following:./p.py --lightblue --pair get_time
-
Note that if no
--pebble_id
is specified before the command, you are provided with a GUI selection tool. -
Note that if a MAC address is supplied, initialization time is reduced.
- For example:
./p.py --pebble_id 00:11:22:33:44:55:66 --lightblue get_time
where00:11:22:33:44:55:66
is the Pebble's MAC Address, viewable on the Pebble fromsettings
-->about
- For example:
-
You can obtain your pebble's MAC address after a successful connection in the libpebble stdout debug logs
-
The
--pebble_id
can also be the 4 letter friendly name of your pebble but this will require that the Pebble is broadcasting. -
It is also possible to set the PEBBLE_ID environment variable as well:
export PEBBLE_ID="00:11:22:33:44:55:66" ./p.py --lightblue get_time
#####Using libpebble without --lightblue on OSX (MAY CAUSE KERNEL PANICS)
- Pair your Pebble to your computer and make sure it's setup as a serial port. For example it could be exposed as
/dev/tty.Pebble123A-SerialPortSe
. You can accomplish this by using OSX's pairing utility inSystem Preferences
-->Bluetooth
->+
--> selecting your pebblePebble XXXX
then confirming the pairing code on the Pebble. - Once you're paired and the serial port is setup, you can execute commands without the
--lightblue
flag, just ensure that the--pebble_id
is the 4 letter friendly name of your Pebble,123A
for example. - A command to get the time might be:
./p.py --pebble_id 123A get_time
b. Ubuntu
Automated pairing via --pair
is not currently supported in Ubuntu
- First install the Ubuntu dependencies, general dependencies and lightblue
- In Ubuntu's
Menu
-->Settings
-->Connectivity
-->Bluetooth
dialog, pair with your Pebble - From the
libpebble
folder, execute the following:./p.py --lightblue get_time
- Note that if no
--pebble_id
is specified before the command, you are provided with a GUI selection tool. - For example:
./p.py --pebble_id 00:11:22:33:44:55:66 --lightblue get_time
- The
--pebble_id
can also be the 4 letter friendly name of your pebble but this require that the Pebble is broadcasting.
Applications
- Note that applications each have a unique UUID which is used to launch on install/re-install, it should be visible in the source for your application.
- Once an application is installed or re-installed it will be launched automatically. Disable this with
--nolaunch
- for example
./p.py --pebble_id 00:11:22:33:44:55:66 --lightblue reinstall brains.pbw --nolaunch
- for example
#####Installing:
- From your libpebble directory, execute
p.py
with the argumentload <path-to-valid-app>
- for example:
./p.py --pebble_id 00:11:22:33:44:55:66 --lightblue load brains.pbw
- for example:
#####Re-installing
- To re-install an application, execute
p.py
with the argumentreinstall <path-to-valid-app>
. This will attempt to remove the application by its UUID or, if that fails, the name of the application before installing it once more.- for example:
./p.py --pebble_id 00:11:22:33:44:55:66 --lightblue reinstall brains.pbw
- for example:
Functionality
The following are currently supported:
- Sending email, sms and ping notifications
- Installing, reinstalling and uninstalling applications
- Installing firmwares
- Launching applications by UUID
- Sending application messages
- Resetting device
- Setting/getting time
- Sending notifications
- Setting the currently playing track
- Getting the installed firmware version
- Getting and setting the pebble's time
REPL
A basic REPL is available, it is best used with ipython:
`sudo ipython repl.py`
The variable pebble
refers to the watch connection. You can for example perform pebble.get_time()
to get the time of the watch