freedomotic v1.5 whitepaper

5
Developers Introduction Origins of the project The Department of Information Engineering and Computer Science (DISI) at the University of Trento, has some research teams working on sensor networks for home nursering. They needed a Framework capable of easily integrate different projects developed in heterogeneous languages, make them work together, to help testing and to produce visual demos for research partners. This way teams at DISI can focus on the core of their research, instead of developing custom solutions for every different project. These are the main Freedomotic goals and requirements: to maintain the flexible and modular framework that could easily ntegrates and adapts to different (and potentially unknown) needs. Freedomotic Architecture Freedomotic is an automation software composed by a core (the framework) plus some plugins. The core part is a framework that: 1. Implements a language independent messaging system based on

Upload: freedomotic

Post on 08-Aug-2015

66 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Freedomotic v1.5 whitepaper

Developers IntroductionOrigins of the project

The Department of Information Engineering and Computer Science (DISI) at the University of Trento, has some research teams working on sensor networks for home nursering. They needed a Framework capable of easily integrate different projects developed in heterogeneous languages, make them work together, to help testing and to produce visual demos for research partners. This way teams at DISI can focus on the core of their research, instead of developing custom solutions for every different project. These are the main Freedomotic goals and requirements: to maintain the flexible and modular framework that could easily ntegrates and adapts to different (and potentially unknown) needs.

Freedomotic Architecture

Freedomotic is an automation software composed by a core (the framework) plus some plugins.

The core part is a framework that:

1. Implements a language independent messaging system based on

Page 2: Freedomotic v1.5 whitepaper

Www.freedomotic.com – developers introduction v1.5

Enterprise Integration Pattern. From this follows you can develop in your favorite language and just exchange messages with the other software components. The aim of the messaging system is to link all software modules together in a flexible and abstract way, relating them using the concept of channels (publish-subscribe to different levels of a topics hierarchy). Through messaging system travels Events, Triggers and Commands. • Events are notification of facts like "the state of an hardware device

is changed", "the user have clicked an object on the GUI" or "an object changes its behavior from ON to OFF". They can be published by any component of the system, a sensor, a frontend, the core itself...

• Triggers listen for events and filter they values (EVENT: "the user have clicked an object" -> TRIGGER: "if living-room light is clicked")

• Commands are instructions to do something like "turn on living-room light"

• Reactions bounds trigger and commands to create an automation: "if living-room light is clicked" THEN "turn on living-room light"

More info about the messaging system can be found here http://code.google.com/p/freedomotic/wiki/MessagingSystem

2. Maintains an internal data structure representing the environment (topology, rooms connections as a graph, ...), the objects in zones and their state (on, off, open, closed, 50%dimmed,...)

3. Creates an abstraction layer, so users and external software modules can use a high level logic like "turn on kitchen light" instead of "send to COM1 port the string #*A01AON##". Ss a developer you can leverage the others plugins features at an high logical level, is just like the modules can see the same environment map as the user. All data component (environment, objects, triggers, commands) can be defined in XML and easily exchanged on the network between different nodes of the P2P Freedomotic network.

4. Provides a rules engine coupled with a natural language processing system to let the user writing automations in plain English like "if outside is dark turn on living-room light". You can add, update and delete this automations at runtime using any human computer interface like GUIs, or even speak them.

2

Page 3: Freedomotic v1.5 whitepaper

Www.freedomotic.com – developers introduction v1.5

The Plugins System

• Devices: you can integrate any type of hardware automation protocol, web service or external software using your favorite language. The purpose of device plugins is to send events to Freedomotic to inform it about anything it should know like, for example, a hardware device state change, a SMS reception, a new twitter message, a person movement to a new location in the environment, etc. It also listens for commands from Freedomotic like turn on this device, send an SMS, post a twitter message, ...

• Frontends: it's easy to develop frontends tailored for specific needs by just reading and publishing events from/to the messaging bus. Imagine for example a virtual guide system for a museum. It must

3

Page 4: Freedomotic v1.5 whitepaper

Www.freedomotic.com – developers introduction v1.5

have: a desktop frontend (eg: in Java) for employees so they can track visits statistics connected to ERP/CRM software; a configurators frontend (eg: in C++) which allows them to easily create the interactive installations; a smartphone frontend for users with a map interface and virtual guide based on indoor location or QR code recognition; a web frontend used to promote the exposition with live data and previews. All this systems must work together and can be rapidly developed in an independent way thanks to Freedomotic framework. This means the system can also grow in features as you go, and can scale thanks to its distributed architecture with automatic load-balancing of the computational load.

• Objects: developed in Java, they are pieces of software which models the behavior of objects like lamps, doors, etc... instructing the framework on how they behave. For example a lamp object plugin makes the Framework know that a lamp has a boolean behavior called powered and a dimmed behavior which is represented by an integer from 0 to 100. In this example a lamp would expose the generic actions turn on, turn off and dimm which can be mapped to a real hardware command exposed by a device plugin (turn on -> turn on x10 device). It also would define the relations between the different behaviors: If dimmed becomes 0% the lamp is powered=false and if dimmed > 0% the lamp is powered=true.

Features

• Cross-platform: Freedomotic is written in Java so it can run on Windows, Linux, Mac, Solaris. Java JRE 6 is required.

• Distributed & Scalable: can be deployed on a network of cheap peer-to-peer hardware node. It is scalable and can manage from small apartments to huge buildings providing automatic load balancing across clusters on the network.

• Modular & Extensible: Freedomotic is modular and can enrich its features using plugins and crosslanguage API. API are distributed along with the software to easily create new add-ons. It provides OSGi Framework features in a simpler way, leveraging well known OO programming inheritance.

• Cross-language APIs: you can connect different software, hardware, frontends and services app developed in your preferred programming language using REST, STOMP or plain Java.

• Not a single frontend: it can run many frontends at the same time, also from remote. Every frontend can be developed with specific purpose in mind and every company can build rapidly its own branded interface hiding the framework beneath.

• Hardware Agnostic: Freedomotic has a hardware abstraction layer to abstract from hardware infrastructure (sensors and actuators)

4

Page 5: Freedomotic v1.5 whitepaper

Www.freedomotic.com – developers introduction v1.5

using events, triggers and commands. An object (eg: a light) is abstract and not related to any particular building automation protocol.

• Event Based: Every action in the real environment and every interaction with the system (eg: a click on the GUI) is mapped to an event. Events can be intercepted at runtime making the behavior of the system fully configurable and adaptable to any automation purpose.

• Semantic-rich: Freedomotic provides a semantic-rich knowledge of the environment topology, persons and objects in it to implement intelligence and reasoning systems. No coding is required, the environment can be described using graphical editors.

Current development stage

Freedomotic is an open source project at a working beta stage. We use the home automation segment to test and attract users but its range of application is much wider. The final purpose of the project is to build a sort of Content Management System (CMS) for building automation. It will abstract and make easily available the common features required by building automation system in a way privates and companies can extend it to create custom context aware/environment aware services.

Contributions

The project is completely Open Source and open to anyone who wants to use it, report bugs, code, produce videos, example data, or simply talk about building automation. We are a small community of passionate people who commit a great part of their spare time to the project and we are always searching for contributors, partnership and fresh ideas. If you are interested write at [email protected]

Resources• Online Code Repository: code.google.com/p/freedomotic

• Wiki: code.google.com/p/freedomotic/wiki/

• Official website: www.freedomotic.com

• Developers mailing list: https://groups.google.com/forum/#%21forum/freedom-domotics

• Contacts: [email protected]

5