Зачем это нужно:

Контроллер LighHub позволяет подключить к себе:

  • Выключатели и другие контактные датчики (например, датчики открывания окон/дверей)
  • Стандартный Релейный модуль, позволяющий включать/выключать силовую нагрузку (лампы, теплые полы, нагреватели и пр)
  • Большое кол-во 1-Wire датчиков температуры
  • Большое кол-во каналов освещения (как LED так и AC) через стандартный DMX модуль
  • Modbus  устройства (сейчас реализовано: Диммеры и приточную вентиляцию)
  • До 12-ти аналоговых устройств 0-10В через внешние преобразователи ШИМ в 0-10В
  • Сенсорные стеновые панели с выходом DMX для локального управления LED освещением 

Далее, контроллер обеспечивает как автономное локальное управление (например, свет переключается выключателями или температура теплого пола поддерживается на заданном уровне) так и одновременное управление и мониторинг со стороны ПО openhab (с компьютера или мобильного приложения)

Более того, этих контроллеров в доме может быть установлено столько, сколько необходимо и они прекрасно взаимодействуют друг с другом по локальной сети с использованием MQTT

Недавно открыл для себя HomeRemote — замечательное мобильное приложение + ПО дизайнера интерфейса, которое нормально работает с MQTT и с последней версией прошивки)

 

Контроллер Умного Дома "LightHub" представляет из себя совокупность из следующих компонент (подробности по ссылкам):

  • Arduino Mega 2560 или Arduino DUE
  • Ethernet Shield
  • LightHub Shield (плата, на которой смонтированы аппаратные интерфейсы 1-wire и три преобразователя RS-485 для обслуживания DMX-512 и Modbus, опторазвязки входных сигналов)

Переферия:

Три платы соединены между собой штатным для Arduino способом и, совместно, обладают следующей функциональностью:

  • Подключение к брокеру сообщений MQTT (Mosquitto) через проводное Ethernet соединение. Контроллер подписывается на соответствующие топики MQTT, что позволяет управлять устройствами, например, при помощи системы OpenHab или мобильных приложений
  • Опрос 1-Wire термодатчиков. В зависимости от настройки системы, значения термодатчиков передаются в шину MQTT для внешнего мониторинга, а также, и используются для управления локальными нагревателями (теплые полы, калориферы)  через релейный модуль
  • Управление светодиодным освещением по протоколу DMX-512 при помощи внешних плат управления
  • Управление Modbus устройствами (сейчас это  AC диммеры и частотник приточной вентиляции)
  • Прием входящих воздействий (датчики, выключатели, кнопки) и передача их в шину MQTT 
  • Управление задвижками центральной вентиляции/кондиционера при помощи конвертеров ШИМ в аналоговый сигнал 0-10В


Конечно, все это управляется и мониторится удобно при помощи "родного" OpenHab мобильного приложения.
Конечно, поведение всех этих устройств можно диспетчеризировать как при помощи встроенных скриптов OpenHab так и с помощи сторонних систем типа NodeRed (например, управлять задвижками вентиляции, потоком и нагревом внешнего воздуха, температурой теплых полов в зависимости от температуры на улице и в комнатах, времени суток и сезона; управлять освещением в зависимости от высоты солнца над горизонтом и фазы луны, если кому такое надо))



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

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

Настройки хранятся в файле стандарта JSON

При первом запуске, через интерфейс командной строки задается MAC адрес устройства, который, затем, запоминается в EEPROM

Все это работает в продуктиве 24х7 с августа 2016 года, постепенно дописываясь.
Проект нуждается в  подробном двуязычном документировании.

Для этого приглашаются единомышленники! 

Сделано: разведении и заказе промышленного варианта печатной платы LightHub Shield 

Так контроллер выглядит сейчас:

Плата Arduino DUE установлена на материнскую плату. Плата снята, видны оптические развязки, защиты входов, драйверы DMX, Modbus, 1-wire, мощная транзисторная сборка (например) для управления реле. Плата на DIN рейке, рядом типовой модуль реле

Так контроллер выглядел полгода назад в макетном варианте (ESP 8266, установленная сверху, решает только вопрос перезаливки прошивки контроллера по воздуху, для эксплуатации не требуется)

Основные компоненты на плате - три преобразователя RS485 (DMX IN, DMX OUT, Modbus RTU) и аппаратный драйвер шины 1-Wire DS2482-100

 


FAQ:

Q: почему Arduino?

А:

Стоимость готовой платы на AliExpress приближается к розничной стоимости "голого" процессора

Плата нормально разведена, отлажена, не зависает

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

То, что стек библоитек Arduino повышает избыточность кода - терпимо. После того, как откомпилированный код перестал помещаться в AVR 328 я просто перешел на AVR Mega 2560. С учетом пренебрежимо малой стоимости и одного и другого - разницы нет. Быстродействия  хватает.

 В качестве бонуса получил 4 аппаратных последовательных порта: Первый пригодился - для отладки и перепрограммирования, Далее - DMX In, DMX Out, Modbus RTU

Ну и огромное кол-во переферии -

  • 12 PWM портов
  • 16 аналоговых и где-то +32 цифровых GPIO
  • Как обычно, SPI и I2C

Подробно все нарисовано тут

Ethernet Shield - штатный способ подключить Arduino к локальной сети

В данном модуле используется чип Wiznet WS 5100, сам по себе достаточно неплохой, но "благодаря" архитектуре Ардуино невозможно использовать возможности прямого доступа к памяти, при которой WS 5100 сам раскладывает принятый пакет в RAM

Взаимодействие WS5100 и AVR 2560 построена при помощи побайтного обмена по интерфейсу SPI. Ни о каких скоростях, соответственно, далее говорить не приходится.

В промышленном варианте я перешел на WS5500 

Узкое место Mega - объем RAM. Это не позволяет использовать всю возможную переферию на одном контроллере.

Но проект уже портирован на Arduino DUE (ARM) и эта проблема снята.

Кроме того, в моем проекте контроллеры распределены по зданию и обьеденены между собой и со средствами удаленного доступа посредством LAN и протокола MQTT.  Это обеспечивает, практически, ничем не ограниченную масштабируемость системы. У меня, например, один контроллер - управляет системами освещения (DMX, Modbus), вентиляции (Modbus, 0-10V), другой - устройствами 1-wire и теплыми полами. Если понадобится - их можно добавлять столько сколько надо и располагать в тех местах здания, куда проще дотянуть разводку от подключенных устройств.

 

 

 

 

 

Комментарии   

+2 #1 make 06.11.2017 23:12
Есть более современный шилд Ethernet-2 на чипе w5500. Почему бы не использовать его?
Цитировать
0 #2 Super User 06.11.2017 23:33
Цитирую make:
Есть более современный шилд Ethernet-2 на чипе w5500. Почему бы не использовать его?

Честно говоря, просто до него не добрался. Думаю, будет работать и с ним. В ограничения шилда на w5100 я пока не упирался. Такой апгрейд полезен для систем типа AMS, которые обслуживают Web клиентов. В нашем же случае, используется только один сокет, подсоединенный к MQTT брокеру. Какого-то принципиального улучшения, честно говоря, не ожидаю
Цитировать
0 #3 instalator 08.11.2017 18:43
Присоединяйся к группу по автоматизации https://t.me/SmartsHome
Цитировать
0 #4 Netwizard 23.11.2017 23:48
Здравствуйте,

как я понял из описания контроллера и статьи на хабре, конфигурация контроллера подгружается при старте и пишется в еепром. в конфиге указаны маппинги "датчик/исп.устройство - mqtt topic" ? есть-ли возможность так-же на уровне конфигов сцепить те-же самые датчики и локально исполняемые сценарии? например:
1. поддержание уровня воды в емкости по 2м датчикам.
2. Простенькая вентиляция по уровню CO2 и температуре
3. Поддержание температуры в помещении в заданных пределах
и т.д. Цель преследуется простая - с случае "смерти" центрального контроллера на OpenHAB'e, "интеллект" и умного дома может и отвалиться, но вот безусловные рефлексы работать должны от слова всегда ;)
Цитировать
0 #5 Super User 25.11.2017 14:57
Добрый день.
Да, основная идея была в том, чтобы такие вещи как локальное управление (например, выключатель - свет) а в особенности, поддержание температуры (связь термодатчик - реле нагревателя) управлялись только локально контроллером и не были никак завязаны на сервер.

По простой автоматики наполнения бака, также, можно задать локальный маппинг - например, замыкание контакта 1 передает объекту (item) "реле" команду ON а замыкание контакта 2 - команду OFF. (Неплохо бы еще датчиком протечки на OFF продублировать.)
Такой простой уровень автоматизации настраивается локально.

Относительно CO2 и вентиляции - так как тут к надежности, все-же меньше требований, я реализовал управление при помощи более гибкой связки:
1. Датчик CO2, температуры, влажности, подключеный через WiFi к шине MQTT (готовое изделие, заказанное в Барнауле примерно за 3 тыс руб)
2. NodeRed (о нем я тоже писал - штука удобнее, да и надежнее чем правила OpenHab, и работает с ним в паре. Там можно визуально задать самые невероятные сценарии, включая PID регулирование)
3. Контроллер LightHub
4. Приточка, воздушные задвижки (тоже писал тут про нее)

При желании, (Точнее, если нет желания городить приточку) просто-вентилятором можно управлять, например, с реле, подключенного к контроллеру.
Цитировать

Добавить комментарий


Защитный код
Обновить

0
0
0
s2sdefault