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

Создание аквариумного контроллера (попытка номер 3) Часть 1: Предистория

•   DIY   •

Создание аквариумного контроллера (попытка номер 3) Часть 1: Предистория
04 окт 2017

Создание аквариумного контроллера (попытка номер 3) Часть 1: Предистория

После двух "неудачных" попыток создать акваконтроллер, я решил приступить к этому делу в третий раз, учитывая наработки и косяки из первых двух версий. Я буду описывать все шаги разработки контроллера, мало того, я буду выкладывать коды в открытый доступ и любой сможет воссоздать этот контроллер самостоятельно.

Почему две первые попытки были неудачными?

На самом деле первая попытка была довольно удачной и решала те задачи для которых изначально была создана: управление вентиляторами охлаждения (включение выключение, в зависимости от температуры), управление светом (включение/отключение по расписанию). Вот скриншоты первой версии.

Но в скоре этих возможностей стало мало и захотелось чего-то большего и более универсального, такпоявилась вторая версия контроллера.

Его отличия от первой версии были просто огромными:

Полностью переработанный дизайн (красивый и адаптивный)

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

Добавлена работа с пользователями, страница авторизации

Работа с множеством датчиков температуры

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

Настройка каналов

 

Во второй версии я решил, что каналы (выходы для подключения нагрузки) надо добавлять прямо из интерфейса, а не завязывать програмно. Можно прямо из админки создать новый канал, присвоить ему выход на плате, а так же выбрать схему работы (нормальная или в реверсе).

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

Гибкие установки каналов

 

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

Уведомления email

Можно настроить отправку уведомлений по почте.

Telgram

Реализована работа с мессенджером Telegram, можно узнавать статусыканалов, показания датчиков температуры, включать и отключать каналы принудительно, а так же отсылать уведомления о внештатных событиях.

События

Отображение событий за последнее время в удобном формате.

Работа с кнопками

Можно задать выполнение каких-либо действия по нажатию кнопок.

 

Круто, зачем начинать с начала?

Так как я хотел сделать вторую версию контроллера максимально универсальной - я не учел все те необходимые мелочи, которые нужны конкретно для аквариума.
Например, у многих аквариумистов установлен светильник с множеством каналов и цветов, которые управляются с помощью шим(pwm), я хоть и предусматривал работу шим, но все же система оказалась не продумана до конца. Мало того, работа с каждым каналом происходит в отдельном окне, что не удобно при настраивании того же светильника.

Не работает с остальными датчиками, кроме датчика температуры.

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