Extended Environments Markup Language - EEML
For a full discussion of EEML, please refer to http://www.eeml.org.
Extended Environments Markup Language (EEML) is a protocol for sharing real time sensor data between remote responsive environments, both physical and virtual. It can be used to facilitate direct connections between any two environments; it can also be used to facilitate many-to-many connections as implemented by the web service Pachube, which enables people to tag and share real time sensor data from objects, devices and spaces around the world. Further information is available at http://www.eeml.org/.
Possible end-users range from construction managers, large-building occupants and architects to electronics manufacturers and interactive artists and designers.
EEML supports installations, buildings, devices and events that collect environmental data and enables people to share this resource in realtime either within their own organisations or with the world as a whole via an internet connection or mobile network access. It can enable buildings to "talk", sharing remote environmental sensor data across the network in order to make local decisions based on wider, global perspectives. The EEML protocol supports datastream sources that respond to and exchange data with other installations, buildings, devices and events through data stream tagging. (This user-configurability allows people who use Pachube to identify their datastreams to others who can then search for data streams that they want to use).
EEML is a markup language that describes the data output of sensors and actuators, often in an architectural context but also in interactive environments, interface devices and even Second Life. Crucially, EEML supports the addition of context or "meta-data" about where the data came from. This is meaningful both to machines and humans when searching for data streams that they particularly need without knowing the exact details of the source. It is also important for those wishing to make spontaneous or previously unplanned connections between data streams from different sources with common contexts. The source that EEML is designed to support is data from sensors and devices deployed in the environment. The term "environment" encompasses both the physical world of, for example your home or studio as well as the virtual world of, for example Second Life.
EEML can be used along side well-established XML formats for data interchange such as Industry Foundation Classes in the construction industry, developed by the International Alliance for Interoperability where IFC2x has gained acceptance as one of the formats for Building Information Modeling or BIM. Crucially, using EEML, sensor data from buildings can be mapped onto building components in realtime and exchanged with simulation software and facilities management software thus extending the benefits of BIM to the post-occupancy phase.
EEML is designed to be extensible to support on-going development of types of responsive environments not envisaged at the start of development.
Sample EEML document:
<?xml version="1.0" encoding="UTF-8"?> <eeml xmlns="http://www.eeml.org/xsd/005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eeml.org/xsd/005 http://www.eeml.org/xsd/005/005.xsd" version="5"> <environment updated="2007-05-04T18:13:51.0Z" creator="http://www.haque.co.uk" id="1"> <title>A Room Somewhere</title> <feed>http://www.pachube.com/feeds/1.xml</feed> <status>frozen</status> <description>This is a room somewhere</description> <icon>http://www.roomsomewhere/icon.png</icon> <website>http://www.roomsomewhere/</website> <email>myemail@roomsomewhere</email> <location exposure="indoor" domain="physical" disposition="fixed"> <name>My Room</name> <lat>32.4</lat> <lon>22.7</lon> <ele>0.2</ele> </location> <data id="0"> <tag>temperature</tag> <value minValue="23.0" maxValue="48.0">36.2</value> <unit symbol="C" type="derivedSI">Celsius</unit> </data> <data id="1"> <tag>blush</tag> <tag>redness</tag> <tag>embarrassment</tag> <value minValue="0.0" maxValue="100.0">84.0</value> <unit type="contextDependentUnits">blushesPerHour</unit> </data> <data id="2"> <tag>length</tag> <tag>distance</tag> <tag>extension</tag> <value minValue="0.0">12.3</value> <unit symbol="m" type="basicSI">meter</unit> </data> </environment> </eeml>