IoTool Arduino library
This library allows an Arduino to communicate with the IoTool application. Data is sent and received using a Bluetooth connection. IoTool supports classic Bluetooth modules and the integrated Bluetooth Low Energy on Arduino/Genuino 101. Follow the first part of the IoTool Arduino extension user guide to get it working.
Examples
- Sensor
- Action
- Actions and sensors combined
- Arduino/Genuino 101 Bluetooth Low Energy
IoTool constructor
Description
IoTool is the base class of the IoTool library. It holds all set sensors and actions, the Stream object and is responsible for sync and action execution handling.
Syntax
- IoTool ioTool()
Example
#include <IoTool.h>
/* Initialize IoTool object */
IoTool ioTool;
void setup() {
}
void loop() {
}
setSerial()
Description
Sets the serial connection that will be used to send and receive data from the IoTool Arduino service.
Syntax
- ioTool.setSerial(stream)
Parameters
- ioTool: IoTool object
- stream: Stream object
Example
#include <IoTool.h>
IoTool ioTool;
void setup() {
/* In this example Serial is used as stream object */
/* Initialize Serial connection before setting it to the IoTool object */
Serial.begin(9600);
ioTool.setSerial(Serial);
}
void loop() {
}
setBleSerial()
Desctiption
Sets an emulated serial connection on Arduino/Genuino 101 as a communication channel between 101 and IoTool Arduino service. Use this only with built in Bluetooth LE on Arduino/Genuino 101.
Syntax
- ioTool.setBleSerial(bleSerial)
Parameters
- bleSerial: CurrieBLESerial object
Example
/* WARNING: This is only implemented on Arduino/Genuino 101 */
#include <IoTool.h>
IoTool ioTool;
CurrieBLESerial cSerial;
void setup() {
/* Initialize 101 BLE Serial emulation */
cSerial.begin();
/* Attach CurrieBLESerial object to the IoTool object */
ioTool.setBleSerial(cSerial);
}
void loop() {
}
addSensor()
Description
Adds a sensor to the IoTool object. Adding a sensor to the IoTool object enables it to be detected by the Sync function in the IoTool Arduino service.
Syntax
ioTool.addSensor(sensor)
Parameters
- ioTool: IoTool object
- sensor: IoToolSensor object
Example
#include <IoTool.h>
/* Initialize IoTool object */
IoTool ioTool;
/* Initialize IoToolSensor object with id, name, and short name */
IoToolSensor sensor("id", "Sensor name", "S.Name");
void setup() {
/* Add sensor to the IoTool object */
ioTool.addSensor(sensor);
}
void loop() {
}
addAction()
Description
Adds an action to the IoTool object. Adding an action to the IoTool object enables the action to be detected by the Sync function in the IoTool Arduino service.
Syntax
- ioTool.addAction(action)
Parameters
- ioTool: IoTool object
- action: IoToolAction object
Example
#include <IoTool.h>
IoTool ioTool;
/* Initialize action using id, name constructor */
IoToolAction action("id", "name");
void setup() {
/* Add action to IoTool object, this action will now be visible in IoTool after sync. */
ioTool.addAction(action);
}
void loop() {
}
loop()
Description
The main processing loop of the IoTool object. This should not be blocked with delay() calls, as it may result in potentially unexecuted actions.
Syntax
- ioTool.loop()
Parameters
- ioTool: IoTool object
Example
#include <IoTool.h>
IoTool ioTool;
void setup() {
/* At minimum, Stream object such as Serial should be provided to use loop() method */
Serial.begin(9600);
ioTool.setSerial(Serial);
}
void loop() {
/* Do not block this loop with delay() calls, as this will result in unexecuted actions */
ioTool.loop();
}
IoToolSensor constructor
Description
A constructor for creating sensor objects.
Syntax
- sensor(id, name, shortName)
- sensor(id, name, shortName, units)
- sensor(id, name, shortName, decimalPlaces)
Parameters
- sensor: IoToolSensor object variable name
- id: sensor id (must be unique)
- name: sensor name
- shortName: short sensor name displayed in IoTool dashboard (up to ~8 characters)
- units: sensor data units
- decimalPlaces: number of decimal places to use in IoTool dashboard
Example
#include <IoTool.h>
IoTool ioTool;
/* First constructor id, name, short name */
IoToolSensor sensor("id", "My sensor", "M.sens");
/* Second constructor id, name, short name, units */
IoToolSensor tempSensor("t", "Temperature", "Temp", "C");
/* Third constructor id, name, short name, units, decimal places */
IoToolSensor acc("acc", "Acceleration", "Acc", "G", 2);
void setup() {
}
void loop() {
}
write()
Description
The write method sends a provided numeric value to the IoTool app. The value is sent immediately.
Syntax
- sensor.write(value)
Parameters
- sensor: IoToolSensor object
- value: Numeric value (byte, char, int, long, float, double)
Example
#include <IoTool.h>
/* Create IoTool object */
IoTool ioTool;
/* Create sensor object*/
IoToolSensor sensor("id", "Sensor", "Sens");
/* Time keeping variable */
unsigned long pMillis;
void setup() {
/* Initialize Serial connection */
Serial.begin(9600);
/* Set Serial connection, IoTool will use this connection to communicate with IoTool App */
ioTool.setSerial(Serial);
/* Add sensor to the IoTool object */
ioTool.addSensor(sensor);
}
void loop() {
/* Call main loop of the ioTool object, this is neccesary to enable Sync functionality */
ioTool.loop();
/**
* Delay should not be used, as it will block executon of IoTool loop.
* Use millis() instead, check if difference in time is equal or greater
* than 500 ms, if it is wirte value to the sensor and update time keeping
* variable
*/
if (millis() - millis >= 500) {
/* Update time keeping variable */
pMillis = millis();
/* Write value of the Analog Pin 0 to the sensor */
sensor.write(analogRead(0));
}
}
IoToolAction constructor
Description
Creates an IoToolAction object.
Syntax
- action(id, name);
Parameters
- action: IoToolAction object variable name
- id: unique id of the action
- name: name of the action, this value will be displayed in the IoTool app
Example
#include <IoTool.h>
IoTool ioTool;
IoToolAction action("id", "My action");
void setup() {
}
void loop() {
}
setHandler()
Description
Set callback function for an IoToolAction object. This function will be executed in the IoTool loop() method when given the signal to execute. The method accepts a function with the following signature: void /functionname/(void).
Syntax
- action.setHandler(handler)
Paramaters
- action: IoToolAction object
- handler: function pointer
Example
#include <IoTool.h>
IoTool ioTool;
IoToolAction action("id", "Toggle LED");
/* Action handler function */
void actionHandler() {
/* Toggle LED on pin 13 */
digitalWrite(13, !digitalRead(13));
}
void setup() {
/* Set pin 13 as output */
pinMode(13, OUTPUT);
/* Initialize Serial object and set it to the IoTool object */
Serial.begin(9600);
ioTool.setSerial(Serial);
/* Add action handler function to the IoToolAction object */
action.setHandler(actionHandler);
}
void loop() {
/* Action will be executed here when given signal from IoTool app */
ioTool.loop();
}
CurieBLESerial constructor
Desctiption
The CurieBLESerial object emulates a LE connection as a Stream object, allowing Bluetooth LE on Arduino/Genuino 101 to be used with IoToolLibrary in same way as a normal Serial object.
Syntax
- CurieBLESerial cSerial
Parameters
- cSerial: CurieBLESerial object variable name
Example
/* WARNING: This is only implemented on Arduino/Genuino 101 */
#include <IoTool.h>
/* Initialize CurrieBLESerial object */
CurieBLESerial cSerial;
void setup() {
}
void loop() {
}
begin()
Description
The begin method fully initializes the CurrieBLESerial object. Call this in setup().
Syntax
- cSerial.begin()
Parameters
- cSerial: CurieBLESerial object
Example
/* WARNING: This is only implemented on Arduino/Genuino 101 */
#include <IoTool.h>
IoTool ioTool;
CurieBLESerial cSerial;
void setup() {
/* Fully initialize CurieBLESerial object */
cSerial.begin();
/* cSerial can now be used with IoTool object */
ioTool.setBleSerial(cSerial);
}
void loop() {
ioTool.loop();
}