Niko’s Status Report for 2-22

Niko’s Status Report for 2-22

As a note to the reader, this past week we decided as a team to change our proposed devices from a combined sensing / smart device into 2 separate devices. One device will do only sensing, and the other will do only “actions”, such as turning a device on or off.

Another thing to note is that we decided to host the webapp locally. This means that one node in the network will be a “master”, and run the webapp. If that device goes down, the network should elect a new master, and then that device should spin up the webapp. As such all devices should have the capability to run the webapp

This past week I did research into how the interaction layer will be designed. In particular, I put a lot of thought into what data our system will contain, and how we might go about storing it in the system. I came to the following conclusions.

The data the system will need:

  • Per-node sensor data (for sensing nodes)
  • Identifying device information (such as a device id)
  • Identifying smart home network information (for commisioning new devices and for reconnencting when a device goes down)
  • Device list, and how to access each device (e.g. device IP addresses)
  • Code for the webapp
  • User’s settings
  • Defined interactions, and when each interaction was triggered
    • This list of past interactions can be viewed by the user
  • Last known status of a device. If a sensing device, last piece of data. If an actuation device, then whether device is on or off.

In thinking about this data, I came to the conclusion that we can minimize the complexity of our system if we minimize the data that needs to be shared. Here is the breakdown I arrived at:

On each node, modifiable data:

  • Sensor data

On each node, hardcoded:

  • Device ID
  • Code for webapp

Shared across all nodes:

  • Network id
  • Registered devices list
  • User settings
  • Defined interactions / past transactions
  • Last known device status

The biggest source of complexity here is the shared data. However, it can be further simplified because the majority of the “shared” data is information that will be needed if a device becomes the hoster of the webapp. The only data that needs to be written by all nodes is last known device status and past interactions.

My progress is on schedule.

For next week, I plan to research a few different database solutions using the above information as criteria for their effectiveness. For each, I will use our listed use cases and our metrics from the project proposal to evaluate their effectiveness. I hope to select a database technology, and then prototype how it fits together with the rest of the system.

Leave a Reply

Your email address will not be published. Required fields are marked *