Термин умный дом уже пережил использование в пределах одного здания. Все чаще возникают задачи объединения в общую систему управления нескольких объектов, например дом, дача, гараж. Шифрованный туннель для умного дома через мобильных операторов связи решает эту задачу.
Удаленными объектами может быть загородный дом, дача, гараж, склад и т.д. Для разных объектов задачи разные, поэтому нужно универсальное решение, которое позволит управлять любыми удаленными системами автоматизации.
В качестве примера приведу климатический контроль. Автоматике можно доверить поддержание температуры в доме по заранее заданному сценарию, но если вы надумали поехать в загородный дом внепланово, то было бы очень удобно дистанционно увеличить порог минимальной температуры и автоматика к вашему приезду нагреет дом до комфортной температуры.
Или обратная ситуация. По заранее заданному алгоритму автоматики, должно включиться отопление, но планы изменились и приехать нет возможности. В таком случае, будет потрачена энергия, а значит и деньги зря. Этого можно избежать если иметь возможность дистанционно изменить сценарий для систем автоматики.
Для чего все это нужно и что необходимо получить
Для подключения к любой удаленной системе нужно знать ее IP адрес, но операторы мобильной связи не предоставляют эту услугу физическим лицам. При доступе в интернет через 3G модем используется внутренняя (серая) адресация IP или динамическая реальная, то есть выделяется реальный IP адрес, но он может меняться при разрыве и восстановлении соединения несколько раз, а может и десятков раз в сутки. Такой вариант не подходит для того, что бы наверняка знать по какому адресу находится наша удаленная система.
Решение этой проблемы простое — если соединиться с удаленной системой не получается, то нужно научить удаленную систему автоматически соединяться с главным сервером, адрес которого всегда постоянный и держать соединение. Пакетная среда передачи данных не учитывает время соединения, а учету подлежит только трафик, а его продают пакетами гигабайтами или даже десятками гигабайт, чего вполне достаточно для того, что спокойно работать с большими объемами трафика.
Для любой реализации требуется составить техническое задание. Именно его написание позволяет получить четкое представление о потребностях, особенно крупных проектов. В нашем случае требования предельно простые и одновременно ёмкие:
- На удалении любого количества километров получить возможность опроса датчиков и управления любыми устройствами.
- Передача данных должна быть максимально защищена
- Оборудование должно быть функциональное и доступное по цене
- Оперативная замена в случае поломки
С технической стороны все эти требования вполне выполнимы. Рассмотрим их по порядку.
Микрокомпьютер
В идеале, нужна максимальная гибкость в возможностях и стабильность, как аппаратная, так и программная. Было бы здорово получить серверные возможности и проверенные программы.
Такую функциональность и надежность на удаленном конце может обеспечить микрокомпьютер Raspberry Pi. Есть и другие достаточно функциональные микрокомпьютеры, но сейчас будем рассматривать только эту модель по простой причине она оказалась на столе в моей мастерской раньше других аналогов.
Микрокомпьютер Raspberry Pi дает следующие преимущества:
- Проект с 2012 года прошел несколько модернизаций и устранены многие «детские болезни».
- Операционная система Raspbian на базе Debian Linux дает много преимуществ по программному обеспечению — его много и оно проверенное временем.
- Микрокомпьютер потребляет минимум энергии и полностью пассивный на тему охлаждения, то есть не имеет вращающихся частей, которые могут ломаться со временем.
Описание самой модели можно найти в интернетке, но могу сообщить, что возможность подключения к этому микрокомпьютеру сенсорных мониторов открывает практически неограниченные возможности по реализации управления и мониторинга различных систем автоматизации здания.
Модем от операторов мобильной связи
На многих удаленных объектах нет возможности подключить стабильный проводной интернет. По этой причине будем рассматривать в нашей системе подходящий для подавляющего большинства случаев способ — передача данных посредством мобильных операторов связи.
Так уж получилось, что для тестов в моей скромной лаборатории оказался брендованный под Мегафон модем huawei e352b. Они залоченны на использование только в сети мегафон, но у меня не было под рукой симки этого оператора и полистав интернетку я его быстро отучил от этого пагубного пристрастия. Таким образом, модем стал радостно работать с симкой билайна.
Подключение этого модема к персональному компьютеру сразу запускает установку программы для работы с ним и появляется кнопка соединения с интернет. Не смотря на симку билайн не пришлось делать никаких настроек — они подхватились автоматически. Все заработало. Убедившись в работоспособности модема и инородной для него симки приступим к подключению к микрокомпьютеру.
Сама задумка на самом модеме расположить программу для его установки очень хорошая и избавляет от лишних телодвижений. Неопытным пользователям вообще ничего не нужно думать — воткнул в модем в порт и на экране появляется сообщение «установить», а после установки появляется кнопка «соединить». Круто, не правда ли?
При подключении к линуксу так же происходит определение как дискового накопителя. Нам нужно в линуксе нужно его переключить в режим модема. Это делается утилитой usb-modeswitch. Так и возникает желание написать, что это делается командой apt-get install usb-modeswitch, но я думаю это и так понятно.
Стоит отметить, что нам потребуется утилита Sakis3G. В ее состав уже входит usb-modeswitch и нет необходимости отдельной установки. Необходимо только проконтролировать, что модем правильно определяется в системе.
После этого необходимо прописать настройки для соединения с интернет того оператора связи, который будет использоваться, в моем случае билайна. Не забываем прописать это дело в /etc/rc.local для автоматического запуска.
С соединением в интернет закончили. Теперь нужно наладить автоматический механизм восстановления связи в случае разрыва. Для этого потребуется утилита umtskeeper. Описывать подробности не буду. Документации в интернетке навалом, да и прога предельно простая.
Иногда сила сигнала слабая и необходимо использовать внешнюю антенну для улучшения сигнала. На этом подеме под меленькой крышечкой имеется разъем для подключения внешней антенны. На изображении показаны разъемы модема и внешней антенны.
Показанная на изображении внешняя антенна имеет магнитное основание и может достаточно надежно крепиться на ровной металлической поверхности, которая притягивает магнит. Наиболее предпочтительно, что бы внешняя антенна имела внешнее исполнение. В этом случае появляется возможность выставить ее на улице и найти для нее наиболее подходящее место по качеству приема сигнала.
Туннель
Когда автоматическое соединение с интернет налажено, то наступает время для создания туннеля с центральным сервером. Это нужно по простой причине. Операторы мобильной связи не предоставляют реальный IP адрес, что бы можно было на него соединиться. Если нельзя соединиться на удаленный компьютер, то нужно научить его самого соединяться с центральным сервером и постоянно его поддерживать в «поднятом» состоянии.
Для этих целей есть прекрасное программное обеспечение OpenVPN
На сервере устанавливается OpenVPN как сервер, а на удаленном клиенте как клиент. На сервере генерируются ssh ключи для сервера и клиента. Клиентские ключи отправляются на наш микрокомпьютер.
OpenVPN может автоматически поддерживать туннель в «поднятом» состоянии. Никаких дополнительных средств не требуется.
Настройки на сервере
Уже и так сильно много букв получается в этой статье, но не сказать о некоторых настройках на сервере просто не могу. Для тех кто будет настраивать туннель обязательно стоит обратить внимание на тип интерфейса, который будет использоваться. Я настраивал соединение точка-точка, то есть для каждого туннеля поднимается свой интерфейс.
И обязательно нужно включить форвардинг. По умолчанию на моем сервере (debian) он был выключен. Для этого нужно в файле /etc/sysctl.conf раскоментировать строку net.ipv4.ip_forward = 1.
Я не хочу говорить, что все делается быстро и легко, но доступная и понятная документация делает процесс настройки осознанным и понятным.
Шифрование
Наверняка каждый понимает для чего нужно шифрование данных при их передаче. Применимо к умному дому это будет означать, что никто не сможет перехватить трафик и получить управление системами автоматизации или же получить доступ к личному архиву фото или видео или к видеокамерам.
На случай поломки
Стоимость микрокомпьютера небольшая и вполне можно иметь запасной, для быстрой замены. Операционная система для микрокомпьютера устанавливается на флэш память и можно сделать несколько копий таких флэшек.
К ключам, которые сгенерированы сервером привязываются выдаваемые адреса. Это позволяет постоянно выдавать одинаковые адреса даже если будет установлен другой микрокомпьютер с одинаковыми ключами (главное, что бы не одновременно).
Демонстрация работы
Для того, что бы наглядно посмотреть в работе шифрованный туннель, будем проверять удаленный доступ на компьютер в графическом режиме. Такой режим требователен к качеству канала передачи данных, в отличии от консольного.
Вывод
В результате примерно месяца тестирования в лабораторных условиях, надежность такого способа показала себя с очень хорошей стороны. Связь стабильно держится длительное время, а в случае разрыва автоматически восстанавливается соединение с интернет и затем организуется шифрованный туннель.
Для любого удаленного объекта теперь доступны механизмы мониторинга и управления. Конструкция получилась очень бюджетной и надежной, а иметь в запасе настроенный запасной комплект не составит труда. В таком случае замена вышедшего из строя «туннеля» займет считанные минуты и настраивать дополнительно ничего не нужно.