Добрый всем день!
Случилось так, что решил я, после многих лет опыта проектирования и наладки систем домашней автоматизации, сделать и свой дом немного умнее)
Причиной этому послужило приятное событие, получение ключей от новой квартиры)
Есть у меня очень большой опыт в элитных и дорогих системах, в основе которых лежат KNX, BUS77, HDLBuspro, LogicMachine… Но, для себя выбрал не столько попроще, сколько подешевле, строить буду на 90% на ZigBee. Это достаточно бюджетно, надёжно и универсально.
А, так как мы не ищем лёгких путей, почесав затылок я решил, что сервер будет ровно такой, какой нужен мне, конечно с небольшим заделом на будущее.
Сервер предназначен для контроля и управления различными элементами систем домашней автоматизации.
Базовые возможности:
- Отображение состояния элементов
- Изменение состояний
- Загрузка планов помещения (подложки для инженерных систем)
- Размещение на планах элементов системы
- Создание сценариев взаимодействия элементов системы
- Два режима – просмотр и редактирование
- поддержка ZigBee2MQTT (пока не тестировал)
- Взаимодействие средствами MQTTи HTTP
- Таймеры
- MQTTтриггеры (запуск сценариев при получении сообщения)
- Полноценный APIдля разработки собственной UI
- Аунтификация
- Логирование состояний устройств
- Тренды
- Поддержка KNX IP шлюзов
- Поддержка Modbus (TCP и RTU)
В базе есть несколько типов устройств:
- Термостат
- Датчик температуры/влажности
- Датчик открытия
- Датчик протечки
- Датчик присутствия
- Свет с диммером
- Свет реле
- Шторы
- Вентилятор
- Кнопка без фиксации
- Текстовое поле
Так же реализована возможность добавление кастомных типов с настраиваемыми полями, таким образом можно реализовать управление и визуализацию практически для любого устройства.
Все устройства по умолчанию подписаны на свои топики и привязаны к топикам публикации в MQTT, но так же реализована возможность привязки к произвольным топикам. Это же касается и HTTP GET POST, KNX и Modbus.
В сценариях реализована базовая логика
- В качестве триггера запуска возможно использовать состояние любого поля устройства, логика при этом максимально широкая
=, !=, >,<,>=,<=, contains
- В качестве действия можно выбрать
Установить состояние устройства, HTTP-запрос, MQTT-публикация, Задержка, Уведомление
(Modbus и KNX в разработке)
- Для всех вариантов доступно в качестве аргументов использовать
Кностанта, Значение поля устройства, Выражение
- События
По событию от устройства можно генерировать HTTPзапросы и MQTTпубликации
(Modbus и KNX так же в разработке)
- Таймеры
Интервал, Ежедневно, Еженедельно, Разово
- MQTT триггеры
Выполнение сценариев по получению MQTTпубликации в нужным содержимым в заданный топик (так же в планах добавить Modbus и KNX)
-Настройки системы
Разрешение уведомлений
Импорт и экспорт конфигурации
Настройки сервера (PORT, LAN)
Генерация API-токенов. Долгоживущие токены для интеграций (Node-RED, скрипты).
Пользователи. Создание, смена пароля, удаление.
Zigbee2MQTT. Интеграция с zigbee2mqtt. Подписка на zigbee2mqtt/+/+.
Настройки MQTT
Настройки Modbus
Настройки KNX
- Режим просмотра на основной странице сервера
- Отдельный режим просмотра с несколькими темами, без возможности редактирования
На данный момент разработан один вариант UI
Да, интерфейс просмотра адаптивный, подходит для мобильных устройств.
Написано всё на Python, JS, HTML
В целом сервер сделан для личного домашнего использования, пока толком не тестировался, функционал заложен на основе личного опыта наладки автоматизации на реальных объектах, буду дополнять на основе фитбэка от людей, которые согласятся участвовать в его тестировании на своей инфраструктуре УД.
Сервер «заточен» на связку с NodeRed, но базовый функционал должен покрывать бОльшую часть возможных сценариев применения.
Ведётся постоянная доработка, улучшение и расширение функционала.
Если у кого-то возникнет интерес, то с удовольствием поделюсь для тестирования и доработки)
Пишите, вышлю любым доступным способом)
PS: Пост первый, сильно не пинайте)
UPD^
Сегодня выдался относительно свободный день, допилил поддержку Lua с возможностью запуска по таймеру и разным событиям
Язык я этот очень люблю за его простоту, да и вообще очень нравится мне LogicMachine, но уж очень кусачая у неё цена