केस स्टडी: स्मार्ट गार्डन ड्रिप इरिगेशन कंट्रोलर के लिए राज्य मशीन डिज़ाइन

1. परिचय

आधुनिक बगीचा और कृषि बढ़ते समय संसाधनों के उपयोग को अनुकूलित करने के लिए स्वचालन पर निर्भर हो रही है, विशेष रूप से पानी — जो बहुत सी इलाकों में एक दुर्लभ संसाधन है। एक स्मार्ट इरिगेशन कंट्रोलर वास्तविक समय की मिट्टी की स्थिति के आधार पर सिंचाई को स्वचालित करता है, निश्चित समय सीमा के बजाय, बर्बादी को कम करता है, अतिरिक्त या कम पानी डालने से बचाता है, और स्वस्थ पौधों के विकास का समर्थन करता है।

यह केस स्टडी ऐसी प्रणाली के व्यवहार के मॉडलिंग पर केंद्रित है, जिसका उपयोग एक UML राज्य मशीन आरेख (जिसे राज्यचार्ट आरेख भी कहा जाता है)। आरेख प्रणाली के जीवनचक्र, निर्णय बिंदुओं और नमी के ब्यौरे, समय समाप्त होने और उपयोगकर्ता हस्तक्षेप जैसी घटनाओं के प्रति प्रतिक्रियाओं को दर्शाता है।

डिज़ाइन का उपयोग करता है PlantUML सिंटैक्स, जो प्रदान किए गए कॉफी शॉप उदाहरण के समान है, जो संयुक्त राज्यों, गार्ड्स, क्रियाओं और त्रुटि/पुनर्स्थापना मार्गों को सुंदर ढंग से मॉडल करता है।

2. समस्या कथन और आवश्यकताएं

घरेलू बगीचे या छोटे ग्रीनहाउस के लिए एक स्वचालित इरिगेशन कंट्रोलर को निम्नलिखित बातों को पूरा करना चाहिए:

  • कम शक्ति वाले स्टैंडबाईमोड के रूप में अधिकांश समय शुरू करें।
  • एक योजना (टाइमर ट्रिगर) के अनुसार नियमित रूप से जागे ताकि स्थितियों की जांच की जा सके।
  • एक सेंसिंगमिट्टी की नमी के स्तर को पढ़ने के लिए (कैपैसिटिव या रेजिस्टिव सेंसर के माध्यम से) एक अवस्था में प्रवेश करें।
  • यदि नमी < 30% (कॉन्फ़िगरेबल सूखी सीमा), शुरू करें इरिगेटिंग सोलेनॉइड वाल्व खोलकर या पंप को सक्रिय करके।
  • यदि नमी ≥ 30%, वापस लौटें प्रतीक्षा (पानी की आवश्यकता नहीं है)।
  • जब तक सिंचाई कर रहा है, निरंतर (या अवधि के अनुसार) नमी का निरीक्षण करें।
  • जब भी:
    सिंचाई बंद करें और वाल्व बंद करें

    • नमी पहुंच जाती है 80% (कॉन्फ़िगर किए गए गीले स्तर) → लक्ष्य प्राप्त हुआ।
    • एक सुरक्षा समय सीमा समाप्त हो जाती है (उदाहरण के लिए, 30 मिनट) → सेंसर विफल होने पर बाढ़, पाइप फटने या विद्युत समस्याओं से बचाता है।
  • सिंचाई बंद करने के बाद, जाएं बंद करना स्थिति।
  • में बंद करना, इंतजार करें हाथ से पुष्टि (बटन दबाने या ऐप कमांड) के बाद वापस जाएं प्रतीक्षा — इससे उपयोगकर्ता को प्रणाली की जांच करने या आवश्यकता पड़ने पर ओवरराइड करने की अनुमति मिलती है।
  • दोषों को धीरे से संभालें (उदाहरण के लिए, सेंसर विफलता, वाल्व फंसना) एक त्रुटि स्थिति में संक्रमण करके रिकवरी विकल्पों के साथ।

अतिरिक्त इच्छित व्यवहार (यहां सरल रखे गए हैं):

  • कुछ घंटों के दौरान सिंचाई नहीं (समय सारणी/टाइमर द्वारा संभाला गया है)।
  • लॉगिंग या सूचनाएं इस मुख्य स्थिति मशीन के लिए बाहर की गई हैं।

3. उपयोग किए गए मुख्य स्थिति मशीन अवधारणाएं

  • स्थितियां: अनक्रिया/बैठे हुए, संवेदन, सिंचाई, बंद करना, त्रुटि।
  • संयुक्त अवस्था: सिंचाई में आंतरिक निगरानी तर्क शामिल है (हालांकि सरलता के लिए यहां समतल रखा गया है)।
  • संक्रमण:
    • घटनाओं (टाइमर, नमी पाठ, समय समाप्ति) द्वारा त्रिज्या।
    • शर्तों [नमी < 30%], [नमी >= 80%] द्वारा सुरक्षित।
  • क्रियाएँ: /open_valve(), /close_valve(), /notify_user(), आदि।
  • प्रारंभिक / अंतिम काल्पनिक अवस्थाएँ: [*] प्रारंभ/समाप्ति के लिए।
  • स्वयं-संक्रमण और पुनर्स्थापना लूप।

4. PlantUML में अवस्था आरेख

नीचे वर्णित व्यवहार को लागू करने वाला पूर्ण PlantUML कोड है। इसमें कॉफी शॉप उदाहरण (skinparam स्टाइलिंग, उचित स्थान पर संयुक्त अवस्थाएँ, [] में गार्ड, / के साथ क्रियाएँ) से अनुसूचित नियमों का पालन किया गया है।

plantuml
@startuml

skinparam {
' समग्र शैली
' रंग
ArrowColor #333333
ArrowFontColor #333333
BackgroundColor #FFFFFF
BorderColor #333333

' अवस्था शैली
State {
BorderColor #005073
BackgroundColor #E6F5FF
FontColor #005073
}
}

[*] --> बैठे हुए

बैठे हुए --> संवेदन : timer_triggers()

संवेदन --> सिंचाई : soil_moisture < 30%
संवेदन --> बैठे हुए : soil_moisture >= 30%

सिंचाई --> बंद करना : soil_moisture >= 80% OR safety_timeout()
सिंचाई --> बंद करना : safety_timeout() // फॉलबैक समय समाप्ति सुरक्षा

बंद करना --> बैठे हुए : user_confirms_reset()

बैठे हुए --> [*]

@enduml

आरेख की व्याख्या

  • बैठे हुए — डिफ़ॉल्ट कम शक्ति/अनक्रिया अवस्था।
  • संवेदन — टाइमर द्वारा त्रिज्या वाली त्वरित जांच; अनावश्यक सिंचाई से बचाता है।
  • सिंचाई (संयुक्त) — आंतरिक के साथ सक्रिय सिंचाई चरण।सिंचाई उप-क्रिया।
    • लक्ष्य नमी या सुरक्षा समय समाप्ति पर निकलता है।
  • बंद करें — ड्रिप जलाने के बाद रोकने की स्थिति जिसमें स्वचालन जारी रखने के लिए पुष्टि की आवश्यकता होती है (सुरक्षा विशेषता)।
  • त्रुटि — दोष नियंत्रण स्थिति जिसमें हस्ताक्षरित पुनर्स्थापना संक्रमण होता है।

5. डिज़ाइन तर्क और लाभ

  • पानी की बचत — केवल तभी ड्रिप जलाता है जब वास्तव में आवश्यकता होती है (समय-आधारित के बजाय मृदा आर्द्रता-आधारित)।
  • बाढ़ रोकथाम — ड्रिप जलाने से बाहर निकलने की दो शर्तें (आर्द्रता लक्ष्य + समय सीमा)।
  • उपयोगकर्ता सुरक्षा और नियंत्रण — असामान्य रुकावट के बाद हस्ताक्षरित पुष्टि संभावित समस्याओं के बाद स्वचालित पुनरारंभ को रोकती है।
  • विस्तार्यता — राज्यों को जोड़ना आसान है (उदाहरण के लिए, वर्षा पाई गई, कम बैटरी, सर्दी का मोड) या अवरोधों को समायोजित करना।
  • कम जटिलता — जहां संभव हो, समतल रखें, केवल तभी संयुक्त रखें जब तार्किक समूहन स्पष्टता लाता हो (ड्रिप जलाने के लिए)।

यह डिज़ाइन विश्वसनीयता, सुरक्षा और सरलता के बीच संतुलन बनाता है — एम्बेडेड माइक्रोकंट्रोलर के लिए उपयुक्त (आर्डिनो, ESP32 आदि)।

6. निष्कर्ष

राज्य मशीनराज्य मशीन स्मार्ट ड्रिप जलाने वाले नियंत्रक जैसे प्रतिक्रियाशील नियंत्रण प्रणालियों के मॉडलिंग के लिए एक उत्कृष्ट रूपरेखा प्रदान करते हैं। राज्यों, घटनाओं, गार्ड्स और क्रियाओं को स्पष्ट रूप से परिभाषित करके, � ingineers को कोड लिखने से पहले प्रणाली के व्यवहार, किनारे के मामलों और त्रुटि पुनर्स्थापना के बारे में सोचने में सक्षम होते हैं।

ऊपर दिया गया PlantUML प्रतिनिधित्व न केवल दस्तावेज़न के रूप में कार्य करता है बल्कि कार्यान्वयन के लिए एक नक्शा भी है। इसे (PlantUML उपकरणों या ऑनलाइन सर्वरों के माध्यम से) रेंडर करने से एक साफ, पेशेवर आरेख प्राप्त होता है जो आवश्यकता समीक्षा, कोड उत्पादन या UML अवधारणाओं के शिक्षण के लिए तैयार है।

भविष्य के विस्तारों में शामिल हो सकते हैं:

  • मौसम API का एकीकरण (यदि वर्षा की भविष्यवाणी हो तो सेंसिंग छोड़ें)।
  • प्रत्येक क्षेत्र के लिए आर्द्रता सीमा के साथ कई क्षेत्र।
  • समय सीमा या त्रुटि पर मोबाइल ऐप सूचनाएं।

यह केस स्टडी दिखाती है कि एक ऐसी दिखने वाली सरल ऑटोमेशन समस्या कितनी अच्छी तरह से संरचित राज्य-आधारित मॉडलिंग से लाभान्वित होती है।