Jakiś czas temu postanowiłem zrobić kolejny projekt z wykorzystaniem modułu WiFi ESP8266, tym razem zabrałem się za zrobienie stacji pogodowej monitorującej temperaturę na moim balkonie. Projekt podzieliłem na 3 części: serwer aplikacji, Arduino, Azure.
W części pierwszej zająłem się napisaniem aplikacji oraz skonfigurowaniem lokalnego serwera. Do realizacji tej części wykorzystałem następujące narzędzia i technologie:
- Visual Studio Code
- .NET Core 2.0
- Entity Framework Core 2.0
- SQL Server Express
- IIS
Projekt aplikacji składa się z kilku warstw:
Data – warstwa dostępu do bazy danych, w której znajduje się DbContext oraz model danych,
Business – warstwa logiki biznesowej aplikacji,
Tests – umieściłem tak kilka testów jednostkowych aplikacji,
Web – warstwa prezentacji aplikacji z wykorzystaniem wzorca MVC.
Przy wykorzystaniu Entity Framework Code First stworzyłem najpierw klasy modelu danych, a następnie kod został zmigrowany do bazy danych w efekcie została utworzona baza WatherStation wraz z już gotowymi tabelami.
Tabela WatherStation przechowuje informacje o stacjach pogodowych (może być ich kilka). W tabeli TemperatureMeasurement zapisywane są pomiary temperatury z odpowiedniej stacji pogodowej. Tabela ReadLog została stworzona z myślą zapisywania komunikatów błędów, które mogły by się pojawić w czasie działania aplikacji.
Aplikacje postawiłem na lokalnym serwerze http Internet Information Services (IIS). Utworzyłem nową pulę aplikacji dla WeatherStation na porcie 80. Ustawiłem ścieżkę do wcześniej zbudowanego projektu stacji pogodowej.
W bazie danych dodałem nowego użytkownika o nazwie „IIS APPPOOL\WeatherStation” z uprawnieniami db_owner dla bazy WeatherStation.
Upewniłem się, że nic nie blokuje portu 80 na firewall’u i to już cała konfiguracja serwera IIS, nie było to zbyt skomplikowane. Obecnie dostępna jest tylko jedna stacja pogodowa GalleryStation. Istnieje jednak możliwość dodania kolejnych stacji pogodowych jak również prezentacji wyników pomiarów na wspólnym wykresie. Poniżej prezentuje przykładowy pomiar temperatury na wykresie.
Cały kod projektu dostępny jest na gitHubie.