В этой публикации речь пойдёт об установке на смартфон под управлением операционной системы Android, одного из протоколов умного дома — zigbee и его реализации для открытых систем автоматизации zigbee2mqtt. Всё это работает под эмулятором ОС Linux окружения — Termux, что позволяет развернуть элементы «Умного дома» прямо на мобильном устройстве и возможность реализации некоторых функций УД в тестовой среде.
Для тестирования, я использовал:
Смартфон с версией ОС Android > 10 (протестировал работу на версиях ОС 16, 13, 10 — чудес не бывает, чем старее устройство и ниже версия, тем сильнее тормозит из‑за технических характеристик, для старых устройств, думаю, имеет смысл сбросить настройки к заводским).
Сетевой координатор LAN или Wi‑Fi (zigbee шлюз), в статье будут рассмотрены два варианта координатора: LAN стик на базе CC2652P7 от BacchusWorkshop и Wi‑Fi‑zigbee шлюз SLS, проекта slsys io
Zigbee и Zigbee2MQTT: что это и зачем?
Zigbee — беспроводной стандарт связи с низким энергопотреблением, созданный для объединения датчиков, ламп и других приборов в единую сеть умного дома. На сегодняшний день это, пожалуй, самый распространённый протокол как по количеству поддерживаемых устройств, так и по числу производителей. Главная проблема здесь — вендор‑лок: устройства из разных экосистем (Xiaomi, Tuya, Aqara и др.) чаще всего несовместимы друг с другом напрямую и требуют «родных» шлюзов.
Zigbee2MQTT (Z2M) — бесплатный инструмент с открытым исходным кодом. Он выступает мостом между беспроводной Zigbee‑сетью и MQTT‑брокером, позволяя полностью избавиться от проприетарных шлюзов. Проект поддерживает более 5500 устройств от 580+ брендов, превращая обычный координатор в универсальный центр управления. Актуальный список поддерживаемого оборудования всегда можно найти на официальном сайте проекта Zigbee2MQTT.
Как работает экосистема
Управление умным домом через связку Zigbee2MQTT строится на трёх основных элементах:
-
Координатор (аппаратная часть)
Это главное устройство в беспроводной сети. Он создаёт её, отвечает за безопасность, распределяет адреса и выступает центральным узлом между конечными девайсами и сервером. Физически координатор принимает сигналы от датчиков, розеток и лампочек.Среди разных типов координаторов наиболее популярны два формата:
USB‑донглы (стики) — самый доступный вариант. Подключаются напрямую в USB‑порт сервера. Для нашей задачи — установки умного дома на смартфон — они не подходят.
Сетевые (LAN / Wi‑Fi) координаторы — современный «золотой стандарт». Подключаются по кабелю Ethernet или Wi‑Fi. Это позволяет разместить устройство в любой точке квартиры для лучшего покрытия сети, независимо от того, где находится сам смартфон‑сервер.
Zigbee2MQTT (программная часть)
Эта программа считывает данные с координатора, переводит их в универсальный текстовый формат JSON и публикует в MQTT‑брокер.MQTT‑брокер
Центральный серверный узел, который принимает, фильтрует и распределяет сообщения по легковесному протоколу MQTT. Он работает по модели «издатель — подписчик»: Z2M отправляет (публикует) данные в определённые темы (топики), а брокер моментально доставляет их клиентам. Чаще всего в этой роли выступает Mosquitto — он просто перенаправляет пакеты между Z2M и системой автоматизации.
Примечание: в рамках этой статьи сама система автоматизации рассматриваться не будет. Обычно для этого используют популярную Home Assistant либо альтернативы: Node‑RED, OpenHAB, MajorDoMo, HOMEd и др. Такая система подписывается на MQTT‑топики, визуализирует данные для пользователя, запускает сценарии и служит главным связующим звеном между устройствами разных протоколов.
Перейдём к практической части — подготовке и настройке координаторов. Ниже рассмотрены два варианта.

Вариант 1. LAN PoE Stick на базе CC2652P7 от BacchusWorkshop
Стик поставляется в корпусе с USB‑разъёмом и внешней антенной. В моей модификации питание 5 В подаётся через разъём USB Type‑C, хотя существуют версии и с поддержкой PoE.
После подключения стика к домашней сети он автоматически получает IP‑адрес по DHCP. Узнать этот адрес можно в панели управления вашего роутера, после чего его нужно ввести в адресную строку браузера для перехода в веб‑интерфейс устройства.
Веб‑интерфейс содержит всего одну страницу, где необходимо настроить три основных параметра:
Сетевые настройки: рекомендую оставить DHCP, но на самом роутере жёстко привязать IP‑адрес к MAC‑адресу стика.
Work mode: устанавливаем режим TCP Server (именно он нужен для работы с Z2M).
Local port: запоминаем или записываем указанный порт, он понадобится далее при настройке Zigbee2MQTT.
Примечание: При подготовке устройства я столкнулся с нюансом именно в своей сети: поле Target IP необходимо изменить на адрес своей сети (IP‑адрес смартфона, где будет крутиться Z2M). Однако в режиме TCP Server это поле заблокировано. Чтобы обойти ограничение, я временно перевёл стик в другой режим работы, изменил адрес на нужный, а затем вернул режим TCP Server обратно.

После применения всех изменений перезагружаем стик. На этом его настройка завершена.
Вариант 2. Шлюз SLS от проекта slsys.io
Главное отличие этого варианта — шлюз SLS подключается по беспроводной сети Wi‑Fi. В контексте нашей задачи это может быть огромным плюсом: смартфон можно перевести в режим точки доступа, шлюз подключится напрямую к нему по Wi‑Fi, а конечные датчики — к шлюзу по Zigbee. Полная автономность! Но есть и обратная сторона: Wi‑Fi и Zigbee работают на одной частоте (2.4 ГГц), поэтому при сильной зашумленности эфира могут возникать задержки или проблемы со связью.

Шлюз может поставляться с разными прошивками. У меня, версия PRO, содержит собственную систему автоматизации с поддержкой сценариев на Lua и облачную платформу. Однако для нашей статьи мы будем использовать шлюз в самом простом режиме — как прозрачный координатор (мост). Вся логика Zigbee и обработка сообщений будут происходить на стороне Zigbee2MQTT, который мы установим на смартфон в следующей части.
Для запуска шлюза в режиме моста нужно сделать несколько шагов:
Установка в режим координатора: После включения устройства и подключения к Wi‑Fi перейдите в меню Settings → Services. Активируем режим Zigbee TCP Bridge и установив порт 8881. Нажимаем Save.

Перезагрузка: На экране появится уведомление о необходимости перезагрузки, а через 5 секунд система автоматически перенаправит вас на главную страницу. В течение этих 5 секунд обязательно нужно успеть нажать на ссылку перезагрузки. После возврата на главную страницу проверяем параметр SLS Info → Uptime — он должен сброситься на ноль.
Настройка MQTT: Переходим в раздел Settings → Link → MQTT Setup. Указываем адрес сервера и порт MQTT‑брокера (эти параметры мы немного разберем в следующей части). В моём сценарии авторизация на брокере не используется, поэтому остальные настройки MQTT я оставил по умолчанию.

После сохранения этих параметров связи перезагрузка шлюзу не требуется — он просто вернется на главный экран.
Установка Termux на Android
Termux — это эмулятор терминала и полноценная среда Linux для Android. Базовый функционал разворачивается автоматически, а расширенные возможности добавляются через встроенный менеджер пакетов и установку ПО из Git‑репозиториев.
⚠️ Важное предупреждение:
Актуальные версии Termux публикуются только в каталоге приложений F‑Droid или на GitHub. Версия из Google Play устарела еще в 2020 году, официально больше не поддерживается и для Android 10+ и совершенно непригодна.
Вместе с основным приложением я настоятельно рекомендую установить два дополнения из той же экосистемы:
Termux:Boot — отвечает за автозапуск Linux‑окружения и сервисов при старте сессии и смартфона.
Termux:API — обеспечивает интеграцию среды Termux с аппаратными возможностями самого Android.
Важно: все три приложения (Termux и утилиты) необходимо скачивать из одного и того же источника (либо только F‑Droid, либо только GitHub). В противном случае возникнет конфликт цифровых подписей, и дополнения просто не установятся.
Первый запуск

При первом входе в приложение Linux‑пользователь создаётся автоматически. Чтобы узнать имя своего юзера, текущий IP‑адрес смартфона и рабочую директорию, вводим стандартные команды для Linux:
whoami ifconfig pwd
В моём случае имя пользователя — u0_a474. Права Superuser (Root) в Termux по умолчанию отсутствуют, но для нашей задачи они и не понадобятся.
Обновление системы и настройка SSH
Управлять сервером с экрана телефона не очень удобно, поэтому мы сразу настроим удаленный доступ. Обновим пакетную базу, установим SSH‑сервер и зададим пароль для пользователя (без него подключиться не получится).
Вводим команды поочередно, нажимая Enter после каждой:
pkg update -y pkg upgrade -y pkg install openssh -y passwd sshd
После этого все дальнейшие действия можно комфортно выполнять через любой SSH‑клиент (например, PuTTY или MobaXterm) с компьютера.
Обращаю внимание: SSH‑сервер в Termux по умолчанию слушает нестандартный порт 8022.
Чтобы SSH‑сервер автоматически поднимался при каждом открытии Termux, добавляем команду его запуска в конфигурационный файл профиля:
echo "sshd" >> ~/.bashrc
Настройка энергосбережения (Борьба с «засыпанием» Android)
Чтобы операционная система Android не «прибивала» фоновые процессы нашего умного дома (Z2M и брокер) при выключении экрана, необходимо выдать среде Termux максимальные приоритеты.
Настройка внутри консоли Termux:
Устанавливаем пакет интеграции и активируем режим бодрствования (Wake Lock):
pkg install termux-api -y termux-wake-lock
Настройка в самой ОС Android:
У разных производителей названия пунктов меню могут незначительно отличаться, но общая логика следующая:
Переходим в Настройки смартфона → Батарея (или Приложения → Управление приложениями, у разных производителей могут быть разные наименования).
Найдём в списке Termux и в графе «Контроль активности» (или Энергосбережение) переключите режим в положение «Нет ограничений» (или Разрешить работу в фоновом режиме).
В диспетчере приложений Android выдайте все необходимые разрешения для Termux, Termux:Boot и Termux:API (я выдал все разрешения для этих приложений).
Дальнейшие шаги по установке брокера Mosquitto и самого Zigbee2MQTT гораздо удобнее выполнять уже из SSH‑терминала на ПК.
Установка MQTT‑брокера Mosquitto
Для работы связки нам обязательно понадобится локальный MQTT‑брокер. Все дальнейшие действия мы выполняем через SSH‑терминал на компьютере, поэтому команды можно просто копировать и вставлять.
Установим Mosquitto, создадим директорию для конфигурационного файла и пропишем базовые параметры сети и запускаем брокер в фоновом режиме:
pkg install mosquitto -y mkdir -p ~/.mosquitto echo -e "listener 1883\nallow_anonymous true" > ~/.mosquitto/mosquitto.conf mosquitto -c ~/.mosquitto/mosquitto.conf &
Чтобы Mosquitto автоматически поднимался при каждом старте сессии Termux, добавим в файл ~/.bashrc команду автозапуска с проверкой процесса:
echo "pgrep -x mosquitto > /dev/null || mosquitto -c ~/.mosquitto/mosquitto.conf &" >> ~/.bashrc
Установка Zigbee2MQTT в Termux
Подготовка окружения и зависимостей
Установим среду выполнения Node.js, систему контроля версий Git и необходимые утилиты для сборки бинарных пакетов:
pkg install nodejs-lts git make python -y
Примечание: в репозиториях Termux доступны два пакета: nodejs (Current‑версия) и nodejs‑lts (стабильная LTS‑версия). Они конфликтуют между собой. Для бесперебойной работы Zigbee2MQTT мы выбираем именно LTS‑пакет.
Клонирование репозитория
Скачиваем актуальный исходный код проекта с GitHub и сразу переходим в рабочую директорию:
git clone https://github.com/Koenkk/zigbee2mqtt.git cd zigbee2mqtt
Настройка менеджера пакетов pnpm
Современные версии Zigbee2MQTT требуют для сборки менеджер пакетов pnpm. Активируем его через встроенный в Node.js инструмент corepack и подготовим среду:
corepack enable corepack prepare pnpm@10.18.3 --activate pnpm add -D typescript@5.8.2 pnpm install --no-optional
Для проверки корректности окружения можно вывести текущие версии Node.js и pnpm:
node -v pnpm --version
(В моем случае вывод терминала показал Node.js v24.18.0 и pnpm 10.18.3).
Финальная сборка проекта
Запускаем установку всех зависимостей Zigbee2MQTT строго по lock‑файлу разработчиков:
pnpm install --frozen-lockfile
Процесс сборки и компиляции на смартфоне займет некоторое время. Дожидаемся появления сообщения об успешном завершении.
Конфигурация и первый запуск Zigbee2MQTT
Перейдем к настройке самого сервиса. Создаем файл конфигурации с помощью встроенного текстового редактора nano:
nano data/configuration.yaml
Вставляем в него следующее содержимое.
Обращаем внимание: в секции serial необходимо указать IP‑адрес и порт координатора (LAN‑стика или SLS‑шлюза), которые мы получили на этапе настройки оборудования.
Содержимое configuration.yaml
homeassistant: true
permit_join: false
mqtt:
base_topic: zigbee2mqtt
server: 'mqtt://localhost'
serial:
port: 'tcp://192.168.1.122:8881' # Укажите здесь IP и порт своего координатора
adapter: zstack
frontend:
enabled: true
host: 0.0.0.0
port: 8090
advanced:
network_key: GENERATE
pan_id: GENERATE
ext_pan_id: GENERATE
? Примечание: Параметры GENERATE в блоке advanced заставят Zigbee2MQTT автоматически создать уникальные ключи при первом же запуске сети.
Сохраняем файл в nano (Ctrl+O, затем Enter) и выходим (Ctrl+X).
Теперь запускаем Zigbee2MQTT напрямую из директории проекта:
cd ~/zigbee2mqtt pnpm start

Если всё настроено верно, в консоли побегут логи старта сервиса и увидим успешное подключение к вашему сетевому координатору. С этого момента встроенный веб‑интерфейс Z2M станет доступен в браузере любого устройства в вашей домашней сети по IP‑адресу смартфона и порту 8090 (например: http://192.168.1.105:8090), пока запущена программа.

Переход к фоновому режиму и автозапуску
Сейчас Zigbee2MQTT работает непосредственно в открытой сессии терминала. Стоит вам закрыть SSH‑клиент или нажать Ctrl+C — работа zigbee на смартфоне прекратится.
Для тестирования запуска, этого может быть достаточно, но даже для тестового стенда — мало.
Поэтому настроим менеджер процессов PM2, который возьмет на себя фоновую работу сервиса и его автоматический подъем при перезагрузке смартфона.
Если сервис у вас запущен, останавливаем его сочетанием клавиш Ctrl+C.
Настройка автозапуска через PM2
Установим PM2 — продвинутый менеджер процессов для Node.js, работающий как демон (фоновая служба). Он будет следить за работой Zigbee2MQTT в фоновом режиме, автоматически перезапускать сервис в случае сбоев и вести логи.
Устанавливаем PM2 глобально в систему, переходим в папку с Zigbee2MQTT (если ещё не в ней), запускаем проект через менеджер процессов, присвоив ему имя z2m, и сохраняем конфигурацию::
npm install -g pm2 cd ~/zigbee2mqtt pm2 start index.js --name z2m pm2 save
Команда pm2 save создаёт снимок (снапшот) запущенных в данный момент процессов. Чтобы этот список автоматически восстанавливался при каждом запуске консоли, нам понадобится команда pm2 resurrect.

Откроем конфигурационный файл нашей командной оболочки: nano ~/.bashrc
И приведем его итоговое содержимое к следующему виду:
# Автозапуск SSH-сервера Sshd termux-wake-lock # Автозапуск MQTT-брокера Mosquitto с проверкой дубликатов процессов pgrep -x mosquitto > /dev/null || mosquitto -c ~/.mosquitto/mosquitto.conf & # Восстановление фоновых процессов PM2 (включая Zigbee2MQTT) pm2 resurrect
Сохраняем изменения (Ctrl+O, Enter) и выходим из редактора (Ctrl+X). На этом установку можно считать завершённой.
Дальше — подключение zigbee устройств.
В качестве итогов
Мы развернули мост для организации одного из протоколов умного дома прямо на мобильном устройстве. Дальнейшие действия зависят исключительно от ваших потребностей и возможностей:
С помощью ранее установленной утилиты Termux:Boot и в некоторых случаях стороннего ПО, можно настроить старт Termux сразу при включении Android‑смартфона (сервер поднимется сам даже после перезагрузки телефона).
Дополнение Termux:API позволит связать автоматизации умного дома с системными функциями смартфона — например, отправлять Zigbee‑команды при получении входящих SMS или звонков, уведомлять о сработках и неполадках, организовать постоянное питание и многое другое.
Зачем это нужно?
Лично я использую связку Zigbee + Termux как мобильный тестовый стенд для обкатки устройств и некоторых скриптов в изолированной сети, через MQTT можно связать с используемой системой автоматизации.
Возможно, для кого‑то такой подход может стать легким и бюджетным стартом в открытые системы автоматизации. Старый Android‑смартфон есть почти в каждом доме, а сетевой координатор стоит не так уж и дорого.
Возможно, такое решение подходит для построения небольших удаленных локальных систем. Протокол Zigbee поддерживает механизм биндинга (binding) — прямую связь устройств между собой. Можно один раз связать беспроводной выключатель с умной розеткой или реле (главное, чтоб они поддерживали эту технологию), и они будут работать совместно даже без участия координатора и сервера.
Кроме того, в среде умного дома сейчас доступно огромное количество автономных устройств, которые могут быть полезны сами по себе, без развертывания полноценных систем вроде HA. К примеру, датчики качества воздуха (CO₂, VOC), измерители влажности почвы для растений, тестеры качества воды, датчики давления, наличия эл. сети и другие решения.