From 0effc772371718976bc7f348f64579fc09e19802 Mon Sep 17 00:00:00 2001 From: Alexander Baranov Date: Sun, 22 Feb 2026 20:53:07 +0300 Subject: [PATCH] homework definition --- smart-house/README.md | 53 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/smart-house/README.md b/smart-house/README.md index adbfbe5..b6a2022 100644 --- a/smart-house/README.md +++ b/smart-house/README.md @@ -49,7 +49,7 @@ - [x] Создайте экземпляр умного дома и выведете отчёт о его содержимом. - [x] Для уже созданного экземпляра дома выключите умную розетку в одной из комнат. Снова выведите отчёт. -**Критерии оценки**: +**Критерии оценки:** - Package успешно собирается. - Приложение-пример успешно выполняется и выводит отчёт о доме. @@ -101,9 +101,56 @@ отдельной комнате, отдельном устройстве. - [x] Продемонстрировать возможность обработки ошибок. -**Критерии оценки**: - +**Критерии оценки:** - Package успешно собирается. - Приложение-пример успешно выполняется и выводит отчёт о доме. - Команды cargo clippy и cargo fmt --check не выводят ошибок и предупреждений. - Присутствуют и успешно выполняются модульные тесты. + +## ДЗ 2026-02-12 + +Дорабатываем умные устройства + +### Цель: + +Описать для умной розетки и умного термометра логику взаимодействия с удалённым устройством и написать имитаторы устройств для тестирования. + +### Срок: + +Сдать до: **2026-03-04** + +### Описание/Пошаговая инструкция выполнения домашнего задания: + +Для типа умной розетки: +- [ ] Функционал не изменяется: включение/выключение + запрос мощности. +- [ ] Взаимодействие организовано синхронно, через TCP. +- [ ] Розетка может использовать как реальный TCP-обмен, так и имитировать реальную работу (для тестов). + +Для имитатора умной розетки: +- [ ] Читает адрес для приёма TCP-соединений из аргументов командной строки. +- [ ] Реализован с использованием неблокирующего сетевого взаимодействия. +- [ ] Хранит состояние розетки. +- [ ] Позволяет управлять розеткой множеству клиентов одновременно. + +Для умного термометра: +- [ ] Функционал не изменяется: возвращает температуру. +- [ ] Получает значения температуры в виде UDP-пакетов в параллельном потоке. +- [ ] Параллельный поток запускается при создании объекта термометра и завершается при уничтожении этого объекта. +- [ ] Объект термометра возвращает последнее полученное значение температуры. +- [ ] Термометр может имитировать удалённое получение данных о температуре (для тестов). + +Для имитатора умного термометра: +- [ ] Реализован с использованием неблокирующего сетевого взаимодействия. +- [ ] Читает адрес для отправки UDP-пакетов и временной период отправки из файла. +- [ ] Отправляет произвольное значение температуры на указанный адрес с указанной периодичностью. + +Добавлен дополнительный пример умного дома с розетками и термометрами, которые работают с имитаторами. Данный пример должен запускаться и: +- [ ] Выводить отчёт о состоянии дома, если имитаторы запущены. +- [ ] Сообщать об ошибке, если устройству не удалось получить данные. + +**Критерии оценки:** + +- Package успешно собирается. +- Приложение-пример успешно выполняется. +- Команды cargo clippy и cargo fmt --check не выводят ошибок и предупреждений. +- Присутствуют и успешно выполняются модульные тесты.