SwitchSmart model

= Technical perspective =




 * hardware
 * the actual radio hardware - currently only the HopeRF rfm12 module, connected via SPI, is supported - an USB dongle is work-in-progress
 * driver
 * currently realized as linux kernel module
 * the interface the kernel provides to the userspace is realized as character-interface (for the HopeRF rfm12-module this is /dev/rfm12).
 * library
 * containing all the information for supported devices (such as radio controlled power sockets, etc.). The library uses shared-memory - so every instance using the library is sharing its configured devices states. Communication with the module happens via a character-device exposed by the driver (see above).
 * applications directly using this library
 * Actually any application can be linked against and using the library directly, but this probably only makes sense for testing applications or applications providing a more sophisticated network interface, such as the XML-RPC / JSON-RPC applications do. There's also an application, implementing an ncurses interface.
 * frontend applications
 * those applications are communicating via IP using high-level protocols such as XML-RPC / JSON-RPC, provided by mentioned applications using the library above. Those are bloated (especially XML), but (kinda) well-specified, inter-operable, easy-to-use on modern platforms such as iOS, Android and other platforms providing high-level programming languages / interfaces.