Skip to content

Latest commit

 

History

History
30 lines (17 loc) · 5.93 KB

ТЗ.md

File metadata and controls

30 lines (17 loc) · 5.93 KB

Техническое задание для клиент-серверного приложения управления шлагбаумом

Конечный продукт состоит из двух частей: клиент (компьютер или телефон пользователя) и сервер. Они взаимодействуют между собой через веб-сокеты, что позволяет клиентскому приложению быть как веб-страницей, так и какой-то внедрённой установкой, поддерживающей подключение по локальной сети. В данном случае клиентское приложение реализовано веб-страницей.

Сервер

Сервер состоит из серверного приложения и микроконтроллера Arduino Leonardo. Микроконтроллер подключается кабелем USB к компьютеру, на котором запущено серверное приложение. Серверное приложение подключается к микроконтроллеру следующими шагами:

  1. Проверка на подключение микроконтроллера к компьютеру: чтобы посылать какие-либо сообщения на микроконтроллер, нужно сначала проверить его присутствие как устройства на компьютере. Это делается посредством встроенных модулей ОС.
  2. Открытие подключение к COM-порту микроконтроллера: COM-порт обеспечивает простую коммуникацию двух устройств со стабильным соединением. В данном случае используется виртуальный COM-порт Arduino, который создаётся при подключении микроконтроллера по USB.
  3. Отправка handshake-сообщения: серверное приложение посылает сообщение специального типа и ожидает ответа от микроконтроллера в виде похожего сообщения.

Серверное приложение запускает веб-сокет сервер для получения и отправки сообщений с клиента. Сообщения имеют специальный стандартизированный формат, чтобы и на клиенте, и на сервере легко можно было проверить правильность сообщения по какому-то шаблону.

При получении сообщения типа изменения состояния шлагбаума, посылается специальная команда измены состояния шлагбаума микроконтроллеру через COM-порт.

При получении сообщения типа авторизации, проверяется посланные пользователем логин и пароль. Это осуществляется проверкой наличия такого логина и зашифрованного такого пароля в базе данных сервера. В дальнейшем планируется использовать сертификаты вместо комбинации логина и пароля для повышенной безопасности.

Серверное приложение также запускает веб-сервер, который при попытке пользователя подключиться к серверу через веб-браузер по его IP-адресу, отвечает соответствующей страницей по заданному URL-адресу.

Клиент

Клиент реализуется двумя веб-страницами: страницей авторизации и страницей управления. На странице авторизации для верификации личности пользователь вводит логин и пароль, который затем проверяется на сервере, и здесь может быть два исхода:

  1. Пользователь не найден на сервере: появляется ошибка с сообщением, что пользователя не существует.
  2. Пользователь найден на сервере: идёт загрузка страницы управления.

На странице управления есть кнопка выхода из аккаунта, текст текущего состояния шлагбаума и кнопки изменения состояния. Всего состояний шлабаума четыре: опускается, опущен, поднимается, поднят. Кнопок изменения состояния всего две: одна для опускания, другая для поднятия.

Получение и изменение состояния шлагбаума реализуется через клиент веб-сокета, создаваемый при загрузке веб-страницы управления. Через веб-сокет серверу посылается сообщение специального стандартизированного формата, в теле которого содержится нужная команда (например, поднятия и опускания шлагбаума и получения текущего состояния шлагбаума).