%in Durban+277-882-255-28 abortion pills for sale in Durban
Freedomotic v1.5 whitepaper
1. 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
2. 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
3. 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
4. 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
5. 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 info@freedomotic.com
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: info@freedomotic.com
5