Talaan ng mga Nilalaman:

Kinokontrol ng Raspberry Pi na Pagsubaybay sa Temperatura ng Silid Sa Gnuplot Image Output at Kakayahang Alerto sa Email: 7 Hakbang
Kinokontrol ng Raspberry Pi na Pagsubaybay sa Temperatura ng Silid Sa Gnuplot Image Output at Kakayahang Alerto sa Email: 7 Hakbang

Video: Kinokontrol ng Raspberry Pi na Pagsubaybay sa Temperatura ng Silid Sa Gnuplot Image Output at Kakayahang Alerto sa Email: 7 Hakbang

Video: Kinokontrol ng Raspberry Pi na Pagsubaybay sa Temperatura ng Silid Sa Gnuplot Image Output at Kakayahang Alerto sa Email: 7 Hakbang
Video: Электрический или водяной полотенцесушитель? Что выбрать? Установка. #25 2024, Hunyo
Anonim
Kinokontrol ng Raspberry Pi na Pagsubaybay sa Temperatura ng Silid Sa Gnuplot Image Output at Kakayahang Alerto sa Email
Kinokontrol ng Raspberry Pi na Pagsubaybay sa Temperatura ng Silid Sa Gnuplot Image Output at Kakayahang Alerto sa Email

Kung saan ako nagtatrabaho, mayroong isang napaka-importanteng silid kung saan maraming bahay ang mga computer. Ang temperatura sa paligid ng silid na ito ay dapat na napaka cool upang ma-optimize ang pagganap ng mga sistemang ito. Hiningi ako na magkaroon ng isang sistema ng pagsubaybay na may kakayahang magpadala ng ilang uri ng alerto sa ilang tao na aabisuhan sila na may isang bagay na mali sa aircon sa silid na iyon. Ang hardware para sa pagbuo na ito, ginamit ko ang Raspberry pi at isang temperatura ng USB at sensor ng kahalumigmigan. Para sa pagsubaybay, ginamit ko ang Gnuplot upang magbalak ng tatlong mga graph ng temperatura at lumikha ng imahe ng mga graph na iyon. Lumikha ako pagkatapos ng isang nakalaang pahina ng HTML na mai-host sa Raspberry pi kaya ang kasalukuyang mga kundisyon, ang mga gnuplot na imahe na output, ay maaaring subaybayan mula sa isang web page sa loob ng aming network. Para sa pag-alerto na pinili kong sumama sa Gmail. Natagpuan ko ang ilang halimbawa ng code sa isang magazine ng Linux User. (Siyempre maaari kang gumamit ng anumang mail server sa sandaling malaman mo ang mga takdang-aralin sa port.) Para doon nilikha ko ang isang nakalaang email account sa Gmail para sa mga alerto na ito. Gayundin bilang isang idinagdag na tampok, kapag na-trigger ang isang alerto, naglalagay ako ng isang graph sa email upang ang taong tumatanggap ng email ay maaaring makakuha ng isang ideya kung gaano kalubha ang pagtaas na nagdulot ng alerto.

Hakbang 1: Ang Pag-setup ng Hardware

Ang Pag-setup ng Hardware
Ang Pag-setup ng Hardware

Walang gaanong pag-set up ng hardware. Ang Raspberry pi ay nagpapatakbo ng Raspian at ang sensor ng temperatura ng USB ay simpleng plug lamang nang direkta sa isa sa mga USB port. Ang pagkonsumo ng kuryente ng sensor na ito ay minimal at bilang isang resulta ay pinapagana ko ito nang direkta mula sa Raspberry pi. Gayunpaman, para sa mga aparatong pinagagana ng USB na may kaunting pagkonsumo ng kuryente, inirerekumenda ko ang pagpapatakbo sa kanila sa pamamagitan ng isang pinapatakbo na USB hub at hindi direkta mula sa USB port ng Raspberry pi. Sa sandaling mapagana ang sensor ng temperatura, nagbibigay ito ng isang serial string na naglalaman ng temperatura at pagbabasa ng kahalumigmigan ng kasalukuyang mga kundisyon. temperatura = 20.9 ° C halumigmig = 62.7% dewpoint = 13.0 ° CA na na-parse ng script ng python script ang string na ito at iniimbak ang mga halagang temperatura at halumigmig sa tatlong mga file ng teksto tuwing limang minuto; isang pang-araw-araw, 24 na oras at 48 na mga file ng teksto (Ang mga pagkakaiba ay tatalakayin sa ibang pagkakataon sa seksyon ng HTML). Mula sa mga file na ito, bubuo ang Gnuplot ng mga graphic at kasunod ang mga imahe ng set ng data sa bawat file. Bago ko talakayin ang script ng sawa ay pag-uusapan ko ang tungkol sa paghahanda ng Raspberry pi. Dahil ang pagsubaybay ay dapat gawin sa online, kailangang mai-install ang isang web server. Sinubukan ko ang ilan sa kanila sa aking oras sa Raspberry pi ngunit bagaman medyo malaki ito mas gusto ko si Apache. Upang mai-install ang Apache sa iyong Raspberry pi i-type mo lamang: sudo apt-get install apache2 bibigyan ka nito ng isang prompt bago ito mai-install, pindutin ang "y" para sa oo at at ang Apache ay mai-install ng ilang minuto depende sa iyong Raspberry pi. Kapag na tapos na, kailangan mong mag-install ng dalawang mga plug-in sa python: python-serial at ang python-gnuplot plug. (Bagaman napagtanto ko na ang kamakailang mga build ng Raspian ay may standard na plug-in na python-serial ngunit upang ligtas lamang.) Upang mai-install ang mga na-type mo: -ins mai-install. At sa na ang pag-setup ng hardware ay kumpleto.

Hakbang 2: Pag-setup ng Software - Pag-setup ng Email at Mga Tatanggap

Lumikha ng email address Bago kami napakalayo sa software ngayon ay magiging isang magandang panahon upang lumikha ng isang Gmail account upang ipadala ang iyong mga alerto sa email mula sa. (Ang halimbawang ito ay gumagamit ng GMail ngunit ang anumang mail server ay maaaring magamit sa sandaling alam namin ang mga setting ng smtp port) Ang python code ay medyo tuwid pauna ngunit ang mga pag-import na kailangan ay kritikal. Kung wala ang mga ito ay walang gagana. Mula sa pag-import ng oras * pag-import ng oras ng pag-import ng serial import smtplib import Gnuplot import os import sysPanghuli, ang listahan ng pag-mail. Siyempre kailangan nating idagdag ang mga tatanggap ng email. Ang bawat email address ay nai-save sa isang variable.from_address ='[email protected]'to_address1 = 'tatanggap1.mail.com' to_address2 = 'tatanggap2.mail.com'username =' [email protected] 'password =' custom_email_password '

Hakbang 3: Pag-setup ng Software - Serial Setup at Parsing

Susunod na titingnan namin ang serial setup. Ito ay isang bagay lamang ng pag-set up ng mga parameter na tumutugma sa serial output mula sa sensor. Ang sensor ay naglalabas ng isang serial string sa 9600 8 N 1 na isang karaniwang format. Matapos matanggap ang string mayroong maraming mga paraan ng pag-parse ng string na ito sa sawa at posibleng mas mapagkakatiwalaan. Ang paraan ng paggawa ko nito ay upang maghanap ng mga "temp" na character sa serial string. Kapag natagpuan ito ay simpleng isyu ng pagbabasa ng susunod na 46 na serial character sa isang string. Ang nakolektang string ay maaari na ngayong tugunan tulad ng mga elemento sa isang array. Ang nais na data ay na-parse mula sa string at nai-save sa tatlong mga file kasama ang kaukulang oras na stamp.timestamp = strftime ("% d% b% Y% H:% M:% S", localtime ())

Hakbang 4: Pag-setup ng Software - Gnuplot

Pag-setup ng Software - Gnuplot
Pag-setup ng Software - Gnuplot
Pag-setup ng Software - Gnuplot
Pag-setup ng Software - Gnuplot
Pag-setup ng Software - Gnuplot
Pag-setup ng Software - Gnuplot

Ang Gnuplot ay isang tool ng graphic na linya ng utos. Kapag nalaman mo ang mga pangunahing kaalaman maaari itong maging isang napakalakas na tool para sa grapikong pagpapakita ng mga hanay ng data. Ang Genuplot ay maaaring direktang magbalak mula sa isang naka-format na file ng teksto at nagkataon lamang na mayroon kami mula sa hakbang sa pag-parse dati. Sa sandaling ipahiwatig namin sa gnuplot kung saan sa file matatagpuan ang data maaari naming mailagay ang nais na mga halaga. Gagamitin ko ang oras sa X axis at ang aming temperatura sa Y axis. Ang oras ng paglalagay mula sa aking karanasan ay ang pinaka mahirap dahil kailangan mong makuha ang format ng oras sa gnuplot upang tumugma sa format ng file ng teksto. Matapos ang lahat ng mga pagpipilian sa graphing ay kumpleto at sa iyong kagustuhan, maaaring lumikha ang Gnuplot ng isang imahe ng graph na ito. Ito ang magiging imahe na gagamitin namin sa aming Web page sa paglaon. Pinili kong pumunta kasama ang isang imahe na. Naglaro muna ako sa mga pamantayan sa laki at pagkatapos ay nag-eksperimento upang akma ang aking imahe sa aking screen. Para sa proyektong ito, hindi ako nag-iimbak ng mga lumang imahe kaya ang pisikal na sukat ng file sa pag-iimbak ay hindi isang pangunahing kadahilanan sa mahalagang pag-iimbak ng Raspberry pi. Narito ang isang code snippet upang likhain at maiimbak ang araw-araw-p.webp

Hakbang 5: Pag-setup ng Software - Pagtatakda ng Threshold at Pag-email

Ang threshold para sa pag-alerto ay dapat gawin sa pamamagitan ng pagsubok at error para sa iyong pag-set up. ang silid kung aling mga bahay ang mga system ay walang bintana kaya't sa sandaling tumigil ang aircon maaari itong maging napakainit nang napakabilis. Sa una tiningnan ko ang hanay ng data sa loob ng ilang araw at pinapanood ang mga pagkakaiba-iba ng temperatura bago ko napagpasyahan ang halagang halagang 30 degree C. Ito ay itinakda bilang isang variable sa loob ng python scipt. Maaaring hindi ito masyadong mataas ngunit sa sandaling ma-trigger ang alerto ay nais mo pa ring bigyan ang iyong sarili ng oras upang ayusin ang problema bago ito maging kritikal.

Para sa pagiging simple, nagpapadala ako ng mga indibidwal na email sa mailing list. Dahil maikli ang mailing list hindi na ako nag-abala sa pagpapadala ng isang email sa maraming mga tatanggap. Isang bagay na dapat tandaan dito, Dahil pinapatakbo ko ang script na ito bilang isang cron job tuwing 5 minuto, hindi mo nais na magpadala ng mga email bawat 5 minuto sa sandaling na-trigger ang threshold. Upang mapalibot ito, isusulat ko ang petsa at oras ng alerto sa isang file at suriin ang file na ito bago magpadala ng anumang mga email upang makita kung ang system ay nasa isang estado ng alerto. Kapag nasa isang estado ng alerto, magpapadala lamang ito ng isang email bawat oras pagkatapos ng unang pag-trigger hangga't ang system ay nasa estado ng alerto. Sa ganoong paraan hindi hinaharangan ng Gmail ang iyong email sa pagpapadala ng masyadong maraming mga email sa isang maikling panahon.

Hakbang 6: Pag-setup ng Software - HTML

Ang pagsubaybay ng buong sistema ay ginagawa sa pamamagitan ng isang web page at isang napaka-pangunahing script na html ang kinakailangan para dito. Ang mga larawang nilikha ni Gnuplot ay simpleng ginagamit ko lang na ibabalik ang parehong sukat ng imahe. Naniniwala akong dumaan ako sa halos 3 laki para sa mga larawang ito na nagbigay ng pinakamahusay na akma sa aking screen. Bago namin likhain ang html script gumawa muna tayo ng isang folder para dito. Bilang default ang web hosting folder ay matatagpuan sa / var / www /. Bagaman ang layunin lamang ng Raspberry pi na ito ay upang subaybayan ang silid na ito at mag-isyu ng mga alerto sa email, para sa mabuting pagpapanatili ng bahay ay lumikha ako ng isang hiwalay na folder sa / var / www / folder. Dahil ang folder na ito ay kabilang sa root user na kailangan mong gumamit ng sudo upang lumikha ng isang folder ay ang lokasyon na ito. sudo mkdir / var / www / temperatura Sa halimbawang ito ginamit ko ang temperatura bilang pangalan ng folder ngunit maaari kang gumamit ng anumang pangalan dito ngunit tandaan na kailangang mailagay ito sa address bar upang matingnan ang pahinang ito. Ang landas na ito ay nakaimbak sa isang variable sa loob ng script ng sawa. Sa kahit na ang lokasyon ng pagho-host ay dapat baguhin o ang script ay dapat baguhin para sa isa pang system, maaari lamang itong mabago mula sa isang lokasyon na ito. Ngayon ay makakalikha kami ng aming html script sa folder na ito na naaalala na gamitin ang sudo sa harap ng anumang mga utos sa iyo nais na magpatupad dito. Inirerekumenda ko sa iyo na pangalanan ang html script na "index.html" dahil mapapadali ito kapag sinusubukang hanapin ang pahinang ito. Ang kritikal na bagay ay tiyakin na ang sukat ng imahe ay pareho ng laki ng imahe mula sa Gnuplot. Upang matingnan ang pahinang ito, kailangan mo lamang ipasok ang IP address ng Raspberry Pi na sinusundan ng / temperatura (o kung ano ang pinangalanan mo ang iyong folder) Mayroon akong maraming mga sistema sa pagtatrabaho sa pagsubaybay sa iba't ibang mga bagay at lahat sila ay gumagawa ng ilang grapikong output ng kanilang mga resulta. Kaya't lumikha ako ng isang pahina na may mga link sa lahat ng mga pahinang ito kaya't hindi ako mag-alala tungkol sa pagpasok ng address sa tuwing nais kong i-access ang mga pahinang ito.

Hakbang 7: Buhay Ako …

Ginamit ko ito upang subaybayan ang temperatura sa isang silid ng kompyuter ngunit maaaring ito ay medyo maraming data mula sa anumang pinagmulan. Sa sandaling maimbak ito sa isang text file at alam mo na ito ay format na Gnuplot ay maaaring gawin ang natitira. Ang isang bagay na naidagdag ko kamakailan sa proyektong ito ay upang magpadala ng isang "tibok ng puso" na email ng mga uri. Iyon ay sa unang buwan ng 9:00 Mayroon akong isang script na nagpapatakbo ng mga email sa mailing list upang ipaalam sa kanila na tumatakbo ang system tulad ng nararapat at maayos ang lahat sa silid.

Gamit ang listahan ng cronjob bilang:

Inirerekumendang: