wprowadzenie do aplikacji webowych
Wprowadzenie do aplikacji webowych
17 marca 2017
serwlety w aplikacjach webowych
Serwlety w aplikacjach webowych
25 marca 2017
Pogodynka 03 artykuł

Relacja z frontu projektu Pogodynka. Dzisiaj przeczytasz o tym czym jest projekt modułowy w Gradle, zobaczysz jak wygląda podstawowy szablon aplikacji webowej. Dowiesz się też jak odczytywać temperaturę z czujnika DS18B20, który podłączyłem do Malinki. Zapraszam do lektury.

Postęp w module Thermometer

Mogę powiedzieć, że pierwszy moduł całej aplikacji jest “gotowy”. Podłączyłem czujnik temperatury do Malinki, udało mi się nawet odczytać wskazania temperatury. Klasa FromFileThermometer jest w stanie przeczytać zawartość takiego pliku i odpowiednio ją zinterpretować, udowadnia to test jednostkowy FromFileThermometerTest.

Praca z czujnikiem DS18B20 na Malince

Czujnik temperatury DS18B20 można połączyć bezpośrednio pod wyjścia GPIO (ang. General Purpose Input Output). Wystarczy do tego sam czujnik i opornik 4.7k. W moim przypadku na zdjęciu poniżej widać to połączenie:

podpięcie czujnika temperatury

U siebie zastosowałem opornik 4.6k (akurat taki udało mi się dostać w sklepie).

Jeśli wszystko działa poprawnie Malinka wykryje czujnik i w katalogu /sys/bus/w1/devices znajdzie się katalog o nazwie 28-00000xxxxxx. xxxxxx może być różne i jest unikalnym identyfikatorem danego czujnika. Wewnątrz tego katalogu znajduje się plik w1_slave, który zawiera aktualne wskazanie czujnika.

wskazanie czujnika temperatury

Odczytanie temperatury sprowadza się do poprawnego parsowania zawartości tego pliku. Przykład realizacji możesz znaleźć we wcześniej wspomnianej klasie FromFileThermometer.

Zmiany w Gradle

Sporo też zmieniło się w samej strukturze projektu. Od teraz pogodynka to projekt, który składa się z wielu modułów. Jest to możliwe dzięki dodaniu pliku settings.gradle, który opisuje strukturę takiego projektu.

Jeden z modułów już znasz thermometer. Nowy, który się pojawił to datavault. Dla przypomnienia jest to moduł, który odpowiedzialny będzie za zapisywanie wskazań temperatury w bazie. Udostępniał też będzie usługi, które używane będą przez interfejs użytkownika w przeglądarce internetowej.

Całość na prostym diagramie wygląda następująco:

pogodynka diagram

Jeśli chcesz poznać podstawy Gradle zapraszam do osobnego artykułu.

Szablon aplikacji webowej

Moduł datavault będzie aplikacją webową. Aplikacja ta nie będzie posiadała żadnego interfejsu graficznego. Wystawi jedynie usługi, które będą realizowały całą funkcjonalność:

  • zapis aktualnej temperatury,
  • odczyt temperatur z N ostatnich dni.

Jeśli wcześniej nie miałeś do czynienia z aplikacjami tego typu zachęcam do przeczytania wprowadzenia do aplikacji webowych.

Aktualnie moduł datavault to pusty szablon aplikacji webowej. Całość sprowadza się do pliku datavault.gradle, który definiuje aplikację tego typu:

W pierwszej linijce dodaję rozszerzenie war, dzięki któremu Gradle wie, że jest to aplikacja webowa. Druga linijka dodaje rozszerzenie, które pozwala na wygodne uruchamianie kontenerów aplikacji/serwletów. Dzięki wtyczce gretty w prosty sposób możemy uruchomić taki kontener.

Zachęcam to tego żebyś pobrał kod z repozytorium i sam spróbował:

Następnie otworzenie w przeglądarce adresu http://localhost:8080/datavault powinno zadziałać :).

Podsumowanie

Powoli, ale skutecznie idę do przodu :). Jeden z modułów jest gotowy, pozostałe dwa czekają na swoją kolej. Datavautl wezmę na tapetę w kolejnych tygodniach. Na dzisiaj to wszystko z frontu, do następnego razu! 🙂

Newsletter

  Jeśli chcesz otrzymywać informacje o nowych artykułach na blogu prosto na Twój email, zapisz się 🙂

  • Rafał

    Odnalazłem ten blog i muszę przyznać, że jestem zachwycony, odwalasz kawał świetnej roboty 😉 Czekam na kolejne artykuły, szczególnie te odnośnie użycia Javy w aplikacjach webowych.
    Pozdrawiam i powodzenia w dalszej pracy 😉

    • Marcin Pietraszek

      Rafał wielkie dzięki za ciepłe słowa, takie komentarze motywują do dalszej pracy :). Jeśli chodzi o aplikacje webowe – właśnie taki „cykl” teraz planuję, zanim przejdę do „obowiązkowego” Springa chciałbym pomóc przy zrozumieniu podstaw – artykuł o użyciu serwletów właśnie się pisze.