Satura rādītājs:

Raspberry Pi kontrolēta istabas temperatūras kontrole ar Gnuplot attēla izvadi un e -pasta brīdinājuma iespēju: 7 soļi
Raspberry Pi kontrolēta istabas temperatūras kontrole ar Gnuplot attēla izvadi un e -pasta brīdinājuma iespēju: 7 soļi

Video: Raspberry Pi kontrolēta istabas temperatūras kontrole ar Gnuplot attēla izvadi un e -pasta brīdinājuma iespēju: 7 soļi

Video: Raspberry Pi kontrolēta istabas temperatūras kontrole ar Gnuplot attēla izvadi un e -pasta brīdinājuma iespēju: 7 soļi
Video: Ventilācijas sistēmu enerģijas taupības iespējas, saglabājot iekštelpu gaisa kvalitāti 2024, Novembris
Anonim
Raspberry Pi kontrolēta istabas temperatūras kontrole ar Gnuplot attēla izvadi un e -pasta brīdinājuma iespēju
Raspberry Pi kontrolēta istabas temperatūras kontrole ar Gnuplot attēla izvadi un e -pasta brīdinājuma iespēju

Kur es strādāju, ir ļoti svarīga telpa, kurā ir daudz datoru. Šīs telpas apkārtējās vides temperatūrai jābūt ļoti vēsai, lai optimizētu šo sistēmu darbību. Man tika lūgts izstrādāt uzraudzības sistēmu, kas dažiem cilvēkiem var nosūtīt brīdinājumu, kas viņiem paziņos, ka kaut kas nav kārtībā ar gaisa kondicionētāju šajā telpā. Šīs būves aparatūra, es izmantoju Raspberry pi un USB temperatūras un mitruma sensors. Uzraudzībai es izmantoju Gnuplot, lai uzzīmētu trīs temperatūras grafikus un izveidotu šo grafiku attēlu. Pēc tam es izveidoju īpašu HTML lapu, kas tiks mitināta Raspberry pi, lai pašreizējos apstākļus, šos gnuplot izvades attēlus, varētu uzraudzīt no mūsu tīkla tīmekļa lapas. Brīdinājuma nolūkos es izvēlējos izmantot Gmail. Es biju atradis kādu koda paraugu žurnālā Linux User. (Protams, jūs varat izmantot jebkuru pasta serveri, tiklīdz zināt nepieciešamos portu uzdevumus.) Šim brīdinājumam es izveidoju īpašu Gmail e -pasta kontu. Tāpat kā papildu funkcija, kad brīdinājums ir aktivizēts, es e -pastam pievienoju vienu diagrammu, lai persona, kas saņem e -pastu, varētu gūt priekšstatu par to, cik krasi palielinājās brīdinājums.

1. darbība: aparatūras iestatīšana

Aparatūras iestatīšana
Aparatūras iestatīšana

Aparatūras iestatīšanai nav daudz. Raspberry pi darbojas Raspian, un USB temperatūras sensors vienkārši tiek pievienots tieši vienam no USB portiem. Šī sensora enerģijas patēriņš ir minimāls, un tāpēc es to darbināju tieši no Raspberry pi. Tomēr ar USB darbināmām ierīcēm ar nedaudz lielāku enerģijas patēriņu es ieteiktu tās darbināt, izmantojot USB centrmezglu, nevis tieši no Raspberry pi USB porta. Kad temperatūras sensors ir ieslēgts, tas nodrošina sērijas virkni, kas satur temperatūru un mitruma rādījumi pašreizējos apstākļos. temperatūra = 20,9 ° C mitrums = 62,7% rasas punkts = 13,0 ° CA python skripts parsē šo virkni un ik pēc piecām minūtēm saglabā temperatūras un mitruma vērtības trīs teksta failos; katru dienu, 24 stundas un 48 stundas teksta failos (Atšķirības tiks aplūkotas vēlāk HTML sadaļā). No šiem failiem Gnuplot ģenerēs diagrammas un pēc tam datu kopas attēlus katrā failā. Pirms es apspriedu pitona skriptu, es runāšu par Raspberry pi sagatavošanu. Tā kā uzraudzība jāveic tiešsaistē, ir jāinstalē tīmekļa serveris. Esmu izmēģinājis dažus no tiem savā laikā Raspberry pi, bet, lai gan tas ir mazliet liels, es dodu priekšroku Apache. Lai instalētu Apache savā Raspberry pi, vienkārši ierakstiet: sudo apt-get install apache2 Tas jums parādīs uzvedni pirms tā instalēšanas, nospiediet "y", lai apstiprinātu, un un Apache tiks instalēta dažas minūtes atkarībā no jūsu Raspberry pi. ir pabeigts, jums ir jāinstalē divi python spraudņi: python-serial un python-gnuplot spraudnis. (Lai gan esmu sapratis, ka jaunākajām Raspian būvēm ir python sērijas spraudņa standarts, bet tikai drošībai.) Lai instalētu ierakstītos ierakstus: sudo apt-get install python-serial python-gnuplot Vēlreiz pēc uzvedņu apstiprināšanas šie spraudņi -tiks uzstādītas. Un līdz ar to aparatūras iestatīšana ir pabeigta.

2. darbība. Programmatūras iestatīšana - e -pasta iestatīšana un adresāti

Pirms mēs pārāk tālu iepazīstamies ar programmatūru, būtu īstais laiks izveidot Gmail kontu, no kura sūtīt e -pasta brīdinājumus. (Šajā piemērā tiek izmantots GMail, bet var izmantot jebkuru pasta serveri, tiklīdz mēs zinām smtp porta iestatījumus.) Python kods ir diezgan vienkāršs, taču nepieciešamais imports ir kritisks. Bez tiem nekas nedarbotos. Protams, mums jāpievieno e -pasta adresāti. Katra e -pasta adrese tiek saglabāta mainīgajā.

3. darbība: programmatūras iestatīšana - sērijas iestatīšana un parsēšana

Tālāk mēs aplūkojam sērijas iestatījumus. Tas ir tikai jautājums par parametru iestatīšanu, kas atbilst sensora sērijas izvadei. Sensors izvada sērijas virkni pie 9600 8 N 1, kas ir standarta formāts. Pēc virknes saņemšanas ir vairāki veidi, kā parsēt šo virkni python un, iespējams, daudz ticamāk. Tas, kā es to daru, ir sērijveida virknē meklēt "temp" rakstzīmes. Kad tas ir atrasts, ir vienkārši jālasa nākamās 46 sērijas rakstzīmes virknē. Savākto virkni tagad var adresēt kā masīva elementus. Vēlamie dati tiek parsēti no virknes un saglabāti trīs failos kopā ar atbilstošo laika zīmogu. Timestamp = strftime ("%d%b%Y%H:%M:%S", lokālais laiks ())

4. solis: Programmatūras iestatīšana - Gnuplot

Programmatūras iestatīšana - Gnuplot
Programmatūras iestatīšana - Gnuplot
Programmatūras iestatīšana - Gnuplot
Programmatūras iestatīšana - Gnuplot
Programmatūras iestatīšana - Gnuplot
Programmatūras iestatīšana - Gnuplot

Gnuplot ir komandrindas grafiskais rīks. Kad esat sapratis pamatus, tas var būt diezgan spēcīgs rīks datu kopu grafiskai attēlošanai. Gnuplot var uzzīmēt tieši no formatēta teksta faila, un mums vienkārši ir viens no iepriekšējā parsēšanas soļa. Kad esam norādījuši gnuplot, kur failā atrodas dati, mēs varam uzzīmēt vēlamās vērtības. Es izmantošu laiku uz X ass un mūsu temperatūru uz Y ass. Laika zīmēšana no manas pieredzes ir visgrūtākā, jo jums ir jāiegūst laika formāts gnuplot, lai tas atbilstu teksta faila formātam. Kad visas grafikas opcijas ir pabeigtas un pēc jūsu izvēles, Gnuplot var izveidot šī grafika attēlu. Tas būs attēls, ko vēlāk izmantosim savā tīmekļa lapā. Es izvēlējos izmantot-p.webp

5. solis: programmatūras iestatīšana - sliekšņa iestatīšana un e -pasta nosūtīšana

Brīdinājuma slieksnis jūsu iestatīšanai ir jāveic izmēģinājumu un kļūdu veidā. telpai, kurā atrodas sistēmas, nav logu, tāpēc, tiklīdz gaisa kondicionieris apstājas, tas var ļoti ātri sakarst. Sākotnēji es dažas dienas skatījos datu kopu un vēroju temperatūras izmaiņas, pirms es nolēmu par brīdinājuma vērtību 30 grādi C. Tas ir iestatīts kā mainīgais python scipt. Tas var nešķist ļoti augsts, taču, tiklīdz brīdinājums ir aktivizēts, jūs joprojām vēlaties dot laiku, lai novērstu problēmu, pirms tā kļūst kritiska.

Vienkāršības labad es sūtu atsevišķus e -pastus uz adresātu sarakstu. Tā kā adresātu saraksts ir īss, es nekad neuztraucos ar viena e -pasta nosūtīšanu vairākiem adresātiem. Šeit jāpiebilst viena lieta: tā kā es šo skriptu izpildu kā cron darbu ik pēc 5 minūtēm, jūs nevēlaties sūtīt e -pastus ik pēc 5 minūtēm, kad slieksnis ir aktivizēts. Lai to novērstu, es uzrakstu failam brīdinājuma datumu un laiku un pirms e -pasta ziņojumu nosūtīšanas pārbaudu šo failu, lai noskaidrotu, vai sistēma jau ir brīdinājuma stāvoklī. Brīdinājuma stāvoklī tas sūtīs e -pastu tikai katru stundu pēc pirmā aktivizēšanas tik ilgi, kamēr sistēma ir ieslēgta un brīdinājuma stāvoklī. Tādā veidā Gmail neaizkavē jūsu e -pasta ziņojumu nosūtīšanu pārāk daudz e -pasta ziņojumu īsā laika periodā.

6. darbība: programmatūras iestatīšana - HTML

Visas sistēmas uzraudzība tiek veikta, izmantojot tīmekļa lapu, un tam ir nepieciešams ļoti vienkāršs html skripts. Gnuplot izveidotos attēlus es vienkārši izmantoju vienādos attēla izmēros. Es uzskatu, ka šiem attēliem es izmantoju aptuveni 3 izmērus, kas vislabāk iederējās manā ekrānā. Pirms mēs izveidojam html skriptu, izveidosim tam mapi. Pēc noklusējuma tīmekļa mitināšanas mape atrodas vietnē/var/www/. Lai gan šis Raspberry pi vienīgais mērķis ir uzraudzīt šo istabu un izsūtīt brīdinājumus pa e -pastu, lai labi uzturētu māju, mapē/var/www/izveidoju atsevišķu mapi. Tā kā šī mape pieder saknes lietotājam, šī vieta ir jāizmanto, lai izveidotu mapi. sudo mkdir/var/www/Temperature Šajā piemērā es kā mapes nosaukumu izmantoju temperatūru, taču šeit varat izmantot jebkuru nosaukumu, taču atcerieties, ka tas būs jāievada adreses joslā, lai skatītu šo lapu. Šis ceļš tiek saglabāts python skripta mainīgajā. Pat ja hostinga atrašanās vieta ir jāmaina vai skripts ir jāmaina citai sistēmai, to var vienkārši mainīt no šīs vienas vietas. Tagad mēs varam izveidot savu html skriptu šajā mapē, atceroties izmantot sudo visu komandu priekšā grib izpildīt šeit. Es ieteiktu nosaukt html skriptu "index.html", jo tas to vienkāršos, mēģinot atrast šo lapu. Galvenais ir pārliecināties, vai attēla izmērs ir tāds pats kā attēla izmērs no Gnuplot. Lai skatītu šo lapu, jums vienkārši jāievada Raspberry Pi IP adrese, kam seko /temperatūra (vai kā jūs nosaucāt savu mapi). Man ir vairākas sistēmas, kas pārrauga dažādas lietas, un tās visas rada rezultātu grafisku izvadi. Tāpēc es izveidoju lapu, kurā ir saites uz visām šīm lapām, tāpēc man nav jāuztraucas par adreses ievadīšanu katru reizi, kad vēlos piekļūt šīm lapām.

7. solis: Es esmu dzīvs…

Esmu to izmantojis, lai uzraudzītu temperatūru datortelpā, taču tas varēja būt diezgan daudz datu no jebkura avota. Kad to var saglabāt teksta failā un jūs zināt, ka tā formāts Gnuplot var paveikt pārējo. Viena lieta, ko nesen pievienoju šim projektam, ir nosūtīt sava veida "sirdsdarbības" e -pastu. Tas ir mēneša pirmajā dienā pulksten 9:00. Man ir skripts, kas darbojas un nosūta e -pastu uz adresātu sarakstu, lai informētu viņus, ka sistēma darbojas kā nākas, un telpā viss ir kārtībā.

Izmantojot cronjob sarakstu kā:

Ieteicams: