July 24, 2014
The Internet of Things is quickly becoming a household name. While consumer devices such as Nest, Hue, and Dropcam attract the majority of the media attention, sensors and embedded computing are quietly re-architecting the operations and business intelligence capabilities of companies across industries. Recently a global client asked us to help them leverage sensors to gather compliance and activity data from their fleet of branded refrigerators. Specifically the company was looking to answer the following questions:
- Is it at the correct location?
- Is it plugged in? Is the temperature appropriate?
- Is it sufficiently stocked?
- Are retailers stocking product correctly?
- Does it contain any non-approved products?
- What shelves are selling?
- What products are selling by shelf?
PwC’s Emerging Technology Lab developed a working prototype that tracked the location and internal temperature of the refrigerator as well as purity, activity and capacity for each shelf through the installation of embedded sensors (temp, GPS, door, load and camera). The technology stack relied on inexpensive open source components that had a large knowledge base and required minimal data manipulation. These were:
Raspberry Pi: Hardware used as the embedded computer to capture and transmit sensor events. It was chosen for its low power consumption, compact size and ability to run a basic Linux kernel.
Node.js: Software used to capture and transmit the sensor event data from the Pi to the database. It was chosen for its light processing footprint and event driven architecture.
MongoDB: Database used to store and retrieve sensor data. It was chosen for its unstructured data model and json compatibility
Ruby on Rails: Web framework used to create a user dashboard. It was chosen for its MVC framework and rapid development
The lessons learned from this prototype are applicable to any sensors project. Below are some of the most relevant findings.
Sensors: While costs are dropping across the board there are still important differences between sensor components often related to electrical engineering specifications such as signal drift and operating conditions. It’s important to pick the right component for the environment.
Data Capture/Transmission: Node’s event driven architecture and seamless integration with the web made it a good candidate for capturing and passing it to the server.
Embedded Computing: While the Raspberry Pi’s Raspbian Linux distribution provided a surprising amount of functionality, processor intensive function such as Computer Vision should still be run on a separate machine. Completion times were nearly 10x slower on the Raspberry Pi.
Data Storage: NoSQL databases such as MongoDB provide the flexibility to add and remove components or adapt the type of data stored without expensive data restructuring efforts. Open source wrappers such as Square’s Cube framework have provided standardized storage and retrieval functions.
Computer Vision: Open source libraries such as OpenCV provide very exciting possibilities in computer recognition. However, these do not work “out of the box” and require a good deal of configuration and training to the specific environmental conditions before they can be useful.
Are you experimenting with sensors? If so, share some lessons learned with us.