Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> डेटाबेस

Slack के लिए लो-कॉस्ट केग स्केल अलर्ट सिस्टम कैसे बनाएं

पिछले ब्लॉग में, मैंने विस्तार से बताया कि कैसे मैंने हमारे ऑफिस में कोल्ड ब्रू कॉफी केग के वजन का उपयोग करके Slack अलर्ट भेजे ताकि हमें पता चल सके कि हम कब कम चल रहे हैं और कोल्ड ब्रू कॉफी केग रिफिल की आवश्यकता है।

इस दो-भाग की श्रृंखला में दूसरे भाग में, मैं आपको दिखाऊंगा कि मैंने स्केल कैसे बनाया। मुख्य रूप से, मैं बिना अधिक समय और पैसे के निवेश के कुछ चाहता था, और पहले से ऐसा कुछ भी उपलब्ध नहीं था जो हमारी आवश्यकताओं को पूरा करता हो।

Elasticsearch केग सेटअप आवश्यकताएं

सबसे पहले, मुझे परियोजना के लिए आवश्यकताओं को तोड़ने की आवश्यकता थी:

  • सस्ता (<$100)
  • न्यूनतम देखभाल और रखरखाव
  • रिमोटली मैनेज्ड
  • केग लेवल आसानी से रिपोर्ट करें
  • हर बार निर्धारित करें जब केग से कोल्ड ब्रू लिया गया हो (एक स्ट्रेच लक्ष्य)
  • सबसे महत्वपूर्ण, इसमें न्यूनतम समय निवेश शामिल होना चाहिए*

*मेरा एक डे जॉब है और केग स्केल बनाना मेरे जॉब विवरण में नहीं है।

प्रारंभिक शोध

पहली चुनौती यह पता लगाना था कि न केवल केग पर डेटा कैसे एकत्र किया जाए, बल्कि कौन सा डेटा एकत्र किया जाए।

कुछ ओपन सोर्स प्रोजेक्ट केग की निगरानी के लिए प्रदान करते हैं, और थोड़े शोध के बाद, मापने के दो प्रमुख तरीके हैं:

  • वजन द्वारा
  • फ्लो रेट मीटर का उपयोग करके

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

उधार लेने के लिए उदाहरणों की कमी के बावजूद, हमने स्केल से शुरू करने और वजन का उपयोग करके केग लेवल निर्धारित करने का निर्णय लिया।

केग स्केल

वास्तविक स्केल हार्डवेयर के लिए, मैंने ऑफ-द-शेल्फ समाधानों की तलाश की जो रास्पबेरी पाई जैसे छोटे कंप्यूटर से कनेक्ट हो सकें। वहां बहुत सारे वाईफाई और ब्लूटूथ स्केल हैं, लेकिन अधिकांश निरंतर रीड नहीं थे; या बैटरी चालित थे; या इंटरफेस करने के लिए एक बड़ी परेशानी थे। कुछ केग-विशिष्ट स्केल मौजूद हैं, लेकिन वे बहुत महंगे थे।

एक बार फिर, मुझे DIY करने की आवश्यकता थी।

मैं रास्पबेरी पाई के साथ निर्माण में अनुभवी हूं, इसलिए मुझे इसके साथ एक स्केल बनाने के लिए हार्डवेयर की आवश्यकता थी। मुझे अमेज़न पर HX711 एम्पलीफायर के साथ 50kg लोड सेल का एक सेट मिला जो इस उपयोग के मामले के लिए बिल्कुल सही था।

HX711 के साथ Arduino स्केल बनाने के लिए बहुत सारे संदर्भ हैं लेकिन Pi के लिए बहुत कम उपलब्ध हैं। सौभाग्य से, मुझे Instructables से ट्यूटोरियल मिले जो उपयोगकर्ता tatobari के एक Github रेपो के साथ जुड़े थे जिसमें कुछ पायथन HX711 यूटिलिटीज शामिल थीं जो बिल फिट करती थीं।

समग्र आर्किटेक्चर

सबसे पहले, मुझे एक सरल स्कीमैटिक बनाने की आवश्यकता थी कि समग्र सिस्टम कैसा दिखेगा:

Slack के लिए लो-कॉस्ट केग स्केल अलर्ट सिस्टम कैसे बनाएं

हार्डवेयर बिल्ड

पहली चुनौती एक ऐसा स्केल ढूंढना था जो केग के नीचे रखने के लिए पर्याप्त पतला हो और फिर भी केगोरेटर में फिट हो, जो 150lb केग के वजन के नीचे झुकने के लिए पर्याप्त मजबूत हो।

मैंने स्केल को मजबूत करने के लिए कई डिज़ाइन और विधियों की कोशिश की, लेकिन वे या तो अस्थिर थे या बहुत अधिक मोटाई जोड़ते थे जो अंततः शीर्ष ट्यूबों पर दबाव डालते थे।

अंतिम बिल्ड में पुरानी ग्रिल ग्रेट, हार्डवेयर स्टोर से स्टील C चैनल के कुछ छोटे टुकड़े ग्रेट को मजबूत करने के लिए, और बहुत सारे डक्ट टेप और ज़िप टाई शामिल थे।
Slack के लिए लो-कॉस्ट केग स्केल अलर्ट सिस्टम कैसे बनाएं Slack के लिए लो-कॉस्ट केग स्केल अलर्ट सिस्टम कैसे बनाएं

यह सही नहीं है लेकिन अंततः हमारी सभी डिज़ाइन आवश्यकताओं को पूरा करता है (क्या किसी के पास थोड़ा अधिक मजबूत समाधान है?)

इसे वायर करना

हमें HX711 बोर्ड को रास्पबेरी पाई से 4 GPIO पिन के माध्यम से और स्केल को HX711 बोर्ड से व्हीटस्टोन ब्रिज के चार तारों के माध्यम से कनेक्ट करने की आवश्यकता थी (Instructables देखें)।

केगोरेटर सुपर स्पेस-कंस्ट्रेंड है और जब केग लोड और अनलोड किए जाते हैं तो यह काफी खुरदरा हो सकता है, इसलिए HX711 और रास्पबेरी पाई को केग के साथ रखना एक अच्छा निर्णय नहीं लगा। इसके बजाय, हमने रास्पबेरी पाई और HX711 को इसके ठीक बगल में, केगोरेटर के बाहर स्थित किया, मानक केबल (अच्छी पुरानी कैट 5 या 6) का उपयोग करके वास्तविक स्केल से HX711 तक लंबी दूरी तय करने के लिए। स्केल पर एक छोर पर RJ45 कनेक्टर और दूसरे छोर पर HX711 पर जोड़ें। अब हम दोनों को जोड़ने के लिए किसी भी पुराने ईथरनेट केबल का उपयोग कर सकते हैं।

HX711 और रास्पबेरी पाई के बीच, चूंकि वे एक-दूसरे के ठीक बगल में स्थित हैं, हमने स्टैंडर्ड जम्पर वायर्स का उपयोग किया।

सॉफ्टवेयर

रास्पबेरी पाई का उपयोग करने का मतलब है कि मैं लिनक्स पर चलने वाली किसी भी चीज़ का उपयोग सॉफ्टवेयर के लिए बहुत अधिक कर सकता हूं।

पहला टुकड़ा GPIO के माध्यम से HX711 एम्पलीफायर के साथ इंटरफेस करने का कोड है।

हालांकि अधिकांश HX711 प्रोजेक्ट Arduino के लिए हैं, फिर भी आप रास्पबेरी पाई के लिए HX711 कोड के साथ काफी संख्या में GitHub रेपो ढूंढ सकते हैं, जैसे कि पायथन में लिखा गया यह वाला।

HX711 उदाहरण कोड का उपयोग करके, मैंने एक छोटा पायथन यूटिलिटी लिखा जो केवल आवधिक वजन रीडिंग को एक फाइल में लिखता है जिसे हम Elasticsearch में शिप कर सकते हैं। मैंने इसे कॉन्फिग फाइल से काम करने के लिए विस्तारित किया और कुछ टेस्टिंग मोड शामिल किए, लेकिन इसके अलावा यह काफी सरल कोड है।

डेटा को Elasticsearch में शिप करना

इसके बाद, मुझे डेटा को Elasticsearch में शिप करने की आवश्यकता थी।

मैंने वजन फाइलों को पढ़ने और फिर डेटा को Elasticsearch में शिप करने के लिए Filebeat का उपयोग किया। आप पायथन स्क्रिप्ट से सीधे Elasticsearch में लिख सकते हैं; या फाइलें पढ़ने के लिए Logstash का उपयोग करें; या रीडिंग ऑन-द-फ्लाई प्राप्त करने के लिए सीधे स्क्रिप्ट को कॉल करें। Filebeat सुपर लाइटवेट है और केवल न्यूनतम मात्रा में काम की आवश्यकता होती है।

Filebeat का उपयोग करने में एकमात्र छोटी जटिलता यह है कि Elastic डिफ़ॉल्ट रूप से रास्पबेरी पाई/ARM के लिए बाइनरी प्रदान नहीं करता है। मुझे इसे बनाना पड़ा।

सौभाग्य से, Elastic साइट पर निर्देश बहुत स्पष्ट हैं। जब तक आप Filebeat के उस संस्करण से मेल खाने वाले Go के सही संस्करण को चुनते हैं जिसका आप उपयोग करना चाहते हैं, बिल्ड काफी सीधा होना चाहिए। (हालांकि यह आमतौर पर डेवलपर गाइड में बताया जाता है, सुनिश्चित करें कि आप उस पेज के दाईं ओर सही Beat संस्करण चुनते हैं।)

एक बार सभी घटक काम करने लगे, अंतिम चरण स्केल रीडर स्क्रिप्ट और Filebeat को systemd सेवाओं के रूप में कॉन्फ़िगर करना था और उन्हें बूट पर स्टार्टअप करना था।

डेटा इंडेक्स करना

मुझे उस वजन डेटा को Elasticsearch में इंडेक्स करने की आवश्यकता थी। Filebeat का उपयोग करके, मैंने इंजेस्ट पाइपलाइन का उपयोग करके Elasticsearch साइड पर डेटा पार्स करने का निर्णय लिया। एक बार फिर, Logstash एक विकल्प है, लेकिन लक्ष्य रास्पबेरी पाई पर न्यूनतम लोड बनाना था ताकि मैं इसे लोकल डैशबोर्ड के रूप में उपयोग कर सकूं और संभावित रूप से बाद में अधिक सेंसर (जैसे तापमान) के साथ इसका विस्तार कर सकूं।

हर कुछ सेकंड, साधारण वजन रीडर इस तरह लॉग लाइनें निकालता है: "2018-06-22T20:57:02+0000 – 134.0"। यह पार्स करना बेहद सरल है क्योंकि यह सिर्फ एक टाइमस्टैम्प है जिसके बाद एक "-" और वजन रीडिंग है, इसलिए इंजेस्ट पाइपलाइन भी उतनी ही सरल है।

 { "description" : "Parse the readings from the keg scale", "processors" : [ { "grok": { "field": "message", "patterns": ["^%{TIMESTAMP_ISO8601:readtime}\\s+-\\s+%{BASE10NUM:weight}$"] } }, { "convert": { "field" : "weight", "type": "float" } }, { "date" : { "field" : "readtime", "formats" : ["ISO8601"] } } ], "on_failure" : [ { "set" : { "field" : "ingest_error", "value" : "{{ on_failure_processor_type }} - Error processing message - {{ _ingest.on_failure_message }} : {{ message }}" } } ] } 

परिणाम हर कुछ सेकंड में एक डॉक्यूमेंट है जिसमें फ्लोटिंग पॉइंट "वजन" और टाइमस्टैम्प होता है, साथ ही विभिन्न मेटाडेटा जो Filebeat शामिल करता है (जिसका उपयोग हम बाद में कर सकते हैं यदि हम इसे कई केग्स तक विस्तारित करते हैं)।

Elasticsearch क्लस्टर

ObjectRocket इस भाग को बहुत आसान बनाता है, क्योंकि मैं एक बेसिक क्लस्टर स्पिन अप कर सकता था, कुछ ACL खोल सकता था, कुछ यूजर सेटअप कर सकता था, और फिर बस डेटा शिप करना शुरू कर सकता था। इसके अलावा, यहां एकमात्र वास्तविक आवश्यकता Kibana के साथ एक कार्यात्मक Elasticsearch क्लस्टर है।

समापन

सब कुछ सेट अप और जगह पर होने के साथ, मुझे बस इसे प्लग इन करने की आवश्यकता थी।

वोइला! यह बस चलता है।

आप स्वयं प्रारंभिक परिणाम देख सकते हैं:

Slack के लिए लो-कॉस्ट केग स्केल अलर्ट सिस्टम कैसे बनाएं

हम एक साधारण गेज के साथ समाप्त हुए जो हमें दिखाता है:

  • केग में बचे कोल्ड ब्रू का प्रतिशत
  • एक Timelion ट्रेंडलाइन
  • सबसे हालिया रिफिल की तारीख

सिस्टम में कई और ऐड-ऑन के लिए जगह है, Canvas और Vega जैसी शानदार नई परियोजनाओं के साथ, लेकिन अभी के लिए, यह काम पूरा करता है।

  1. Apex Legends PC सिस्टम आवश्यकताएं Apex Legends PC सिस्टम आवश्यकताएं

    अवलोकन: Apex Legends की न्यूनतम PC सिस्टम आवश्यकताएं Apex Legends के लिए अनुशंसित PC सिस्टम आवश्यकताएं बोनस टिप्स Apex Legends, एक बैटल रॉयल गेम, इसकी रिलीज़ के बाद से गेमर्स के बीच अधिक से अधिक लोकप्रिय होता जा रहा है। और गेमर्स इसे Origin प्लेटफॉर्म पर खेल सकते हैं। हालांकि, भले ही कई लोग इस ग

  1. MongoDB को कब स्केल करें: इष्टतम प्रदर्शन के लिए टाइमिंग टिप्स MongoDB को कब स्केल करें: इष्टतम प्रदर्शन के लिए टाइमिंग टिप्स

    अपने ऐप के लिए सही थ्रेशोल्ड खोजें यह सुनिश्चित करने के लिए कि आपका एप्लिकेशन उपयोग में वृद्धि और ट्रैफिक में उछाल का सामना कर सके, लोड टेस्ट करना अनिवार्य है ताकि उस सीमा का निर्धारण किया जा सके जिसे आपका एप्लिकेशन प्रोडक्शन सिस्टम में स्केलिंग जैसे बदलाव लागू करने से पहले संभाल सकता है। अक्सर इस प

  1. विंडोज त्रुटि 43 जल्दी हल करें: हार्डवेयर और ड्राइवर सुधारों के लिए विश्वसनीय गाइड विंडोज त्रुटि 43 जल्दी हल करें: हार्डवेयर और ड्राइवर सुधारों के लिए विश्वसनीय गाइड

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