Загрузка...
Загрузка...

Создание аквариумного контроллера (попытка номер 3) Часть 3: Начало фронтэнд

•   DIY   •

Создание аквариумного контроллера (попытка номер 3) Часть 3: Начало фронтэнд
06 ноя 2017

Создание аквариумного контроллера (попытка номер 3) Часть 3: Начало фронтэнд

Из чего будет состоять Фронтэнд

Хранение данных

Все данные контроллера (настройки, параметры, логи) будут хранится в базах данных. Для этого контроллера я планирую использовать две базы данных: mysql и redis.

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

Redis - так называемая, NOSQL - база данных или типа «ключ — значение». Хранит базу данных в оперативной памяти и обращения к ней происходят нмного быстрее, чем к mysql и так же не нагружают процессор. Redis будет использоваться для хранение текущих значений и именно она будет служить главным связующим звеном между фронтэндом и бэкендом.

Фронтэнд

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

Фронтэнд контроллера, как и большая часть всего контроллера будут написаны на python. В качестве вэб-фреймворка будет использоваться Flask.

Для упрощения написания на начальном этапе будут использоваться следующие модули, помимо самого Flask.

MySQL-python - модуль для взаимодествия с базой mysql.

redis - модуль для взаимодействия с базой redis.

json - модуль для работы с json, это формат данных который упрощает обмен информацией между программой и графическим интерфейсом.

datetime - модуль для работы с временем, датами и прочими вещами связанными с временем.

flask_login - модуль, который упрощает работу по авторизации пользователей.

flask_bcrypt - модуль для шифрования различных данных, мы его будем использовать, что б хранить пароли в зашифрованном виде, в целях безопасности.

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

uuid - модуль для создания уникальных идентификаторов.

 

Шаблон

Для того, что б не заниматься дизайном и подгонкой элементов к единому стилю, а так же для правильного отображения на различных устройствах используются готовые шаблоны. Шаблоны представляют собой готовые HTML страницы с различными элементами вроде кнопок, форм, попапов и прочих элементов, которые могут понадобится для создания интерфейса.
В качестве админ-панели, самый лучший (по моему мнению) и бесплатный, является AdminLTE - мало того, что он выглядит очень стильно и современно, так он еще и включает огромное количество различных модулей, которые ускоряют разработку.

Он является совершенно бесплатным и доступен для скачивания по этой ссылке.

Начало фронтэнда

Первым в списке - авторизация пользователей.

Что б реализовать управление пользователями нужно знать какие данные на пользователя нам нужно запоминать. Я думаю, что оптимальным вариантом будут следующие данные:

  • Имя пользователя
  • Email (будет использоваться для авторизации)
  • Пароль
  • Права пользователя
  • Статус

Если первые три параметра понятны, то последние два нужно подробнее объяснить.

Права пользователя - у разных пользователей могут быть разные права, то есть кто-то может создавать и редактировать пользователей, а кто-то нет, кто-то может менять параметры управления, а кто-то нет и т.д.

Для себя я решил сделать следующие права:

  • admin - максимальные права, он может делать все на контроллере.
  • responsible - имеет ограниченные права: может управлять некритичными настройками (вкл/выкл свет на время, например), не имеет прав на работу с пользователями и не может менять установки контроллера
  • guest - может просто наблядать за параметрами контроллера, менять не может ничего и не может ничем управлять.

Статус пользователя - Вы можете временно заблокировать пользователя, удалить его, он может привысить количество неверных попыток входа и прочее.

При заходе на контроллер - будет показываться форма авторизации для ввода логина и пароля. После ввода правильных логина и пароля - пользователь попадет на главный экран управления контроллера.