Stacja pogodowa część 1

Opublikowany Autor Piotr CudnikDodaj komentarz

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.