Модуль автоматизации для Home Assistant
Возникла задача сделать самопальный испарительный увлажнитель, который может работать непрерывно, эффективно и автономно. Устройство сделано, конструктивно состоит из камеры подготовки воздуха, и большой канистры с водой.
Камера подготовки воздуха в свою очередь представляет собой плоский бак, половину объема занимает вода, на дно встроен электрический подогреватель. На вход канальным вентилятором подается воздух, он проходит над водой, и перед выходом проходит через непрерывно смачиваемую водой сетку. Вода на сетку подается тут же, со дна, с помощью электрической помпы. Вода в камеру поступает из большой канистры, с помощью подъемной помпы. Излишек воды через сливной шланг, расположенный на максимально допустимом уровне, возвращается в ту же канистру.
Внутри канистры и камеры расположены zigbee датчики контроля наличия воды. Конструктивно это обычные xiaomi герконовые датчики открытия двери, только магнит расположен на поплавке. Есть вода - замкнуто, нет - разомкнуто. Также датчики умеют определять температуру окружающей среды, считывается только температура с датчика в камере, температуру воды в канистре знать не обязательно.
Вся электрика управляется чертырехканальным реле sonoff - подогрев воды, помпа подачи на сетку, приточный вентилятор, подъемная помпа.
Отдельно может появиться сливная помпа, этот функционал нужно предусмотреть, но сделать возможным опционально. Работает элементарно - помпа, управляемая отдельным реле, при включении отправляет воду из камеры в слив.
По производительности и автономности к устройству нет вопросов, но нужно все автоматизировать.
Описание устройства было необходимо для правильного понимания задачи. Перехожу к ней.
Реле и датчики заведены в home assistant. В принципе, управление всем этим добром можно сделать базовыми встроенными автоматизациями, но это неудобно и сложно. Требуется компонент, реализующий все это как единое устройство, с тем, чтобы оно поддерживало простые команды управления, и виджет для дашборда. Устройство будет тиражироваться, с таким же принципом работы, но не обязательно на таких же деталях (реле sonoff и датчики xiaomi). Таким образом, компонент должен хранить в конфигурации, к каким устройствам, заведенным в HA, надо обращаться, чтобы получить требуемые данные или передавать команды управления, а сущности в любом случае те же: две (или три) помпы, подогреватель, вентилятор - вкл/выкл, датчик наличия воды - да/нет, датчик температуры воды в камере.
Логика работы.
Сначала простые ограничения:
- Если воды в камере нет, то подогреватель и смачивающая помпа работать не могут, возникает критическая ошибка. Причина очевидна - помпа без воды со временем сломается, а подогреватель может перегореть (хотя в него и встроен отдельный встроенный терморегулятор, но это аварийная защита)
- Если воды в канистре нет, возникает критическая ошибка. Тоже очевидно - если нет воды, то вся система в принципе работать не может.
- Если температура в камере превышает ограничение, подогреватель работать не может.
- Подогреватель или смачивающая помпа не могут работать, если не включен приточный вентилятор. Просто бессмысленно
Устройство должно поддерживать уровень воды в камере. Если фиксируется отсутствие воды, включается на 10 сек подъемная помпа. Через минуту проверяется наличие воды, если опять нет, снова включается на 10 сек помпа, и так далее. Максимум делаем пять таких итераций, после чего, если вода не появляется, возникает критическая ошибка.
При критических ошибках компонент должен:
-Выключать всю электрику
-Сообщать, отправляя фиксированный get запрос, по адресу, заведенному в конфигурации (получается для каждого вида ошибки сохранен отдельный запрос).
Команды, которые должен поддерживать компонент:
- Включить/выключить увлажнитель
- Включить/выключить подогреватель.
- Слить воду
- Залить воду
При включении увлажнителя как устройства, проверяется наличие воды в камере, если нет, запускается алгоритм заливки воды, после его выполнения включаются приточный вентилятор, и смачивающая помпа.
При выключении выключается вся электрика.
При включении подогревателя включается и сам увлажнитель. При выключении все остальное не выключается.
При запуске слива воды выключается вся электрика, потом включается сливная помпа на 2 минуты. Через две минуты проверяется наличие воды в камере, если есть, то возникает критическая ошибка.
При запуске залива воды включается на 30сек подъемная помпа. Через минуту проверяется наличие воды, если нет, снова включается на 30сек помпа, и так далее. Максимум делаем пять таких итераций, после чего, если вода не появляется, возникает критическая ошибка.
Виджет на дашборд:
В нем два переключателя - вкл/выкл увлажнитель, вкл/выкл подогреватель, и кнопки "Слить воду" и "Залить воду". Ниже показания датчика температуры, флаги наличия/отсутствия воды в канистре и камере.
Компонент должен работать в последней стабильной версии HA.
Вроде бы описал понятно. Если нет, буду рад ответить на вопросы.
В ответе пожалуйста, пишите срок и стоимость.