Linux для умного дома

Просто о сложном. Начало создания беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo

Часть первая: Небольшая пошаговая инструкция по установке и первоначальной настройке «Умного дома»

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

Для себя определил следующие критерии:

  1. Место — квартира, где переделка (существенная переделка чего-либо не планируется).
  2. Возможность интеграции всех решений в единую систему УД с открытым кодом .
  3. Возможность постепенного расширения (масштабирования) функционала.
  4. По-возможности, минимальные затраты.
  5. По возможности покупка элементов системы в РБ или же в РФ, без всяких заказов с зарубежных сайтов. Пришел, посмотрел, купил.
  6. По возможности русскоязычный интерфейс, документация, поддержка.

Для себя определил открытый протокол Z-wave, сердце системы – однопалатный компьютер Raspberry PI (как раз у меня по работе такой и был) с контроллером Razberry, работающем на протоколе Z-Wave+. Программное обеспечение выбрал MajorDoMo. И протокол и ПО удовлетворяют мои требования.

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

Вот и решил немного восполнить этот пробел.

Про видеонаблюдение ранее написал небольшую заметку:

Создание загрузочного диска:

Первым делом скачиваем образ системы для дальнейших действий:

Для создания загрузочной флешки я использовал официально рекомендованную программу производителем Raspberry.

На официальном сайте разработчика сайт программы загрузчика.

Сразу же на сайте определяется разрядность ОС, и предоставляется ссылка для скачивания.

Также наглядно показано 3 шага для прожига образа.

1) Выбор образа
2) Выбор диска
3) Прожиг

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

Подключаем Raspberry Pi через кабель HDMI и подключаем клавиатуру.

Включаем питание Raspberry.

Идет загрузка системы, после которой запрос логина и пароля.

Используем по умолчанию: логин PI, пароль raspberrymj.

Вводимые символы пароля не отображаются

Запускаем утилиту настройки Raspberry

Первым делом я поменял пароль по умолчанию, надоест вводить 11 символов

Далее, конфигурируем свою сеть, в моем случае Wi-Fi вводим ssid (имя сети) и пароль к ней.

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

Более подробная информация о настройках утилиты конфигурирования находится здесь:
немного информации о rasp-config.

Перегружаемся выполнив команду:

Вновь авторизовываемся, введя логин и пароль.

Узнаем IP адрес Raspberry, задав команду:

wlan0, в моем случае и есть беспроводной интерфейс.

Задав команду ping, можем проверить доступ к Internet

Если всё прошло нормально, то видим ответы
Выход из утилиты ping (да и из многих утилит)
ctrl+C

После этого можем работать под удобной и привычной для себя операционной системой.

Для windows 10 привожу пример:

Скачиваем программу PuTTY, выбирая свою разрядность ОС Windows.

Запускаем программу PuTTY.

Пошаговый запуск PuTTY

Появляется окно подключения:

Указываем IP адресс Raspberry:

Далее в настройках выставляем Terminal — Keyboard:

Выставляем кодировку utf8, в Window — Translation

Если подключаемся в первый раз, то появляется запрос безопасности системы нажимаем ДА

Запрос логина, а потом и пароля. Как и при первом подключении.

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

Ещё раз проверяем, на всякий случай, свой IP адрес задав команду

Читайте также:  How to connect wifi in linux terminal

На рабочем ПК, в браузере набираем адрес платы:

Первый шаг сделан. Вы попадаете в окно настроек программы MajorDoMo.

Но радоваться ещё рановато, впереди предстоит установить и настроить сам Z-Wave, разобраться с программой администрирования вашего «умного дома», его программированием и т.д.

Источник

Умный дом, опыт построения, бег по граблям (MajorDomo, Tasmota и Алиса)

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

Если теорию знаете, можно перейти к моей истории поисков идеального решения.

NB! Так же для удобства, жирным курсивом подсветил названия технологий и платформ. А просто жирным — важные наблюдения или выявленные глобальные засады.

Ну, а теперь по порядку, немного теории

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

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

Бытовая техника (пылесосы, телевизоры, чайники, кондиционеры)

Лампочки/ленты (меняют цвет и яркость)

Датчики (мощность, напряжение, температура, влажность, концентрация газов)

Диммеры (пропорциональный выходной сигнал)

Исполнительные устройства (регуляторы температуры, привод штор)

Шлюзы (пульты, универсальные передатчики команд)

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

Умный дом Яндекс — нет логики, только команды, много совместимых устройств

Xiaomi (Aqara) – простые скрипты

Google Home – простые скрипты, много совместимых устройств

Domoticz – ограничен набор устройств, развитая логика

IFTTT — ограничен набор устройств, развитая логика

HomeAssistant — ограничен набор устройств, развитая логика, настройка интерфейса плагинами

Majordomo (php) — развитая логика, открытый проект, активно развивается, требует умения программировать.

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

Физически можно связываться через локальную компьютерную сеть (проводную или беспроводную), сеть малого радиуса (Bluetooth, ZigBee) или просто по радио или инфракрасному каналу (последнее обычно только в одну сторону работает).

Что же касается «языка» на котором общаются устройства, то тут вариантов много, но можно разделить на открытые (общедоступные) типа mqtt (сервис коротких сообщений через центральный сервер) или web-hook (обычные прямые ссылки на веб-сервер на борту устройства) и закрытые типа протокола Xioami/Redmond и прочих, которые известны только производителям.

Устройства – это хорошо, но что же ими управляет? Центральное устройство/ центр управления. Кстати, хабы типа Aqara это нифига не центральный модуль, а всего лишь концентратор сети ZigBee или какой иной, понравившейся производителю – логика остается в самих устройствах или на телефоне пользователя или в облаке.

Насколько я понял, большинство облачных сервисов не поддерживают логику. То есть в «Яндекс доме» можно узнать температуру и включить обогреватель. Но заставить Яндекс следить за температурой и держать в комфортном диапазоне – нет!

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

Как ни странно, дешевые микро ПК на ARM процессорах, например OrangePi, Nano Pi и прочие фруктовые Пи вполне тянут систему с базой данных, брокером сообщений и веб-интерфейсом. Не говорю уже про Raspberry – это вообще, как заговоренные.

Из программных серверов умного дома можно выделить популярные: Blynk (есть вариант облака и локальный), IFTTT (чисто облако, но с мобильным приложением), Home Assistant, Domotics, Majordomo.

История рождения моего умного дома

На момент начала моей автоматизации, у меня были штук 6 устройств SonOff (у них родное приложение и облако – eWeLink), управлял розетками на даче. И поставил камеры Xiaomi Dafang (камеры не понимали русский, но это PTZ, FullHD, да еще и стоили всего 2 тысячи рублей каждая). Камеры принесли на дачу постоянный интернет (мобильный), роутер. А также облако Xiaomi. Итого, 2 облака – Xiaomi + eWeLink. Надо было собирать в единую панель управления. Первым был установлен HomeAssistant, даже игрался с камерами (хотел на датчик движения у камер прикрутить и сохранять в системе). Но дальше скриншотов, и то не всегда, дело не пошло. С SonOff вообще не смог подружить. Решив, что логика для розеток все-таки важнее, начал играться с MajorDomo, который имел для этих устройств коннектор, а также более-менее понятный интерфейс настроек (субъективно, да, php+html, объектно-ориентированная модель).

Читайте также:  Лайф usb для windows

Первый тревожный звоночек пришел от Роскомнадзора – в попытке убить телеграмм (безуспешной) они прибили доступ ко многим облакам, в том числи и Xiaomi. В середине зимы было очень неприятно оказаться без видеонаблюдения за дачей, расположенной в 100 км от дома..

Итог – камеры перепрошиты на Dafang Hack (прошивка делающая локальный RTSP сервер потокового видео) и первая моя Raspberry c MotionEyeOS (локальный видео сервер), а также белый IP дома и VPN между домом и дачей (на роутерах Mikrotik). Локальный сервер держит архив на 500Гб (пара месяцев с двух камер), питается от аккумулятора (до 3 дней без света).

Для логики нужно не только управлять, но и контролировать, для этого купил SonOff POW R2 – это фактически, счетчик электроэнергии с выключателем на 16А (стоимость по 750 рублей). Это позволило при включении посудомоечной машины, бойлера для воды (суммарно 4 кВт) блокировать розетку с чайником. Сейчас это модно называется DemandResponse. А так же стало возможно контролировать работоспособность насосов водоснабжения и канализации (по графику дренаж включается и на графике мощности есть пики, по которым можно понять, много ли воды и вообще, не завис ли поплавок!) — дистанционная диагностика оборудования. Так же для управления низковольтными устройствами (включение дизельного отопителя, насоса аэрации воды для очистки, отключения зарядника от аккумулятора, когда нет напряжения в сети СНТ) был куплен клон SonOff G4 – четырехканального реле с радиопультом (еще 1100 рублей).

Второй «звоночек» пришел от eWeLink – с выходом в массы устройства контроля напряжения SonOff POW R2 поток через их сервер, видимо, стал превышать их возможности (ток, напряжение, мощность активная, мощность реактивная, мощность полная, коэффициент мощности и все это 5 раз в секунду с каждого такого устройства) и они решили, что датчики будут телеметрию слать один раз в минуту. То есть у вас уже минуту мощность за разумными рамками или напряжение просело до Америки (113 вольт реально было летом), а умный дом живет в розовых мечтах, что все хорошо.

Итог – модуль MojorDomo для локального режима SonOff и окончательный переход на MajorDomo на Orange Pi (стоила около 1000 рублей всего, пришлось осваивать Linux, а точнее – Armbian и по инструкциям ставить MajorDomo). Но недолго музыка играла… SonOff почувствовали что-то неладное и очередная прошивка на их сервере отрубила локальный режим, то есть только через облако, только раз в минуту..

Полная локализация

Так как умный дом к этому моменту управлял в том числе зарядкой аккумулятора и переключением на инвертор в случае аварии, зависеть от облака на «вражеских» серверах, а так же наличия связи с интернет показалось не очень разумной идеей.

Очередной шаг – перепрошивка всех устройств на Tasmota, отказ от протокола eWeLink и уход на MQTT. Это, кстати, открыло путь в полный лоукост – прошивка легко настраивается, а плата Wemos из Китая стоит всего 120 рублей, при этом на борту 12 линий для подключения периферии, АЦП, WiFi. Так число устройств в умном доме увеличилось раза в 3 – выключатели, датчики напряжения на АКБ, датчики температуры и влажности (кстати, оказалось, что лучший AM2301 – это AM2320! Программно совместим с AM2301, который еще называют DHT21, но при этом стабилен, не глючит и не зависает).

Читайте также:  При добавлении оперативной памяти не загружается windows

Тут Остапа понесло и в умном доме появились солнечные панели, 2 контроллера (один PWM, второй — MPPT), датчики тока от солнечных панелей в систему и на АКБ (просто по напряжению на клеммах степень заряда не измерить). От АКБ, кстати, на этот момент питаются 3 камеры, 2 микросервера, 2 роутера, общее потребление примерно 40Вт постоянно.

После примерно полугода, когда все было настроено и отлажено пришла беда – умерла карта памяти. Свежего бэкапа не оказалось – все ждал идеального состояния, не дождался. Изучил, какие карты бывают – узнал про MicroSD A2 – это карты с контроллером, как у SSD дисков — то есть много и часто писать/читать мелкие файлы им не страшно. Настроил, по памяти восстановил логику и оформление, сделал бэкап. Через месяца три началось неладное – зависания, тормоза при открытии графиков за месяц. Анализ (я почти стал спецом по Linux) показал, что база данных тупит из-за очень большого числа накопленных данных. Пришлось делать удаление старых данных, оставляя только по 2 отсчета за минуту для данных старше месяца. Помогло, но не сильно. Надежда была на плату с большим объемом памяти – Orange Pi One Plus (700 рублей), но не судьба. В итоге куплена Raspberry Pi4 c 2Гб памяти на борту, а для этой палаты есть оптимизированный образ MajorDomo – и о чудо, там все отлично – БД крутится полностью в памяти, раз в час сбрасывается на карту бэкап, в случае незапланированного падения, при загрузке восстанавливается состояние на начало часа.

Все это было отлично, управляется с компьютера, с телефона (экран на картинке – там 2 таких сцены, одна для управления и климата, вторая для телеметрии).

Но вот беда – чтобы включить свет надо все равно тянуться за телефоном и тыкать мелкие кнопки. А на даче еще и родители бывают, а для них много кнопок на экране – слишком сложно.

Появление голосового управления

И вот тут я задумался, что пора подключать голосовой помощник. Сначала думал про Google Assistant/Home, но увидав, что они творят со своим президентом, да еще к новому году отключили поддержку русского на колонках (оставив только на телефонах), решил, что вполне реально повторение с отключенными облаками Xiaomi и eWeLink. В итоге, Алиса от Яндекса. Каково же было мое удивление, когда увидел, что есть стандартный коннектор (навык Алисы) к MajorDomo! Яндекс станция мини отлично подошла по функциям и размеру, более того, нашел и обратный коннектор – из MajorDomo можно выдавать команды на устройства, подключенные к Алисе – пультам кондиционеров, телевизиров и даже роботу-пылесосу. И это не считая проговаривания статусов типа «внимание, работаем от аккумуляторов!». Соединение с Алисой можно сделать двумя способами – через платный сервис Connect (2 тысячи рублей в год, бонусом облачные бэкапы) или через Яндекс.Диалоги – для этого надо SSL сертификат на сайт, белый IP, и выставленный в интернет сайт с MajorDomo, то есть свет или отопление сможет отключить случайный прохожий. В общем, 2к в год – не большая цена за сохранение комфорта, да и SSL покупать не надо.

Естественно, управление через Яндекс – это чисто функция комфорта, основная логика реализована на локальном уровне.

Источник

Оцените статью