
Оглавление:
- Шаг 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. Прямая трансляция (camera_pi.py)
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

Seroma - это универсальный менеджер серверной комнаты, который позволяет пользователям проверять состояние серверов (температуру и влажность), журналы доступа серверной комнаты, а также контролировать саму серверную комнату на предмет любых нарушений безопасности.
Шаг 1. Войдите в свою учетную запись AWS




- В нашем случае мы вошли в систему через шлюз AWS Educate Student, так как у нас есть учетная запись aws для студентов.
- Перейдите на вкладку «Учетная запись AWS» в меню навигации в правом верхнем углу.
- Нажмите «Перейти в свой начальный аккаунт AWS Educate».
- Откройте консоль, чтобы получить доступ к консоли управления AWS.
Шаг 2. Начало работы с "вещами" AWS IOT


- Введите слово «AWS IoT» в строку поиска сервисов AWS.
- Нажмите «Начать», чтобы перейти к панели управления Консоли AWS IoT, где вы можете просмотреть все устройства IoT, зарегистрированные в вашей учетной записи AWS.
Шаг 3. Регистрация "вещи" AWS IOT



- На панели навигации перейдите к управлению «Вещями» Интернета вещей.
- Нажмите «Зарегистрировать вещь», если у вас ее еще нет. (Если у вас уже есть вещь, нажмите кнопку «Создать» в правом верхнем углу экрана рядом с вкладкой поиска.)
- Нажмите на первую кнопку под названием «Создать одну вещь».
- Введите «RaspberryPi» в качестве названия вещи. Для этого шага не требуется никакого ввода, кроме «Имя». После этого нажмите «Далее».
Шаг 4: Активация сертификата


- На следующем шаге нажмите кнопку «Создать сертификат».
- Загрузите и сохраните 4 ссылки для загрузки на следующей странице в рабочий каталог или папку. Чтобы сохранить корневой файл CA, щелкните правой кнопкой мыши и сохраните как.
- Нажмите «Активировать», и должно появиться сообщение об успешном завершении.
- Используйте понятные имена для файлов, удалив числа перед каждым именем файла и переименовав корневой файл CA в «rootca.pem».
- Нажмите «Присоединить политику», чтобы продолжить.
Шаг 5: Добавление политики к вашему сертификату



- На следующей странице, если у вас нет политики, они предложат вам создать ее с помощью кнопки «Создать политику».
- Если у вас уже есть существующая политика, нажмите кнопку «Создать новую политику» ниже.
-
Вставьте следующую информацию в форму создания политики.
Имя: RaspberryPiSecurityPolicy
Действие: iot: *
Ресурс ARN: *
Эффект: Разрешить
- После этого ваша политика должна появиться на вкладке «Политика» в разделе «Безопасность».
- Затем перейдите на вкладку «Сертификаты», которая также находится в разделе «Безопасность», и прикрепите свою политику к ранее созданному сертификату.
- На следующей странице щелкните свою политику, а затем нажмите «Прикрепить».
- На странице «Подробности» созданного вами объекта на вкладке «Взаимодействие» есть конечная точка REST API, которую необходимо скопировать и сохранить.
- У AWS теперь должен быть Вещь, прикрепленная к политике и имеющая сертификат.
Шаг 6. Первоначальная настройка для темы AWS SNS


SSH в Raspberry Pi и установите AWS CLI, используя следующую команду pip:
sudo pip установить awscli
AWS CLI включает функцию завершения команд, но по умолчанию она не устанавливается. Используйте следующую команду для установки функции завершения команд в интерфейсе командной строки Raspberry Pi:
полный -C aws_completer aws
Настройте интерфейс командной строки AWS с идентификатором ключа доступа, секретным ключом доступа, именем региона AWS и форматом вывода команды с помощью следующей команды:
aws настроить
Затем консоль предложит вам ввести следующую информацию:
pi @ raspberrypi: ~ $ aws настроить
Идентификатор ключа доступа AWS [Нет]: «Укажите здесь идентификатор ключа доступа пользователя» Ключ доступа к AWS [Нет]: «Поместите сюда секретный ключ доступа пользователя» Имя региона по умолчанию [Нет]: eu-central-1 Формат вывода по умолчанию [Нет]: json pi @ raspberrypi: ~ $
Шаг 7: Создание файла Iot-role.trust.json


- Создайте файл JSON с указанной выше политикой IAM с именем файла iot-role.trust.json.
- Создайте роль с помощью интерфейса командной строки AWS, используя следующую команду
aws iam create-role --role-name my-iot-role --assume-role-policy-document file: //iot-role-trust.json
Шаг 8: Создание файла Iot-policy.json


- Создайте файл JSON с указанной выше политикой с именем iot-policy.json.
- Создайте политику ролей с помощью интерфейса командной строки AWS с помощью следующей команды:
aws iam put-role-policy --role-name IoTRole --policy-name iot-policy --policy-document file: //iot-policy.json
Шаг 9. Создайте тему AWS SNS (часть 1)



- В строке поиска сервисов AWS выполните поиск по запросу «SNS» или перейдите по адресу
- Поскольку у вас сейчас нет тем, нажмите «Создать новую тему», чтобы создать тему.
- Введите название вашей темы и отображаемое имя и нажмите «Создать тему», и новая тема появится, когда все шаги будут успешными.
- Щелкните раскрывающуюся кнопку «Действия» и «Изменить политику темы».
Шаг 10. Создайте тему AWS SNS (часть 2)



- Установите политику, разрешающую всем публиковать и подписываться, поскольку это ограничения учетной записи AWSEducate.
- Подпишитесь на эту тему, чтобы получать обновления, опубликованные в этой теме.
-
Измените протокол на «Электронная почта» и введите свой адрес электронной почты в конечной точке.
- Перейдите к своей электронной почте, в которой вы ввели конечную точку, нажмите ссылку подтверждения, чтобы подтвердить подписку по электронной почте, чтобы подписаться на тему.
- Перейдите к сервисам «AWS IoT», в меню навигации слева нажмите «Действовать». На этой странице отображаются ваши правила, которые вы можете просматривать и редактировать. В настоящее время для вашего IoT-устройства нет правил, нажмите «Создать правило».
Шаг 11. Создайте тему AWS SNS (часть 3)



- Введите имя в поле Имя для своего правила. В поле Описание введите описание своего правила. Переходя к разделу «Источник сообщения», мы бы выбрали самую последнюю версию SQL в разделе «Использование версии SQL». Введите * в атрибуте, чтобы выбрать все сообщение MQTT из темы, в нашем случае наша тема - «TempHumid».
- Затем добавьте действие уведомления «SNS» для своего правила. Затем нажмите «Настроить действие».
- На странице «Настроить действие» выберите только что созданную тему SNS и формат сообщения RAW. После этого выберите роль, которую вы только что создали с помощью AWS CLI, и нажмите «Добавить действие».
- Ваше действие будет настроено и вернется к «Создать правило».
- Нажмите «Изменить», если хотите изменить правило.
Шаг 12. Создайте корзину на Amazon S3



- Найдите S3 в строке поиска AWS.
- На странице Amazon S3 нажмите кнопку «Создать корзину», чтобы начать.
-
Заполните появившуюся всплывающую форму со следующей информацией:
- Имя сегмента: seroma-bucket (оно должно быть уникальным для всех существующих корзин Amazon S3)
- Регион: Запад США (Орегон)
- Настройки копирования: (игнорировать)
- Для шагов 2–3 просто пропустите их, щелкнув «Далее», поскольку здесь ничего не нужно менять. На шаге 4 нажмите «Создать корзину».
- После создания вы должны увидеть свою корзину на главной странице.
Шаг 13: Создайте политику AWS (часть 1)



- Щелкните созданный сегмент, чтобы перейти на указанную выше страницу, затем перейдите к «Политике сегмента» на вкладке «Разрешения».
- Затем нажмите ссылку «Генератор политик» внизу страницы, чтобы сгенерировать политику AWS.
-
В форме введите следующие значения:
- Тип политики: политика сегмента S3
- Эффект: Разрешить
- Главный: *
- Сервис AWS: Amazon S3
- Действия: GetObject
- Имя ресурса Amazon (ARN): arn: aws: s3::: seroma-bucket
- После заполнения информации нажмите «Добавить выписку».
- Нажмите кнопку «Создать политику».
Шаг 14: Создание политики AWS (часть 2)




- Скопируйте сгенерированные коды и нажмите "Закрыть".
- Вернитесь в редактор политики корзины Amazon S3 и вставьте ранее скопированные коды.
- Добавьте «/ *» в коды сразу после кодов ресурсов, как на изображении выше, затем нажмите «Сохранить».
- После этого ваш ковш будет успешно настроен и готов к использованию.
Шаг 15: Создание таблиц для DynamoDB


- Найдите DynamoDB в строке поиска сервисов AWS
-
Нажмите «Создать таблицу» и создайте 3 таблицы со следующей информацией: (изменяются только «имя таблицы» и «первичный ключ»)
- accesslog, pk datetimevalue
- roomstatus, pk datetimevalue
- Staffdata, pk имя пользователя
Шаг 16: Roomstatus.py




Этот раздел содержит код для roomstatus.py, который каждую минуту записывает все данные, касающиеся самой серверной комнаты. Это включает в себя температуру, влажность, движение (изображения и видео, если это правда) и журналы доступа. Он также записывает данные в электронную таблицу Google, данные в DynamoDB, изображения и видео (если есть) в S3, отображает информацию на ЖК-экране, отправляет SMS и электронную почту, когда есть подозрение на нарушение, или когда температура или влажность нерегулярны..
Чтобы запустить файлы Python, перейдите в каталог, в котором находится файл, и введите в консоли: «sudo python»
Рис 2: Объявлены функции, позволяющие получать оповещения по SMS и электронной почте, а также загружать их в S3.
Рис 3: Переменные, объявленные для работы функций и RPi
Рис 4: Начало цикла, который получает значения температуры и влажности из RPi. Он также записывает данные в электронную таблицу Google.
Рис 5: Защитная часть петли. Он будет активироваться только с 19:00 до 7:00 (в нерабочие часы). Он будет проверять движение в течение одной минуты. При обнаружении движения он берет изображение и видео, загружает их в S3, а также записывает информацию в DynamoDB для дальнейшего использования. После этого он отправит SMS и электронное письмо, если что-то не так.
Рис 6: Конец петли. Он также записывает данные в DynamoDB и соответствующим образом отправляет оповещения. Последняя строка цикла переведет скрипт в спящий режим до следующей минуты.
Шаг 17: Rfid.py




Этот раздел содержит код для rfid.py, который добавляет функцию отслеживания, когда член персонала получает доступ к серверной комнате. Это также часть аспекта безопасности Seroma, когда сотруднику не разрешается доступ в серверную комнату в нерабочее время, чтобы предотвратить утечку данных. Он также отправляет электронное письмо и SMS всем сотрудникам, если подозревается нарушение.
Рис 2: Запуск логики считывателя RFID. Каждый раз, когда карта сканируется против считывающего устройства, берется уникальный идентификатор (uid) карты. После этого мы пытаемся найти значение uid карты в таблице Staffdata, чтобы увидеть, принадлежит ли карта кому-либо из сотрудников. Рисунок 3: Если uid карты существует в базе данных, он проверит, находится ли он во время офиса. в нерабочее время. Если это так, он будет предупреждать остальных сотрудников с помощью SMS и электронной почты с адресами электронной почты, на которые вы подписаны. Если он все еще находится в рабочее время, он запишет строку в таблицу журнала доступа в базе данных с соответствующими данными. Он также отобразит приветственное сообщение на ЖК-дисплее.
Шаг 18: Server.py



Это файл server.py. Мы будем использовать фреймворк Flask для веб-портала. HTML-файлы, которые нужно поместить в / templates, также прилагаются.
Рис 1: Определен первый маршрут для Flask. Он перенаправит пользователя на страницу входа в систему, если он не вошел в систему, и на страницу панели управления, если они есть. Также определяет функцию, которая будет использоваться в функции прямой трансляции.
2, 3, 4: маршруты для Flask. Он получает данные из таблицы DynamoDB, а затем возвращает их в файлы HTML, чтобы их можно было там использовать.
Рис 5: Последние 2 маршрута для Flask. Он обрабатывает функцию выхода из системы и функцию прямой трансляции. Он также указывает порт, на котором будет работать веб-сайт.
Шаг 19: Telegram.py



В этом разделе содержится код телеграмм-бота Серомы. Он использует библиотеку telepot для доступа к Telegram Bot API. Он работает, принимая запросы, которые он получает, и отображает соответствующую информацию пользователю. Пользователь может ввести «help» для получения полного списка команд.
Рис 1, 2: Чтобы настроить бота для телеграмм, вам необходимо использовать BotFather. Просто выполните инструкции, чтобы получить HTTP API, который нам нужен в нашем коде.
Рис 4: Пример функции, которая берет определенное количество строк данных из базы данных на основе запроса пользователя.
Рис 5: Как мы принимаем участие пользователя и решаем, что запускать в соответствии с ним.
Шаг 20. Прямая трансляция (camera_pi.py)



Мы реализовали новую функцию для нашей системы мониторинга серверной комнаты, прямой эфир того, что происходит в серверной комнате, доступ к которой можно получить в любой момент и в любом месте. Как работает этот прямой эфир: это функция, которая реализована в Flask вместе с камерой Pi. Видеокадры загружаются так, как это происходит в реальной жизни, поэтому вы действительно можете видеть небольшую задержку (1-2 секунды), когда видеокадры загружаются и собираются вместе. Это не могло быть сделано без потоковой передачи, поскольку фоновый поток считывает кадры с камеры и сохраняет текущий кадр. Собирая все эти кадры вместе, вы получите прямой поток.
Рис 2: Это отдельный файл, в котором хранятся все видеокадры, и, как вы можете видеть, мы используем модуль picamera для доступа к нашей камере Raspberry Pi, поскольку это то, с чем мы наиболее знакомы. У нас есть класс Camera, чтобы мы могли импортировать функцию, как если бы это была прямая трансляция, а не несколько изображений, соединяемых вместе, поэтому в основном файле приложения мы будем воспринимать ее как прямой поток, не беспокоясь о том, что происходит за кулисами.
Рис 3: Это часть нашего файла server.py, в котором закодирована часть прямой трансляции. Основным классом, который мы импортировали для этого, является Camera из нашего файла camera_pi.py в верхней части файла server.py. Мы определили функцию в нашем корневом каталоге, gen, однако она используется только тогда, когда мы переходим в / video_feed, где находится наш прямой поток, где он будет проходить через эту функцию и возвращать живой поток на веб-страницу.
Рекомендуемые:
Встроенный оконный менеджер: 10 шагов

Встроенный диспетчер окон: в этом проекте показано, как реализовать диспетчер окон с перемещаемыми перекрывающимися окнами на встроенном микроконтроллере с ЖК-панелью и сенсорным экраном. Для этого есть коммерчески доступные пакеты программного обеспечения, но они стоят денег и близки к
Монитор серверной комнаты: 4 шага

Монитор серверной комнаты: одна из проблем серверной комнаты - это температура. При разном оборудовании, вырабатывающем тепло, оно быстро возрастает. А если выходит из строя кондиционер, он быстро все останавливает. Чтобы предсказать эти ситуации, мы можем получить одну из нескольких сред
Кабельный менеджер: 6 шагов

Менеджер по кабельному телевидению: Когда я изучаю информационные технологии, все приходят ко мне и просят кабель для своего телефона, для Интернета … Так что я хотел, чтобы они могли легко найти нужный кабель без моей помощи. Вот почему я создал кабельный организатор. Эта концепция разрабатывается как финальная
Как заставить файловый менеджер работать в Webmin: 5 шагов

Как заставить файловый менеджер работать в Webmin: Файловый менеджер Webmin - очень полезный инструмент. Из-за Oracle (мыльница) стало очень сложно использовать Java-приложения в браузере. К сожалению, файловый менеджер - это приложение Java. Он очень мощный, и стоит приложить усилия, чтобы заставить его работать
Менеджер паролей, Typer, макрос, полезная нагрузка Все в ОДНОМ !: 11 шагов (с изображениями)

Password Manager, Typer, Macro, Payload … Все в ОДНОМ !: ВНИМАНИЕ! ПОЖАЛУЙСТА: Если у вас возникли проблемы с изготовлением этого устройства (печатная плата, пайка или другие), не стесняйтесь отправить мне личное сообщение здесь или по электронной почте [email protected]. Я буду счастлив отправить одну из плат или устройств, которые я уже производил