Unsplashed background img 2

Design Requirements


Explicit Requirements


- The user should be able to check the status of the device to which the node is attached any time they have connection to the Internet, once training has been completed.
- The system should be 80% accurate at predicting the state of a dishwasher, washing machine, and dryer.
- The system should be able to update it’s “guess” as to whether an appliance is on once a second at the slowest.
- The process of training the system for a device should take at most 5 minutes, excluding time to turn the device on or off (assuming the user has already attached the sensor node).
- If the user removes batteries from the node, then puts them back it, the system should not have to be re-trained to continue to detect the state of the attached appliance.
- If the user unplugs the hub once the system has been trained, then plugs it back in, the system should be able to detect the state of the device without having to be re-trained.
- The user should be able to connect the hub to a WiFi network without having to write any code.
- The user should have the option of being notified via email or text message when one of their devices switches on or off.
- The enclosure for the sensor node should have a solar panel.
- The device should turn off sensors that are not necessary to determine the state of the device.

Implied Requirements


- The period at which the microcontroller sends data to the hub device, and the time it takes for the hub to receive the data and update it’s “guess” should be at most one second each.
- The server running on the hub should not crash
- The hub should have non-volatile storage that stores information on how to make predictions based on node data, and which features are necessary for making the predictions.
- A categorical machine learning technique should be used.
- The user should not have to tell the system what symptoms it should look for to determine if a device is on or off.
- When the solar panel is exposed to light, it should reduce the amount of power the battery supplies.
- The node device should not send back unprocessed sensor data to the hub. It should either send features calculated over some sampling intervals, or the results of a machine learning algorithm run on the node’s processor.
- The system must be able to tell which features are relevant to determining the state of the device to which the node is attached. Irrelevant features should not be sent sent from the node to the hub.

Coolness Requirements


- The node and hub devices should have enclosures.
- The web app should be aesthetically pleasing
- We should have a cool logo and device name.