Tartalomjegyzék:

Raspberry Pi vezérelt szobahőmérséklet -figyelés Gnuplot képkimenettel és e -mail riasztási képességgel: 7 lépés
Raspberry Pi vezérelt szobahőmérséklet -figyelés Gnuplot képkimenettel és e -mail riasztási képességgel: 7 lépés

Videó: Raspberry Pi vezérelt szobahőmérséklet -figyelés Gnuplot képkimenettel és e -mail riasztási képességgel: 7 lépés

Videó: Raspberry Pi vezérelt szobahőmérséklet -figyelés Gnuplot képkimenettel és e -mail riasztási képességgel: 7 lépés
Videó: A Raspberry Pi szenzorai - Iskolatévé, Raspberry Pi: 3. rész 2024, Június
Anonim
Raspberry Pi vezérelt szobahőmérséklet -figyelés Gnuplot képkimenettel és e -mail riasztási lehetőséggel
Raspberry Pi vezérelt szobahőmérséklet -figyelés Gnuplot képkimenettel és e -mail riasztási lehetőséggel

Ahol dolgozom, van egy nagyon fontos szoba, ahol sok számítógép található. A helyiség környezeti hőmérsékletének nagyon hidegnek kell lennie, hogy optimalizálja ezen rendszerek teljesítményét. Arra kértek, hogy hozzon létre egy felügyeleti rendszert, amely képes valamilyen riasztást küldeni néhány embernek, akik értesítik őket arról, hogy valami nincs rendben a helyiség légkondicionálójával. Ennek a konstrukciónak a hardvere, a Raspberry pi -t használtam és USB hőmérséklet- és páratartalom -érzékelő. A monitorozáshoz a Gnuplot segítségével három hőmérsékleti gráfot rajzoltam, és ezekből grafikonokat készítettem. Ezután létrehoztam egy dedikált HTML -oldalt, amely a Raspberry pi -n lesz tárolva, így a jelenlegi feltételek, azok a gnuplot kimeneti képek, nyomon követhetők a hálózatunk egyik weboldaláról. Riasztásként a Gmailt választottam. Egy példakódot találtam egy Linux felhasználói folyóiratban. (Természetesen bármilyen levelezőszervert használhat, amint tudja a szükséges portkiosztásokat.) Ehhez létrehoztam egy külön Gmail e -mail fiókot ezekhez a riasztásokhoz. Szintén hozzáadott funkcióként, amikor egy riasztás aktiválódott, csatolok egy grafikont az e -mailhez, hogy az e -mailt fogadó személy képet kaphasson arról, hogy milyen drasztikus növekedés okozta a riasztást.

1. lépés: A hardver beállítása

A hardver beállítása
A hardver beállítása

Nincs sok dolga a hardver beállításának. A Raspberry pi Raspian -t futtat, és az USB hőmérséklet -érzékelő egyszerűen közvetlenül az egyik USB -porthoz csatlakozik. Ennek az érzékelőnek az energiafogyasztása minimális, és ennek eredményeként közvetlenül a Raspberry pi -ről tápláltam. Azonban egy kicsit nagyobb energiafogyasztású USB -eszközök esetén azt javaslom, hogy tápellátott USB -elosztón keresztül, és ne közvetlenül a Raspberry pi USB -portjáról táplálják őket. Ha a hőmérséklet -érzékelő be van kapcsolva, soros karakterláncot biztosít, amely tartalmazza a hőmérsékletet és a páratartalom leolvasása az aktuális körülmények között. hőmérséklet = 20,9 ° C páratartalom = 62,7% harmatpont = 13,0 ° CA python szkript elemzi ezt a karakterláncot, és öt percenként három szövegfájlba tárolja a hőmérséklet és a páratartalom értékeit; napi, 24 órás és 48 órás szövegfájlok (A különbségekről később a HTML részben lesz szó). Ezekből a fájlokból a Gnuplot generálja a grafikonokat, majd az egyes fájlokban lévő adathalmaz képeit. Mielőtt a python -szkriptről beszélnék, a Raspberry pi előkészítéséről fogok beszélni. Mivel a felügyeletet online kell elvégezni, telepíteni kell egy webszervert. Próbáltam közülük néhányat a Raspberry pi -n, de bár kicsit nagy, inkább az Apache -t részesítem előnyben. Az Apache Raspberry pi-re történő telepítéséhez egyszerűen írja be: sudo apt-get install apache2 A rendszer telepítés előtt kér egy parancsot, nyomja meg az "y" gombot az igen gomb megnyomására, és az Apache telepítése néhány perc múlva megtörténik a Raspberry pi típusától függően. kész, telepítenie kell két python beépülő modult: a python-serial és a python-gnuplot plug-int. (Bár rájöttem, hogy a legutóbbi Raspian buildek rendelkeznek a python-serial plug-in szabványgal, de csak a biztonság kedvéért.) A beírtak telepítéséhez: sudo apt-get install python-serial python-gnuplot -ins lesz telepítve. És ezzel a hardver beállítása befejeződött.

2. lépés: Szoftver beállítása - E -mail beállítás és címzettek

Mielőtt túl messzire mennénk a szoftverrel, most jó alkalom lenne létrehozni egy Gmail -fiókot, ahonnan elküldheti e -mail értesítéseit. (Ez a példa a GMail -t használja, de bármely levelezőszerver használható, ha már tudjuk az smtp port beállításait.) A python kód meglehetősen egyszerű, de a szükséges importálás kritikus. Nélkülük semmi sem működne.időtől import *import idő import soros import smtplib import Gnuplot import os import sysVégül a levelezőlista. Természetesen hozzá kell adnunk az e -mail címzettjeit. Minden e -mail cím egy változóba kerül mentésre.

3. lépés: Szoftver beállítása - Soros beállítás és elemzés

Ezután nézzük a soros beállítást. Csak az érzékelő soros kimenetének megfelelő paraméterek beállításáról van szó. Az érzékelő soros karakterláncot ad ki 9600 8 N 1 -es szabványos formátumban. A karakterlánc beérkezése után többféle módon elemezheti ezt a karakterláncot pythonban, és valószínűleg megbízhatóbban. Én így szoktam keresni a "temp" karaktereket a soros karakterláncban. Miután megtalálta, egyszerűen csak a következő 46 soros karaktert kell beolvasnia egy karakterláncba. Az összegyűjtött karakterlánc mostantól a tömb elemeiként címezhető. A kívánt adatokat elemzi a karakterlánc, és elmenti a három fájlba a megfelelő időbélyegzővel együtt. Időbélyeg = strftime ("%d%b%Y%H:%M:%S", helyi idő ())

4. lépés: Szoftver telepítése - Gnuplot

Szoftver telepítése - Gnuplot
Szoftver telepítése - Gnuplot
Szoftver telepítése - Gnuplot
Szoftver telepítése - Gnuplot
Szoftver telepítése - Gnuplot
Szoftver telepítése - Gnuplot

A Gnuplot egy parancssori grafikus eszköz. Miután kitalálta az alapokat, nagyon hatékony eszköz lehet az adathalmazok grafikus megjelenítésére. A Gnuplot közvetlenül formázott szövegfájlból rajzolhat, mi pedig véletlenül rendelkezünk az előző elemzési lépéssel. Miután jeleztük a gnuplot számára, hogy a fájlban hol találhatók az adatok, ábrázolhatjuk a kívánt értékeket. Az időt fogom használni az X tengelyen és a hőmérsékletünket az Y tengelyen. Tapasztalataim szerint az idő ábrázolása a legnehezebb, mivel meg kell szereznie a gnuplot időformátumát, hogy megfeleljen a szövegfájl formátumának. Miután a grafikonok elkészültek, és az Ön igényei szerint, a Gnuplot létrehozhat egy képet erről a grafikonról. Ezt a képet fogjuk használni később a weboldalunkon. Úgy döntöttem, hogy egy-p.webp

5. lépés: Szoftver beállítása - küszöb beállítása és e -mail küldése

A riasztás küszöbértékét a telepítés során kísérleti úton kell végrehajtani. a helyiségben, ahol a rendszerek találhatók, nincs ablak, így ha a légkondicionáló leáll, nagyon gyorsan nagyon felmelegedhet. Kezdetben néhány napig nézegettem az adathalmazt, és figyeltem a hőmérséklet ingadozásait, mielőtt a 30 fokos riasztási érték mellett döntöttem. Ez a python scipt változója. Ez nem tűnik túl magasnak, de a riasztás bekapcsolása után még időt szeretne hagyni a probléma kijavítására, mielőtt az kritikussá válik.

Az egyszerűség kedvéért egyéni leveleket küldök a levelezőlistára. Mivel a levelezőlista rövid, soha nem foglalkoztam azzal, hogy egy e -mailt több címzettnek küldtem. Egy dolgot itt kell megjegyezni: Mivel ezt a szkriptet 5 percenként cron feladatként futtatom, nem szeretné, hogy a küszöb aktiválása után 5 percenként küldjön e -mailt. Ennek kiküszöbölése érdekében beírom a riasztás dátumát és idejét egy fájlba, és e -mailek küldése előtt ellenőrzöm ezt a fájlt, hogy a rendszer már riasztási állapotban van -e. Ha riasztási állapotban van, csak az első aktiválás után óránként küldi újra az e -mailt mindaddig, amíg a rendszer be van kapcsolva és riasztási állapotban van. Így a Gmail nem gátolja meg, hogy rövid időn belül ne küldjön túl sok e -mailt.

6. lépés: Szoftver beállítása - HTML

A teljes rendszer figyelése egy weboldalon keresztül történik, és ehhez nagyon egyszerű html -szkriptre van szükség. A Gnuplot által készített képeket egyszerűen csak a kép azonos méreteit használom vissza. Úgy vélem, körülbelül 3 méreten mentem keresztül ezekhez a képekhez, amelyek a legjobban illeszkedtek a képernyőmhöz. Mielőtt létrehoznánk a html szkriptet, hozzunk létre egy mappát hozzá. Alapértelmezés szerint a web hosting mappa a/var/www/címen található. Bár a Raspberry pi egyetlen célja ennek a szobának a figyelése és e -mail értesítések küldése, a jó háztartás érdekében külön mappát hoztam létre a/var/www/mappában. Mivel ez a mappa a root felhasználóhoz tartozik, ezt a helyet a sudo használatával kell létrehozni. Ebben a példában a hőmérsékletet használtam a mappa nevének, de itt bármilyen nevet használhat, de ne feledje, mivel ezt be kell írni a címsorba az oldal megtekintéséhez. Ezt az útvonalat a python szkript egy változója tárolja. Még abban az esetben is, ha a tárhelyet meg kell változtatni, vagy a szkriptet módosítani kell egy másik rendszerhez, csak erről az egy helyről lehet megváltoztatni. Most létrehozhatjuk a html -szkriptünket ebben a mappában, emlékezve arra, hogy a parancsokat a itt akar végre hajtani. Azt javaslom, hogy a html -parancsfájlt "index.html" -nek nevezze el, mivel ez leegyszerűsítené ezt az oldalt, amikor megpróbálja megtalálni ezt az oldalt. A legfontosabb dolog az, hogy győződjön meg arról, hogy a kép mérete megegyezik a Gnuplot -ból származó kép méretével., egyszerűen be kell írnia a Raspberry Pi IP címét, majd a /hőmérsékletet (vagy a mappát) Így létrehoztam egy oldalt, amely linkeket tartalmaz ezekre az oldalakra, így nem kell attól tartanom, hogy minden alkalommal be kell írnom a címet, amikor el akarom érni ezeket az oldalakat.

7. lépés: Élek …

Ezt használtam a számítógépes szoba hőmérsékletének megfigyelésére, de ez nagyjából bármilyen forrásból származó adat lehetett. Miután a szövegfájlban tárolható, és tudja, hogy a formátuma a Gnuplot képes megtenni a többit. Az egyik dolog, amit nemrégiben hozzáadtam ehhez a projekthez, egyfajta "szívverés" e -mail küldése. Ez a hónap első napján, 9 órakor van egy szkriptem, amely fut, és e -mailben küldi el a levelezőlistát, hogy tudassa velük, hogy a rendszer megfelelően működik, és minden rendben van a szobában.

A cronjob lista használata a következőképpen:

Ajánlott: