Мазмұны:

Raspberry Pi бақыланатын бөлме температурасын Gnuplot кескіні мен электрондық поштаны ескерту мүмкіндігімен бақылау: 7 қадам
Raspberry Pi бақыланатын бөлме температурасын Gnuplot кескіні мен электрондық поштаны ескерту мүмкіндігімен бақылау: 7 қадам

Бейне: Raspberry Pi бақыланатын бөлме температурасын Gnuplot кескіні мен электрондық поштаны ескерту мүмкіндігімен бақылау: 7 қадам

Бейне: Raspberry Pi бақыланатын бөлме температурасын Gnuplot кескіні мен электрондық поштаны ескерту мүмкіндігімен бақылау: 7 қадам
Бейне: Home Assistant. Урок 1.0 - Самый простой способ установки на Raspberry PI 4B, первые настройки, HACS 2024, Қараша
Anonim
Raspberry Pi бақыланатын бөлме температурасын Gnuplot шығысымен және электрондық поштаны ескерту мүмкіндігімен бақылау
Raspberry Pi бақыланатын бөлме температурасын Gnuplot шығысымен және электрондық поштаны ескерту мүмкіндігімен бақылау

Мен жұмыс істейтін жерде көптеген компьютерлер орналасқан өте маңызды бөлме бар. Бұл жүйенің жұмысын оңтайландыру үшін бөлмедегі ауа температурасы өте салқын болуы керек. Маған бірнеше адамға ескертудің қандай да бір түрін жібере алатын, сол бөлмедегі кондиционермен бірдеңе дұрыс емес екенін хабарлауға мүмкіндік беретін бақылау жүйесін ойлап табуды сұрады. және USB температура мен ылғалдылық сенсоры. Бақылау үшін мен Gnuplot көмегімен үш температуралық графикті құрдым және сол графиктердің кескінін жасадым. Содан кейін мен Raspberry pi -де орналастырылатын арнайы HTML бетін жасадым, сондықтан қазіргі шарттарды, сол gnuplot шығыс суреттерін біздің желідегі веб -беттен бақылауға болады. Мен Linux User журналында кейбір кодты таптым. (Әрине, сіз портты тағайындауды білгеннен кейін кез келген пошта серверін пайдалана аласыз.) Ол үшін мен осы ескертулер үшін арнайы Gmail электрондық пошта тіркелгісін жасадым. Сондай -ақ, қосымша мүмкіндік ретінде, ескерту басталған кезде, мен электрондық поштаға бір графикті тіркеймін, осылайша электрондық поштаны алатын адам бұл ескертуді тудырған күрт өсу туралы түсінік алады.

1 -қадам: Жабдықты орнату

Аппараттық қондырғы
Аппараттық қондырғы

Жабдықты орнатудың көп қажеті жоқ. Raspberry pi Raspian жұмыс істейді және USB температура сенсоры USB порттарының біріне тікелей қосылады. Бұл сенсордың қуаты аз, сондықтан мен оны тікелей Raspberry pi -ден қуаттандырдым. Дегенмен, аз қуат тұтынатын USB құрылғылары үшін мен оларды Raspberry pi USB портынан емес, қуатты USB хабы арқылы қосуды ұсынамын. Температура сенсоры қосылғаннан кейін ол температура мен ылғалдылық көрсеткіштері. температура = 20,9 ° C ылғалдылық = 62,7% шық нүктесі = 13,0 ° CA python скрипті бұл жолды талдайды және температура мен ылғалдылық мәндерін әр бес минут сайын үш мәтіндік файлға сақтайды; күнделікті, 24 сағаттық және 48 сағаттық мәтіндік файлдар (айырмашылықтар кейін HTML бөлімінде талқыланады). Бұл файлдардан Gnuplot графиктерді және кейіннен әр файлдағы мәліметтер жиынтығының суреттерін жасайды. Питон сценарийін талқыламас бұрын мен Raspberry pi дайындау туралы сөйлесетін боламын. Мониторинг онлайн режимінде жүргізілетіндіктен, веб -серверді орнату қажет. Мен олардың бірнешеуін өз уақытында Raspberry pi -де сынап көрдім, бірақ ол үлкен болса да, мен Apache -ді жақсы көремін. Apache-ді Raspberry pi-ге орнату үшін жай ғана теріңіз: sudo apt-get install apache2 Ол сізге орнатпас бұрын нұсқау береді, «y» түймесін басыңыз, ал Apache сіздің Raspberry pi-ге байланысты бірнеше минут ішінде орнатылады. Аяқталғаннан кейін сізге екі питон қосылатын модульді орнату қажет: python-serial және python-gnuplot штепселі. (Мен соңғы Raspian конструкцияларында питон сериялы қосылатын модуль стандарты бар екенін түсіндім, бірақ қауіпсіз болу үшін.) Сіз енгізетіндерді орнату үшін: sudo apt-get install python-serial python-gnuplotOnce шақыруларды растағаннан кейін қайтадан. -кірістер орнатылады. Және осымен аппараттық қондырғы аяқталды.

2 -қадам: Бағдарламалық қамтамасыз етуді орнату - электрондық поштаны орнату және алушылар

Электрондық пошта мекенжайын жасаңыз Бағдарламалық жасақтамаға тым жақын кірмес бұрын, электрондық пошта ескертулерін жіберу үшін Gmail есептік жазбасын құруға жақсы уақыт болар еді. (Бұл мысалда GMail пайдаланылады, бірақ smtp порт параметрлерін білгеннен кейін кез келген пошта серверін пайдалануға болады) Питон коды өте қарапайым, бірақ қажетті импорт маңызды. Оларсыз ештеңе жұмыс істемейді. Уақыт импортынан *импорттық уақыт импорттық сериялық импорт smtplib импорт Gnuplot импорт os импорт жүйесінде Ақырында, тарату тізімі. Әрине, электрондық поштаны алушыларды қосу керек. Әр электрондық пошта мекенжайы айнымалы мәнде сақталады.from_address ='[email protected]'to_address1 = 'алушы1.mail.com' to_address2 = 'алушы2.mail.com'username =' [email protected] 'пароль =' custom_email_password '

3 -қадам: Бағдарламалық қамтамасыз етуді орнату - сериялық орнату және талдау

Әрі қарай, біз сенсордың сериялық шығысына сәйкес келетін параметрлерді орнату туралы ойлаймыз. Сенсор стандартты форматтағы 9600 8 N 1 сериялық жолды шығарады. Жолды алғаннан кейін бұл жолды питонда талдаудың бірнеше әдісі бар және, мүмкін, сенімді. Мұны істеу әдісі - сериялық жолдағы «temp» таңбаларын іздеу. Орналасқаннан кейін келесі 46 сериялық таңбаны жолға оқу ғана қалады. Жиналған жолды енді массив элементтері сияқты шешуге болады. Қажетті деректер жолдан алынады және оған сәйкес уақыт белгісімен бірге үш файлға сақталады. Timestamp = strftime («%d%b%Y%H:%M:%S», жергілікті уақыт ())

4 -қадам: Бағдарламалық қамтамасыз етуді орнату - Gnuplot

Бағдарламалық қамтамасыз етуді орнату - Gnuplot
Бағдарламалық қамтамасыз етуді орнату - Gnuplot
Бағдарламалық қамтамасыз етуді орнату - Gnuplot
Бағдарламалық қамтамасыз етуді орнату - Gnuplot
Бағдарламалық қамтамасыз етуді орнату - Gnuplot
Бағдарламалық қамтамасыз етуді орнату - Gnuplot

Gnuplot - командалық жолдың графикалық құралы. Сіз негіздерді анықтағаннан кейін, бұл деректер жиынтығын графикалық түрде көрсетудің өте қуатты құралы бола алады. Біз gnuplot -қа деректер қайда орналасқанын көрсеткеннен кейін біз қажетті мәндерді құра аламыз. Мен X осінде уақытты және Y осінде температураны қолданамын. Менің тәжірибем бойынша уақытты жоспарлау - ең қиыны, себебі мәтіндік файлдың пішіміне сәйкес gnuplot форматындағы уақыт форматын алу қажет, барлық графикалық опциялар аяқталғаннан кейін және сіздің қалауыңыз бойынша Gnuplot осы графиктің кескінін жасай алады. Бұл кейінірек веб -бетімізде қолданылатын сурет болады. Мен-p.webp

5 -қадам: Бағдарламалық қамтамасыз етуді орнату - шекті орнату және электрондық пошта

Ескерту шегін орнату үшін сынақ және қателік арқылы жасау керек. Жүйелер орналасқан бөлмеде терезелер жоқ, сондықтан кондиционер тоқтағаннан кейін ол өте тез қызады. Бастапқыда мен бірнеше күн бойы деректер жинағына қарадым және ескерту мәнін 30 градусқа дейін шешпес бұрын температураның өзгеруін бақыладым. Бұл питон скриптінде айнымалы ретінде орнатылады. Бұл өте жоғары болып көрінбеуі мүмкін, бірақ ескерту іске қосылғаннан кейін, сіз әлі де маңызды болмай тұрып, мәселені шешуге уақыт бергіңіз келеді.

Қарапайымдылық үшін мен жеке электрондық хаттарды жіберу тізіміне жіберемін. Хабарламалар тізімі қысқа болғандықтан, мен бірнеше алушыларға бір электрондық поштаны жіберуге ешқашан алаңдамадым. Бұл жерде айта кететін бір жайт, мен бұл сценарийді cron жұмысы ретінде әр 5 минут сайын іске қосатындықтан, сіз шекті іске қосылғаннан кейін әр 5 минут сайын электрондық поштаны жібергіңіз келмейді. Мұны шешу үшін мен файлға ескертудің күні мен уақытын жазамын және кез келген электрондық поштаны жібермес бұрын осы файлды тексеремін, бұл жүйе қазірдің өзінде дабыл күйінде ме, жоқ па соны білемін. Ескерту күйінде болған кезде, ол бірінші триггерден кейін әр сағат сайын электрондық поштаны жүйеде және ескерту күйінде болғанша жібереді. Осылайша, Gmail сіздің электронды поштаңызға қысқа мерзімде тым көп электрондық поштаны жіберуге тыйым салмайды.

6 -қадам: Бағдарламалық қамтамасыз етуді орнату - HTML

Бүкіл жүйенің мониторингі веб -бет арқылы жүзеге асады және бұл үшін өте қарапайым html сценарийі қажет. Gnuplot жасаған суреттер мен тек суреттің бірдей өлшемдерін қолданамын. Менің ойымша, мен бұл суреттер үшін шамамен 3 өлшемді таңдадым, бұл менің экранымға жақсы сәйкес келеді. Html сценарийін жасамас бұрын оған қалта жасайық. Әдепкі бойынша веб -хостинг қалтасы/var/www/мекен -жайында орналасқан. Бұл Raspberry pi -дің жалғыз мақсаты - бұл бөлмені бақылау және электронды пошта ескертулерін шығару. Мен үйді жақсы ұстау үшін/var/www/қалтасында бөлек қалта жасадым. Бұл қалта түбірлік пайдаланушыға тиесілі болғандықтан, қалта жасау үшін sudo пайдалану керек - бұл орын. sudo mkdir/var/www/temperatureБұл мысалда мен қалтаның атауы ретінде температураны қолдандым, бірақ сіз бұл жерде кез келген атауды қолдана аласыз, бірақ есіңізде болсын, бұл бетті қарау үшін мекенжай жолағына енгізу қажет. Бұл жол python сценарийіндегі айнымалыда сақталады. Хостинг орнын өзгерту немесе сценарийді басқа жүйеге өзгерту қажет болса да, оны тек осы орыннан өзгертуге болады, енді біз осы қалтада html сценарийін жасай аламыз, ол сізге кез келген командалардың алдында sudo қолданады. осында орындағысы келеді. Мен сізге html сценарийін «index.html» деп атауды ұсынар едім, себебі бұл бетті табуға тырысқанда оны жеңілдетеді. Ең бастысы - суреттің өлшемі Gnuplot кескінінің өлшемімен бірдей екеніне көз жеткізу., сіз жай ғана Raspberry Pi -дің IP -мекен -жайын /температураны енгізуіңіз керек (немесе сіз қалтаңызды қалай атадыңыз) Менде әр түрлі нәрселерді бақылайтын бірнеше жүйе бар және олардың барлығы нәтижелердің графикалық шығуын шығарады. Мен осы беттердің барлығына сілтемелері бар бетті жасадым, сондықтан мен бұл беттерге кіргім келген сайын мекенжайды енгізу туралы алаңдамаймын.

7 -қадам: Мен тірімін …

Мен мұны компьютер бөлмесіндегі температураны бақылау үшін қолдандым, бірақ бұл кез -келген көзден алынған деректер болуы мүмкін. Ол мәтіндік файлда сақталуы мүмкін және сіз оның форматын Gnuplot жасай алатынын білсеңіз, қалғандарын жасай алады. Мен жақында осы жобаға қосқан бір нәрсе - «жүрек соғысы» электрондық поштасын жіберу. Бұл айдың бірінші күні таңертеңгі 9 -да менде жүйе жұмыс істеп тұрғанын және бөлмеде бәрі жақсы екенін хабарлау үшін электрондық поштаны жіберетін сценарий бар.

Cronjob тізімін келесідей пайдалану:

Ұсынылған: