hybridgroup.gobot/platforms/ble
deadprogram a7bec04145 windows: attemping appveyor build
Signed-off-by: deadprogram <ron@hybridgroup.com>
2017-07-26 19:07:40 +02:00
..
LICENSE license: update license year to include 2017 2017-01-02 22:25:17 +01:00
README.md docs: update BLE connect info to latest 2017-06-15 14:04:08 +02:00
battery_driver.go ble: refactoring drivers to use BLEConnector interface and provide tests 2017-04-05 11:47:28 +02:00
battery_driver_test.go ble: increase test coverage for battery, device information, and generic access drivers 2017-04-05 12:22:46 +02:00
ble_client_adaptor.go ble: allow for characteristic writes both with and without a response 2017-06-15 14:04:08 +02:00
ble_client_adaptor_darwin.go ble: move new ble client device creation under Gobot's own control 2017-01-14 12:57:37 +01:00
ble_client_adaptor_linux.go ble: move new ble client device creation under Gobot's own control 2017-01-14 12:57:37 +01:00
ble_client_adaptor_test.go ble: use new improved default namer to avoid API conflicts 2017-02-02 15:56:26 +01:00
ble_client_adaptor_windows.go windows: attemping appveyor build 2017-07-26 19:07:40 +02:00
device_information_driver.go ble: refactoring drivers to use BLEConnector interface and provide tests 2017-04-05 11:47:28 +02:00
device_information_driver_test.go ble: increase test coverage for battery, device information, and generic access drivers 2017-04-05 12:22:46 +02:00
doc.go ble: update docs to include reference to included drivers 2016-12-27 19:54:13 +01:00
generic_access_driver.go ble: refactoring drivers to use BLEConnector interface and provide tests 2017-04-05 11:47:28 +02:00
generic_access_driver_test.go ble: increase test coverage for battery, device information, and generic access drivers 2017-04-05 12:22:46 +02:00
helpers_test.go ble: allow for characteristic writes both with and without a response 2017-06-15 14:04:08 +02:00
serial_port.go ble: eliminate race conditions from response handling 2017-06-15 14:04:08 +02:00
serial_port_test.go firmata: WIP on adding support for BLE connected microcontrollers 2017-01-16 21:45:37 +01:00

README.md

Bluetooth LE

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

It is written using the ble package by @roylee17. Thank you!

Learn more about Bluetooth LE at http://en.wikipedia.org/wiki/Bluetooth_low_energy

This package also includes drivers for several well-known BLE Services:

  • Battery Service
  • Device Information Service
  • Generic Access Service

How to Install

go get -d -u gobot.io/x/gobot/...

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 ble 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

If you connect by name, then you do not need to worry about the Bluetooth LE ID. However, if you want to connect by ID, OS X 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.

For example:

go run examples/minidrone.go 8b2f8032290143e18fc7c426619632e8

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()
}