Turinys:

„Raspberry Pi“kontroliuojamas kambario temperatūros stebėjimas naudojant „Gnuplot“vaizdo išvestį ir el. Pašto įspėjimo galimybes: 7 žingsniai
„Raspberry Pi“kontroliuojamas kambario temperatūros stebėjimas naudojant „Gnuplot“vaizdo išvestį ir el. Pašto įspėjimo galimybes: 7 žingsniai

Video: „Raspberry Pi“kontroliuojamas kambario temperatūros stebėjimas naudojant „Gnuplot“vaizdo išvestį ir el. Pašto įspėjimo galimybes: 7 žingsniai

Video: „Raspberry Pi“kontroliuojamas kambario temperatūros stebėjimas naudojant „Gnuplot“vaizdo išvestį ir el. Pašto įspėjimo galimybes: 7 žingsniai
Video: KUKA „DeviceConnector“ ENG internetinis seminaras, parengtas „KUKA Nordic“ 2024, Lapkritis
Anonim
„Raspberry Pi“kontroliuojamas kambario temperatūros stebėjimas naudojant „Gnuplot“vaizdo išvestį ir el. Pašto įspėjimo galimybę
„Raspberry Pi“kontroliuojamas kambario temperatūros stebėjimas naudojant „Gnuplot“vaizdo išvestį ir el. Pašto įspėjimo galimybę

Ten, kur aš dirbu, yra labai svarbi patalpa, kurioje yra daug kompiuterių. Norint optimizuoti šių sistemų veikimą, šios patalpos aplinkos temperatūra turi būti labai šalta. Manęs paprašė sukurti stebėjimo sistemą, galinčią nusiųsti tam tikrus įspėjimus keliems žmonėms, kurie praneš, kad kažkas negerai su oro kondicionieriumi toje patalpoje. Šios konstrukcijos aparatūra naudojau „Raspberry pi“ir USB temperatūros ir drėgmės jutiklis. Stebėjimui aš naudoju „Gnuplot“, norėdamas sudaryti tris temperatūros grafikus ir sukurti šių grafikų vaizdą. Tada sukūriau specialų HTML puslapį, kuris bus priglobtas „Raspberry pi“, todėl dabartines sąlygas, tuos „gnuplot“išvesties vaizdus, galima stebėti iš mūsų tinklo tinklalapio. Įspėjimui pasirinkau naudoti „Gmail“. „Linux User“žurnale radau kodo pavyzdį. (Žinoma, žinodami būtinas uosto priskyrimus, galite naudoti bet kurį pašto serverį.) Tam aš sukūriau specialią „Gmail“el. Pašto paskyrą šiems įspėjimams. Taip pat kaip papildoma funkcija, kai buvo suaktyvintas įspėjimas, prie el. Laiško pridedu vieną diagramą, kad el. Laišką gaunantis asmuo galėtų suprasti, kaip smarkiai padidėjo įspėjimas.

1 žingsnis: Aparatūros sąranka

Aparatūros sąranka
Aparatūros sąranka

Techninės įrangos nustatymui nėra daug. „Raspberry pi“veikia „Raspian“, o USB temperatūros jutiklis tiesiog prijungiamas tiesiai prie vieno iš USB prievadų. Šio jutiklio energijos suvartojimas yra minimalus, todėl maitinau jį tiesiai iš „Raspberry pi“. Tačiau naudojant USB maitinamus įrenginius, kurių energijos suvartojimas yra šiek tiek didesnis, rekomenduočiau juos maitinti per maitinamą USB šakotuvą, o ne tiesiai iš „Raspberry pi“USB prievado. Įjungus temperatūros jutiklį, jis pateikia nuoseklią eilutę, kurioje yra temperatūra ir dabartinių sąlygų drėgmės rodmenys. temperatūra = 20,9 ° C drėgmė = 62,7% rasos taškas = 13,0 ° CA python scenarijus analizuoja šią eilutę ir kas penkias minutes saugo temperatūros ir drėgmės vertes į tris tekstinius failus; kasdien, 24 valandas ir 48 valandas teksto failai (skirtumai bus aptarti vėliau HTML skiltyje). Iš šių failų „Gnuplot“sukurs diagramas ir vėliau kiekvieno failo duomenų rinkinio vaizdus. Prieš aptardamas python scenarijų, pakalbėsiu apie Raspberry pi paruošimą. Kadangi stebėjimas turi būti atliekamas internetu, reikia įdiegti žiniatinklio serverį. Aš keletą kartų išbandžiau „Raspberry pi“, tačiau, nors ir šiek tiek didelis, man labiau patinka „Apache“. Norėdami įdiegti „Apache“savo „Raspberry pi“, tiesiog įveskite: sudo apt-get install apache2 Prieš diegiant bus pateikta raginimas, paspauskite „y“, kad patvirtintumėte, ir „Apache“bus įdiegta kelias minutes, priklausomai nuo jūsų „Raspberry pi“. baigtas, turite įdiegti du „python“papildinius: „python-serial“ir „python-gnuplot“kištuką. (Nors supratau, kad naujausiose „Raspian“versijose yra „python“serijos papildinių standartas, bet tik tam, kad būtų saugu.) Norėdami įdiegti tuos, kuriuos įvedate: sudo apt-get install python-serial python-gnuplot Dar kartą patvirtinę raginimus, -bus įdiegta. Ir su tuo aparatūros sąranka baigta.

2 veiksmas: programinės įrangos sąranka - el. Pašto sąranka ir gavėjai

Prieš įsitraukdami į programinę įrangą, dabar būtų tinkamas laikas sukurti „Gmail“paskyrą, iš kurios būtų siunčiami jūsų el. pašto įspėjimai. (Šiame pavyzdyje naudojamas „GMail“, tačiau žinant smtp prievado nustatymus galima naudoti bet kurį pašto serverį.) „Python“kodas yra gana paprastas, tačiau būtinas importas. Be jų niekas neveiks. Nuo laiko importas *importavimo laikas importas serijinis importas smtplib importas „Gnuplot“importas os importas Žinoma, turime pridėti el. Laiško gavėjus. Kiekvienas el. Pašto adresas išsaugomas kintamajame.

3 žingsnis: Programinės įrangos sąranka - nuosekli sąranka ir analizė

Toliau žiūrime į serijinę sąranką. Tai tik parametrų nustatymas, atitinkantis serijinę išvestį iš jutiklio. Jutiklis išleidžia serijinę eilutę esant 9600 8 N 1 standartiniam formatui. Po to, kai eilutė buvo gauta, yra keli būdai, kaip išanalizuoti šią eilutę „python“ir galbūt patikimiau. Aš tai darau tai, kad serijinėje eilutėje ieškau „temp“simbolių. Kai jis bus rastas, tiesiog reikia perskaityti kitus 46 nuoseklius simbolius į eilutę. Dabar surinkta eilutė gali būti adresuojama kaip masyvo elementai. Norimi duomenys išanalizuojami iš eilutės ir išsaugomi trijuose failuose kartu su atitinkama laiko žyma.timestamp = strftime ("%d%b%Y%H:%M:%S", vietos laikas ())

4 žingsnis: Programinės įrangos sąranka - „Gnuplot“

Programinės įrangos sąranka - „Gnuplot“
Programinės įrangos sąranka - „Gnuplot“
Programinės įrangos sąranka - „Gnuplot“
Programinės įrangos sąranka - „Gnuplot“
Programinės įrangos sąranka - „Gnuplot“
Programinės įrangos sąranka - „Gnuplot“

„Gnuplot“yra komandinės eilutės grafinis įrankis. Kai suprasite pagrindus, tai gali būti gana galingas įrankis grafiniam duomenų rinkinių rodymui. „Gnuplot“gali brėžti tiesiai iš suformatuoto teksto failo, o mes tiesiog turime vieną iš ankstesnio analizavimo veiksmo. Gnuplot nurodę, kur faile yra duomenys, galime nubraižyti norimas reikšmes. Aš panaudosiu laiką X ašyje ir mūsų temperatūrą Y ašyje. Skaičiuoti laiką iš mano patirties yra sunkiausia, nes jūs turite gauti laiko formatą „gnuplot“, kad jis atitiktų teksto failo formatą. Kai visos grafiko parinktys bus baigtos ir jūsų pageidavimai, „Gnuplot“gali sukurti šios diagramos vaizdą. Tai bus vaizdas, kurį vėliau naudosime savo tinklalapyje. Aš nusprendžiau naudoti-p.webp

5 veiksmas: programinės įrangos sąranka - slenksčio nustatymas ir el

Įspėjimo slenkstis turi būti nustatytas bandant ir klaidingai. patalpoje, kurioje yra sistemos, nėra langų, todėl sustojus oro kondicionieriui jis gali labai greitai įkaisti. Iš pradžių keletą dienų žiūrėjau į duomenų rinkinį ir stebėjau temperatūros svyravimus, kol nusprendžiau apie įspėjimo vertę 30 laipsnių C. Tai nustatoma kaip kintamasis python scipt. Tai gali atrodyti ne per daug, tačiau suaktyvinus įspėjimą vis tiek norite skirti laiko problemai išspręsti, kol ji tampa kritiška.

Paprastumo dėlei siunčiu atskirus el. Laiškus į adresatų sąrašą. Kadangi adresatų sąrašas yra trumpas, aš niekada nesivarginau išsiųsti vieno el. Laiško keliems gavėjams. Čia reikia atkreipti dėmesį į vieną dalyką: kadangi aš naudoju šį scenarijų kaip „cron“užduotis kas 5 minutes, jūs nenorite siųsti el. Laiškų kas 5 minutes, kai tik suaktyvinama riba. Kad tai išvengčiau, į failą įrašau įspėjimo datą ir laiką ir prieš siųsdamas el. Laiškus patikrinu šį failą, norėdamas pamatyti, ar sistema jau yra įspėjimo būsenos. Kai būsite įspėjamojoje būsenoje, el. Laiškas bus siunčiamas tik kas valandą po pirmojo paleidimo, kol sistema yra ir įspėjimo būsena. Tokiu būdu „Gmail“netrukdo jūsų el. Laiškams per trumpą laiką išsiųsti per daug el. Laiškų.

6 veiksmas: programinės įrangos sąranka - HTML

Visos sistemos stebėjimas atliekamas per tinklalapį ir tam reikalingas labai paprastas html scenarijus. Gnuplot sukurti vaizdai tiesiog naudoju tuos pačius vaizdo matmenis. Manau, kad peržiūrėjau maždaug 3 šių vaizdų dydžius, kurie geriausiai atitiko mano ekraną. Prieš kurdami html scenarijų, sukurkime jam aplanką. Pagal numatytuosius nustatymus žiniatinklio prieglobos aplankas yra adresu/var/www/. Nors šis vienintelis „Raspberry pi“tikslas yra stebėti šį kambarį ir siųsti įspėjimus el. Paštu, norėdamas gerai išlaikyti namus, sukūriau atskirą aplanką/var/www/aplanke. Kadangi šis aplankas priklauso pagrindiniam vartotojui, turite naudoti sudo, kad sukurtumėte aplanką. Sudo mkdir/var/www/Temperature Šis kelias saugomas kintamajame „python“scenarijuje. Net jei prieglobos vieta turi būti pakeista arba scenarijus turi būti pakeistas kitai sistemai, jis gali būti tiesiog pakeistas iš šios vienos vietos. Dabar mes galime sukurti savo html scenarijų šiame aplanke, nepamiršdami naudoti sudo prieš visas komandas nori vykdyti čia. Rekomenduočiau pavadinti html scenarijų „index.html“, nes tai supaprastintų bandant rasti šį puslapį. Svarbiausia yra įsitikinti, kad vaizdo dydis yra toks pat kaip „Gnuplot“vaizdo dydis. Norėdami peržiūrėti šį puslapį, jūs tiesiog turite įvesti „Raspberry Pi“IP adresą, po to /temperatūrą (arba kaip jūs kada nors pavadinote savo aplanką). Turiu kelias sistemas, kurios stebi skirtingus dalykus, ir jos visos pateikia tam tikrą grafinį rezultatų rezultatą. Taigi sukūriau puslapį, kuriame yra nuorodos į visus šiuos puslapius, todėl man nereikia jaudintis, kad kiekvieną kartą norėdamas pasiekti šiuos puslapius įvesiu adresą.

7 žingsnis: aš gyvas …

Aš naudoju tai kompiuterių kambario temperatūrai stebėti, tačiau tai galėjo būti beveik bet kokio šaltinio duomenys. Kai jį galima išsaugoti teksto faile ir žinote, kad jo formatas „Gnuplot“gali padaryti visa kita. Vienas dalykas, kurį neseniai pridėjau prie šio projekto, yra atsiųsti „širdies plakimo“el. Laišką. Tai yra mėnesio pirmąją, 9 val., Turiu scenarijų, kuris paleidžiamas el. Paštu adresatų sąrašui, kad jie žinotų, jog sistema veikia taip, kaip turėtų, ir kambaryje viskas gerai.

Naudojant „cronjob“sąrašą:

Rekomenduojamas: