1. Wprowadzenie
Nowoczesne ogrodnictwo i rolnictwo coraz częściej opierają się na automatyzacji w celu optymalizacji zużycia zasobów, szczególnie wody – zasobu rzadkiego w wielu regionach. Sterownik inteligentny sterownik nawadniania automatyzuje podlewania na podstawie rzeczywistych warunków gleby, a nie ustalonych czasów, zmniejszając straty, zapobiegając nadmiernemu lub niedostatecznemu podlewaniu oraz wspierając zdrowszy wzrost roślin.
To studium przypadku skupia się na modelowaniu zachowania takiego systemu przy użyciu diagram maszyny stanów UML (nazywany również diagramem stanów). Diagram ten uchwytywa cykl życia systemu, punkty decyzyjne oraz reakcje na zdarzenia takie jak pomiary wilgotności, wygaśnięcia timera oraz interwencje użytkownika.
Projekt wykorzystuje składnię PlantUMLsyntax, podobną do przykładu z kawiarnią przedstawionego, który elegancko modeluje stany złożone, warunki (guards), działania oraz ścieżki błędów i odzyskiwania.
2. Sformułowanie problemu i wymagania
Automatyczny sterownik nawadniania dla ogrodu domowego lub małego szklarni musi:

- Uruchamiać się w trybie Oczekiwanianajczęściej, w trybie niskiego zużycia energii.
- Okresowo wzbudzać się zgodnie z harmonogramem (wyzwalaczem timera) w celu sprawdzenia warunków.
- Przechodzić do stanu Skanowania w celu odczytania poziomu wilgotności gleby (przez czujnik pojemnościowy lub rezystancyjny).
- Jeśli wilgotność < 30% (dostosowalny próg suchego), rozpocząć Nawadnianie otwierając zawór elektromagnetyczny lub aktywując pompe.
- Jeśli wilgotność ≥ 30%, powrócić do Gotowego (nie wymaga podlewania).
- Podczas gdy Podlewania, ciągle (lub okresowo) monitoruj wilgotność.
- Zatrzymaj podlewania i zamknij zawór, gdy:
- Wilgotność osiąga 80% (dostosowalna granica wilgotności) → cel osiągnięty.
- Przez Czas wygaśnięcia bezpieczeństwa wygasa (np. 30 minut) → zapobiega powodzi, pęknięciom rur lub problemom elektrycznym w przypadku awarii czujnika.
- Po zatrzymaniu podlewania przejdź do stanuWyłączenia stanu.
- W stanieWyłączenia, czekaj na potwierdzenie ręczne (naciśnięcie przycisku lub polecenie aplikacji) przed powrotem do Gotowego — umożliwia użytkownikowi sprawdzenie systemu lub jego przejęcie, jeśli to konieczne.
- Obsługuj błędy zgodnie z zasadami (np. awaria czujnika, zawór zablokowany), przechodząc do stanuBłędu stanu z opcjami odzyskania.
Dodatkowe pożądane zachowania (utrzymane prosto tutaj):
- Brak podlewania w określonych godzinach (zarządzane przez harmonogram/czasomierz).
- Rejestrowanie lub powiadomienia są poza zakresem tego podstawowego maszyn stanów.
3. Użyte kluczowe koncepcje maszyny stanów
- Stany: Bezczynność/tryb gotowości, wykrywanie, podlewania, wyłączanie, błąd.
- Stan złożony: Podlewania zawiera wewnętrzną logikę monitorowania (choć tutaj utrzymana jest płaska dla uproszczenia).
- Przejścia:
- Wyzwalane zdarzeniami (timer, odczyt wilgotności, przekroczenie czasu).
- Chronione warunkami [wilgotność < 30%], [wilgotność >= 80%].
- Działania: /otworz_zawór(), /zamknij_zawór(), /powiadom_użytkownika(), itd.
- Pseudostany początkowy / końcowy: [*] dla początku/końca.
- Przejścia samodzielne oraz pętle odzyskiwania.
4. Diagram stanów w PlantUML
Poniżej znajduje się pełny kod PlantUML implementujący opisane zachowanie. Używa konwencji z przykładu kawiarni (stylowanie skinparam, stany złożone tam, gdzie odpowiednie, warunki w [], działania z /).
@startuml
skinparam {
' Ogólny styl
' Kolory
ArrowColor #333333
ArrowFontColor #333333
BackgroundColor #FFFFFF
BorderColor #333333
' Stylowanie stanów
State {
BorderColor #005073
BackgroundColor #E6F5FF
FontColor #005073
}
}
[*] --> Standby
Standby --> Sensing : timer_triggers()
Sensing --> Irrigating : wilgotnosc_rolna < 30%
Sensing --> Standby : wilgotnosc_rolna >= 30%
Irigating --> Shutdown : wilgotnosc_rolna >= 80% OR bezpieczny_timeout()
Irigating --> Shutdown : bezpieczny_timeout() // Ochrona przed przekroczeniem czasu (rezerwa)
Shutdown --> Standby : uzytkownik_potwierdza_reset()
Standby --> [*]
@enduml 
Wyjaśnienie diagramu
- Tryb gotowości — Domyślny stan niskiego zużycia mocy/tryb bezczynności.
- Wykrywanie — Szybka kontrola wyzwalana przez timer; zapobiega niepotrzebnemu podlewaniu.
- Podlewania (złożony) — Aktywna faza podlewania z wewnętrznąPodlewania podczynnością.
- Zakończenie przy osiągnięciu docelowej wilgotności lub przekroczeniu czasu bezpieczeństwa.
- Wyłączenie — Stan zawieszenia po podlaniu wymagający potwierdzenia przed wznowieniem automatyzacji (funkcja bezpieczeństwa).
- Błąd — Stan zawierania uszkodzenia z przejściem ręcznym do odzyskania.
5. Podstawy projektowe i zalety
- Oszczędzanie wody — Podlewa tylko wtedy, gdy jest naprawdę potrzebne (oparte na wilgotności gleby, a nie czasie).
- Zapobieganie powodzi — Dwa warunki wyjścia z trybu podlewania (docelowa wilgotność + limit czasu).
- Bezpieczeństwo użytkownika i kontrola — Potwierdzenie ręczne po nieprzewidzianym zatrzymaniu zapobiega automatycznemu ponownemu uruchomieniu po możliwych problemach.
- Rozszerzalność — Łatwe dodawanie stanów (np. Wykryto deszcz, Niska pojemność baterii, Tryb zimowy) lub dostosowanie progów.
- Niska złożoność — Płaskie tam, gdzie to możliwe, złożone tylko tam, gdzie logiczne grupowanie poprawia jasność (podlewania).
Ten projekt równoważy odporność, bezpieczeństwo i prostotę — odpowiedni do wdrożenia na mikrokontrolerach wbudowanych (Arduino, ESP32 itp.).
6. Wnioski
Maszyna stanówMaszyny stanów zapewniają doskonały formalizm do modelowania systemów sterowania reaktywnego, takich jak inteligentne sterowniki podlewania. Poprzez jasne określenie stanów, zdarzeń, warunków i działań inżynierowie mogą analizować zachowanie systemu, przypadki graniczne i odtwarzanie po błędach jeszcze przed napisaniem kodu.
Reprezentacja PlantUML powyżej pełni rolę zarówno dokumentacji, jak i szablonu do wdrożenia. Jej renderowanie (przez narzędzia PlantUML lub serwery online) generuje czysty, profesjonalny schemat gotowy do przeglądu wymagań, generowania kodu lub nauczania koncepcji UML.
Przyszłe rozszerzenia mogą obejmować:
- Integracja z API pogodowym (pomiń czujniki, jeśli prognozowany deszcz).
- Wielokrotne strefy z progami wilgotności dla każdej strefy.
- Powiadomienia aplikacji mobilnej przy przekroczeniu limitu czasu lub błędzie.
Ten studium przypadku pokazuje, jak z pozornego prostego problemu automatyzacji korzysta znacznie z modelowania opartego na stanach.
- Kompleksowy przewodnik krok po kroku dotyczący maszyny stanów drukarki 3D: Ten przewodnik stosuje pojęcia maszyny stanów do systemów druku 3D, szczegółowo opisując logikę działania i ścieżki automatyzacji.
- Interaktywny narzędzie do rysowania diagramów maszyny stanów: Specjalistyczne narzędzie internetowe do tworzenia i edytowania diagramów maszyny stanów, które wykorzystuje możliwości GenAI do modelowania zachowań w czasie rzeczywistym.
- Zrozumienie diagramów maszyny stanów w UML: Ten samouczek zapewnia kompleksowy przegląd modelowania zachowania systemu za pomocą diagramów maszyny stanów w UML.
- Ostateczny przewodnik po diagramach maszyny stanów UML z wykorzystaniem AI: Ten zasób zapewnia szczegółowy przegląd wykorzystania narzędzi zasilanych AI do dokładnego modelowania zachowania obiektów za pomocą diagramów maszyny stanów UML.
- Jak narysować diagram maszyny stanów w UML?: Ten samouczek zapewnia szczegółowe instrukcje tworzenia diagramów i nadawania nazw przejściom w celu modelowania historii encji i zdarzeń.
- Opanowanie diagramów stanów za pomocą Visual Paradigm AI: Przewodnik dla systemów opłaty drogowej: Ten przewodnik zawiera przewodnik po wykorzystywaniu diagramów stanów zwiększonych o AI do modelowania i automatyzacji złożonej logiki wymaganej przez oprogramowanie systemu opłaty drogowej.
- Samouczek diagramów maszyny stanów: Ten samouczek wyjaśnia symboli i składni wymagane do modelowania zachowania dynamicznego pojedynczych obiektów klas, przypadków użycia i całych systemów.
- Visual Paradigm AI Suite: Kompleksowy przewodnik po inteligentnych narzędziach modelowania: Ten przegląd szczegółowo opisuje, jak platforma wspiera modelowanie techniczneAI Chatbot wspiera modelowanie techniczne, w tym maszyny stanów i inne diagramy zachowania.
- Visual Paradigm – Narzędzie do diagramów maszyn stanów UML: Przegląd funkcjonalnego narzędzia online przeznaczonego dla architektów dotworzenia, edytowania i eksportowania precyzyjnych modeli maszyn stanów wykorzystując interfejs oparty na chmurze.
- Szybki przewodnik po diagramie stanów: Opanuj maszyny stanów UML w kilka minut: Przyjazny dla początkujących przewodnik dotyczący tworzenia i rozumienia diagramów stanów, skupiający się napodstawowych pojęciach i praktycznych technikach modelowania.











