The main goal of the project is to provide two main functionalities, one for providing real-time weather data from an IoT device and the second is to provide accurate weather data predictions. The website that is created will also provide statistics on future and past predictions against a bigger weather company like SMHI.

The application will be able to give the stakeholders insight in upcoming weather using a prediction model. We believe that the prediction model that will be created will be able to predict the upcoming weather accurately. But as we know our product won’t be able to predict the weather better than other weather stations. Because of this, our goal is not to be better but rather to offer a solution. That solution is that most weather websites only offer weather reports for entire cities. Our product will be able to offer precise weather data at a specific position using the IoT device. This will give the user a chance to choose a location where to track and predict the upcoming weather.


Technologies Used

The project was made nearly using only Microsoft Azure products. The following Azure technologies that were used were:

Other technologies used in the project are:

Features

This project was part of the course Project and Project Methods (II1302). I as the project leader was responsible for the machine learning part of the project. This means that I was accountable for working with the previous years of data, building the prediction model, compiling the model, overseeing the data between the model and the Microsoft Azure database, and setting up the server. Below I will discuss more in detail what each task contains:

Previous years of data: This part of the project includes finding good weather data set. I was able to get this data from SMHI which had multiple weather stations all over the country. To find the best quality of data the project needed that the data should be logged every hour. The data sets also needed to fulfill the requirement of showing temperature, air pressure, and humidity. There were a lot of weather stations that had stopped tracking new weather data. To deal with this I combined multiple weather stations data.

Working with data: The next part was that I needed to make sure that the data had no anomalies which could end affect the prediction model. This means that I needed to make sure that the data didn’t contain any irregular data values. I did this by plotting graphs of the different values, heat maps, and normalizations.

Creating the model: The process I went through of creating the model includes testing over six different models to assess and understand which model from the Tensorflow library would fit best to predict weather (based on our data set). The type of prediction that we created is something called “time-series predictions.” During the creation of the model, I had to set up Tensorflow to use my GPU (this was a bit hard because I stubble upon problems with mix-matching versions of the program) to minimize the compile time (30 hours for CPU, 2 hours on GPU). During the creation of the model, I was also evaluating several types of inputs to the model to find the best parameters.

Managing new data: I was also responsible for overseeing the data between the model and the database. This includes updating the local data with the latest weather data from the IoT device. The prediction model uses the local data to create the latest predictions.

Server: I was also accountable for setting up the server. The purpose of the server was to run the predictions daily and upload the result to the database. The server was also running the functions for the REST API.

Redesigning the webpage: When the course was finished, I took my time to redesign and add placeholder data because our Microsoft Azure student credits ran out. The website that is linked and displayed is my new design for the project.