Lab of Things (LoT) is a flexible platform for research that uses connected devices in homes.
- LoT enables researchers to easily interconnect devices and implement application scenarios.
- LoT enables field studies at scale through cloud services that can monitor and update experiments, and provide easy access to collected data
- LoT enables researchers to share data, code, and participants, lowering the barrier to evaluating ideas in a diverse range of settings
Built on top of the HomeOS software platform, Lab of Things provides a common framework to write applications and has a set of capabilities beneficial to field deployments including logging application data from houses in cloud storage, remote monitoring
of system health, and remote updating of applications if needed (e.g. to change to a new phase of the study by enabling new software, or to fix bugs).
Check out our documentation and http://www.lab-of-things.com for more information on LoT.
LoT is based on HomeOS.
The source code uploaded by Microsoft Research to this repository is under LAB OF THINGS LICENSE AGREEMENT (MSR-LA), please see the License section to know the terms.
Guideline for Contributing to the LoT Repository
To maintain overall stability and consistency of the platform, the team at Microsoft Research will be working in the core areas of the platform for enhancements, new features, and bug fixes regularly.
We welcome you to share driver and app modules with the community. Please check your code only in the following directories:
- If your module requires additional roles or new constants, please create a folder under Hub\Custom and add your role.cs and a constants.cs there.
To get started:
- Add modules that communicate with devices to the Drivers subdirectory, and others to Apps subdirectory
- To add a module, add the directory containing the VS project. This will let others to directly add your module in their solution. Add all source files, including those auto-generated by VS such as Properties/AssemblyInfo.cs and the .csproj file.
- For each driver that you add, consider adding at least one example application that uses the driver.
- Provide a readme.txt in the root folder for your module with the following information:
- A simple description of what the module does and how it works
- Any prerequisites in order for the module to work (e.g. any binaries or SDK required?)
- Quick steps to build the project.
- Provide a license.txt to define any license terms you would like to apply to your module. To allow for easy sharing within the community we encourage you to use a license similar to the MSR-LA, which is the default license for this repository.