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.

Pobierz opracowania zadań z rozmów kwalifikacyjnych

Przygotowałem rozwiązania kilku zadań algorytmicznych z rozmów kwalifikacyjnych. Rozkładam je na czynniki pierwsze i pokazuję różne sposoby ich rozwiązania. Dołącz do grupy ponad 6147 Samouków, którzy jako pierwsi dowiadują się o nowych treściach na blogu, a prześlę je na Twój e-mail.

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:

Diagram aplikacji Pogodynka

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:

apply plugin: 'war'
apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'
 
dependencies {
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
}

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ł:

$ ./gradlew appRun
:datavault:prepareInplaceWebAppFolder UP-TO-DATE
:datavault:createInplaceWebAppFolder UP-TO-DATE
:datavault:compileJava NO-SOURCE
:datavault:processResources NO-SOURCE
:datavault:classes UP-TO-DATE
:datavault:prepareInplaceWebAppClasses UP-TO-DATE
:datavault:prepareInplaceWebApp UP-TO-DATE
:datavault:appRun
18:48:10 INFO Jetty 9.2.15.v20160210 started and listening on port 8080
18:48:10 INFO datavault runs at:
18:48:10 INFO http://localhost:8080/datavault
Press any key to stop the server.
> Building 87% > :datavault:appRun

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! :)

Pobierz opracowania zadań z rozmów kwalifikacyjnych

Przygotowałem rozwiązania kilku zadań algorytmicznych z rozmów kwalifikacyjnych. Rozkładam je na czynniki pierwsze i pokazuję różne sposoby ich rozwiązania. Dołącz do grupy ponad 6147 Samouków, którzy jako pierwsi dowiadują się o nowych treściach na blogu, a prześlę je na Twój e-mail.

Kategorie: , ,

Ostatnia aktualizacja:

Autor: Marcin Pietraszek


Nie popełnia błędów tylko ten, kto nic nie robi ;). Bardzo możliwe, że znajdziesz błąd, literówkę, coś co wymaga poprawy. Jeśli chcesz możesz samodzielnie poprawić tę stronę. Jeśli nie chcesz poprawiać błędu, który udało Ci się znaleźć będę wdzięczny jeśli go zgłosisz. Z góry dziękuję!

Zostaw komentarz