SwitchSmart model
From SwitchSmart!
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.
