All Projects → neilpa → Circulate

neilpa / Circulate

Licence: mit
Reverse engineered iOS library for controlling the Anova 2 via Bluetooth

Projects that are alternatives of or similar to Circulate

Openhaystack
Build your own 'AirTags' 🏷 today! Framework for tracking personal Bluetooth devices via Apple's massive Find My network.
Stars: ✭ 794 (+1317.86%)
Mutual labels:  bluetooth
Roboticarmandroid
💪 + 📱 It's a simple project where you'll learn how to create a Robotic Arm with Arduino board, controlled by a Android smartphone using Bluetooth. (PT-BR: Um projeto simples onde você irá aprender como criar um braço robótico utilizando Arduino, e controlar ele via Bluetooth através de um aplicativo Android)
Stars: ✭ 14 (-75%)
Mutual labels:  bluetooth
Potato Library
Easy to use Utility library for Android
Stars: ✭ 45 (-19.64%)
Mutual labels:  bluetooth
Node Eq3ble
node.js package to control an EQ3 bluetooth thermostat
Stars: ✭ 22 (-60.71%)
Mutual labels:  bluetooth
Bluesmirf
RN-41/42 bluetooth module breakout boards, available from SparkFun Electronics
Stars: ✭ 9 (-83.93%)
Mutual labels:  bluetooth
Uart Smartwatch
Android App, Firmware and Circuit for a DIY Smartwatch working with Bluetooth Low Energy
Stars: ✭ 30 (-46.43%)
Mutual labels:  bluetooth
Node Escpos
🖨️ ESC/POS Printer driver for node
Stars: ✭ 752 (+1242.86%)
Mutual labels:  bluetooth
Imbmw
BMW iBus .NET MF SDK and hardware
Stars: ✭ 50 (-10.71%)
Mutual labels:  bluetooth
Nativescript Headset Detection
Detect when a headphone (jack or bluetooth) is (dis)connected.
Stars: ✭ 11 (-80.36%)
Mutual labels:  bluetooth
Eclipse Smarthome Bluetooth Binding
Eclipse SmartHome Bluetooth Binding
Stars: ✭ 44 (-21.43%)
Mutual labels:  bluetooth
Bluejay
A simple Swift framework for building reliable Bluetooth LE apps.
Stars: ✭ 917 (+1537.5%)
Mutual labels:  bluetooth
Eaze
iOS Cleanflight Configurator
Stars: ✭ 8 (-85.71%)
Mutual labels:  bluetooth
Bluetooth State View
Material design animated Bluetooth state view for Android
Stars: ✭ 36 (-35.71%)
Mutual labels:  bluetooth
Blue
Easily switch bluetooth peripherals between multiple macs
Stars: ✭ 18 (-67.86%)
Mutual labels:  bluetooth
Bluetoothstudy
android 传统蓝牙开发实践,详细开发步骤参考博客: http://blog.csdn.net/qiao_jim/article/details/73008695
Stars: ✭ 46 (-17.86%)
Mutual labels:  bluetooth
Room Assistant
Presence tracking and more for automation on the room-level
Stars: ✭ 764 (+1264.29%)
Mutual labels:  bluetooth
Arek
AREK is a clean and easy way to request any kind of iOS permission (with some nifty features 🤖)
Stars: ✭ 947 (+1591.07%)
Mutual labels:  bluetooth
Pytile
📡 A simple Python API for Tile® Bluetooth trackers
Stars: ✭ 56 (+0%)
Mutual labels:  bluetooth
Gjlightbluetooth
自己封装的基于CoreBluetooth的蓝牙开发库,内附CoreBluetooth使用demo。数据传递基本上使用Block,还使用了Runtime等技术。
Stars: ✭ 50 (-10.71%)
Mutual labels:  bluetooth
Bluetoothserial
Cordova (PhoneGap) Plugin for Serial Communication over Bluetooth
Stars: ✭ 999 (+1683.93%)
Mutual labels:  bluetooth

Circulate

Alternative iOS wrapper library for controlling the the Anova 2 via Bluetooth

Protocol

The device implements a Bluetooth LE GATT service with one charactistic

Service UUID:        0xFFE0
Characteristic UUID: 0xFFE1

This single characteristic acts as a command channel to the device. Clients write command data to the characteristic with responses delivered as value updates. Commands are ASCII strings composed of an action, optional arguments and termniated with carriage return

'<action>[ <argument> ...]\r'

If the command is longer than 20 characters, it should be sent in chunks, each 20 characters long (21, counting '\r' in the end of each). In terms of CoreBluetooth this string value encodes to an NSData object and is written to the peripheral's -writeValue:forCharacteristic:type: method. Response values are similar ASCII strings and always terminated with a carriage return

'<response>[...]\r'

The response value is sent to the peripheral delegate's -didUpdateValueForCharacteristic:error: method. This method may be called multiple times if the return value is too large for a single payload. If that's the case keep appending the returned data until you see a response terminated with a carriage return.

This is especially unintuitive when considering GATT characteristics are designed to represent one datum that can may be read and/or written.

Temperature commands

read unit

Returns the current temperature unit as 'c' or 'f' for Celcius and Fahrenheit respectively.

set unit <c|f>

Set the current temperature unit to Celcius or Fahrenheit. Returns either 'c' or 'f' depending on the unit being set.

read temp

Returns the current temperature as a floating point number. This value will be in the temperature units set on the device.

read set temp

Returns the target temperature as a floating point number. This value will be in the temperature units set on the device.

set temp <degrees>

Set the target temperature of the device. The degrees value should be a floating point number in the temperature units of the device. Acceptable temperature range is 5.0 to 99.9 Celsius or 41.0 to 211.8 Fahrenheit. The return value is the set temperature.

read cal

Returns the current temperature calibration factor of the device. The original value is 0.0. It is temperature displayed by device minus temperature measured by device in Celsius.

cal <factor>

Set the current temperature calibration factor of the device. Accepted values range is -9.9 to 9.9. (This is Celsius, no matter what is current unit.) Echoes the executed command.

Device operation commands

status

Returns the current operational status of the device. The potential return values are 'running', 'stopped', 'low water', 'heater error', or 'power interrupt error'. Haven't validated that the last two are correct yet

start

Start the device. Seems to always return 'start' even if the device doesn't start.

stop

Stop the device. Seems to always return 'stop'.

Timer commands

read timer

Read the number of minutes on the timer and whether or not it's running. The return value is of the form ' running|stopped'

set timer <minutes>

Set the number of minutes on the timer. Returns the value that is set.

start time

Starts the timer. Return value is the echoed command. Note that starting the device also automatically starts the timer

stop time

Stops the timer. Return value is the echoed command. Note that stopping the device also automatically stops the timer.

Program commands

program status

Returns the current program that is set. The return value is of the form 'program' followed by the individual time-minutes pairs.

set program t1 m1 [t2 m2 [...] ]

Set a multistep programe on the device. Seems like these need to be set in temperature and number of minutes pairs. Appears to be a max of 6 steps and any after that are ignored.

start program

Start the current program. Returns the echoed command. Needs more testing

stop program

Stop the current program. Returns the echoed command. Needs more testing

resume program

Resume the current program. Returns the echoed command. Needs more testing

System commands

set led <red> <gree> <blue>

Change the mouse wheel color on the device. The RGB values are integers from 0-255. The return value is the echoed command if successful.

set name <name>

Set the Bluetooth display name of the device. This will cause the device to disconnect.

read date

Supposedly reads the date and time set on the device. The return value is of the form 'YY MM DD hh mm' with two digit values of year, month, day of month, hour and minute respectively. I also noticed that the clock didn't seem to run on the device until after calling 'set date' for the first time. Before that it was always returning the origal time value (same for the 'read data' entries).

set date YY MM DD hh mm

Set the current date and time on the device. Note that this is a 24 hour clock.

set password <password>

Assuming the above is the syntax for the set password command but haven't tested it yet

read data

Returns all the available temperature history data. This returns a list of entries, each entry containing a temperature date and time. The form is each entry is 'temp MM DD hh mm'. The temperature will be in the current units set on the device.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].