Inteligencja w doniczce cz. 2

Oto aktualizacja opisująca rozwój układu czuwania nad wilgotnością gleby. Na wstępie oświadczenie: Po tygodniu działania układu roślina ma się bardzo dobrze, wody jej nie brakuje.

Śledzenie poziomu wilgotności

Analizując przez około tydzień działanie układu wysunąłem kilka wniosków:
  1. Zabójczy dla rośliny może być nie tylko zbyt niski poziom wody, ale i zbyt duży (nie, nie podlałem za dużo – po prostu uświadomiłem sobie ten dość oczywisty fakt). W związku z tym, ostrzeżenia nie powinny być robione tylko przy zbyt niskim poziomie, ale i zbyt wysokim.
  2. Warto rozważyć rozszerzenie układu o monitorowanie temperatury. Wilgotność i temperatura są ze sobą związane. Roślina stoi blisko okna i wieczorem gdy temperatura spada, rośnie też wilgoć.
Po wyciągnięciu tych wniosków postanowiłem w pierwszej kolejności rozbudować część serwerową, czyli miejsce gdzie trafiają pomiary z układu.

Nowe API na serwerze

Zbudowałem podwaliny pod API, które będzie miało za zadanie zbierać dane od urządzenia/urządzeń oraz umożliwiać pobieranie tych danych w celu analizy i wyświetlania. System napisałem w oparciu o połączenie, używanego wcześniej przeze mnie, Slim Framework (mikro framework do tworzenia restowych api) z Eloquent (ORM do baz danych). Na tym etapie ta część pozostała możliwe prosta: umożliwia dodanie, usunięcie, aktualizację i pobranie pomiarów. W przyszłości dopisana zostanie autoryzacja, rejestracja, możliwość dodawania wielu urządzeń, czy definiowanie alertów.

Frontend panel

Mając API pozostało jedynie dopisać system, który pobierze dane i ładnie je wyświetli. Tutaj postanowiłem się trochę pobawić i wykorzystałem framework React.js (ostatnio bardzo popularny). Stworzyłem prostą stronę, która wywołuje moje API, pobiera zapamiętane pomiary i wyświetla dwa wykresy: liniowy z historią pomiarów oraz kołowy prezentujący aktualny stan wilgotności. Poniżej można zobaczyć jak zmieniły się odczyty po podlaniu rośliny.

Wykres wilgotności przed podlaniem

Wykres wilgotności po podlaniu

Szczególnie na pierwszym obrazku bardzo fajnie widać, jak poziom wilgotności waha się w ciągu doby (od zaznaczonego odczytu do przed ostatniego). Na koniec tego etapu zmieniłem jeszcze wykres kołowy na słupkowy, który w mojej ocenie lepiej oddaje „poziom wody”.

Wykres słupkowy zamiast kołowego obrazujący aktualny poziom wilgotności

t.b.c.