WOSH (Wide Open Smart Home) is an open source and multi-platform framework (message oriented middleware)written in ANSI C++, designed to enable (smart) home automation.
WOSH is a Service Oriented Framework (SOA) providing a (Network) OS independent infrastructure for developing component based software (services, aka bundles), but it ships with many implemented services and some end-user applications (as woshsrv, WorkShop).
WOSH and some components are (partially) based on QT4.
This project is actually released for developers, the current stage is not yet ready for end-users.
Some reasons to use and join the WOSH project are:
* It's free, open source, alive!
* It's modular and growing
* It's easy to plug-in new features (C++ required)
* It has been though to be efficient and intuitive
* It contains state-of-the-art libraries (QT4, gloox, festival, gstreamer010, ..)
* It comes with many built-in services (networking, communication, entertainment, remote control, ..)
Product's homepage
Here are some key features of "WOSH Framework":
· built-in end-user applications: console and graphical both
· distributed computing, 'zero-configuration' networking
· multi-user, role based access
· remote control using Instant Messaging (using libgloox; compatible with GTalk), SMS (send/receive) and call monitoring (on Windows-Mobile, RNDIS connected smart phone)
· appliances and sensors (X10 devices) monitor/control (on POSIX, based on Heyu)
· entertainment, multi-zone media playback (using GStreamer on POSIX or QT Phonon on Windows, VLC). Media-Director service provides a high abstraction layer, the recovery/guess multimedia status, hardware/software shortcuts and more
· centralized communication system (selecting best communication channel), using also interpreters (such as Festival for Text2Speech)
· building abstract-representation of the home and its devices (rooms, lights, audio-box, ..)
· Cron and Automation services, providing support for basic every-day tasks
· many not listed and more to come..
Requirements:
· Qt
What's New in This Release: [ read full changelog ]
· build and tested on Debian Sqeeze
· added String class, many Utitilites functions have been rewritten and moved there
· significant performance improvement
· fixed some memory leaks
· many defines are now declared as C++ constants
· doing some profiling/performance tests (Windows/VS2010)
· Containers rewritten and classes were moved
· added src/common.spec.pri (contains shared stuff from old common.pri)
· string DEFINES are now declared/defined as (typed) const char[]
· removed (meyer) singleton ObjectFactory, now can be used only after allocating WoshKernel
· removed (meyer) singleton ThreadManager, now can be used only after allocating WoshKernel
· removed plugin framework (integrated in core, see ObjectLibrary)
Core:
· Settings renamed as WoshSettings, now supports also -=, |= operators
· added modified timestamp to Properties
· fixing constructors' initializers
· ISerializable is now extending new interfaces IStringifiable, IHashable
· added Description, last-modified fields to Property
· added Stream classes (beta stage)
· added Buffer classes (beta stage)
· fixed serious bug in ThreadPool::setWorkersCount
· rewritten Containers, removed DataAdapter
· added multi-hop dynamic routing (NetworkManager)
· support registration of remote multi-hop hosts (NetworkManager)
· fixed bug in wosh::getEnumSetAsString() (macro _ENUMSET_TOSTRING)
· added procedures related to CLI for win32 and posix
· fixed deserialization of Variant[DATETIME]
· URICollector is not accessible as meyer singleton anymore, now referenced in WoshKernel (::globalURIs)
· MethodCollector is not accessible as meyer singleton anymore, now referenced in WoshKernel (::globalMethods)
· removed (meyer) singleton FileSystem::getTemporaryFiles (now is a member var)
· added ObjectLibrary, ObjectLibraryLoader (manage shared libraries)
· NetworkUtilities class added (moved** from wosh::network::NetworkUtilities)
· implemented some operators (+, -, *, /, ..) of Variant class
· added BundleGenericWorker.cpp
· renamed LogHandlerStdOut to LogHandlerStdC
· rewritten Thread class
· fixed bug in ThreadPool (used by BusMT)
Automations:
· removed required reference to xtended::WeatherInfo, now using interfaces::various::WeatherInfo
Communication:
· removed SessionProtocol, now using SessionEncoder and SessionInterpreter
· added defaults implementations for SessionEncoder and SessionInterpreter
· fixed some bugs in Session, SessionShell
· * SessionShell is now hiding password while logging in
· fixed bug in commadn line parsing (ShellCommand)
Networking:
· removed/updated NetworkingUtilities ( now refer to core class or NetworkManager::utlities() )
· added NetworkingUtilities implementation for QT, Winsock2
· added network library winsock2 (stuff moved from csocket)
· fixed delay while resolving hostname (TCP protocol connection)
· SocketUdp is not an interface class
· fixed debug output on DeSerialization error
Bundles:
· updated PlayerMPD, now: examines outputs changes, memory leaks fixed
· fixed Heyu, now using custom popen and exit gracefully (no need of CTRL-C as before)
Gui:
· fixed deallocation of SessionGui
· fixed stop of BusRingQt
· fixed bug in DialogLogin (when already logged it does SU)
· fixed PropertiesMapper and some signals on Variant gui
· minor fixes to guis
Xtended:
· WeatherInfo inheriting from interfaces::various::WeatherInfo class