Components

The Flare architecture consists of the following physical components:

  • The Flare Server can be located either locally or in the cloud, and coordinates spacial information and messages between devices.
  • User Devices may include mobile devices, wearable devices, or any device with a web browser. They can run Flare-enabled applications consisting of sample code provided by Cisco that has been extended for the specific use case.
  • Things are objects in the environment that the user can interact with. They may have their own interfaces, such as a smart display; be electronic devices with other kinds of features, such as a beacon or a thermostat; or non-electronic devices, such as a piece of furniture or a box.
  • Sensors in the environment, such as CMX-enabled access points, can detect the position of user devices. When CMX detects that the location of a device has changed, it can send a message to the Flare server, which can broadcast the message to the device and other things.

Model

There are four types of Flare objects:

  • Environments model a space such as a floor of a building. They have latitude/longitude coordinates, a bounding rectangle, and a compass orientation of the coordinate system.
  • Zones are spacial divisions inside of an environment, and have a perimeter rectangle.
  • Things are interesting objects inside a zone. They can be displays, beacons, lights, or even things that don't have any electronics. Things have a location inside the environment's coordinate system.
  • User devices are transient, and can exist inside of an environment. For example, when a user brings their mobile phone into an environment, it can create a device object. This object may be automatically deleted after a period of time with no updates.

All Flare objects have a certain number of properties in common, such as ID, name, description, date created, and date modified. Flare objects also have a data object that acts as a key/value store for arbitrary JSON data (including strings, numbers, arrays, and objects).

For more details on the Flare object model, see the environments page.

API

The Flare API has both REST and Socket.IO interfaces.

The REST API supports CRUD (create, read, update, delete) operations on all object types. It is generally used when setting up the environment.

  • Create an object
  • Get an object by ID
  • Get all children of an object (such as zones in an environment or things in a zone)
  • Update an object by ID
  • Delete an object by ID

See the Flare API documentation for a list of all API calls. If you have the Flare server running, you can access an interactive REST API Console.

The Socket.IO interface is used for realtime interactions inside the environment. It supports getting and setting data values, sending action messages, as well as receiving push notifications that are used for synchronizing state across devices.

  • Get a data value for an object
  • Set a data value for an object
  • Perform a named action
  • Subscribe to notification about objects
  • Receive change notifications about objects

See the Flare API documentation for a list of all API calls. If you have the Flare server running, you can access an interactive Socket.IO API Console.

Server

The Flare server is implemented in Node.js using JavaScript. It uses the MongoDB database.

Clients

Several kinds of clients can talk to the Flare server.

  • Users can run apps on their personal devices, including tablets, mobile phones and smart watches. The Flare server can track the location of these devices for enhanced interactions as users move around in a space.
  • Things can run web or native apps that drive interactive displays. For example, when a user walks up to a display, it could greet them with a message and then allow them to control the display from their device.
  • Connected things can be controlled by small scripts that connect to the thing over a proprietary interface.
  • Administrators can run web and native apps for creating, browsing and updating data on the server.
  • Data can be imported into Flare from an enterprise database, either on a one-time or ongoing basis, using an import script written in the language of your choice.
  • Monitoring scripts can subscribe to receive notifications for logging and analytics purposes.

Location technologies

Flare currently supports two kinds of indoor location technologies, beacons and CMX.

Beacons are tiny devices that transmit a signal over Bluetooth at regular intervals. A device can measure the signal strength of three or more beacons at known locations to determine its own location. The device can then send its location to the Flare server, which can then push the location to other things.

The Flare sample code for iOS uses Apple's iBeacon standard, while the sample code for Android uses Radius Networks' AltBeacon standard. We recommend beacons from Radius Networks as they are compatible with both standards. See the beacons documentation for more information on purchasing and setting up hardware.

CMX (Connected Mobile Experience) is a Cisco platform that uses Wi-Fi access points to detect the location of user devices connected to the network. The location information can be transmitted from the CMX server to the Flare server, and then pushed to devices and things.

A CMX installation requires a controller module and three or more access points. See the CMX documentation for more information on purchasing and setting up hardware, and the CMX DevNet site for developer resources.

See also