สารบัญ:

Raspberry Pi ควบคุมการตรวจสอบอุณหภูมิห้องด้วยเอาต์พุตรูปภาพ Gnuplot และความสามารถในการแจ้งเตือนอีเมล: 7 ขั้นตอน
Raspberry Pi ควบคุมการตรวจสอบอุณหภูมิห้องด้วยเอาต์พุตรูปภาพ Gnuplot และความสามารถในการแจ้งเตือนอีเมล: 7 ขั้นตอน

วีดีโอ: Raspberry Pi ควบคุมการตรวจสอบอุณหภูมิห้องด้วยเอาต์พุตรูปภาพ Gnuplot และความสามารถในการแจ้งเตือนอีเมล: 7 ขั้นตอน

วีดีโอ: Raspberry Pi ควบคุมการตรวจสอบอุณหภูมิห้องด้วยเอาต์พุตรูปภาพ Gnuplot และความสามารถในการแจ้งเตือนอีเมล: 7 ขั้นตอน
วีดีโอ: โปรเจค ตรวจสอบคนไม่ใส่หน้ากากอนามัย Raspberry Pi Opencv Python #COVID 2024, มิถุนายน
Anonim
Raspberry Pi ควบคุมการตรวจสอบอุณหภูมิห้องด้วยเอาต์พุตภาพ Gnuplot และความสามารถในการแจ้งเตือนอีเมล
Raspberry Pi ควบคุมการตรวจสอบอุณหภูมิห้องด้วยเอาต์พุตภาพ Gnuplot และความสามารถในการแจ้งเตือนอีเมล

ที่ที่ฉันทำงาน มีห้องที่สำคัญมากซึ่งมีคอมพิวเตอร์จำนวนมาก อุณหภูมิแวดล้อมของห้องนี้จะต้องเย็นมากเพื่อเพิ่มประสิทธิภาพการทำงานของระบบเหล่านี้ ฉันถูกขอให้สร้างระบบตรวจสอบซึ่งมีความสามารถในการส่งรูปแบบการแจ้งเตือนไปยังบุคคลสองสามคนซึ่งจะแจ้งให้ทราบว่ามีบางอย่างผิดปกติกับเครื่องปรับอากาศในห้องนั้น ฮาร์ดแวร์สำหรับบิลด์นี้ฉันใช้ Raspberry pi และเซ็นเซอร์อุณหภูมิและความชื้น USB สำหรับการตรวจสอบ ฉันใช้ Gnuplot เพื่อพล็อตกราฟอุณหภูมิสามกราฟและสร้างภาพของกราฟเหล่านั้น จากนั้นฉันก็สร้างหน้า HTML เฉพาะที่จะโฮสต์บน Raspberry pi เพื่อให้สามารถตรวจสอบเงื่อนไขปัจจุบัน อิมเมจเอาต์พุต gnuplot ได้จากหน้าเว็บภายในเครือข่ายของเรา สำหรับการแจ้งเตือน ฉันเลือกที่จะใช้ Gmail ฉันพบโค้ดตัวอย่างในนิตยสารผู้ใช้ Linux (แน่นอนว่าคุณสามารถใช้เซิร์ฟเวอร์อีเมลใดก็ได้เมื่อคุณทราบการกำหนดพอร์ตที่จำเป็น) เพื่อที่ฉันได้สร้างบัญชีอีเมล Gmail เฉพาะสำหรับการแจ้งเตือนเหล่านี้ นอกจากนี้ ในฐานะคุณลักษณะเพิ่มเติม เมื่อมีการเรียกใช้การแจ้งเตือน ฉันได้แนบกราฟหนึ่งกราฟกับอีเมลเพื่อให้ผู้ที่ได้รับอีเมลทราบถึงความเพิ่มขึ้นอย่างมากที่ทำให้เกิดการแจ้งเตือน

ขั้นตอนที่ 1: การตั้งค่าฮาร์ดแวร์

การติดตั้งฮาร์ดแวร์
การติดตั้งฮาร์ดแวร์

ไม่มีอะไรมากในการตั้งค่าฮาร์ดแวร์ Raspberry pi ใช้งาน Raspian และเซ็นเซอร์อุณหภูมิ USB เพียงเสียบเข้ากับพอร์ต USB พอร์ตใดพอร์ตหนึ่งโดยตรง การใช้พลังงานของเซ็นเซอร์นี้น้อยที่สุดและด้วยเหตุนี้ฉันจึงขับเคลื่อนโดยตรงจาก Raspberry pi อย่างไรก็ตาม สำหรับอุปกรณ์ที่ใช้ USB ที่มีการใช้พลังงานมากกว่าเล็กน้อย ฉันขอแนะนำให้เปิดเครื่องผ่านฮับ USB ที่ใช้พลังงานและไม่ใช่โดยตรงจากพอร์ต USB ของ Raspberry pi เมื่อเซ็นเซอร์อุณหภูมิได้รับพลังงานแล้ว จะมีสตริงอนุกรมที่มีอุณหภูมิและ การอ่านค่าความชื้นของสภาวะปัจจุบัน อุณหภูมิ=20.9°C ความชื้น=62.7% จุดน้ำค้าง=13.0°CA สคริปต์หลามแยกวิเคราะห์สตริงนี้และเก็บค่าอุณหภูมิและความชื้นลงในไฟล์ข้อความสามไฟล์ทุกห้านาที ไฟล์ข้อความรายวัน 24 ชั่วโมงและ 48 ชั่วโมง (ความแตกต่างจะกล่าวถึงในภายหลังในส่วน HTML) จากไฟล์เหล่านี้ Gnuplot จะสร้างกราฟและต่อมาคือภาพของชุดข้อมูลในแต่ละไฟล์ ก่อนที่ฉันจะพูดถึงสคริปต์ python ฉันจะพูดถึงการเตรียม Raspberry pi เนื่องจากการตรวจสอบจะต้องดำเนินการทางออนไลน์ จึงจำเป็นต้องติดตั้งเว็บเซิร์ฟเวอร์ ฉันได้ลองสองสามตัวในช่วงเวลาของฉันกับ Raspberry pi แต่ถึงแม้ว่ามันจะใหญ่ไปหน่อย แต่ฉันก็ชอบ Apache ในการติดตั้ง Apache บน Raspberry pi ของคุณ คุณเพียงแค่พิมพ์:sudo apt-get install apache2 มันจะแจ้งให้คุณทราบก่อนทำการติดตั้ง กด "y" เพื่อใช่ และ Apache จะถูกติดตั้งไม่กี่นาทีขึ้นอยู่กับ Raspberry pi ของคุณ เมื่อนั้น เสร็จแล้ว คุณต้องติดตั้งปลั๊กอิน python สองตัว: python-serial และ python-gnuplot plug (แม้ว่าฉันจะรู้ว่า Raspian builds ล่าสุดมีมาตรฐานปลั๊กอิน python-serial แต่เพื่อความปลอดภัย) ในการติดตั้งสิ่งที่คุณพิมพ์:sudo apt-get install python-serial python-gnuplotOnce อีกครั้งหลังจากรับทราบพร้อมท์ ปลั๊กอินเหล่านี้ -ins จะถูกติดตั้ง และด้วยเหตุนี้การตั้งค่าฮาร์ดแวร์จึงเสร็จสมบูรณ์

ขั้นตอนที่ 2: การตั้งค่าซอฟต์แวร์ - การตั้งค่าอีเมลและผู้รับ

สร้างที่อยู่อีเมล ก่อนที่เราจะไปไกลถึงซอฟต์แวร์ในขณะนี้ เป็นเวลาที่ดีในการสร้างบัญชี Gmail เพื่อส่งการแจ้งเตือนทางอีเมลของคุณ (ตัวอย่างนี้ใช้ GMail แต่เซิร์ฟเวอร์อีเมลใด ๆ ก็สามารถใช้ได้เมื่อเราทราบการตั้งค่าพอร์ต smtp) รหัสหลามค่อนข้างตรงไปตรงมา แต่การนำเข้าที่จำเป็นนั้นสำคัญ หากไม่มีพวกเขา ไม่มีอะไรจะทำงานได้ตั้งแต่การนำเข้าเวลา * การนำเข้าเวลา การนำเข้าซีเรียล การนำเข้า smtplib การนำเข้า Gnuplot การนำเข้าระบบปฏิบัติการ sysFinally รายชื่อผู้รับจดหมาย แน่นอนว่าเราต้องเพิ่มผู้รับอีเมล ที่อยู่อีเมลแต่ละรายการจะถูกบันทึกไว้ในตัวแปร.from_address = '[email protected]'to_address1 = 'recipient1.mail.com' to_address2 = 'recipient2.mail.com'username = '[email protected]' รหัสผ่าน = 'custom_email_password'

ขั้นตอนที่ 3: การตั้งค่าซอฟต์แวร์ - การตั้งค่าซีเรียลและการแยกวิเคราะห์

ต่อไปเราจะดูการตั้งค่าซีเรียล เป็นเพียงเรื่องของการตั้งค่าพารามิเตอร์ที่ตรงกับเอาต์พุตอนุกรมจากเซ็นเซอร์เท่านั้น เซ็นเซอร์จะส่งสัญญาณอนุกรมที่ 9600 8 N 1 ซึ่งเป็นรูปแบบมาตรฐาน หลังจากได้รับสตริงแล้ว มีหลายวิธีในการแยกวิเคราะห์สตริงนี้ใน python และอาจเชื่อถือได้มากกว่า วิธีที่ฉันทำคือค้นหาอักขระ "ชั่วคราว" ในสตริงซีเรียล เมื่อพบแล้ว เป็นเพียงเรื่องของการอ่านอักขระต่อเนื่อง 46 ตัวถัดไปในสตริง สตริงที่รวบรวมสามารถระบุได้เหมือนองค์ประกอบในอาร์เรย์ ข้อมูลที่ต้องการจะถูกแยกวิเคราะห์ออกจากสตริงและบันทึกลงในไฟล์สามไฟล์พร้อมกับประทับเวลาที่สอดคล้องกัน = strftime("%d%b%Y %H:%M:%S ", localtime())

ขั้นตอนที่ 4: การตั้งค่าซอฟต์แวร์ - Gnuplot

การตั้งค่าซอฟต์แวร์ - Gnuplot
การตั้งค่าซอฟต์แวร์ - Gnuplot
การตั้งค่าซอฟต์แวร์ - Gnuplot
การตั้งค่าซอฟต์แวร์ - Gnuplot
การตั้งค่าซอฟต์แวร์ - Gnuplot
การตั้งค่าซอฟต์แวร์ - Gnuplot

Gnuplot เป็นเครื่องมือกราฟิกบรรทัดคำสั่ง เมื่อคุณได้ทราบถึงพื้นฐานแล้ว มันสามารถเป็นเครื่องมือที่ทรงพลังสำหรับการแสดงชุดข้อมูลแบบกราฟิก Gnuplot สามารถพล็อตจากไฟล์ข้อความที่จัดรูปแบบได้โดยตรง และเราเพิ่งจะมีสิ่งนี้จากขั้นตอนการแยกวิเคราะห์มาก่อน เมื่อเราระบุว่า gnuplot ตำแหน่งใดในไฟล์ที่มีข้อมูล เราสามารถพล็อตค่าที่ต้องการได้ ฉันจะใช้เวลาบนแกน X และอุณหภูมิของเราบนแกน Y การวางแผนเวลาจากประสบการณ์ของฉันนั้นยากที่สุด เนื่องจากคุณต้องได้รูปแบบเวลาใน gnuplot เพื่อให้ตรงกับรูปแบบของไฟล์ข้อความ หลังจากที่ตัวเลือกการทำกราฟทั้งหมดเสร็จสมบูรณ์และตามที่คุณต้องการแล้ว Gnuplot ก็สามารถสร้างรูปภาพของกราฟนี้ได้ นี่จะเป็นภาพที่เราจะใช้ในหน้าเว็บของเราในภายหลัง ฉันเลือกที่จะใช้รูปภาพ-p.webp

ขั้นตอนที่ 5: การตั้งค่าซอฟต์แวร์ - การตั้งค่าเกณฑ์และการส่งอีเมล

เกณฑ์สำหรับการแจ้งเตือนต้องทำโดยการลองผิดลองถูกสำหรับการตั้งค่าของคุณ ห้องที่ระบบไม่มีหน้าต่างดังนั้นเมื่อเครื่องปรับอากาศหยุดลงก็จะร้อนเร็วมาก ตอนแรกฉันดูชุดข้อมูลสองสามวันและดูการเปลี่ยนแปลงของอุณหภูมิ ก่อนที่ฉันจะตัดสินใจเลือกค่าการแจ้งเตือนที่ 30 องศาเซลเซียส ค่านี้ถูกตั้งค่าเป็นตัวแปรภายใน python scipt การดำเนินการนี้อาจดูไม่สูงมาก แต่เมื่อการแจ้งเตือนได้รับการกระตุ้น คุณยังต้องการให้เวลาตัวเองในการแก้ไขปัญหาก่อนที่จะกลายเป็นวิกฤต

เพื่อความง่าย ฉันกำลังส่งอีเมลทีละฉบับไปยังรายชื่อผู้รับจดหมาย เนื่องจากรายชื่อส่งเมลสั้น ฉันจึงไม่ต้องกังวลกับการส่งอีเมลถึงผู้รับหลายคน สิ่งหนึ่งที่ควรทราบในที่นี้ เนื่องจากฉันใช้งานสคริปต์นี้เป็นงาน cron ทุกๆ 5 นาที คุณจึงไม่ต้องการส่งอีเมลทุกๆ 5 นาทีเมื่อมีการทริกเกอร์ขีดจำกัด เพื่อแก้ไขปัญหานี้ ฉันเขียนวันที่และเวลาของการแจ้งเตือนลงในไฟล์ และตรวจสอบไฟล์นี้ก่อนที่จะส่งอีเมลเพื่อดูว่าระบบอยู่ในสถานะการแจ้งเตือนแล้วหรือไม่ เมื่ออยู่ในสถานะแจ้งเตือน ระบบจะส่งอีเมลอีกครั้งทุก ๆ ชั่วโมงหลังจากทริกเกอร์ครั้งแรกตราบเท่าที่ระบบอยู่ในสถานะแจ้งเตือน วิธีนี้ Gmail จะไม่บล็อกอีเมลของคุณจากการส่งอีเมลมากเกินไปในระยะเวลาอันสั้น

ขั้นตอนที่ 6: การตั้งค่าซอฟต์แวร์ - HTML

การตรวจสอบระบบทั้งหมดทำได้ผ่านหน้าเว็บและจำเป็นต้องใช้สคริปต์ html พื้นฐานสำหรับสิ่งนี้ ภาพที่ Gnuplot สร้างขึ้น ฉันเพียงแค่ใช้ขนาดเดิมของรูปภาพกลับคืนมา ฉันเชื่อว่าฉันได้ผ่านประมาณ 3 ขนาดสำหรับรูปภาพเหล่านี้ซึ่งให้ขนาดที่พอดีกับหน้าจอของฉันมากที่สุด ก่อนที่เราจะสร้างสคริปต์ html ให้สร้างโฟลเดอร์สำหรับมันก่อน โดยค่าเริ่มต้น โฟลเดอร์เว็บโฮสติ้งจะอยู่ที่ /var/www/ แม้ว่า Raspberry pi จะมีจุดประสงค์เพียงเพื่อตรวจสอบห้องนี้และออกการแจ้งเตือนทางอีเมล แต่สำหรับการดูแลบ้านที่ดี ฉันได้สร้างโฟลเดอร์แยกต่างหากในโฟลเดอร์ /var/www/ เนื่องจากโฟลเดอร์นี้เป็นของผู้ใช้รูท คุณต้องใช้ sudo เพื่อสร้างโฟลเดอร์จึงเป็นตำแหน่งนี้ sudo mkdir /var/www/temperature ในตัวอย่างนี้ ฉันใช้ temperature เป็นชื่อของโฟลเดอร์ แต่คุณสามารถใช้ชื่อใดก็ได้ที่นี่ แต่จำไว้ว่าจะต้องป้อนสิ่งนี้ลงในแถบที่อยู่เพื่อดูหน้านี้ เส้นทางนี้ถูกเก็บไว้ในตัวแปรภายในสคริปต์หลาม แม้ว่าจะต้องเปลี่ยนตำแหน่งโฮสต์หรือต้องแก้ไขสคริปต์สำหรับระบบอื่นก็สามารถเปลี่ยนแปลงได้จากตำแหน่งนี้ ตอนนี้เราสามารถสร้างสคริปต์ html ของเราในโฟลเดอร์นี้โดยจำไว้ว่าให้ใช้ sudo ต่อหน้าคำสั่งใด ๆ ของคุณ ต้องการที่จะดำเนินการในที่นี่ ฉันอยากจะแนะนำให้คุณตั้งชื่อสคริปต์ html "index.html" เนื่องจากจะทำให้สิ่งนี้ง่ายขึ้นเมื่อพยายามค้นหาหน้านี้ สิ่งสำคัญคือต้องแน่ใจว่าขนาดรูปภาพเท่ากับขนาดรูปภาพจาก Gnuplot เมื่อต้องการดูหน้านี้ คุณเพียงแค่ต้องป้อนที่อยู่ IP ของ Raspberry Pi ตามด้วย /temperature (หรือสิ่งที่คุณเคยตั้งชื่อโฟลเดอร์ของคุณ) ฉันมีหลายระบบที่ทำงานตรวจสอบสิ่งต่าง ๆ และพวกเขาทั้งหมดสร้างผลลัพธ์กราฟิกบางส่วน ดังนั้นฉันจึงสร้างเพจที่มีลิงก์ไปยังหน้าเหล่านี้ทั้งหมด ดังนั้นฉันไม่ต้องกังวลกับการป้อนที่อยู่ทุกครั้งที่ต้องการเข้าถึงหน้าเหล่านี้

ขั้นตอนที่ 7: ฉันยังมีชีวิตอยู่…

ฉันเคยใช้สิ่งนี้เพื่อตรวจสอบอุณหภูมิในห้องคอมพิวเตอร์ แต่นี่อาจเป็นข้อมูลจากแหล่งใดก็ได้ เมื่อมันสามารถเก็บไว้ในไฟล์ข้อความและคุณรู้ว่ามันเป็นรูปแบบที่ Gnuplot สามารถทำส่วนที่เหลือได้ สิ่งหนึ่งที่ฉันเพิ่มเมื่อเร็ว ๆ นี้ในโครงการนี้คือส่งอีเมล "ฮาร์ทบีต" แปลก ๆ นั่นคือในวันแรกของเดือนเวลา 9.00 น. ฉันมีสคริปต์ที่ทำงานเพื่อส่งอีเมลไปยังรายชื่อผู้รับจดหมายเพื่อแจ้งให้พวกเขาทราบว่าระบบกำลังทำงานตามที่ควรจะเป็นและทุกอย่างอยู่ในห้องได้ดี

ใช้รายการ cronjob เป็น:

แนะนำ: