Как сменить dns majordomo
Решил обобщить и систематизировать накопленный опыт в создании умного дома. Началось все с управления розетками (светом) на даче – если уехал и забыл выключить свет, можно через интернет выключить и спать спокойно. Потом появилось ограничение по мощности и желание автоматически реагировать на превышение мощности отключением маловажных потребителей типа чайника. Ну а дальше уже сложно остановиться. Климат, автономное снабжение, комфортный свет и все это - не вкладывая много денег, хотя если все посчитать..
Если теорию знаете, можно перейти к моей истории поисков идеального решения.
NB! Так же для удобства, жирным курсивом подсветил названия технологий и платформ. А просто жирным - важные наблюдения или выявленные глобальные засады.
Ну, а теперь по порядку, немного теории
Умным домом принято называть что угодно, от 2 лампочек, управляемых по таймеру до сложной системы, реагирующей на множество факторов и делающей жизнь владельца комфортной.
В любом случае речь про управление устройствами, кратко их можно собрать в группы:
Бытовая техника (пылесосы, телевизоры, чайники, кондиционеры)
Лампочки/ленты (меняют цвет и яркость)
Датчики (мощность, напряжение, температура, влажность, концентрация газов)
Диммеры (пропорциональный выходной сигнал)
Исполнительные устройства (регуляторы температуры, привод штор)
Шлюзы (пульты, универсальные передатчики команд)
Построение умного дома начинается с выбора платформы. Разные платформы имеют разную функциональность, стоимость, сложность настройки. Например:
Умный дом Яндекс - нет логики, только команды, много совместимых устройств
Xiaomi (Aqara) – простые скрипты
Google Home – простые скрипты, много совместимых устройств
Domoticz – ограничен набор устройств, развитая логика
IFTTT - ограничен набор устройств, развитая логика
HomeAssistant - ограничен набор устройств, развитая логика, настройка интерфейса плагинами
Majordomo (php) - развитая логика, открытый проект, активно развивается, требует умения программировать.
Нужно заметить, что платформы от именитых производителей умеют работать друг с другом. То есть их экосистемы можно объединять, что существенно расширяет перечень подключаемых устройств. Кстати, о подключениях тут есть 2 аспекта: как подключаться физически и как общаться с концентратором умного дома.
Физически можно связываться через локальную компьютерную сеть (проводную или беспроводную), сеть малого радиуса (Bluetooth, ZigBee) или просто по радио или инфракрасному каналу (последнее обычно только в одну сторону работает).
Устройства – это хорошо, но что же ими управляет? Центральное устройство/ центр управления. Кстати, хабы типа Aqara это нифига не центральный модуль, а всего лишь концентратор сети ZigBee или какой иной, понравившейся производителю – логика остается в самих устройствах или на телефоне пользователя или в облаке.
Насколько я понял, большинство облачных сервисов не поддерживают логику. То есть в «Яндекс доме» можно узнать температуру и включить обогреватель. Но заставить Яндекс следить за температурой и держать в комфортном диапазоне – нет!
Для реализации логики нужен центральный блок, причем желательно локальный. Вот тут вариантов масса – поставить на свой домашний комп программу управления, собрать отдельный сервер, разместить сервер в облаке.
Из программных серверов умного дома можно выделить популярные: Blynk (есть вариант облака и локальный), IFTTT (чисто облако, но с мобильным приложением), Home Assistant, Domotics, Majordomo.
История рождения моего умного дома
На момент начала моей автоматизации, у меня были штук 6 устройств SonOff (у них родное приложение и облако – eWeLink), управлял розетками на даче. И поставил камеры Xiaomi Dafang (камеры не понимали русский, но это PTZ, FullHD, да еще и стоили всего 2 тысячи рублей каждая). Камеры принесли на дачу постоянный интернет (мобильный), роутер. А также облако Xiaomi. Итого, 2 облака – Xiaomi + eWeLink. Надо было собирать в единую панель управления. Первым был установлен HomeAssistant, даже игрался с камерами (хотел на датчик движения у камер прикрутить и сохранять в системе). Но дальше скриншотов, и то не всегда, дело не пошло. С SonOff вообще не смог подружить. Решив, что логика для розеток все-таки важнее, начал играться с MajorDomo, который имел для этих устройств коннектор, а также более-менее понятный интерфейс настроек (субъективно, да, php+html, объектно-ориентированная модель).
Первый тревожный звоночек пришел от Роскомнадзора – в попытке убить телеграмм (безуспешной) они прибили доступ ко многим облакам, в том числи и 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, но при этом стабилен, не глючит и не зависает).
Тут Остапа понесло и в умном доме появились солнечные панели, 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 покупать не надо.
Естественно, управление через Яндекс – это чисто функция комфорта, основная логика реализована на локальном уровне.
Для начала разберемся, как в интернете устроена работа сайтов. Если говорить совсем просто, сайт — это набор файлов и папок, который лежит на отдельном компьютере определенной мощности — сервере, а сама услуга предоставления такого компьютера для размещения сайта в интернете называется хостинг.
Схема работы DNS-сервера
Смена хостинга или сервера хостера влечет за собой смену IP-адреса сайта, поэтому важно правильно прописать ресурсные записи домена, чтобы он ссылался на корректный IP-адрес. В противном случае, люди не смогут найти этот сайт в сети, при переходе на сайт человек увидит вот такой алерт:
Где находится DNS домена
Для начала разберемся, как узнать DNS-провайдера, чтобы понять, где хранится DNS. Для этого достаточно вбить домен сайта в сервис Whois и посмотреть значение в строках nserver:
Наиболее часто встречаются значения:
Встречаются и другие значения, но в любом случае можно скопировать строку nserver и загуглить ее, чтобы выйти на провайдера DNS.
Как настроить DNS
Мы выяснили, где меняются ресурсные записи. Следующим шагом нужно войти в личный кабинет провайдера, чтобы изменить DNS. Дальнейшие действия зависят от провайдера, рассмотрим 2 самых распространенных варианта.
Если домен делегирован на Яндекс.Коннект
Чтобы изменить DNS, нужно кликнуть на «Управление DNS» соответствующего домена:
DNS-записи здесь уже заполнены, нужно только указать новый IP-адрес для записи типа А, которая связывает IP с доменным именем:
Готово! Обновление DNS-записей домена происходит в течение 72 часов, но по нашему опыту у некоторых провайдеров сайт начинает открываться уже через пару часов.
Если домен делегирован на хостинг
В личном кабинете регистратора домена можно также встретить NS-записи другого вида:
Перенос сайта на другой сервер того же хостера
В этом случае в панели управления следует найти место, где меняются ресурсные записи домена, и в записи типа A указать IP-адрес нового сервера. Менять остальные DNS-записи не требуется.
Перенос сайта на другой хостинг
Если на прежнем сервере кроме этого сайта больше ничего не размещено, возникает необходимость переноса ресурсных записей на новый хостинг. Данный процесс осуществляется в несколько шагов:
Шаг 1: Перенос DNS на другой сервер
В Личном кабинете нового хостера необходимо найти место, где прописываются DNS, и прописать такие же записи, как у прежнего хостера, за исключением записи типа A — здесь нужно будет указать IP-адрес нового сервера.
Шаг 2: Проверка MX-записей домена
При переносе ресурсных записей существует опасность неправильной настройки MX-записей, которые сообщают различным почтовым программам о том, где находится нужный почтовый сервер. Если не перенести MX-записи с прежнего сервера или заполнить их некорректно, владелец сайта может остаться без почты на домене на долгий срок — он сможет отправлять письма, но входящие получать не будет. При этом отправитель письма на почтовый ящик на домене после отправки получит следующее уведомление:
Если в течение трех суток MX-записи не будут настроены правильным образом, то неполученные письма потеряются навсегда, при этом отправитель получит уведомление о том, что письмо не доставлено.
Если в указанный срок проблема все же будет устранена, то входящие письма не потеряются, а придут позже, когда DNS-серверы в интернете обменяются данными о новых DNS-записях. Обновление DNS-записей занимает от 2 до 72 часов.
Шаг 3: Настройка NS-записей
Выше мы рассмотрели ситуацию, когда DNS-записи редактируются на стороне хостера, и на прежнем сервере кроме переносимого сайта больше ничего не размещено. Существуют и другие ситуации:
-
Владелец сайта хранит на прежнем хостинге несколько сайтов.
В этом случае переносить DNS-записи и перенаправлять NS-сервера домена в панели управления доменом на другой хостинг не обязательно — они могут храниться в прежнем месте. Необходимо только изменить записи типа A, указав IP-адрес нового сервера.
Так случилось с нашим клиентом — домен его сайта куплен через провайдера Majordomo, который кроме хостинга еще предоставляет услугу регистрации домена. У данного провайдера NS-записи и DNS хранятся и редактируются в одном месте. В этом случае так же не требуется правка NS-записей и перенос DNS в другое место, достаточно в записи типа А указать новый IP-адрес.
В предыдущей статье я рассказывал о том, как я поднял домашний сервер. Однако, сервер подразумевает работу в сети. И от этой сети, от её возможностей и её защищенности будет зависеть работа сервисов на данном сервере.
Почти любое IT направление начинается с того, что сначала оно рождается в виде "лишь бы заработало" и только потом ведется работа над безопасностью. Наше направление - это Internet of Things (IoT). И эта учаcть не обошла стороной и его. Сети IoT нужно защищать даже от домашних пользователей. Точнее, от их устройств. Неизвестно, какой вирус могут подхватить на свои планшето/смартфоно/компьютеры ваши домочадцы и на что этот вирус будет способен. А многие устройства умного дома не имеют должной защиты от хакинга. Даже сам проект MajorDoMo.
Организуя систему умного дома, (компоненты которой пренепременнейшим образом будут использовать домашнюю сеть) в первую очередь следует позаботиться о нормальном роутере. Нет, не такой нужен, который со 100500 WiFi антеннами и супермощным процессором. Нормальный роутер - это тот, который надежен и позволяет очень гибко настроить сеть. Я для своей сети выбрал роутер Mikrotik hAP AC Lite. Эта мелкая коробочка умеет такое, что не снилось ни одному D-Link'у, ни Asus'у, ни TP-Link'у. Они могут посоревноваться только в том случае, если зарядить их прошивкой OpenWRT. Но Mikrotik - это больше для профессионалов. Для дома может подойти и что-то наподобие Zyxel Keenetic, если конечно он даст те сетевые возможности, которые будут описаны ниже.
В умном доме должны быть минимум две почти изолированные друг от друга подсети.
В одной подсети находятся пользователи со своими гаджетами, в другой - инфраструктура умного дома.
Более-менее серьезный роутер позволит это реализовать.
Как это сделано у меня
У меня настроены три подсети.
Основная, где сидят все домашние пользователи со своими гаджетами - 192.168.0.0/24
К этой подсети нужно относиться как к публичной и выдавать ограниченный доступ к другим подсетям. Вплоть до ограничения по типу протокола и порта.
Сеть умного дома - 192.168.222.0/24
Именно тут живут все умные датчики, лампочки, выключатели и даже сам сервер. Ну и мой ПК тоже тут.
IP сервера: 192.168.222.254
У первых двух подсетей реализованы и отдельные WiFi сети. Сеть для датчиков скрывает свой SSID, чтобы не привлекать внимание посторонних.
В роутерах Mikrotik, как и в прошивках OpenWRT, можно создавать произвольное количество WiFi сетей на одном физическом WiFi интерфейсе.
В этом случае для этих сетей создаются виртуальниые интерфейсы, с которыми можно работать почти как с физическими.
Изоляция
Все сетевые пакеты, проходящие через роутер, проходят через фаерфол. Это что-то типа фейс-контроля в клубах.
У охранников есть свод критериев, по которым они принимают решение о пропуске. Мордой не вышел, значит не пройдешь.
Firewall в Mikrotik очень похож на линуксовый iptables. Я бы даже сказал, что они братья-близнецы,
но у Mikrotik'овского фаервола функционала побогаче будет. Однако, базовые правила конфигурации фаервола у них
абсолютно идентичны. Есть три основные цепочки (chains) движения сетевых пакетов. Это INPUT, OUTPUT и FORWARD.
Цепочка INPUT - это пакеты, которые предназначены самому роутеру. OUTPUT - это исходящие от роутера пакеты.
А вот FORWARD - это пакеты, гуляющие между подсетями.
Так же, порядок правил в таблице фаервола тоже имеет значение. Ибо когда фаервол получает пакет на обработку,
он его проверяет по правилам сверху вниз. И если находится подходящее для него правило, он его отрабатывает.
А вот если правила нет, то пакет свободно проходит сквозь фаервол. Да, это не циска, где в конце списка всегда стоит неотключаемое правило "блокировать всё". И даже у линуксового IPTABLES можно задать - что делать с неопределенными пакетами. В Mikrotik нужно эти правила задавать самому.
Обычно это правило из разряда "блокировать абсолютно всё", которое размещают в конце списка правил.
У меня стоит запрет на любые проходящие пакеты от VPN и домашней сети к сети датчиков и сервера.
Однако, выше запрета стоят некоторые разрешающие правила:
Собственно, это всё самое основное для того, чтобы обезопасить систему на сетевом уровне.
WEB сервер и DNS
Как видно из записей, серверу я назначил аж целых три доменных имени. Первое будет использоваться в качестве основного имени,
остальные два - для WEB сервера.
Имя server.lan - имя общего назначения. Его можно вбивать, например, в настройки подключения к серверу на своих датчиках. Удобно это тем, что при развертывании нового сервера и переезде всей ифраструктуры на новый сервер, достаточно будет изменить IP адрес его доменного имени в роутере.
За именем md.server.lan будет закреплен MajorDoMo, за test.server.lan - экспериментальная WEB страница.
Если есть белый IP
На сленге админов-сетевиков, "белым" IP адрес называют адрес, выданный провайдером из глобального пула IP адресов. К узлу с таким адресом можно подключиться из любой точки мира. Но вот есть беда. Белых адресов уже дико не хватает, потому провайдеры практикуют подключение множества своих клиентов через один общий белый IP, выдавая самим клиентам так называемые "серые" IP адреса. Серый IP адрес - это такой же тип адреса, какой выдает домашний роутер устройствам в локальной сети. Снаружи к устройству не подключишься, для этого нужно настраивать проброс портов сквозь роутер. По сути, провайдер просто сажает своих клиентов за свой роутер. А кто даст настраивать роутер провайдера для проброса портов? Верно, никто. Если провайдер раздает белые IP, пусть даже и динамические (которые меняются постоянно, но они все равно белые), то это уже мегакруто. Это позволяет подключаться к дому, не прибегая к сторонним услугам, таким как платные VPN сервисы.
Хорошо, на сайт мы зашли, зарегистрировались и зарегистрировали домен под текущий IP адрес. Но как быть в случае, когда провайдер внезапно поменял IP? Для этого нужно сообщить серверам DuckDNS о смене IP адреса. На сайте у них есть варианты скриптов для различных платформ. Есть там примеры для DD-WRT, OpenWRT, Mikrotik и даже для ESP8266. Но у меня Mikrotik, потому я буду приводить вариант для него. На текущий момент там есть два варианта для Mikrotik. Я использую переработанную версию старого скрипта.
Он же, при добавлении через Winbox:
Этот скрипт использует данные из глобальных переменных для удобства в дальнейшей поддержке.
Все переменные этого скрипта нужно создавать и заполнять данными при каждой загрузке роутера. Но это не беда.
В Mikrotik можно сделать и так:
А теперь самое главное. Нужно обновлять IP всякий раз, когда провайдер выдает новый IP.
Для этого в Mikrotik есть возможность писать скрипты, которые будут выполняться при различных событиях.
В разделе IP -> DHCP Client, на вкладке Advanced есть большое окно для скрипта. Там вводим следующее:
Общие сведения
Модуль Yandex Home предназначен для поддержки личных (приватных) навыков для платформы умного дома Яндекс. Модуль реализует авторизационный сервис на основе стандарта OAuth 2.0 и Provider Adapter API - промежуточный API, который принимает на вход запросы в формате платформы умного дома Яндекс и преобразует их в запросы к API MajorDoMo.
В модуле Yandex Home все обработчики запросов реализованы в виде отдельных файлов: authorize.php, token.php и smarthome.php, и размещаются в директории /modules/yandexhome.
В конечном итоге запуск модуля сводится к такой последовательности шагов:
Поддерживаемые умения
* Имеется возможность переопределить диапазон значений и шаг изменения.
Требования
Установка модуля
Чтобы установить модуль, нужно в Панели управления MajorDoMo перейти в раздел Система и открыть Маркет дополнений. Модуль находится в категории Взаимодействие. Открываем эту вкладку и ищем в списке строку с модулем. Для установки нажимаем кнопку Добавить.
Процесс установки отобразится в виде лога. После успешной установки система перенаправит обратно на страницу Маркета дополнений, а в разделе Устройства Панели управления появится новый пункт с модулем Yandex Home.
Настройка модуля
Настройка модуля заключается в генерации значений OAuth2 ID и OAuth2 KEY с помощью соответствующей кнопки, а также ввод произвольных логина и пароля пользователя, которые впоследствии будут запрошены в ходе объединения аккаунтов в приложении Яндекс.
На ранних этапах использования модуля рекомендуется включить ведение логов событий - Отладка DebMes.
При необходимости можно указать, какой использовать стиль отображения списка устройств на главной странице модуля.
Публикация обработчиков запросов
Механизм взаимодействия платформы умного дома Яндекс со сторонними системами (провайдерами) реализуется посредством вебхуков (webhook). Облако Яндекс для запроса состояния устройств и управления ими посылает POST- и GET- запросы на конечные точки (endpoint) вебхуков и получает ответы от них. Таким образом, для корректной работы этого механизма необходимо обеспечить постоянную доступность вебхуков из сети Интернет со стороны облака Яндекс.
Согласно API платформы умного дома Яндекс требуется реализовать три типа конечных точек:
- URL авторизации (authorization endpoint) - страница, на которой авторизуется пользователь, чтобы разрешить навыку доступ к своему аккаунту.
- URL для получения и обновления токена (token endpoint) - адрес, на который отправляются запросы с авторизационным кодом, чтобы получить OAuth-токен доступа, и запросы для обновления ранее полученного токена.
- URL обработчика навыка (smarthome endpoint) - основной вебхук, который отвечает непсредственно за работу с устройствами.
В модуле Yandex Home все три типа конечных точек реализованы в виде отдельных файлов: authorize.php, token.php и smarthome.php, размещаемых в директории /modules/yandexhome.
Чтобы опубликовать эти три вебхука в сеть Интернет и обеспечить тем самым их доступность со стороны облака Яндекс, необходимо выполнить ряд условий.
Условие №1. Публичный (глобальный, белый) IP-адрес, выдаваемый интернет-провадером.
Условие №2. Доменное имя (DNS), привязанное к публичному IP-адресу.
Это требование в большинстве случаев закрывается классическими сервисами динамических DNS, которых представлено в сети в большом ассортименте, как платных, так и бесплатных. Большинство современных роутеров уже имеют встроенную поддержку сервисов Dynamic DNS. При использовании сервисов удаленного доступа типа KeenDNS или VPNKI это условие выполняется автоматически - доменное имя выбирается и присвается в ходе регистрации и подключения услуги.
Условие №3. Валидный SSL-сертификат на DNS-имя.
Детально расписывать все пункты не буду, т. к. в сети и так огромное количество материалов по данной тематике и все прекрасно ищется.
Навыки умного дома - специальная категория навыков Алисы, предназначенных для голосового управления домашними устройствами. Навыки создаются в консоли разработчика платформы Яндекс Диалогов.
Основные шаги по созданию навыка это:
- Настройка связки аккаунтов OAuth 2.0.
- Добавление навыка и выбор его типа.
- Заполнение информационных полей.
- Модерация навыка.
- Публикация навыка.
Чтобы создать новый приватный навык, открываем консоль разработчика и авторизуемся под нужной учетной записью.
В личном кабинете разработчика нажимаем шестеренку и переходим в раздел Настройки, где открываем вкладку Связки аккаунтов.
После чего добавляем новую связку и заполняем ее поля (детальное описание здесь).
Сохраняем связку и возвращаемся на главную страницу консоли разработчика, на которой создаем новый навык, кликнув по кнопке Создать диалог.
Тип навыка выбираем Умный дом.
Последовательно заполняем поля (детальное описание здесь).
- Приватность - обязательно ставим галочку Не показывать в каталоге.
- Подзаголовок - пишем краткое описание навыка.
- Имя разработчика - фамилия, имя.
- E-mail разработчика - пишем аккаунт Яндекс.Почты.
- Сайт для верификации прав использования бренда - оставляем пустым.
- Описание - произвольное описание нашего навыка.
- Заметки для модератора - оставляем пустым.
- Иконка - логотип навыка в формате PNG или JPG.
- Связка аккаунтов - в выпадающем списке выбрать ранее созданную связку.
Сохраняем изменения, после чего становится активной кнопка На модерацию. Кликаем на нее и отправляем наш навык на модерацию. На сегодняшний день модерация автоматическая и происходит мгновенно.
После модерации остается завершающий этап - публикация навыка. Нажимаем кнопку Опубликовать и на главной странице консоли разработчика видим, что навык сменил статус и переместился в раздел Опубликованные.
Опубикованный приватный навык появится в списке навыков умного дома в приложении Яндекс (или в его веб-версии quasar).
На следующем шаге можно приступать к объединению аккаунтов.
Объединение аккаунтов в приложении Яндекс
Следующим этапом после регистрации и публикации приватного навыка является объединение аккаунтов в приложении умного дома Яндекс. Это завершающий этап по интеграции сторонних систем (и MajorDoMo в частности) с платформой умного дома Яндекс, после которого становится доступным управление устройствами с помощью голосового ассистента Яндекс Алиса.
Чтобы объединить аккаунты, с главной страницы приложения (Google Play или App Store) необходимо зайти в раздел Умный дом, а затем тапнуть кнопку Добавить устройство, после чего откроется раздел Популярные производители.
В списке производителей выбираем наш приватный навык и тапаем кнопку Объединить аккаунты. Приложение переадресует на страницу авторизации навыка, на которой нужно ввести логин пользователя и пароль пользователя, указанные ранее в настройках модуля Yandex Home. После успешной авторизации подтверждаем сопряжение кнопкой Предоставить.
Приложение переадресует обратно на страницу свойств навыка, а кнопка Объединить аккаунты изменится на Обновить список устройств. Тапаем на нее и после успешной синхронизации будет предложено перейти на страницу со списком устройств. Если в этот момент в модуле Yandex Home уже были добавлены устройства, то они отобразятся в приложении. В дальнейшем при добавлении устройств в модуле или изменении их свойств необходимо каждый раз выполнять такую синхронизацию для обновления списка устройств в приложении Яндекс.
Добавление и управление устройствами в модуле
Модуль реализует классическую концепцию MajorDoMo для взаимодействия с пользователем через метрики и привязанные к ним свойства объекта. К метрикам (умениям) привязываются уже существующие объекты и свойства, через которые реализовано управление устройствами. К каждому умению устройства можно привязать свое свойство объекта.
Добавление нового устройства выполняется с помощью кнопки Добавить устройство на главной странице модуля. После чего указываются название, тип и местоположение устройства.
Дальнейшее конфигурирование выполняется на странице редактирования (настройки) устройства.
Обязательные для заполнения поля устройства:
- Название.
- Тип.
- Местоположение.
- Умения.
У каждого устройства должно быть указано минимум одно умение.
Не обязательные для заполнения поля устройства:
- Описание.
- Производитель.
- Модель.
- Версия программного обеспечения (ПО).
- Версия аппаратного обеспечения (АО).
Набор умений представлен в виде выпадающего списка.
Привязка свойства объекта к конкретному умению выполняется также с помощью выпадающих списков.
При добавлении устройств в модуле или изменении их свойств для обновления списка устройств в приложении Яндекс необходимо каждый раз выполнять синхронизацию с помощью кнопки Обновить список устройств в окне свойств навыка. Удаляются устройства из приложения Яндекс вручную, либо через отвязывание аккаунта и последующее повторное объединение аккаунтов.
Краткое описание:
Cистема домашней автоматизации MajorDoMo
Описание:
Cистема домашней автоматизации MajorDoMo (Major Domestic Module или Главный Домашний Модуль) представляет собой бесплатную и открытую программную платформу для комплексного управления домашней автоматикой, а так же для информационной поддержки жизнедеятельности. Данная система может быть установлена практически на любой персональный компьютер (на платформе Windows и Linux) и совершенно не требовательна к ресурсам. Даже без привязки к оборудованию она может быть использована для организации персональной инфо-среды. Данный проект является частью эко-системы SmartLiving.
Всем привет!
Начинаю сдерживать обещание и буду в этой теме пока в форме мини-блога рассказывать о своем опыт развертывания умного дома на базе системы MajorDoMo.
Я не претендую ни ни какие истины, я не знаю систему досконально, просто имею персональный опыт разработки, которым и хочу поделиться.
Я имею некоторый зоопарк устройств broadlink, поэтому в теме будет некоторый перекос в их сторону, за это сразу прошу прощения.
Конечно же, в этой теме приветствуются вопросы, поправки и обсуждения.
Broadlink и подобные системы - это, конечно, хорошо, но все это не больше, чем просто умные пульты, если мы говорим об умном доме, ему нужен мозг. Программы e-control и прочие его не заменят. Что касается меня, просто в один прекрасный рабочий день, который по совместительству был праздником, автоматика Broadlink разбудила мою семью в 7:00 и я понял, что хватит, больше подобного издевательства терпеть я не хочу :)
Итак, кому нужен MajorDoMo
1. Тем, кто хочет, чтобы его дом был более умным, чем просто кучка устройств с удаленным управлением
2. Тем. кто готов разбираться и тратить время. Собственно, процесс настройки системы не остановится никогда, просто пока это не надоест :) У меня этот процесс идет практически весь текущий год.
3. Тем, у кого есть опыт любого программирования, php приветствуется :-D
Кому НЕ нужен MajorDoMo
1. Тем, кто хочет всё и сразу, из коробки
2. Тем, кто не готов разбираться и тратить время
Если позволяют финансы, лучше купите готовую систему или доверьте настройку профессионалам!
Что умеет моя система
- знает все о времени и погоде, о восходах и закатах, о праздниках и выходных
- работает на два дома, управляет устройствами дома и на даче
- позволяет управлять домом с любого ПК, планшета или смартфона в мире
- имеет голосовое управление, в том числе с планшета, смартфона и с часов Android Wear
- знает все о климате на улице, в квартире и на даче, хранит историю климата, может управлять кондиционером
- имеет интеграцию с telegram
- знает о местоположении и перемещениях членов семьи и автомобиля, хранит историю перемещений
- подключена к медиахранилищу, может проиграть кино или музыку
- говорит с пользователями голосом
- работает с камерами
Примеры реализации автоматики:
- утром в будни (кроме официальных праздников!), или по голосовому запросу, приветствует нас, рассказывает о погоде, открывет жалюзи, включает подсветку и ребенку мультики
- через час выключает все, этот таймер можно прервать, если выключать не надо
- сообщает в телеграм о приходе и уходе членов семьи домой, на работу, в школу/сад
- в экономическом режиме выключает все что можно выключить, закрывает жалюзи
- при подходе члена семьи к дому, выключает эконом-режим, при подходе ребенка еще включает мультики
- вечером на закате включает подсветку и закрывает жалюзи
Читайте также: