Cacophony: Building a resilient Internet of things
The proliferation of sensors in the world has created increased opportunities for context-aware applications. However, it is often cumbersome to capitalize on these opportunities due to the difficulties inherent in collecting, fusing, and reasoning with data from a heterogeneous set of distributed sensors. The fabric that connects sensors lacks resilience and fault tolerance in the face of infrastructure intermittency. To address these difficulties, we introduce Cacophony, a network of peer-to-peer nodes (CNodes), where each node provides real-time predictions of a specified set of sensor data. The predictions from each of the Cacophony prediction nodes can be used by any application with access to the Web. Creating a new CNode involves three steps: (1) Developers and domain-knowledge experts, via a simple Web UI, specify which sensor data they care about. Possible sources of sensor data include stationary sensors, mobile sensors, and the real-time Web; (2) The CNode automatically aggregates data from the relevant sensors in real time using a JXTA-based peer-to-peer network; and, (3) The CNode uses the aggregated data to train a prediction model via the Weka machine-learning library (Hall, et al., 2009). Real-time predictions made by the CNode are then made publicly available to applications that wish to use data from a CNode’s particular set of sensors. The real-time predictions themselves can also be used recursively as sensor data, enabling the creation of CNodes that make predictions based on other CNodes.
Authors retain copyright to their work published in First Monday. Please see the footer of each article for details.