В этой статье я вскользь упомянул о том, что я реализовал дистанционный запуск своего автомобиля голосовой командой. Идея эта возникла у меня несколько ранее, чем идея приобретения умной колонки, а теперь эти две идеи гармонично сочетаются. Напомню, о чём речь:
Имеем Алису(в наличии, а не то, что вы подумали)) и автомобиль Лада Гранта с АКПП, на который мною был установлен охранно-телематический комплекс Starline S96v2 c возможностью управления по GSM(звонки, SMS) и через Интернет.
Предварительный поиск в интернете указал мне на сайт https://wiki.yaboard.com/, где много полезной информации по Алисе и системе умного дома от Яндекса - советую ознакомиться всем интересующимся. И там было описано два метода - и я попробовал оба.
Метод 1 - с применением IFTTT оказался весьма просто в применении. В кратце опишу суть метода, а затем свою впечатления.
Используется сервис IFTTT(IF this than that - дословный перевод "ЕСЛИ То, То Тогда Это" :-D) - мощный инструмент для автоматизации всего, что у вас происходит в смартфоне. Самый банальный пример такой автоматизации - вы пришли на работу и вас автоматически сменился режим на беззвучный. Крутая штука, но увы в бесплатном варианте ОЧЕНЬ ограничена (хотя в рамках данной статьи бесплатного функционала хватит).
Конкретно к нашему случаю применяется правило "если перешли по специальной ссылке(так называемой Webhook URL), то отправить SMS".
Но экосистема умного дома Яндекса(далее буду писать просто УДЯ) не умеет ходить по таким ссылкам и нужна "прослойка" в виде Домовёнка Кузи - специального сервиса, который создаёт виртуальные устройства, понятные для УДЯ и по приходу команд от УДЯ делает назначенные действия - в нашем случае просходит срабатывание этого Webhook URL.
В общем, цепочка выглядит так: Алиса(в телефоне или на колонке) - сервер Яндекса - сервер Домовёнка Кузи - сервер IFTTT - мобильное приложение на моём смартфоне отправляет SMS на номер охранного комплекса с командой на запуск двигателя - машина получает СМС и заводится.
В целом, тема рабочая, но мне не не нравится, потому что в цепочке есть сторонние сервисы:
1) Домовёнок Кузя - вроде бы народ пользуется и радуется, но кто ж его знает...
2) IFTTT - тут больше всего претензий к тому, что последнее "звено цепи" крутится на моём телефоне. А если телефон выключен ? А если, как это Андроид любит, приложение IFTTT отправлено в спячку или закрыто ?
В общем, получается коряво и ненадёжно, я считаю.
Метод номер два - используя Home Assistant. Здесь управление сигнализацией идёт не по SMS, а используя так называемое Starline API(для тех, кто не программист - это библиотека(набор) функций, которые разработчики могут использовать в своём ПО). Напрямую Starline API и УДЯ не дружат(Яндекс, ну алло - сделайте нормальную интеграцию!), поэтому опять нужна прослойка. Здесь её роль сыграет Home Assistant. Это такая технология умного дома, где сервер, управляющий устройствами, находится не в облаке(где-нибудь в Китае), а у вас дома и зависит только от вас, а не от провайдера Интернета и т.д.
Когда у вас отвалится доступ к сети - ваш умный дом не превратится в тыкву, а продолжит работать(ну по сценариям, ориентированным на датчики и т.д.). Да и HA имеет полностью открытый исходный код(на языке Python), параноики могут убедиться, что китайцы не следят за ними).
Так вот, метод с использованием HA оказался рабочим, но трудноповторимым, потому что постоянно случались нюансы, которые не стыковались с инструкциями в инете, ну или инструкции были устаревшие и в лоб не применялись. Либо находилась инструкция, которая казалось бы описывает то, что мне нужно, но на уровне "как нарисовать сову":
Я-то многое могу, но я не сисадмин и, к примеру, поднять Nginx для меня та ещё задачка... Подъёмная(опять тавтология), но нужно будет много чего изучить.
Ах да, забыл сказать - серверу умного дома требуется железка, на которой он крутится. Обычно для HA используют Raspberry Pi, при этом есть куча вариантов - в качестве операционной системы может быть Raspbian(Линукс, адаптированный под Raspberry Pi), Hassbian (Линукс, адаптированный под HA), либо HassOS - специальная максимально лёгкая OS, в которой нет ничего, кроме минимально необходимых программных средств и среды для Docker.
Так вот, "малинки" у меня нет и покупать я её не собираюсь(игрушка нынче дорогая, лучше вложиться в датчики и т.д. для умного дома), да и решение такое... Единственный плюс - "малинка" мало потребляет электричества, но тут есть решение тоже.
Я решил поставить сервер HA к себе на компьютер, который я никогда не выключаю. Самый простой вариант сделать это - скачать здесь в пункте "As a virtual appliance (x86_64/UEFI)" образ для виртуальной машины, поставить VirtualBox, создать в ней виртуальную машину(по ссылке выше всё описано, там очень просто, 3 настройки поменять, остальное - по умолчанию. И да, просят дать 2048 памяти, у меня всё замечательно крутится на 512), прикрутить к ней скачанный образ диска и всё ! Дальше идёт первый запуск и уже дальнейшая настройка. Для себя я нахожу этот вариант идеальным - виртуальные машины легко бэкапить и легко переносить, куда угодно. Например, мой компьютер включён постоянно и виртуалка HA его не тяготит. Если же компьютер надо будет выключать - я достану из кладовки вот такой вот раритет:
Поставлю на него легковесный Линукс(к примеру, lubuntu) и VirtualBox, а дальше дело техники - HA и не заметит подвоха!
В общем, сервер запущен, к Starline API подключен, и тут наступает момент, который очень важный и который для меня был самым сложным. Нужно иметь внешний IP(статический или динамический), а у меня, слава ТТК, только "серый". Если бы не жмотился и взял бы Zyxel Keenetic - то вариантов решения проблемы было бы куча. У Zyxel есть облачный DDNS, который позволяет это обойти. Есть OpenVPN клиент прямо в роутере. А у меня TP-Link Archer C6, который так-то меня устраивает, но функционал беден.
Есть всякие облачные сервисы для решения этой проблемы, есть даже встроенный в HA, но в среднем их цена 5 долларов в месяц... Я не жмот, но 5 баксов это 5 баксов. Например, вот столько же плачу за подписку Яндексу).
Подумал я и решил, что надо купить VDS с белым IP и пользоваться его услугами. Купил по этой инструкции, всего 2 доллара в год и функционала хватает с головой.
Дальше на DuckDNS зарегистрировал себе домен на ip своего VDS, осталось получить сертификат для HTTPS(вот это требует Яндекс для работы с его умным домом). Единственная машина с линуксом - тот самый VDS) можно было бы себе поставить ещё куда-нибудь ещё и линукс, но было лень. На сервере порты 80 и 447 были закрыты(ещё одна головная боль), но мне помогла вот эта статья.
Ну а дальше долгий поиск того, как с VDS пробросить "мостик" на мой умнодомашний сервер. В итоге после долгих мучений пришел к тому, что между VDS и HA был поднят SSH туннель, а на VDS поднял Nginx, который выполняет роль прокси, перенаправляя запросы с внешнего "белого" IP на тунеллированный порт. Как - описано в этой статье.
После чего наконец-то получилось заинтегрировать функции охранно-телематического комплекса Starline в систему умного дома Яндекса.
Если ты дочитал до этого момента и у тебя остались вопросы - то, во-первых, ты Настоящий Герой и я тебя уважаю! А во-вторых, смело задавай свои вопросы в комментариях, я постараюсь ответить на них, помочь, если у тебя что-то не получается.
Понравилась статья ? Подпишись на мой канал !