Piloteur: A Lightweight Platform for Pilot Studies of Smart Homes University of Virginia John Feminella Devika Pisharoty Kamin Whitehouse Sensing in Homes Medical Monitoring Home Automation Energy Management People spend 65% of time in their homes 2 Homes are Hazardous Environments* * Timothy Hnat, et al. The Hitchhiker's Guide to Successful Residential Sensing Deployments. SenSys’11. 4 5 Fast and Easy Large Scale Long Duration Data Management Systems Deployment Frameworks Operational Tools 7 Configuration Node Sync Node Monitoring Node Bridge Node 8 Initial Setup $> piloteur init Pick a name for your network []: MyPilot Enter the directory of config files: ~/mypilot Enter the IP address of your servers [AWS]: Setting up your network on AWS… The monitor interface is at http://yoururl.com Creating config files in ~/mypilot Your network is ready to deploy. Initial Setup $> piloteur create_endpoint --on=/dev/ttyUSB0 --node-id=gamma created a new endpoint (gamma) $> piloteur check gamma [gamma] GREEN... Endpoint Interface Gamma Drivers stdout stderr Data Logs Sync Node Interface Sync Node Data Gamma H35-ble Logs ~/mypilot Drivers Config Checks “syncnode": "data.cs.virginia.edu", "data_path": "/̃smarthome/data/", "logs_path": "/̃smarthome/logs/", "watchdog_path": "/̃smarthome/watchdog/", "logging_modules": [ "monitor", "timesync", "watchdog" ], "keyfile_path": "/̃smarthome-remote-key", "log_format": "[%(asctime)-15s] [%(levelname)s] $ %(name)s: %(message)s", MyPilot Configuration Drivers Config Gamma Checks Drivers and Data $> mkdir ~/mypilot/config/gamma/ $> cat > ~/mypilot/config/gamma/config.gamma.json { "loaded_drivers": ["tutorial"] } $> git add ~/mypilot/config/gamma/ && git push $> piloteur logs gamma tutorial [2014-10-20T05:12:57.495632] It's 1413781977 [2014-10-20T05:13:07.505760] It's 1413781987 [2014-10-20T05:13:17.515909] It's 1413781997 MyPilot Configuration Drivers Config Checks Home-25 Gamma Z-Wave Zwave.json "loaded_drivers": ["open_zwave“] Home25.json network={ ssid="deploymentEssid" psk="piloteur" key_mgmt=WPA-PSK auth_alg=OPEN} gamma.json "node-classes": [ “Zwave", “Home25" ], $> piloteur config gamma { "ssh_bridge_host": "54.193.80.184", "loaded_drivers": [], "data_path": "~/piloteur/data/", "system_alert_recipients": [ “me@mypilot.com" ], "node-id": "gamma", } "alert_recipients": [ “me@mypilot.io", “your@mypilot.io" ], gamma Endpoint System Log • • • • • • • • Network connectivity Kernel failures Hardware reboots CPU utilization RAM utilization Core temperature Local + remote timestamp Etc. Logs Design Summary • All config and software changes are version controlled • Can be rolled back • Nodes requires SSH daemon • Monitoring server requires HTTP daemon • Client requires cron • Data is in raw format Deployment and Case Study Case Study • 315 sensors • 180 endpoints • 45 homes • Up to 4 months of data collection per home • 2 phases • 6 homes (researchers or friends) • 39 homes (non-researchers) Config Node: GitHub Storage: UVa NAS Monitoring Node: AWS Sync and Bridge Nodes: UVa Cluster Endpoint nodes: Rasberry Pi Deployment Costs • $85 per endpoint • 45 minutes per endpoint • ~20 to install OS • 12 minutes to install Piloteur • 13 minutes to assemble hardware and peripherals • 15 minutes per installation • Deployed by non-expert • Web interface was key • WiFi feedback Performance • 100,000+ faults logged • All nodes suffered 5+ potentially fatal faults • Only 26 maintenance visits required Conclusions • Piloteur • Pilot “platform” • Not a software framework • Mitigate operational hazards, but also fast and easy Thank You https://github.com/piloteur