Slightly delayed post for the last new feature I added to the project due to exams and writing up the final report.
I wanted to give users the option to upload a number of plugins that could access the various items in the house and provide new functionality. Users can upload a plugin as a zip file and it will appear in a list of plugins to load. The system loads any classes that extend the Plugin class which provides methods such as setup() and teardown().
For now, a few sample plugins are provided; one that shows the weather and another that acts as an interactive whiteboard between users in the same house. They both simply load other websites in iframes to demonstrate the concept but if they wanted, they would be able to interact with the items in the house. For example, you could write a plugin that not only showed the weather but also closed the windows if the forecast was rain.