This repository contains the final project for the elective course 'Internet of Things' lectured by Prof. Dr. Edgar Seemann at the Furtwangen University (HFU) in Germany. The goal of this project is to create a virtual smart home automation system simulating a complete MQTT network. The (partially simulated) MQTT data is being cached by an HTTP server and made available via HTTP as well as via WebSockets to allow for real time updates in the dashboard. The UI is implemented in HTML/CSS with frameworks such as Font Awesome, jQuery and more. Everything runs locally and requires no further changes to run (Check the UML diagram for a detailed view of the application architecture).
The project is expected to continue after the deadline.
In order to run the application you need to download Node and install it (along with npm). Then follow these steps:
- Open terminal into project root folder
- Run
npm install
to install project dependencies - Run
node src\backend\central-server.js
- Run
node src\backend\mqtt-clients\weather-station.js
- Run
node src\backend\mqtt-clients\heating-system.js
- Run
node src\backend\mqtt-clients\rollerblinds.js
- Open src\frontend\index.html in the browser of your choice (IE not recommended)
- Have fun :)
In the dashboard you'll find four central services: Heating, Weather, Blinds and System. We will explain how each system works and how it reacts to your input.
You can speed up the simulation in the background with the simulation speed buttons to test the behavior of the system.
Here you find control panels for the heating elements of each room. The temperature will drop, if you turn off the heater if its colder outside. If its hotter outside temperature will slowly rise.
You can set the mode of the blinds to manual and change the value of how "open" you want the blinds to be. If set to automatic, blinds will remain shut between sunset and sunrise and open between sunrise and sunset.
The weather station displays the current temperature and a description of the weather on initial load (data is fetched via HTTP GET). Additionally, alerts are displayed if they apply for the location (See screenshot).
The weather icons change depending on the weather status (over hundred different icons available).
Changing the location for the weather station in src\backend\lib\owm-call.js by changing the constant hotLocation
in line 10 to true will allow you to experiment with the behavior of the heating system in a hot climate.
The following students have worked on this project:
- Alexander Hauser (hausCode)
- Jan Pfeiffer (jan-pfr)
- Benedikt Scheffbuch (BingeCode)
- Henrik Alt (henrikKar)