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:
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.
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:
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.
Zostaw komentarz