hybridgroup.gobot/platforms/ble
deadprogram 73779ffc54 docs: correct BLE readme link
Signed-off-by: deadprogram <ron@hybridgroup.com>
2016-12-21 10:51:08 +01:00
..
LICENSE misc: update all LICENSE files for current year 2016-08-27 13:12:47 +02:00
README.md docs: update BLE docs with lots of cruicial info 2016-12-19 13:43:32 +01:00
battery_driver.go ble: rename drivers to make them more obvious, and add test placeholders 2016-12-09 12:15:33 +01:00
battery_driver_test.go ble: rename drivers to make them more obvious, and add test placeholders 2016-12-09 12:15:33 +01:00
ble_client_adaptor.go core: use canonical import domain of gobot.io for all code 2016-12-08 13:24:03 +01:00
ble_client_adaptor_darwin.go [ble] BLE client adaptor 2016-07-08 20:28:41 +02:00
ble_client_adaptor_linux.go [ble] BLE client adaptor 2016-07-08 20:28:41 +02:00
ble_client_adaptor_test.go core: use canonical import domain of gobot.io for all code 2016-12-08 13:24:03 +01:00
device_information_driver.go ble: rename drivers to make them more obvious, and add test placeholders 2016-12-09 12:15:33 +01:00
device_information_driver_test.go ble: rename drivers to make them more obvious, and add test placeholders 2016-12-09 12:15:33 +01:00
doc.go docs: correct BLE readme link 2016-12-21 10:51:08 +01:00

README.md

Bluetooth LE

The Gobot BLE adaptor makes it easy to interact with Bluetooth LE using Go.

It is written using the gatt package fork by Currant Labs of the package from Paypal. Thank you!

Learn more about Bluetooth LE here.

How to Install

go get gobot.io/x/gobot && go install gobot.io/x/gobot/platforms/ble

OSX

You need to have XCode installed to be able to compile code that uses the Gobot BLE adaptor on OSX. This is because the gatt package uses a CGo based implementation.

Ubuntu

Everything should already just compile on most Linux systems.

How To Connect

When using BLE a "peripheral" aka "server" is something you connect to such a a pulse meter. A "central" aka "client" is what does the connecting, such as your computer or mobile phone.

You need to know the BLE ID of the peripheral you want to connect to. The Gobot BLE client adaptor also lets you connect to a peripheral by friendly name.

OSX

To run any of the Gobot BLE code you must use the GODEBUG=cgocheck=0 flag in order to get around some of the issues in the CGo-based implementation.

For example:

GODEBUG=cgocheck=0 go run examples/minidrone.go 8b2f8032290143e18fc7c426619632e8

OSX uses its own Bluetooth ID system which is different from the IDs used on Linux. The code calls thru the XPC interfaces provided by OSX, so as a result does not need to run under sudo.

Ubuntu

On Linux the BLE code will need to run as a root user account. The easiest way to accomplish this is probably to use go build to build your program, and then to run the requesting executable using sudo.

For example:

go build examples/minidrone.go
sudo ./minidrone AA:BB:CC:DD:EE

Windows

Hopefully coming soon...

How to Use

Here is an example that uses the BLE "Battery" service to retrieve the current change level of the peripheral device:

package main

import (
	"fmt"
	"os"
	"time"

	"gobot.io/x/gobot"
	"gobot.io/x/gobot/platforms/ble"
)

func main() {
	bleAdaptor := ble.NewClientAdaptor(os.Args[1])
	battery := ble.NewBatteryDriver(bleAdaptor)

	work := func() {
		gobot.Every(5*time.Second, func() {
			fmt.Println("Battery level:", battery.GetBatteryLevel())
		})
	}

	robot := gobot.NewRobot("bleBot",
		[]gobot.Connection{bleAdaptor},
		[]gobot.Device{battery},
		work,
	)

	robot.Start()
}