Рассчитай точную стоимость своей работы и получи промокод на скидку 500 ₽
Найди эксперта для помощи в учебе
Найти эксперта
+2
Пример заказа на Автор24
Студенческая работа на тему:
Web-приложение для управления умным домом.
Создан заказ №5220670
27 мая 2020

Web-приложение для управления умным домом.

Как заказчик описал требования к работе:
Вашей задачей будет реализовать на Django сервер управления умным домом, имеющий web-интерфейс для настройки и ручного управления, который будет производить периодический опрос датчиков и осуществлять автоматическую реакцию в случае определенных ситуаций, используя API контроллера умного дома Авто ры курса сделали виртуальные контроллер, датчики и устройства, которыми он управляет. Зайдя на сайт:https://smarthome.webpython.graders.eldf.ru/login и зарегистрировавшись, вы получите уникальный ключ (KEY), который нужно будет использовать при работе с API контроллера. Используя этот же ключ можно получить изображение с “виртуальной камеры” умного дома, на которой будет наглядно видно, какие устройства работают или почему сработал тот или иной датчик, и вручную управлять устройствами. Документацию по API можно посмотреть на этом же сайте. Устройства, подключенные к контроллеру, доступны на запись: (обычно true - включить/открыть, false - выключить/закрыть, но бывают варианты). И датчики и устройства доступны на чтение. Устройства, при чтении с них, работают как датчики и возвращают свое состояние, которое может отличаться от записанного. Устройства (запись): air_conditioner – Кондиционер (true – вкл, false – выкл). При включении постепенно понижает температуру в спальне, пока она не достигнет 16 градусов и сильнее охладить уже не может. bedroom_light – Лампа в спальне (true – вкл, false – выкл). bathroom_light – Лампа в ванной (true – вкл, false – выкл). curtains – Занавески string (“open” – открыть, “close” – закрыть). boiler – Бойлер (true – вкл, false – выкл). При включении постепенно повышает температуру воды, пока она не достигнет 90 градусов. Для работы должен быть открыт входной кран холодной воды. cold_water – Входной кран холодной воды (true – открыть, false – закрыть). Позволяет открыть/перекрыть подачу холодной воды в квартиру hot_water – Входной кран горячей воды (true – открыть, false – закрыть). washing_machine – Стиральная машина string (“on” – вкл, “off” – выкл). При включении начинает стирать, потом самостоятельно отключается. Может сломаться и протечь. Датчики (чтение): air_conditioner – Кондиционер. (true – вкл, false – выкл). bedroom_temperature – Температура в спальне. Int (0 – 80). bedroom_light – Лампа в спальне. (true – вкл, false – выкл). smoke_detector – Датчик задымления на потолке. (true – задымление, false – нет). bedroom_presence – Датчик присутствия в спальне. (true – есть человек, false – нет). bedroom_motion – Датчик движения в спальне. (true – есть движение, false – нет). curtains – Занавески. string (“open” – открыты, “close” – закрыты, “slightly_open” – приоткрыты вручную). outdoor_light – Датчик освещенности за окном (0 – 100). boiler – Бойлер. (true – вкл, false – выкл). boiler_temperature – Температура горячей воды бойлере. Int (0 – 100 / null). Если перекрыта холодная вода, то воды в бойлере нет, и датчик возвращает null. cold_water – Входной кран холодной воды. (true – открыт, false – закрыт). hot_water – Входной кран горячей воды. (true – открыт, false – закрыт). bathroom_light – Лампа в ванной. (true – вкл, false – выкл). bathroom_presence – Датчик присутствия в ванной. (true – есть человек, false – нет). bathroom_motion – Датчик движения в ванной. (true – есть движение, false – нет) washing_machine – Стиральная машина. string (“on” – вкл, “off” – выкл, “broken” – сломана). leak_detector – Датчик протечки воды (true – протечка, false – сухо). Приложение студента Используя приложенный к этому заданию “скелет” приложения на Django (файл student.zip), вам нужно реализовать свой интерфейс управления умным домом. Файл прилагается. По адресу / должна открываться веб-форма, со следующими контролами: bedroom_target_temperature – input type=number, желаемая температура в спальне, запоминать настройку в базе, текущую настройку из базы выводить на форму. Допустимое значение от 16 до 50, default: 21 hot_water_target_temperature – input type=number, желаемая температура горячей воды в доме, запоминать настройку в базе, текущую настройку из базы выводить на форму. Допустимое значение от 24 до 90, default: 80 bedroom_light – checkbox, включает/выключает свет в спальне, синхронизировать значение с контроллером bathroom_light – checkbox, включает/выключает свет в ванной, синхронизировать значение с контроллером Там же отображать текущие значения всех датчиков, прочитанные из контроллера. Для рендеринга шаблона прочитанные из контроллера значения должны быть в словаре в context.data. Реализовать автоматически опрос контроллера в фоне каждую секунду (django celery) и реакцию на некоторые события. Реакция на события: Если есть протечка воды (leak_detector=true), закрыть холодную (cold_water=false) и горячую (hot_water=false) воду и отослать письмо в момент обнаружения. Если холодная вода (cold_water) закрыта, немедленно выключить бойлер (boiler) и стиральную машину (washing_machine) и ни при каких условиях не включать их, пока холодная вода не будет снова открыта. Если горячая вода имеет температуру (boiler_temperature) меньше чем hot_water_target_temperature - 10%, нужно включить бойлер (boiler), и ждать пока она не достигнет температуры hot_water_target_temperature + 10%, после чего в целях экономии энергии бойлер нужно отключить Если шторы частично открыты (curtains == “slightly_open”), то они находятся на ручном управлении - это значит их состояние нельзя изменять автоматически ни при каких условиях. Если на улице (outdoor_light) темнее 50, открыть шторы (curtains), но только если не горит лампа в спальне (bedroom_light). Если на улице (outdoor_light) светлее 50, или горит свет в спальне (bedroom_light), закрыть шторы. Кроме случаев когда они на ручном управлении Если обнаружен дым (smoke_detector), немедленно выключить следующие приборы [air_conditioner, bedroom_light, bathroom_light, boiler, washing_machine], и ни при каких условиях не включать их, пока дым не исчезнет. Если температура в спальне (bedroom_temperature) поднялась выше bedroom_target_temperature + 10% - включить кондиционер (air_conditioner), и ждать пока температура не опустится ниже bedroom_target_temperature - 10%, после чего кондиционер отключить. Опрос контроллера и отправка ему ответа должны происходить внутри функции core.tasks.smart_home_manager. Эта функция должна вызываться периодически с интервалом в 5 секунд, например, с помощью celery. В начала своей работы функция запрашивает данные из контроллера, используя requests.get в API, затем анализирует настройки пользователя по желаемой температуре из БД, и текущую ситуацию, и в конце, если требуется коррекция, делает requests.post в API с командами для контроллера, если необходимо отправить письмо, то отправляет его. Для отсылки писем нужно использовать send_mail:https://docs.djangoproject.com/en/2.0/topics/email/ из django.core.mail, а в settings нужно задать настройки EMAIL_HOST, EMAIL_PORT и другие EMAIL_*, так чтобы во время разработки вы отправляли письма через какую-нибудь почтовую систему и могли проверить их работу. Во время проверки задания на сервере эти настройки будут переопределены. Для сохранения настроек в базе, нужно использовать модель Settings (name, value), заготовка для которой уже есть приложенных исходниках. Веб-форма для настройки и управления умным домом должна открываться в корне сайта, содержать 4 input’а c именами (name=...): bedroom_target_temperature, hot_water_target_temperature, bedroom_light, bathroom_light. В settings нужно добавить пременные SMART_HOME_API_URL и SMART_HOME_ACCESS_TOKEN и задать их значения, затем использовать их для взаимодействия с умным домом. Еще можно добавить EMAIL_RECEPIENT, в котором задать получателя писем от системы. В приложенных исходниках есть несколько тестов django tests, которые тестируют некоторые базовые вещи. После того, как реализуете функционал, обазательно запустите manage.py test. На бою мы проверяем задание аналогичным образом через тесты контроллера по урлу /, и ручной вызов core.tasks.smart_home_manager. Что будем проверять Во время разработки вы можете в реальном времени наблюдать на сайте за реакцией умного дома на управляющие воздействия вашего приложения, а также руками выставлять показания датчиков для моделирования различных ситуаций. Во время проверки на сервере интернет будет недоступен, requests.get будет заменен на mock, который будет возвращать приложению разные состояния контроллера (показания датчиков), а тесты будут проверять результат работы в requests.post и факт отправки письма, если оно требуется. Также будет проверяться работа веб-формы. Например если будет передана низкая температура горячей воды, в ответ будет ожидаться команда на включение бойлера, если он выключен. Но если к предыдущему примеру добавить еще и обнаруженную протечку, или пожар, то команда на включение бойлера подаваться не должна, а наоборот бойлеру должна подаваться команда на выключение, если он включен. Все возможные пограничные ситуации описаны в разделе “Реакция на события”. В случае если внешний сервер вернул ошибку или не отвечает нужно вернуть страницу с ошибкой со статус кодом 502. Вам необходимо реализовать весь проект основываясь на скелете приложенном к этому заданию. Весь код должен находиться в приложении core. После реализации заархивируйте содержимое папки core в zip архив и отправьте на проверку. Реализовывать валидацию данных можно с использованием библиотек marshmallow jsonschema или с помощью класса Forms. Также в проекте установлен фреймворк для тестирования py.test https://docs.pytest.org/en/latest
подробнее
Заказчик
заплатил
200 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
20 дней
Заказчик воспользовался гарантией, чтобы исполнитель повысил уникальность работы
30 мая 2020
Заказ завершен, заказчик получил финальный файл с работой
5
Заказ выполнил
vladimirvi
5
скачать
Web-приложение для управления умным домом..jpg
2020-06-02 13:22
Последний отзыв студента о бирже Автор24
Общая оценка
5
Положительно
Автор все понимает с полуслова, приятно с ним работать.Работа сделана раньше назначенного срока. Рекомендую!

Хочешь такую же работу?

Оставляя свои контактные данные и нажимая «Создать задание», я соглашаюсь пройти процедуру регистрации на Платформе, принимаю условия Пользовательского соглашения и Политики конфиденциальности в целях заключения соглашения.
Хочешь написать работу самостоятельно?
Используй нейросеть
Мы создали собственный искусственный интеллект,
чтобы помочь тебе с учебой за пару минут 👇
Использовать нейросеть
Тебя также могут заинтересовать
приложения для контроля исполнения поручений
Курсовая работа
Программирование
Стоимость:
700 ₽
С#
Другое
Программирование
Стоимость:
300 ₽
Программирование на луа, создание интерпретатора луа
Решение задач
Программирование
Стоимость:
150 ₽
rest архитектура код и отчет
Курсовая работа
Программирование
Стоимость:
700 ₽
Разработка информационной системы учета продаж в автосалоне.
Курсовая работа
Программирование
Стоимость:
700 ₽
В С++ Дана температура воздуха за каждый день января: Определить: а) с
Решение задач
Программирование
Стоимость:
150 ₽
OpenGL C#
Лабораторная работа
Программирование
Стоимость:
300 ₽
Программирование задач оптимизации на Паскаль(Можно в MS Exel)
Курсовая работа
Программирование
Стоимость:
700 ₽
Написать отчет по курсовой, дополнить программу на Visual Studio C++
Курсовая работа
Программирование
Стоимость:
700 ₽
Учет заработной платы
Курсовая работа
Программирование
Стоимость:
700 ₽
Теория цифровых автоматов (МИФИ)
Курсовая работа
Программирование
Стоимость:
700 ₽
Интеграция IoT в многоуровневую структуру корпоративной сети
Курсовая работа
Программирование
Стоимость:
700 ₽
Читай полезные статьи в нашем
Программное обеспечение и технологии программирования
Программный принцип управления лежит в основе работы всех компьютеров, смысл его заключается в том, что компьютером выполняются действия по предварительно заданной программе. Кроме того, этим принципом обеспечивается универсальное использование компьютера, т.е. в соответствии с выбранной программой в конкретный момент времени решается конкретная задача. После ее выполнения в память загружается дру...
подробнее
Управление изображением модели в Компас-3D
Управление масштабами изображений моделей осуществляется с помощью команд:
Сами названные команды находятся в меню Вид, а кнопки, с помощью которых их можно быстро вызвать, располагаются на панели Вид.
Управление коэффициентами изменения масштаба ведется с использованием команд Увеличить масштаб и Уменьшить масштаб. Настройку величины масштаба выполняют так:
Передвигать изображения моделей в окне мож...
подробнее
Текстовые веб-страницы
Самый простой способ создания текстовой веб-страницы — это набор ее кода в каком-либо текстовом редакторе, работающем с простым текстом без оформления и сохранение ее в файле с расширением .htm или .html. В операционных системах для этих расширений предусмотрена связь с браузером, поэтому делая двойной щелчок на имени файла мы открываем веб-страницу в браузере в режиме просмотра.
Помимо этого, имею...
подробнее
Работа с рисунками на веб-страницах
Во времена зарождения службы WWW Web-страницы могли и обходились без рисунков, поскольку сама концепция гипертекста давала понять, насколько прогрессивна данная служба, ведь главное заключалось не в красоте, а в информативности и возможности навигации. В наше время без многообразия рисунков Web-страницы представить просто нельзя. Рисунки используются при создании Web-страниц не только в качестве и...
подробнее
Программное обеспечение и технологии программирования
Программный принцип управления лежит в основе работы всех компьютеров, смысл его заключается в том, что компьютером выполняются действия по предварительно заданной программе. Кроме того, этим принципом обеспечивается универсальное использование компьютера, т.е. в соответствии с выбранной программой в конкретный момент времени решается конкретная задача. После ее выполнения в память загружается дру...
подробнее
Управление изображением модели в Компас-3D
Управление масштабами изображений моделей осуществляется с помощью команд:
Сами названные команды находятся в меню Вид, а кнопки, с помощью которых их можно быстро вызвать, располагаются на панели Вид.
Управление коэффициентами изменения масштаба ведется с использованием команд Увеличить масштаб и Уменьшить масштаб. Настройку величины масштаба выполняют так:
Передвигать изображения моделей в окне мож...
подробнее
Текстовые веб-страницы
Самый простой способ создания текстовой веб-страницы — это набор ее кода в каком-либо текстовом редакторе, работающем с простым текстом без оформления и сохранение ее в файле с расширением .htm или .html. В операционных системах для этих расширений предусмотрена связь с браузером, поэтому делая двойной щелчок на имени файла мы открываем веб-страницу в браузере в режиме просмотра.
Помимо этого, имею...
подробнее
Работа с рисунками на веб-страницах
Во времена зарождения службы WWW Web-страницы могли и обходились без рисунков, поскольку сама концепция гипертекста давала понять, насколько прогрессивна данная служба, ведь главное заключалось не в красоте, а в информативности и возможности навигации. В наше время без многообразия рисунков Web-страницы представить просто нельзя. Рисунки используются при создании Web-страниц не только в качестве и...
подробнее
Теперь вам доступен полный отрывок из работы
Также на e-mail вы получите информацию о подробном расчете стоимости аналогичной работы