Главная > Технический изврат > Разбираем контроллер умного дома Z-Wave.Me Hub

Разбираем контроллер умного дома Z-Wave.Me Hub

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

1. Контроллер Z-Wave.Me Hub
2. Датчик затопления
3. Датчик открытия двери, движения, температуры
4. Реле с сухим контактом
5. Реле с измерением мощности нагрузки

Z-Wave.Me Hub

Z-Wave.Me Hub


Датчики

Датчики


Реле

Реле

Что интересно, на контроллере написано, что это российская разработка. А на самом деле в веб-интерфейсе имеется логотип европейской компании POPP, которая выпускает точно такой же девайс. Если это действительно наши для немцев придумали, то мое глубочайшее уважение разработчикам. Но если честно, верится с трудом.

Неужели правда спроектировано в России?

Неужели правда спроектировано в России?

Дизайн аккуратный, со всех сторон мигают и переливаются лампочки. Правда, не совсем ясно, как и куда его крепить. Скорее всего, к стене, но никакого крепежа в комплекте не было, даже отверстий подходящих на корпусе нет. Контроллер нормально запустился, все датчики и реле без проблем подключились. Управлять умным домом можно через локальную сеть, Wi-Fi или сайт find.z-wave.me.

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

Первым делом я попробовал попасть в контроллер через сеть. Он отвечал по ssh, но ни один из указанных на корпусе паролей не подходил. Пришлось аккуратно расколупать корпус в поисках консоли. К счастью, разработчики не стали сильно огораживать устройство, даже нормально распаяли на плате UART. На обратной стороне платы я обнаружил флешку MicroSD, на которой хранятся настройки и логи. Этих логов пишется достаточно много, а кроме того, используется журналируемая файловая система ext4. Неизвестно, сколько проживет флешка в таком режиме.

Плата контроллера

Плата контроллера

Первым делом я вошел в failsafe режим OpenWrt и поменял пароль root. Но после перезагрузки войти в систему не получилось. Сравнив хеш пароля до и после перезагрузки, я понял, что пароль кто-то меняет. Пришлось скопировать корневую файловую систему на флешку и тщательно изучить ее.

Обнаружился скрипт /etc/init.d/set_default_password, который делал следующее:

ROOT_PASSWORD=`dd if=/dev/mtd3 bs=1 skip=$((0x100)) count=10` && echo -e “$ROOT_PASSWORD\n$ROOT_PASSWORD” | passwd
WIFI_PASSWORD=`dd if=/dev/mtd3 bs=1 skip=$((0x110)) count=10` && sed -i ‘s/\(option key \).*$/\1″‘$WIFI_PASSWORD'”/’ /etc/config/wireless

Пароли хранились в особом месте внутренней памяти и устанавливались при каждой загрузке контроллера. Можно было бы перезаписать их, но я пока не стал это делать и входил в систему, используя прошитый рутовый пароль. Интересно, уникален ли этот пароль для каждого устройства и хранит ли изготовитель базу паролей всех изготовленных контроллеров для нужд техподдержки. При этом он попадает в локальную сеть дома, а там всякое возможно…

Исследуя систему, можно найти много интересного. Не обошлось и без костылей.

sleep 10 # if we don’t wait, it hangs on something.

Весь основной функционал выполняет один монолитный процесс z-way-server, который содержит в себе и работу с периферией, и веб-интерфейс, написанный на богомерзком яваскрипте, и хост для выполнения плагинов, написанных на нем же. Z-Way API открыто и позволяет выполнять все необходимые действия.

А теперь о самом главном. Я таки нашел, как сделано в этой системе удаленное управление. Это скрипт /etc/init.d/zbw_connect. Он устанавливает SSH туннель до сервера find.z-wave.me и пробрасывает на него порты веб-интерфейса (8083) и ssh (22). Скрипт содержит в себе логин и приватный ключ для соединения с сервером, а также передает через переменные окружения другие данные, необходимые для доступа. Отредактировав этот скрипт, я перенаправил туннель на свой сервер и смог управлять контроллером через Z-Way API. Скорее всего, Ростелеком сделал то же самое, особо не изменяя прошивку контроллера.

На очереди создание личного кабинета пользователя и организация передачи запросов из него через API. Фактически, полная реализация серверной части. А это значит, много интересной работы.

  1. Пока что нет комментариев.

*