Hardware Reference
In-Depth Information
There are abstractions and interfaces for each part of the system. Minerva's visionary grand design is to provide
a means whereby every piece of home technology can be interfaced together through a common technology. This
architecture consists of three parts: input, process, and output. Each part is completely distinct, meaning you can
control any of the house processes from any supported input conduit such as the web browser, remote control, or SMS
text message.
Similarly, any reports or notifications can be sent to any of the available output conduits , which may (or may not)
be the same as the input. One common example is to trigger a process (such as switching the teakettle on) using an IR
input conduit but receive confirmation through the voice output conduit where the computer speaks to you.
From this you can see that the web page input conduit is built on top the existing command abstractions. Furthermore,
the web page has its own abstractions (called Zinc) so that if you want to build a smaller slimmed-down web page
(which doesn't have the dependencies on the WARP system), you can do so without replacing any of that code.
Like the best Linux software, Minerva adopts many open standards and has code released through the GPL,
which provides a platform that can encompass every user and system without vendor lock-in. You can reach its home
and download page from http://www.MinervaHome.net .
N Most examples here use the variable $MINBASE that is set to the install directory of Minerva, which by default is
/usr/local/minerva . It is omitted for the sake of brevity.
Note
Underneath $MINBASE is a directory structure that is not unlike that used by most Linux Filesystem Hierarchy
Standard-compliant distributions. It has the following:
bin : The scripts that send and receive messages between conduits and the abstractions for
the devices themselves.
conf : Personal configuration data, such as external accounts and address book contacts.
This has been separated from the traditional etc directory to allow sharing and updates to
happen without accidentally exposing this private information.
etc : Configuration data regarding the Minerva system itself, its users, settings, and its
appliances, such as the teakettle boil time.
house : Global configuration concerning devices for this and other machines in the house.
It dictates which specific devices (such as /dev/dsp or /dev/dvd ) should be used with each
particular command. This is also used with Marple (covered later), which allows other
devices in the house to be controlled from a single location.
media : Any sound, image, or text file used by the base-level system, such as chimes to begin
a vocal announcement or recorded speech used in an alarm clock. These are generally
called by the sfx utility that translates the argument of ok , error or end , for example, into a
corresponding wave file in the minerva/media/wav directory.
var : All data generated by the user, as a consequence of using Minerva, is stored here. This
includes the sampled messages generated by projects such as the Arduino dictation unit,
presented in Chapter 2. For Linux compliance, it stores log information from the commands
themselves in /var/log/minerva so that tools such as logrotate can be used normally.
Installing Minerva requires an invocation of the basic install.sh script. This copies the files to the appropriate
directories, changes the file permissions, and generates the default users for the system. It is also capable of
downloading the current day's weather reports and TV schedules. The script is fairly all-inclusive, so you can access
the web-based applet for the CD player without explicitly granting read/write permissions to /dev/dsp to the web
server. The downside of this permissive process is that potential vulnerabilities are opened up. Furthermore, anyone
outside the U.K. area will need to rerun the update scripts describing their locale for Minerva to report accurate
weather forecasts and TV schedules.
 
Search WWH ::




Custom Search