Majordomo умный дом своими руками

Добавил пользователь Владимир З.
Обновлено: 18.09.2024

Умный дом — это комплекс программных и аппаратных систем, выполняющих функции оптимизации жизнедеятельности и контроля функционирования технологических систем.
Основные сферы оптимизации:

  • Безопасность — повышение уровня безопасности за счёт постоянного контроля параметров работы технологических систем (отопление, водоснабжение, электричество и т.п.), а так же интеграция охранных компонентов (сигнализация, видео-наблюдение, GPS-трэкинг)
  • Экономия — поддержка оптимальных параметров энерго-потребления (электричество/тепло) и автоматический перевод систем в экономичный режим
  • Комфорт — централизованное управление всеми системами, автоматические сценарии последовательных действий, работа с мульти-медиа.

1.2 Это актуально только для частного дома?

1.3 Что такое MajorDoMo?

Это программное обеспечение, которое позволяет сделать из компьютера (Windows/Linux) контроллер управления домашней автоматикой.

1.4 Сколько это стоит?

Само программное обеспечение распостраняется бесплатно, однако для использования всех его возможностей, следует купить (или сделать самостоятельно) дополнительное оборудование — управляемые розетки, датчики и т.п. Стоимость конечного оборудования очень сильно варьируется в зависимости от используемого стандарта связи и производителя. Одним из основных преимуществ MajorDoMo является возможность одновременной работы с оборудованием на различных стандартах и от разных производителей.

1.5 Есть ли коммерческая версия комплекса?

Как таковой, платной версии программного комплекса не существует — система распостраняется абсолютно свободно под лицензией MIT, что подразумевает использование её без каких либо ограничений, кроме обязательного указания авторства, в любых проектах. Необходимо уточнить, что данный факт не исключает возможности оказания платных услуг с использованием платформы как инструмента в реализации проекта Умного Дома на коммерческой основе. При этом вполне возможна покупка/продажа на договорной основе дополнительного оборудования, а так же услуг по настройке системы для конкретного пользователя (программирование сценариев, разработка дизайна, отладка и т.п.). Подробнее о возможностях коммерческого сотрудничества читайте в соответствующем разделе сайта.

1.6 Оправдана ли покупка всего оборудования для использования в системе с экономической точки зрения?

Одна из функций подобных систем, это экономия расхода энерго-ресурсов и при правильной настройке и установке эта экономия начинает ощущаться в самое ближайшее время после ввода системы в эксплуатацию. Однако, действительно ли это выгодно надо считать, сопоставляя затраты и итоговую экономию. К сожалению, не всегда можно сделать однозначный вывод об экономическом эффекте. Тем не менее, было бы не правильно рассматривать данный класс систем только как средство экономии. Скорее, экономия это один из положительных эффектов, возникающий на ряду со многими другими — повышение безопасности, комфорта и качества жизни в целом. Насколько эти плюсы экономически оправданны, каждый решает для себя индивидуально.

1.7 После установки я получаю готовый Умный Дом?

Нет, вы получаете мощный и очень гибкий инструмент, с помощью которого вы сможете создать систему Умного Дома.

1.8 Я должен быть программистом?

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

1.9 Ничего не хочу программировать, помогите!

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

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

Далее, планируйте провести витую пару (двойные розетки) к местам установки медиа-систем (телевизоры, аудио-центры, спутниковые ресиверы и т.п.). Желательно в любом случае иметь по такой розетке в каждой комнате — их можно будет использовать не только для компьютерной сети, но и для телефонии. Эти кабели так же нужно выводить в общий щиток.

Так же полезно закладывать провода для системы мульти-рум. Если вы планируете встраивать в стену панели управления (те же планшеты), то так же подведите туда питание, чтобы не болтались провода.

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

1.11 Могу ли я всерьёз рассматривать возможность автоматизации своего жилья, если у меня нет возможности прокладывать дополнительные провода?

Конечно! Существует большой выбор беспроводного оборудования, которое может быть интегрировано в систему на любом этапе использования помещений, в том числе, когда ремонт/строительство давно завершены.

1.12 Кто такая Алиса? Почему именно Алиса?

Алиса — это персонаж, от имени которого идёт общение системы с пользователем. Имя может быть изменено в настройках системы. Почему выбрано такое имя? Спросите у автора системы 🙂

2.1 Всё оборудование будет завязано на централизованный сервер? Это надёжно?

2.2 Какой минимальный набор периферийного оборудования необходим?

2.3 Где я могу узнать, какое оборудование можно подключить к системе?

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

2.4 У меня есть оборудование, которого я не могу найти в каталоге, могу ли я его интегрировать в систему?

В общем случае, скорее да, чем нет. Во-первых, внимательно изучите документацию по вашему оборудованию — возможно, оно поддерживает обмен данными со сторонними системами, с помощью одного из протоколов, которые уже поддерживаются MajorDoMo. Кроме того, вы всегда можете создать тему в разделе форума проекта, предоставив подробную информацию и попросив помощи у опытных участников проекта.

2.5 Много где на страницах проекта и на форуме идёт упоминание об Arduino или 1-wire, значит ли это, что система лучше всего работает с этим оборудованием?

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

2.6 Каким образом пользователь взаимодействует с системой?

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

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

2.7 Может ли Алиса быть собеседником?

2.8 Каким образом система взаимодействует с оборудованием?

2.9 Могут ли сторонние сервисы передавать данные в систему?

Да, в системе имеется API для приёма данных и команд от сторонних сервисов. Подробнее об использовании.

3.1 На какое оборудование может быть установлена система MajorDoMo?

MajorDoMo может быть установлена на компьютер на базе операционной системы Windows либо Linux. В том числе на одноплатные компьютеры вроде Raspberry Pi с некоторыми особенностями функционирования.

3.2 Какие рекомендуемые системные требования?

Система может работать на достаточно старом оборудовании, однако комфортное использование (отклик интерфейса, синтез речи, мультимедиа и т.п.) накладывает определённые требования. При использовании в роли основного сервера домашней автоматики рекомендуется не меньше 2Гб оперативной памяти. (ответ в доработке)

3.3 Какие основные отличия Linux и Windows версий?

  • (+) Windows гораздо проще в первоначальной установке и запуске
  • (+) Windows более требовательна к аппаратным ресурсам
  • (+) Windows позволяет использовать более продвинутые движки синтеза речи (пример: Alyona от Acapella Group)
  • (++) Linux считается более стабильной и быстрой системной средой менее требовательной к ресурсам
  • (-) Linux сложнее настроить для работы с бытовым оборудованием (драйверы)

3.4 Каким средствами осуществляются голосовые уведомления?

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

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

Терминал — устройство, через которое пользователь взаимодействует с системой. В качестве терминала может быть использовано любое устройство, способное открывать веб-страницы через встроенный браузер. Это могут быть компьютеры, телефоны, планшеты, игровые приставки и умные телевизоры. Для телефоно и планшетов существует дополнительное программное обеспечение, которое помимо основной функции отображения информации добавляет дополнительный функционал: голосовую активацию и общение, сканер штрих-кодов и т.п.

К сожалению, факты падения циклов могут иметь место быть, хоть и ведётся работа по недопущению подобного. Обычно причиной таких случаев является некорректный код, добавленный пользователем в методах объектов и в сценариях. Имеется система аварийного перезапуска основных циклов в случае ошибки, так что система самостоятельно восстанавливает свою работоспособность. Тем не менее, следует разобраться в причинах, а именно воспользоваться средствами диагностики (см. ниже) для разобра инцидента.

3.8 Какие средства диагностики есть у системы?

4.1 Какой стэк технологий используется для разработки?

(L/W)AMP — Linux/Windows (ОС), Apache (веб-сервер), MySQL (база данных), PHP (язык программирования)

4.2 Насколько хорошо я должен уметь программировать на PHP для создания сценариев?

Для написания сценариев необходимы минимальные навыки программирования, т.е. знание базового синтаксиса языка, а так же списка функций, реализованных в MajorDoMo для работы с автоматикой. Пример сценария (если сейчас 6 утра, то сказать Доброе утро):

Как видите, всё достаточно несложно, нужно лишь использовать готовые конструкции. Аналогичный сценарий можно создать и во встроенном визуальном редакторе (без написания кода вручную):


4.3 Насколько глубоко я могу модифицировать систему под себя?

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

4.4 Что такое Классы, Объекты, Свойства, Методы и вообще ООП?

ООП — объектно ориентированное программирование. Одна из главных особенностей платформы и самый эффективный способ задействования оборудования и создания сценариев автоматизации. Более подробно о концепции и составляющих понятиях читайте в соответствующем разделе.

Например, элемент меню типа Выключатель используется связанное свойство для хранения данных о своём последнем состоянии, а так же метод объекта, как действие, которое надо выполнить после изменения состояния. С другой стороны, модули работы с оборудованием так же используют связанные свойства и объекты для хранения данных, полученных от соответствующих электронных устройств.

Например, привязав свойство какого-то объекта к свойству выключателя в модуле ZWave можно обращаться к этому свойству для получения последнего состояния физического выключателя, а так же использовать это свойства для установки значения (включения нагрузки), таким образом создаётся прозрачная двухсторонняя связь между физическим устройством и объектом системы MajorDoMo. Одно свойство объекта может быть привязано к нескольким элементам, так, если рассматривать предыдущие два примера, то можно объединить их в один, когда и для привязки выключателя в меню и для привязки выключателя ZWave мы используем одно свойство. В таком случае мы получаем управляемый через меню физический выключтатель.

4.7 Мне кажется, я нашёл ошибку, куда обратиться?

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


Эта статья будет первой из цикла про всевозможные датчики. В ней будут рассмотрены только несколько распространенных атмосферных датчиков. А для начала будут даны общие принципы работы с Wi-Fi модулями типа ESP-8266, создание для них микропрограммы, передача данных с датчиков в систему умного дома MajorDoMo.

Датчики:

  • датчики температуры, влажности, давления…
  • датчик концентрации CO2
  • датчик освещенности
  • датчик движения
  • датчики открытия дверей и окон
  • датчик затопления (протечки)
  • датчик утечки бытового газа
  • датчик дыма.
  • датчик электропотребления

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

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

Далее как обычно рассмотрим самодельные и покупные варианты. Кстати не всегда нужно однозначно отдавать предпочтение тем или другим — можно смело комбинировать.

Датчики своими руками:

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

Микроконтроллер:

Итак, начнём с самодельных вариантов на базе Wi-Fi микроконтроллера ESP8266. Во всех примерах буду использовать плату Wemos D1 mini.

На данном микроконтроллере очень легко можно строить различные комбинированные устройства, совмещающие в себе сразу и какие-то датчики и актуаторы для управления нагрузкой, например, светильник с датчиком освещенности и т.п. К модулю можно подключать кнопки и сенсорные площадки. При чем нажатия кнопок с модуля можно обрабатывать на сервере умного дома. Интересные комбинации можно получить, подключив к модулю миниатюрный OLED дисплей, на который можно сразу выводить текущие значения с датчиков и (или) информацию с сервера умного дома. Для подключения к этой плате без пайки есть несколько разных шилдов, например, плата для подключения внешнего аккумулятора, плата с установленным реле, со слотом для microSD карты и т.п.

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

Перед тем, как перейти к конкретным решениям необходимо рассмотреть общие правила работы с модулями ESP8266.

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

Создание микропрограммы при помощи конструктора:


Итак, после регистрации на сайте проекта, для создания микропрограммы через конструктор, необходимо:


Загрузка микропрограммы:


Настройка ESP8266:

Для настройки модуля необходимо:




Настройка Majordomo:





Датчики температуры, влажности, давления.

Итак, теперь перейдем к рассмотрению самих датчиков:

DS18B20


Для начала изучим цифровой температурный датчик DS18B20, подключаемый по шине 1-wire. Основные технические характеристики следующие:

  • Диапазон измерения температуры составляет от -55 до +125 °C.
  • Точность: ±0,5°C (в пределах −10…+85 °C)
  • Время получения данных: 750 мс при 12-битном разрешении; 94 мс при 9-битном разрешении
  • Напряжение питания: 3–5,5 В
  • Потребляемый ток при бездействии: 750 нА
  • Потребляемый ток при опросе: 1 мА

Из особенностей следует отметить:

  • На одну линию связи может быть установлено до 20 датчиков (макс. кол-во нужно выставить в конструкторе прошивки перед компиляцией). Каждый DS18B20 имеет свой уникальный цифровой идентификатор, что позволяет принимать данные от нескольких датчиков на одной линии связи.
  • Возможность получения питания от той-же линии связи (паразитное питание). 1 и 3 выводы подключаются на общий провод, а плюс питания через резистор 4,7k подключается к выводу №2 (на длинной линии рекомендуется полноценное питание).
  • Выпускается как в обычном исполнении, так и в закрытом корпусе (герметичной металлической капсуле), что позволяет использовать его под водой, например для контроля температуры воды в аквариуме.

Схема подключения термодатчика к популярной плате Wemos D1 Mini выглядит следующим образом (GPIO5 для примера, можно использовать и другие, только отразить это в настройках микроконтроллера):



После всех манипуляций на главной странице админки контроллера можно увидеть показания с термодатчика, а для доставки данных в систему умного дома лучше всего использовать протокол MQTT, выполнив соответствующие настройки в разделе Servers (при условии, что нужная опция была задана в конструкторе прошивок, подробности ранее в этой статье и в статье про MQTT):


DHT22 (AM2302):


Это комбинированный датчик температуры и влажности, с приемлемой точностью (возможно потребуется начальная калибровка в настройках прошивки WiFi-IoT). Однако существует и более дешёвая версия этого датчика DHT11 (в синем корпусе), которая к использованию не рекомендуется по причине совсем низкой точности. Основные параметры датчика следующие:

  • Питание – от 3 до 5 Вольт;
  • Измерение влажности в интервале от 0% до 100%. Точность измерений от 2% до 5%;
  • Диапазон измеряемых температур – от минус 40 до 125 градусов по Цельсию (точность измерений – 0,5);
  • Частота снятия показаний: одно измерение за 2 секунды.
  • Габаритные размеры: 15,1 мм длина; 25 мм широта; 5,5 мм высота;

Схема подключения к плате D1 Mini следующая:



BME280

Новейший датчик от фирмы BOSH. BME-280 это три в одном: Датчик давления, влажности, температуры, подключается по I2C. Есть так же версия под названием BMP-280 — она менее интересна, т.к. не имеет на борту датчика влажности. Сам датчик очень мелкий, поэтому имеет смысл покупать его сразу в виде модуля (например, как на фото справа). Характеристики у датчика следующие:

  • Рабочее напряжение: 3.3В
  • Диапазон давления: 300-1100hPa
  • Диапазон температур: -40 — +85 °C
  • Диапазон влажности: 0 — 100 %
  • Среднее энергопотребление: во время измерений 2.74 нА, в спящем режиме: 0.1 нА
  • Среднее время измерения: 5.5 мс
  • Точность измерения: Давление — 0.01 hPa (
  • Температурный коффициент смещения: ± 0.12 hPa (средний), эквивалент 1 метра

Схема подключения следующая (Внимание, датчик требует питание 3.3В):


Вообще, шина I2C, к которой подключается данный датчик, в обязательном порядке требует установку подтягивающих резисторов на линии SCL и SDA, но на конкретно этой плате они уже распаяны, хотя в других вариантах могут отсутствовать.




Это была тройка пожалуй самых популярных датчиков. Естественно в вышеприведенных вариантах эти датчики (микроконтроллеры) требуют питания от сети, т.к. поддержание Wi-Fi соединения довольно энергозатратно. Как-то может помочь в этой ситуации режим Deep sleep, для активации которого необходимо отметить соответствующую опцию в конструкторе прошивки (в шестеренке указав время бодрствования), затем электрически соединить между собой два вывода микроконтроллера — Reset c GPIO16, а так же настроить интервалы просыпания в разделе MAIN веб-админки Wi-Fi модуля. Но конечно микроконтроллеры, которые используют другие стандарты передачи данных, могут обеспечивать на порядки лучшую энергоэффективность, работая годами от одного комплекта батареек.

Покупные датчики:

Как правило большинство готовых решений имеют батарейное питание и работают по радиоканалу zigbee, z-wave и т.п. Среди готовых датчиков весьма популярны Noolite (433MHz свой протокол), Xiaomi (zigbee), большой ассортимент z-wave совместимых решений и т.п. Более подробно остановлюсь на первом:

Noolite PT111 :


Это датчик температуры и влажности с автономным питанием. Работает по беспроводному протоколу на частоте 433МГц. Основные технические характеристики:

  • Диапазон измерения температуры: -20…+50 °С
  • Диапазон измерения относительной влажности: 1…99 %
  • Точность измерения температуры:
    — в диапазоне от -10 до +50 °С :0,5 °С
    — в диапазоне от -20 до -10 °С: 1 °С
  • Точность измерения влажности: 4,5 %
  • Диапазон рабочих температур / влажности -20… +50 °С / 10…80 %
  • Максимальное рабочее расстояние: 50 м
  • Тип элементов питания датчика: 2 x AAA (LR03)Alkaline 1.5 В
  • Время автономной работы от одного комплекта элементов питания: не менее 1 года
  • Степень защиты корпуса: IP 20

Для получения данных температуры и влажности понадобится шлюз Ноолайт, подключаемый к UART или USB:


По UART можно подключить устройство напрямую, например, к одноплатному компьютеру Raspberry Pi. В версии с USB, кроме наличия USB-UART преобразователя, нет никаких отличий от более дешёвого варианта (без USB).

В систему Majordomo из Маркета дополнений необходимо установить модуль Noolite и выполнить начальные настройки — для ОС Линукс необходимо выбрать Serial Port /dev/ttyUSB0 (как правило). После этого на всякий случай можно перезагрузить Мини ПК.




Данное устройство так же можно использовать автономно совместно с силовыми блоками от Ноолайт для управления нагрузкой без каких-либо дополнительных систем. Таким образом можно получить функционал термостата или гигростата на выбор:

Более подробно про систему Noolite читайте в предыдущей части и на сайте производителя.

Все рассматриваемые датчики установлены у меня дома. Все инструкции из собственного опыта.

Подготовка сервера

Обновляем список пакетов:

Настройка веб-сервера

Управление умным домом от Majordomo осуществляется с помощью веб-интерфейса и для его работы необходим веб-сервер.

Установка Apache

Устанавливаем веб-сервер Apache и дополнительные компоненты:

apt install apache2 apache2-bin apache2-data apache2-utils

Разрешаем автозапуск apache и стартуем сервис:

systemctl enable apache2

systemctl start apache2

Открываем браузер и вводим IP-адрес сервера — мы должны увидеть страницу Apache по умолчанию:

Стартовая страница Apache

Apache + PHP

Устанавливаем php и дополнительные компоненты:

libapache2-mod-php libapache2-mod-php php-bz2 php-cli php-common php-curl php-gd php-json php-mbstring php-mysql php7.2-opcache php-readline php-xml php-dev libmcrypt-dev gcc make autoconf libc-dev pkg-config

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

Настройка системы Majordomo

Система Majordomo для “Умного дома”

MajorDoMo для управления дамашней автоматикой

Cистема домашней автоматизации MajorDoMo

Системы Majordomo максимально адаптированы для начинающих пользователей и поэтому практически не требуют опыта или знаний в таких областях, как программирование или электроника.

Majordomo — это бесплатная общедоступная программа

Система управления “Умным домом” MajorDoMo

Функции и характеристики MajorDoMo

Основными возможностями систем Majordomo являются:

  • быстрая и понятная установка даже для начинающих пользователей;
  • поддержка основных платформ (Linux/Windows);
  • бесплатное персональное использование вне зависимости от масштабов организации;
  • существование сообщества, принимающего активное участие в жизни проекта, разбавляющее его разными интересными нововведениями;
  • поддержка всевозможных видов оборудования;
  • многоязыковой интерфейс (русский/английский);
  • наличие маркета — своеобразного онлайн-магазина, где вы можете приобрести дополнения.


Автор, специалист в сфере IT и новых технологий.

Получил высшее образование по специальности Фундаментальная информатика и информационные технологии в Московском государственном университете имени М.В. Ломоносова. После этого стал экспертом в известном интернет-издании. Спустя время, решил попробовать писать статьи самостоятельно. Ведет популярный блог на Ютубе и делится интересной информацией из мира технологий.

Читайте также: