Необходимо реализовать прототип кода на ESP32 для управления через бот Telegram. Оплата через «безопасная сделка».
1. Код Telegram бота на Python.
2. При использовании библиотек предпочтение
github.com/aiogram/aiogra... (обсуждаемо).
3. При выборе библиотек согласовать с Заказчиком.
4. При первом старте бота пользователь должен ввести:
a. “MAC адрес”, однозначно идентифицируя ESP32 микроконтроллер.
b. “Имя” пользователя.
c. “Имя ESP32” текстовое название ESP32, понятное Пользователю, чтобы выбирать не по MAC адресу. “Имя ESP32” однозначно связано с MAC адресом.
5. Информация о введенных параметрах сохраняется в СУБД, например, MySQL (выбор согласовать с Заказчиком). В дальнейшем Клиент не должен повторно вводить ранее введенную информацию о MAC адресах и пр.
6. К одному пользователю Telegram может быть привязано несколько ESP32 контроллеров (устройств).
7. Бот должен поддерживать взаимодействие с произвольным количеством Пользователей тысячи, но одновременно команды будут отправлять несколько десятков человек.
8. ESP32 микроконтроллер находится за NAT, без проброса портов.
9. Если у пользователя добавлено только одно устройство ESP32, то выбора устройства не требуется. Введенная команда отправляется непосредственно на ESP32 микроконтроллер.
10. Если у пользователя подключено несколько устройств, то перед отправкой команды он должен выбрать из списка нужное устройство. В дальнейшем выбор действует до тех пор пока Пользователь не перезапустит бот, либо сменит устройство.
11. Пользователь должен иметь возможность сменить устройство для отправки команды в любой момент.
12. После выбора нужного ESP32 Пользователь может отправить следующие команды:
a. Включение и выключение светодиода (можно повесить на любой pin ESP32, либо использовать светодиод на DevKit).
b. Отправить произвольное число.
c. Показать какое ESP32 устройство выбрано в данный момент.
13. Пользователь может запросить командой данные с ESP32:
a. Текущее состояние светодиода.
b. Равнее отправленное на ESP32 произвольное число.
c. Лог включений и выключений светодиода и изменения произвольного числа в виде текстового сообщения разбитого построчно.
d. При возникновении события на стороне ESP32 оно должно передаваться в бот и привлекать внимание Пользователя push-ем.
14. После разработки проекта нужна инструкция по установке:
a. Исходники проекта с комментариями по коду.
b. Ссылки на библиотеки.
c. Команды установки компонентов, если что-то специфическое.
d. Видео как работает бот с двумя DevKit-ами ESP32.
e. Все файлы с документацией упакованы в один архив .zip.
15. Серверная часть чат-бота должна взаимодействовать с устройствами ESP32 по протоколу MQTT.
16. ESP32 устройство при обращении к серверу при авторизации передает в MQTT свой MAC адрес и ему возвращаются команды относящиеся к нему. Как производится обмен в плане безопасности согласовать с Заказчиком.
17. В качестве MQTT брокера желательно использовать (обсуждаемо):
a.
www.hivemq.com/developers... (Java).
b.
github.com/Yakifo/amqtt (Python).
c.
github.com/beerfactory/hb... (Python).
d. Либо публичные сервера MQTT брокеры
kotyara12.ru/iot/cloud_se... у которых нет проблем с доступом с территории России:
i.
cloud.yandex.ru/services/...,
ii.
www.wqtt.ru/ (Mosquitto).
iii. И т.п.
18. Можно разбить задачи на меньшие блоки для удобства получения платежа На усмотрение Исполнителя.
19. На рис. показана предполагаемая схема работы бота:
a. Chat-bot Server – разрабатываемый сервер чат-бота.
b. ESP32-1 .. ESP32-n – клиентские устройства на базе ESP32.
c. Telegram-1 ... Telegram-n – телеграмм клиенты.
d. Telegram server – сервер Telegram с которым взаимодействуют клиенты Telegram.