Isi kandungan:

Pemantauan Suhu Bilik Terkawal Raspberry Pi Dengan Output Gambar Gnuplot dan Kemampuan Makluman E-mel: 7 Langkah
Pemantauan Suhu Bilik Terkawal Raspberry Pi Dengan Output Gambar Gnuplot dan Kemampuan Makluman E-mel: 7 Langkah

Video: Pemantauan Suhu Bilik Terkawal Raspberry Pi Dengan Output Gambar Gnuplot dan Kemampuan Makluman E-mel: 7 Langkah

Video: Pemantauan Suhu Bilik Terkawal Raspberry Pi Dengan Output Gambar Gnuplot dan Kemampuan Makluman E-mel: 7 Langkah
Video: #smartMALAYSIA SAM Labs STEM Challenge: Sistem Pemantauan Suhu Bilik by Lau Hui Sing 2024, Jun
Anonim
Pemantauan Suhu Bilik Terkawal Raspberry Pi Dengan Output Gambar Gnuplot dan Kemampuan Makluman E-mel
Pemantauan Suhu Bilik Terkawal Raspberry Pi Dengan Output Gambar Gnuplot dan Kemampuan Makluman E-mel

Di tempat saya bekerja, ada bilik yang sangat penting yang menempatkan banyak komputer. Suhu persekitaran bilik ini harus sangat sejuk untuk mengoptimumkan prestasi sistem ini. Saya diminta untuk membuat sistem pemantauan yang memiliki kemampuan untuk mengirim beberapa bentuk peringatan kepada beberapa orang yang akan memberitahu mereka bahawa ada sesuatu yang tidak kena dengan penghawa dingin di ruangan itu. Perkakasan untuk binaan ini, saya menggunakan Raspberry pi dan sensor suhu dan kelembapan USB. Untuk pemantauan, saya menggunakan Gnuplot untuk merancang tiga graf suhu dan membuat gambar grafik tersebut. Saya kemudian membuat halaman HTML khusus yang akan dihoskan di Raspberry pi supaya keadaan sekarang, gambar keluaran gnuplot itu, dapat dipantau dari laman web dalam rangkaian kami. Untuk memberi amaran, saya memilih untuk menggunakan Gmail. Saya telah menemui beberapa contoh kod dalam majalah Pengguna Linux. (Sudah tentu anda boleh menggunakan mana-mana pelayan mel setelah anda mengetahui penugasan port yang diperlukan.) Untuk itu saya membuat akaun e-mel Gmail khusus untuk makluman ini. Juga sebagai fitur tambahan, ketika peringatan telah dipicu, saya melampirkan satu grafik ke e-mel sehingga orang yang menerima e-mel dapat memperoleh gambaran tentang betapa drastisnya peningkatan yang menyebabkan peringatan itu.

Langkah 1: Persediaan Perkakasan

Persediaan Perkakasan
Persediaan Perkakasan

Tidak banyak yang perlu dilakukan untuk mengatur perkakasan. Raspberry pi menjalankan Raspian dan sensor suhu USB hanya dipasang terus ke salah satu port USB. Penggunaan kuasa sensor ini adalah minimum dan hasilnya saya menggerakkannya secara langsung dari Raspberry pi. Walau bagaimanapun, untuk peranti bertenaga USB dengan penggunaan kuasa yang sedikit lebih banyak, saya mengesyorkan menghidupkannya melalui hab USB berkuasa dan bukan secara langsung dari port USB Raspberry pi. Setelah sensor suhu dihidupkan, ia menyediakan rentetan bersiri yang mengandungi suhu dan bacaan kelembapan keadaan semasa. suhu = 20.9 ° C kelembapan = 62.7% titik embun = 13.0 ° Skrip python CA menguraikan rentetan ini dan menyimpan nilai suhu dan kelembapan menjadi tiga fail teks setiap lima minit; fail teks 24 jam dan 48 jam setiap hari (Perbezaan akan dibincangkan kemudian di bahagian HTML). Dari fail ini, Gnuplot akan menghasilkan grafik dan seterusnya gambar set data dalam setiap fail. Sebelum saya membincangkan skrip python saya akan bercakap mengenai penyediaan pi Raspberry. Oleh kerana pemantauan dilakukan secara dalam talian, pelayan web perlu dipasang. Saya telah mencuba beberapa daripadanya pada Raspberry pi tetapi walaupun agak besar saya lebih suka Apache. Untuk memasang Apache pada Raspberry pi anda, cukup ketik: sudo apt-get install apache2 Ia akan memberi anda arahan sebelum memasangnya, tekan "y" untuk ya dan dan Apache akan dipasang beberapa minit bergantung pada Raspberry pi anda. Setelah itu selesai, anda mesti memasang dua pemalam python: python-serial dan python-gnuplot plug. (Walaupun saya menyedari bahawa binaan Raspian baru-baru ini mempunyai piawai python-serial standard tetapi hanya selamat.) Untuk memasang yang anda taip: sudo apt-get install python-serial python-gnuplotSekali lagi setelah menyedari arahannya, palam ini -ins akan dipasang. Dan dengan itu persediaan perkakasan selesai.

Langkah 2: Persediaan Perisian - Penyediaan E-mel dan Penerima

buat alamat e-mel Sebelum kita terlalu jauh ke perisian sekarang adalah masa yang tepat untuk membuat akaun Gmail untuk menghantar makluman e-mel anda dari. (Contoh ini menggunakan GMail tetapi mana-mana pelayan mel boleh digunakan setelah kita mengetahui tetapan port smtp) Kod python agak lurus ke hadapan tetapi import yang diperlukan sangat penting. Tanpa mereka tidak ada yang berfungsi. Dari masa import * import import time import smtplib import Gnuplot import os import sys Akhirnya, senarai mel. Sudah tentu kita harus menambah penerima e-mel. Setiap alamat e-mel disimpan dalam variabel.from_address ='[email protected]'to_address1 = 'penerima1.mail.com' to_address2 = 'penerima2.mail.com' nama pengguna = '[email protected]' kata laluan = 'custom_email_password'

Langkah 3: Persediaan Perisian - Penyediaan dan Penguraian Bersiri

Seterusnya kita melihat persediaan bersiri. Ini hanya soal menetapkan parameter yang sesuai dengan output bersiri dari sensor. Sensor mengeluarkan rentetan bersiri pada 9600 8 N 1 yang merupakan format standard. Setelah tali diterima, terdapat beberapa cara menguraikan rentetan ini di python dan mungkin lebih boleh dipercayai. Cara saya melakukannya adalah dengan mencari watak "temp" dalam rentetan siri. Setelah berada, ia hanya perlu membaca 46 watak bersiri seterusnya menjadi rentetan. Rentetan yang dikumpulkan kini dapat ditangani seperti elemen dalam larik. Data yang diinginkan dihuraikan dari rentetan dan disimpan ke tiga fail bersama dengan cap waktu yang sesuai.timestamp = strftime ("% d% b% Y% H:% M:% S", waktu tempatan ())

Langkah 4: Persediaan Perisian - Gnuplot

Persediaan Perisian - Gnuplot
Persediaan Perisian - Gnuplot
Persediaan Perisian - Gnuplot
Persediaan Perisian - Gnuplot
Persediaan Perisian - Gnuplot
Persediaan Perisian - Gnuplot

Gnuplot adalah alat grafik baris perintah. Sebaik sahaja anda mengetahui asasnya, ia boleh menjadi alat yang cukup hebat untuk paparan grafik set data. Gnuplot dapat membuat plot terus dari fail teks yang diformat dan kebetulan kita mempunyai satu dari langkah penghuraian sebelumnya. Sebaik sahaja kita menunjukkan kepada gnuplot di mana dalam data tersebut data kita dapat memplot nilai yang diinginkan. Saya akan menggunakan masa pada paksi X dan suhu kita pada paksi Y. Menentukan masa dari pengalaman saya adalah yang paling sukar kerana anda harus mendapatkan format waktu di gnuplot agar sesuai dengan format fail teks. Setelah semua pilihan grafik lengkap dan mengikut pilihan anda, Gnuplot kemudian dapat membuat gambar grafik ini. Ini akan menjadi gambar yang akan kita gunakan di laman Web kita nanti. Saya memilih untuk menggunakan gambar-p.webp

Langkah 5: Persediaan Perisian - Penetapan Ambang dan E-mel

Ambang amaran harus dilakukan dengan percubaan dan kesilapan untuk persediaan anda. bilik yang menempatkan sistem tidak mempunyai tingkap sehingga apabila penghawa dingin berhenti, ia boleh menjadi sangat panas dengan cepat. Pada mulanya saya melihat set data selama beberapa hari dan memerhatikan variasi suhu sebelum saya memutuskan nilai amaran 30 darjah C. Ini ditetapkan sebagai pemboleh ubah dalam scyt python. Ini mungkin tidak begitu tinggi tetapi setelah amaran dicetuskan, anda masih mahu memberi masa untuk membetulkan masalah sebelum menjadi kritikal.

Untuk kesederhanaan, saya menghantar e-mel individu ke senarai mel. Oleh kerana senarai suratnya pendek, saya tidak pernah peduli dengan menghantar satu e-mel kepada beberapa penerima. Satu perkara yang perlu diperhatikan di sini, Oleh kerana saya menjalankan skrip ini sebagai tugas utama setiap 5 minit, anda tidak mahu menghantar e-mel setiap 5 minit setelah ambang dicetuskan. Untuk mengatasi masalah ini, saya menulis tarikh dan masa amaran ke fail dan memeriksa fail ini sebelum menghantar e-mel untuk melihat apakah sistem sudah berada dalam keadaan amaran. Setelah berada dalam keadaan amaran, ia hanya akan menghantar semula e-mel setiap jam selepas pencetus pertama selama sistem berada dalam keadaan amaran. Dengan cara itu Gmail tidak menyekat e-mel anda daripada mengirim terlalu banyak e-mel dalam jangka waktu yang singkat.

Langkah 6: Persediaan Perisian - HTML

Pemantauan seluruh sistem dilakukan melalui laman web dan skrip html sangat asas diperlukan untuk ini. Imej yang dibuat oleh Gnuplot saya hanya menggunakan kembali dimensi gambar yang sama. Saya percaya bahawa saya melalui kira-kira 3 ukuran untuk gambar-gambar ini yang paling sesuai pada skrin saya. Sebelum kita membuat skrip html mari buat folder untuknya. Secara lalai folder hosting web terletak di / var / www /. Walaupun satu-satunya tujuan Raspberry pi ini adalah untuk memantau ruangan ini dan mengeluarkan amaran e-mel, untuk menjaga rumah saya membuat folder yang terpisah di folder / var / www / folder. Oleh kerana folder ini milik pengguna root, anda harus menggunakan sudo untuk membuat folder adalah lokasi ini. sudo mkdir / var / www / temperatureDalam contoh ini, saya menggunakan suhu sebagai nama folder tetapi anda boleh menggunakan sebarang nama di sini tetapi ingat kerana ini perlu dimasukkan ke dalam bar alamat untuk melihat halaman ini. Laluan ini disimpan dalam pemboleh ubah dalam skrip python. Walaupun lokasi hosting harus diubah atau skripnya harus diubah untuk sistem lain, ia hanya dapat diubah dari lokasi yang satu ini. Sekarang kita dapat membuat skrip html kita di folder ini dan ingat untuk menggunakan sudo di depan setiap perintah yang anda mahu dilaksanakan di sini. Saya akan mengesyorkan anda menamakan skrip html "index.html" kerana ini akan mempermudahnya ketika cuba mencari halaman ini. Yang penting adalah memastikan ukuran gambar sama dengan ukuran gambar dari Gnuplot. Untuk melihat halaman ini, anda hanya perlu memasukkan alamat IP Raspberry Pi diikuti oleh / suhu (atau apa sahaja yang anda namakan folder anda) Saya mempunyai beberapa sistem di tempat kerja memantau perkara yang berbeza dan semuanya menghasilkan beberapa hasil grafik hasilnya. Oleh itu, saya membuat halaman yang mempunyai pautan ke semua halaman ini jadi saya tidak perlu risau untuk memasukkan alamat setiap kali saya ingin mengakses halaman ini.

Langkah 7: Saya Hidup…

Saya telah menggunakan ini untuk memantau suhu di bilik komputer tetapi ini mungkin banyak data dari sumber mana pun. Sebaik sahaja ia dapat disimpan dalam fail teks dan anda tahu formatnya Gnuplot boleh melakukan selebihnya. Satu perkara yang saya tambahkan baru-baru ini ke projek ini adalah dengan menghantar e-mel "degupan jantung". Iaitu pada awal bulan jam 9 pagi saya mempunyai skrip yang berjalan yang menghantar e-mel kepada senarai e-mel untuk memberitahu mereka bahawa sistem ini berjalan sebagaimana mestinya dan semuanya berjalan lancar.

Menggunakan senarai cronjob sebagai:

Disyorkan: