SHET House Event Tunnelling.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
scripts Fix memory leak. May 10, 2012
shet Make setup tools install more reliable. Apr 2, 2015
requments_dev.txt Add requirements. Nov 4, 2013 Exclude test dir in setup. Apr 2, 2015


SHET House Event Tunneling

SHET is a simple asynchronous communication framework designed to make it easy to connect physical things together to produce useful behaviours. It was designed with home automation in mind, but has many other uses.

This readme gives an overview of the kind of things that can be done with SHET. When you're ready to get started, see the setup guide, and the client library guide.


Diagram of SHET Architecture

The SHET Server exists to connect clients together; all application logic lives in the clients, and the server just provides a uniform way for clients to talk to each other.

Node Types

SHET consists of a directory tree containing the following kinds of nodes:


If client A provides an event node, this can be 'raised' by client a, and 'watched' by all other clients.


Client A has a motion detector connected to it, then it could create an event /motion, which other clients can watch. When motion is detected, client A raises the event, and all the watching clients are notified.


If client A provides an action node, then other clients can 'call' it, and client A will be notified.


Client B is connected to a media player, and provides a node /media/play. Other clients can call this action, causing client A to be notified, and the media player to play.


If client A provides a property node, then other nodes can 'get' or 'set' the value of it.


Client C is connected to a light, and provides a property node /light. Other clients can get this property to find the state of the light, and set this property to turn it on or off.


The SHET protocol is based on JSON, and as such all values in SHET (parameters for actions and events, and property values) can take any value permissible by JSON.

Other Projects

SHETCClient provides a command line tool for accessing SHET (with tab completion!).

SHETC provides a C library for SHET.

If you would like to connect SHET to the physical world, you might want to take a look at SHETSource.


If you would like to implement a client library or an alternative server, you might be interested in the protocol documentation.