Мазмуну:
- 1 -кадам: AWS Каттоо эсебиңизге кириңиз
- 2 -кадам: AWS IOT "нерселерин" баштоо
- 3 -кадам: AWS IOT "нерсени" каттоо
- 4 -кадам: Тастыктаманы жандандыруу
- 5 -кадам: Сиздин күбөлүгүңүзгө саясат кошуу
- 6-кадам: AWS SNS Темасы үчүн алгачкы орнотуу
- 7-кадам: Iot-role.trust.json файлын түзүү
- 8-кадам: Iot-policy.json файлын түзүү
- 9 -кадам: AWS SNS темасын түзүү (1 -бөлүк)
- 10 -кадам: AWS SNS темасын түзүү (2 -бөлүк)
- 11 -кадам: AWS SNS темасын түзүү (3 -бөлүк)
- 12 -кадам: Amazon S3 боюнча чака түзүңүз
- 13 -кадам: AWS саясатын түзүү (1 -бөлүк)
- 14 -кадам: AWS саясатын түзүү (2 -бөлүк)
- 15 -кадам: DynamoDB үчүн таблицаларды түзүү
- 16 -кадам: Roomstatus.py
- 17 -кадам: Rfid.py
- 18 -кадам: Server.py
- 19 -кадам: Telegram.py
- 20 -кадам: Livestream (camera_pi.py)
Video: Серома: Server Room Manager: 20 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Серома-бул баардыгы бир сервердик бөлмө менеджери, ал колдонуучуларга серверлердин абалын (температура жана нымдуулук), сервер бөлмөсүнүн кирүү журналдарын текшерүүгө, ошондой эле коопсуздуктун бузулушуна карата сервер бөлмөсүнүн өзүн көзөмөлдөөгө мүмкүндүк берет.
1 -кадам: AWS Каттоо эсебиңизге кириңиз
- Биздики үчүн, AWS билим берүүчү студенттик шлюз аркылуу кирдик, анткени бизде студенттин aws эсеби бар.
- Үстүнкү оң жактагы навигация менюсундагы "AWS Account" өтмөгүнө өтүңүз.
- "AWS Educate Starter Accountга өтүү" баскычын чыкылдатыңыз.
- AWS башкаруу консолуңузга кирүү үчүн Open Console.
2 -кадам: AWS IOT "нерселерин" баштоо
- AWS кызматтарынын издөө тилкесинен "AWS IoT" издеңиз.
- AWS IoT Console тактасына өтүү үчүн "Баштоо" баскычын чыкылдатыңыз, анда сиз AWS каттоо эсебиңизде катталган бардык IoT түзмөктөрүн көрө аласыз.
3 -кадам: AWS IOT "нерсени" каттоо
- Чабыттоо тилкесинде IoT "Things" башкарууга өтүңүз.
- Эгерде сизде азырынча эч нерсе жок болсо, "Бир нерсени каттоону" чыкылдатыңыз. (Эгер сизде мурунтан эле бир нерсе бар болсо, экрандын жогорку оң жагында издөө өтмөгүнүн жанындагы "Түзүү" баскычын басыңыз.)
- "Бир нерсени түзүү" деп аталган биринчи баскычты чыкылдатыңыз.
- Заттын аты катары "RaspberryPi" териңиз. Бул кадам үчүн, "Аты" башка эч кандай киргизүү талап кылынат. Муну аткаргандан кийин, кийинки баскычты басыңыз.
4 -кадам: Тастыктаманы жандандыруу
- Кийинки кадамда "сертификат түзүү" баскычын чыкылдатыңыз.
- Жүктөө жана кийинки беттеги 4 жүктөө шилтемесин жумушчу каталогго же папкага сактаңыз. Түп CA файлын сактоо үчүн, оң баскыч менен чыкылдатыңыз.
- "Жандандыруу" баскычын чыкылдатыңыз жана ийгиликтүү билдирүү пайда болот.
- Файлдар үчүн достук аталыштарды колдонуп, ар бир файл аталышынын алдындагы сандарды алып салыңыз жана CA файлынын түпнуска атын "rootca.pem" деп өзгөртүңүз.
- Улантуу үчүн "Саясат тиркөө" дегенди басыңыз.
5 -кадам: Сиздин күбөлүгүңүзгө саясат кошуу
- Кийинки бетте, эгерде сизде саясат жок болсо, алар сизден "Саясат түзүү" баскычында аны жасоону сунушташат.
- Эгерде сизде мурунтан эле бар саясат болсо, төмөндөгү "Жаңы саясат түзүү" баскычын чыкылдатыңыз.
-
Саясатты түзүү формасына төмөнкү маалыматты киргизиңиз.
Аты -жөнү: RaspberryPiSecurityPolicy
Акция: iot:*
ARN булагы: *
Effect: уруксат берүү
- Сиздин саясатыңыз "Коопсуздуктун" астындагы "Саясат" өтмөгүндө көрүнүшү керек.
- Андан кийин, "Коопсуздуктун" астындагы "Тастыктамалар" өтмөгүнө өтүңүз жана саясатыңызды мурда түзүлгөн тастыктамага тиркеңиз.
- Кийинки бетте, саясатыңызды чыкылдатып, анан "Тиркөө" дегенди басыңыз.
- Сиз түзгөн нерсенин Чоо -жайы барагында, "Өз ара аракеттенүү" өтмөгүнүн астында, көчүрүү жана сактоо керек болгон REST API акыркы чекити бар.
- AWS азыр саясатка тиркелген жана сертификаты бар нерсеге ээ болушу керек.
6-кадам: AWS SNS Темасы үчүн алгачкы орнотуу
SSH Raspberry Pi'ге киргизиңиз жана AWS CLIди төмөнкү пип буйругун колдонуп орнотуңуз:
sudo pip орнотуу awscli
AWS CLIде буйрукту аткаруу мүмкүнчүлүгү камтылган, бирок ал демейки боюнча орнотулган эмес. Raspberry Piнин CLI интерфейсине буйрукту толтуруу мүмкүнчүлүгүн орнотуу үчүн төмөнкү буйрукту колдонуңуз:
толук -C aws_completer aws
Төмөнкү буйрукту колдонуу менен AWS CLIди Access Key ID, Secret Access Key, AWS Region Name жана Command Output форматы менен конфигурациялаңыз:
aws конфигурациялоо
Андан кийин консол сизден төмөнкү маалыматты толтурууну суранат:
pi@raspberrypi: ~ $ aws конфигурациялоо
AWS кирүү ачкычынын идентификатору [None]: "Колдонуучунун кирүү ачкычынын IDсин бул жерге кой" AWS Secret Access Key [None]: "Колдонуучунун жашыруун кирүү ачкычын бул жерге кой" Демейки аймактын аты [None]: eu-central-1 Демейки чыгаруу форматы [Эч ким]: json pi@raspberrypi: ~ $
7-кадам: Iot-role.trust.json файлын түзүү
- Жогорудагы IAM саясаты менен JSON файлын файлдын аты iot-role.trust.json менен түзүңүз.
- Төмөнкү буйрукту колдонуу менен AWS CLIди колдонуп ролду түзүңүз
aws iam түзүү-ролу-ролу-менин my-iot-ролум-assume-ролу-саясаты-документ файлы: //iot-role-trust.json
8-кадам: Iot-policy.json файлын түзүү
- Жогорудагы саясат менен JSON файлын iot-policy.json файл аты менен түзүңүз.
- Төмөнкү буйрукту колдонуу менен AWS CLIди колдонуп, роль саясатын түзүңүз:
aws iam put-role-policy --role-name IoTRole --policy-name iot-policy --policy-document file: //iot-policy.json
9 -кадам: AWS SNS темасын түзүү (1 -бөлүк)
- AWS кызматтарынын издөө тилкесинен "SNS" кызматын издеңиз же https://us-west-2.console.aws.amazon.com/sns/home… дарегине өтүңүз.
- Сизде азыр темалар жок болгондуктан, теманы түзүү үчүн "Жаңы тема түзүү" дегенди басыңыз.
- Темаңыздын атын жана дисплейдин атын териңиз жана "Тема түзүү" баскычын басыңыз жана бардык кадамдар ийгиликтүү болгондо жаңы тема пайда болот.
- "Actions" ачылуучу баскычын жана "Теманын саясатын түзөтүү" дегенди басыңыз.
10 -кадам: AWS SNS темасын түзүү (2 -бөлүк)
- Саясатты баарына жарыялоого жана жазылууга уруксат берүү үчүн коюңуз, анткени бул AWSEducate эсебинин чектөөлөрү.
- Бул темага жарыяланган жаңыртууларды алуу үчүн бул темага жазылыңыз.
-
Протоколду "Электрондук почтага" өзгөртүп, электрондук почтаңызды акыркы чекитке киргизиңиз.
- Темага жазылуу үчүн электрондук почтаңызга жазылууңузду ырастоо үчүн акыркы чекитиңизди жазган электрондук почтаңызга өтүңүз.
- "AWS IoT" кызматтарына өтүңүз, сол жактагы навигация менюсунда "Акт" дегенди басыңыз. Бул баракчада сиздин эрежелериңиз көрсөтүлөт жана аларды көрүү жана түзөтүү үчүн жеткиликтүү. Учурда, IoT нерсеңиз үчүн эч кандай эреже жок, "Эреже түзүү" дегенди басыңыз.
11 -кадам: AWS SNS темасын түзүү (3 -бөлүк)
- Эрежеңиз үчүн Аты талаасына ат жазыңыз. Description талаасында эрежеңиздин сүрөттөмөсүн териңиз. Кабар булагы бөлүмүнө өтүү менен, "SQL версиясын колдонуу" бөлүмүндө эң жаңыртылган SQL версиясын тандап алмакпыз. Темадан MQTT билдирүүсүн толугу менен тандоо үчүн атрибутка * териңиз, биздин учурда биздин тема “TempHumid”.
- Андан кийин эрежеңиз үчүн "SNS" билдирүү аракетин кошуңуз. Андан кийин, "Аракетти конфигурациялоо" баскычын чыкылдатыңыз.
- "Аракетти конфигурациялоо" барагынан, сиз жаңы эле жараткан SNS темасын жана билдирүүнүн форматын RAW катары тандаңыз. Андан кийин, AWS CLIди колдонуп түзгөн ролуңузду тандап, "Аракет кошуу" баскычын чыкылдатыңыз.
- Сиздин аракетиңиз конфигурацияланат жана "Эреже түзүүгө" кайтат.
- Эрежени түзөткүңүз келсе, түзөтүүнү басыңыз.
12 -кадам: Amazon S3 боюнча чака түзүңүз
- AWS издөө тилкесинен S3 издеңиз.
- Amazon S3 барагында, баштоо үчүн "Челекти түзүү" баскычын чыкылдатыңыз.
-
Төмөнкү маалыматтар менен пайда болгон калкыма форманы толтуруңуз:
- Челектин аталышы: серома-чака (бул Amazon S3 чакаларынын бардыгында уникалдуу болушу керек)
- Аймак: АКШ Батыш (Орегон)
- Көчүрүү Орнотуулары: (Көрмөксөн)
- 2-3 -кадамдар үчүн жөн гана "Кийинкини" чыкылдатып өткөрүп жибергиле, анткени эч нерсе өзгөрбөйт. 4 -кадамда, "Челекти түзүү" баскычын чыкылдатыңыз.
- Түзүлгөндөн кийин, сиз чакаңызды башкы бетте көрүшүңүз керек.
13 -кадам: AWS саясатын түзүү (1 -бөлүк)
- Жогорудагы баракчага кирүү үчүн жараткан чакаңызды чыкылдатыңыз, андан кийин "Уруксаттар" өтмөгүнүн астындагы "Челек саясатына" өтүңүз.
- Андан кийин, AWS саясатын түзүү үчүн барактын ылдый жагындагы "Саясат генератору" шилтемесин чыкылдатыңыз.
-
Формага төмөнкү баалуулуктарды киргизиңиз:
- Саясаттын түрү: S3 чака саясаты
- Effect: уруксат берүү
- Башкы: *
- AWS кызматы: Amazon S3
- Иш -аракеттер: GetObject
- Amazon Resource Name (ARN): arn: aws: s3::: seroma-bucket
- Маалыматты толтургандан кийин, билдирүү кошууну чыкылдатыңыз.
- "Саясат түзүү" баскычын чыкылдатыңыз.
14 -кадам: AWS саясатын түзүү (2 -бөлүк)
- Жасалган коддорду көчүрүп, жабууну басыңыз.
- Amazon S3 Bucket Policy редакторуңузга кайтыңыз жана мурун көчүрүлгөн коддорду чаптаңыз.
- Жогорудагы сүрөттөгүдөй, Ресурс коддорунун артындагы коддорго "/*" кошуңуз, анан Сактоону басыңыз.
- Ушуну аткаргандан кийин, чакаңыз ийгиликтүү орнотулат жана колдонууга даяр болот.
15 -кадам: DynamoDB үчүн таблицаларды түзүү
- AWS Services издөө тилкесинен DynamoDB издеңиз
-
"Таблица түзүү" баскычын чыкылдатып, төмөндөгү маалымат менен 3 таблицаны түзүңүз: ("Таблицанын аты" жана "негизги ачкыч” гана өзгөртүлөт)
- accesslog, pk datetimevalue
- roomstatus, pk datetimevalue
- staffdata, pk колдонуучунун аты
16 -кадам: Roomstatus.py
Бул бөлүмдө roomstatus.py коду камтылган, анда сервер бөлмөсүнүн өзүнө тиешелүү бардык маалыматтар мүнөт сайын жазылып турат. Бул температураны, нымдуулукту, кыймылды (эгер сүрөттөр жана видеолор чын болсо) жана кирүү журналдарын камтыйт. Ал ошондой эле Google Spreadsheetке маалыматтарды, DynamoDBге маалыматтарды, сүрөттөрдү жана видеолорду (эгер бар болсо) S3кө жазат, маалыматты ЖК экранда көрсөтөт, бузулган деп шектелгенде же температура же нымдуулук бир калыпта болгондо SMS жана электрондук кат жөнөтөт..
Python файлдарын иштетүү үчүн, каталогду файл жайгашкан жерге өзгөртүп, консолго териңиз: "sudo python"
Pic 2: SMS жана Email эскертүүлөрүнө уруксат берүү жана S3кө жүктөө үчүн жарыяланган функциялар
Сүрөт 3: Функциялар жана RPi иштөө үчүн жарыяланган өзгөрмөлөр
Pic 4: RPiден температура жана нымдуулук баалуулуктарын алган циклдин башталышы. Ал ошондой эле маалыматты Google электрондук таблицасына жазат
Сүрөт 5: Циклдин коопсуздук бөлүгү. Ал саат 7ден таңкы 7ге чейин (өчүрүү сааттары) активдешет. Ал бир мүнөттүн ичинде кыймыл үчүн текшерет. Эгерде кыймыл аныкталса, анда ал сүрөттү жана видеону алат, аны S3кө жүктөйт, кийинчерээк маалымат үчүн DynamoDBге маалымат жазат. Андан кийин, эгерде бир нерсе туура эмес болсо, ал SMS жана электрондук кат жөнөтөт.
6 -сүрөт: Циклдин аягы. Ошондой эле DynamoDBге маалыматтарды жазат жана ошого жараша эскертүүлөрдү жөнөтөт. Укуруктун акыркы сабы скриптти кийинки мүнөткө жеткенче уктатат.
17 -кадам: Rfid.py
Бул бөлүмдө rfid.py коду камтылган, ал кызматтын мүчөсү сервер бөлмөсүнө киргенде байкоо жүргүзүү функциясын кошот. Бул ошондой эле маалыматтын бузулушуна жол бербөө үчүн, кызмат убактысынан кийин сервердин бөлмөсүнө кирүүгө уруксат берилбеген Сероманын коопсуздук аспектинин бир бөлүгү. Ошондой эле, эгерде кандайдыр бир бузуу деп шектелген болсо, бардык кызматкерлерге электрондук кат жана SMS жөнөтөт.
2 -сүрөт: RFID окурмандарынын логикасынын башталышы. Карт окурманга каршы сканерленгенде, карттын уникалдуу идентификатору (uid) алынат. Кийинчерээк, карта кызматкерлеринин бирине таандык экенин билиш үчүн, штаттык маалымат таблицасынан карттын колдонуучу наркын табууга аракет кылабыз. Сүрөт 3: Эгерде карттын колдонмосу маалымат базасында бар болсо, анда ал кызмат учурунда болгонун текшерет. жумуштан тышкары Эгер ошондой болсо, анда ал калган кызматкерлерди SMS жана электрондук почта аркылуу жазылган электрондук почта даректерине эскертет. Эгерде ал дагы эле иш убактысында болсо, анда ал маалыматтар базасындагы accesslog столуна тиешелүү маалыматтарды камтыган сап жазат. Ал ошондой эле ЖК дисплейде саламдашуу билдирүүсүн көрсөтөт.
18 -кадам: Server.py
Бул server.py файлы. Веб -портал үчүн Flask алкагын колдонобуз. HTML файлдары /шаблондорго тиркелет.
Сүрөт 1: Колбанын биринчи жолу аныкталган. Бул колдонуучу кире элек болсо, аны кирүү барагына, ал эми эгерде алар панелдин баракчасына багыттайт. Ошондой эле түз эфирде колдонула турган функцияны аныктайт
Сүрөт 2, 3, 4: Колбанын маршруттары. Бул DynamoDB таблицасынан маалыматтарды алат, анан аларды HTML файлдарына кайтарат, ошондо алар ошол жерде колдонулушу мүмкүн.
Сүрөт 5: Колбанын акыркы 2 жолу. Бул чыгуу функциясын жана түз эфир функциясын башкарат. Ал ошондой эле веб -сайт иштей турган портту көрсөтөт.
19 -кадам: Telegram.py
Бул бөлүм Seroma телеграмма ботунун кодун камтыйт. Бул телеграф китепканасын Telegramдын Bot API'син таптоо үчүн колдонот. Ал алган сурамдарды кабыл алуу жана тиешелүү маалыматты колдонуучуга көрсөтүү менен иштейт. Колдонуучу буйруктардын толук тизмеси үчүн "жардам" тере алат.
Сүрөт 1, 2: Телеграмма ботун орнотуу үчүн BotFather колдонушуңуз керек. Жөн гана нускамаларды аткарып, биздин кодго керектүү HTTP APIсин алыңыз.
Сүрөт 4: Колдонуучунун өтүнүчүнүн негизинде маалымат базасынан белгилүү бир катар маалыматтарды алып турган функциянын мисалы
Pic 5: Колдонуучунун маалыматын кантип кабыл алабыз жана ошого жараша иштөөнү чечебиз.
20 -кадам: Livestream (camera_pi.py)
Биз сервердик бөлмөбүздүн мониторинг системасы үчүн жаңы мүмкүнчүлүктү киргиздик, бул Сервер бөлмөсүндө болуп жаткан нерселердин түз агымы, буга каалаган убакта, каалаган жерден кирүүгө болот. Бул түз агым кандайча иштейт: Бул Фласкта, Pi Camera менен бирге жасалган өзгөчөлүк. Видео жээкчелер реалдуу жашоодо болуп жаткандай жүктөлөт, андыктан видео кадрлар жүктөлүп, бириктирилгендиктен, бир аз кечигүү (1-2 секунд) бар экенин көрө аласыз. Муну жипсиз жасоо мүмкүн эмес, анткени фондук жип камерадан кадрларды окуйт жана учурдагы кадрды сактайт. Бул кадрлардын бардыгын бириктирүү түз агымды чыгарат.
Pic 2: Бул өзүнчө файл, ал жерде бардык видео кадрлар сакталат жана сиз көрүп тургандай, биз малина пи камерабызга кирүү үчүн пикамера модулун колдонуп жатабыз. Бизде Камера классы бар, ал функцияны түз агым сыяктуу импорттоо үчүн эмес, бир нече сүрөттөрдү бириктирет, демек, негизги тиркеме файлында көшөгөнүн артында эмне болуп жатканын ойлобой эле түз агым катары кабыл алмак.
Pic 3: Бул биздин server.py файлынын бир бөлүгү, анда түз агымдын бөлүгү коддолгон. Бул үчүн биз импорттогон негизги класс бул server.py файлынын үстүндөгү биздин camera_pi.py файлынан Камера. Биз функцияны ген каталогубузда аныктадык, бирок ал биздин түз агым турган /video_feedге өткөндө гана колдонулат, ал бул функция аркылуу айланып, веб -баракчадагы түз агымды кайтарат.
Сунушталууда:
Hands Free Room Lights Control: 10 кадам
Hands Free Room Lights Control: Тасмадагыдай " Миссия мүмкүн эмес " дейт " Айласы кеткен убакта үмүтсүз чараларды талап кылат " 10 -класста окуган инимде өчүргүчтөрдүн ордуна телефондун жардамы менен ашкананын жарыгын көзөмөлдөө идеясы пайда болду
Hands-Free Room: 8 кадам
Hands-Free Room: Саламатсызбы менин атым Аврох мен 6-класска кирип жатам. Мен муну бөлмөгө кирүүнүн жана чыгуунун эң сонун жолу болууга үйрөттүм. Бирок программалоого жана кимдир бирөө кирип жаткандыгын сезүүгө мүмкүнчүлүгүм жок болчу. Ошентип, бөлмөнү тырмап алдым
Escape Room Codegenerator: 4 кадам
Escape Room Codegenerator: Эч нерсе жок болгондуктан, бул машина машина менен жабылганда, качып кетүү бөлмөсүндө начарлайт. Ван -дезе машинасы - бул эшиктин друккени, бул сиздин колуңуздун чөнтөгүндө, бул жерде
Server Room Monitor: 4 кадам
Server Room Monitor: Сервердик бөлмөнүн көйгөйлөрүнүн бири - бул температура. Жылуулукту чыгаруучу ар кандай жабдуулар менен бул тез көтөрүлөт. Ал эми кондиционер иштебей калса, ал баарын тез токтотот. Бул жагдайларды алдын ала айтуу үчүн биз бир нече чөйрөнүн бирине ээ боло алабыз
PassPen (Arduino Password Manager): 4 кадам
PassPen (Arduino Password Manager): Бул менин PassPen долбоорум. кичинекей ардуино наносу мени мектептеги компьютерлерге киргизет. Бул сырсөздөрдү басып чыгарардан мурун кулпулоого уруксат берүүчү пинге ээ болгон баскычтар менен иштелип чыккан кичинекей ПХБ менен жасалган