Небольшая статья по установке сервиса zigbee2mqtt на телефон с Android.
Установка проверялась на нескольких телефонах Redmi (7, 10. 14).
Предназначена для тестов или кратковременного быстрого развёртывания сети zigbee с ограниченным количеством устройств.
В качестве координатора используется сетевой (Lan или WiFi) координатор.
Для проверки работы использовался шлюз SLS, подключаемый по сети WiFi.
![]() |
![]() |
![]() |
![]() |
![]() |
Termux — эмулятор терминала для среды GNU/Linux для Android. представляющее собой эмулятор терминала и полноценную среду Linux. Минимальный базовый функционал устанавливается автоматически, расширенные возможности подтягиваются с помощью менеджера пакетов и установкой стороннего ПО с git.
Распространяется под лицензией GNU General Public License v3.0.
Установка из Google Play хотя доступна, однако, официальная поддержка Android 10 и выше официально прекращена.
Последняя доступная версия приложения (0.101) на PlayMarket была опубликована 29 сентября 2020 года.
Также мовозможно использование утилиты Termux Boot для автоматического запуска среды Linux и его приложений (сервисов) при старте/перезагрузки смартфона.
Эти два приложения должны быть установлены из одного источника (F Droid, GitHub и т.д.).
Скачиваем и устанавливаем приложение * .apk Termux, для своей версии Android c Github или независимого маркета (F-Droid):
Release Termux App
После установки, первый вход в систему.
В эмуляторе пользователь создается автоматически. Что б узнать имя и IP адрес вводим стандартные для Linux команды
whoami
ifconfig
pwd
Вид приложения на телефоне:

Итак, я являюсь Пользователь u0_a474. Root в Termux по дефолту нет (пока он мне не нужен, не ставлю)
Первым делом, после установки термух устанавливаем SSH доступ.
pkg update && pkg upgrade
pkg install openssh
Меняем/создаем пароль для своего пользователя (без пароля SSH не работает, с ключами я пока не стал заморачиваться). Добавляем SSH в автозапуск при старте Termux.
passwd
sshd
echo "sshd" >> ~/.bashrc
SSH работает на не совсем стандартном порту 8022. Дальнейшие действия, лично мне, удобнее с SSH терминала (в моем случае Putty).
Для работы zigbee2mqtt требуется брокер, установим его и добавим в автозапуск
pkg install mosquitto
mkdir -p ~/.mosquitto
echo -e "listener 1883\nallow_anonymous true" > ~/.mosquitto/mosquitto.conf
mosquitto -c ~/.mosquitto/mosquitto.conf &
echo "pgrep -x mosquitto > /dev/null || mosquitto -c ~/.mosquitto/mosquitto.conf &" >> ~/.bashrc
Устанавливаем пакеты и зависимости, клонируем репозиторий и переходим в директорию z2m.
pkg install nodejs yarn git make python -y
git clone https://github.com/Koenkk/zigbee2mqtt.git
cd zigbee2mqtt
установливаем Nodejs (стабильную LTS, на новой версии у меня произошла несовместимость, возникали в дальнейшем при установке z2m ошибки), менеджер пакетов pnpm.
pkg install nodejs-lts
npm install -g pnpm
Проверяем версии (команда, на следующей строке мой вывод):
node -v
v24.17.0
pnpm --version
[WARN] The "pnpm" field in package.json is no longer read by pnpm. The following keys were ignored: "pnpm.overrides", "pnpm.onlyBuiltDependencies". See https:// pnpm.io/settings for the new home of each setting.
10.18.3
Как видно, pnpm установилась с предупреждением (не ошибкой), с первого взгляда на работу не повлияло
Устанавливаем сам zigbee2mqtt
pnpm install --frozen-lockfile
Установка прошла без ошибок.
Создаем файл конфигурации.
На этом шаге я решил немного упростить себе задачу.
С тестовой малинки скопировал из прошлой своей статьи содержимое файла конфигурации с настройкой SLS шлюза и вставил.
Zigbee2mqtt и шлюз SLS: подключение, настройка и и...
nano data/configuration.yaml
Дальше перегружаем Termux, я полностью перегрузил телефон.
После перезагруки, запускаем Termux. SSH запускается при старте системы, также должен запуститься и брокер Mosquitto (проверим его).
ps ax | grep mosquitto
19121 pts/28 S<+ 0:00 grep mosquitto
запускаем сейчас zigbee2mqtt (запуск обязательно из директории /zigbee2mqtt).
pnpm start
После запуска и настройки конфигурации (как в прошлой заметке), веб интерфейс доступен на порту 8090.
И о чудо!!! Открываем IP адрес телефона браузером с указанием порта, у меня получилось следующее:

перейдем на вкладку настройки, увидим устройство, версии и прочее

Для сопряжения новых устройств, нажимаем кнопку Разрешить подключение в веб интерфейсе, само устройство переводим в режим сопряжения (обычно физической кнопкой или многократным нажатием, это уже в документации на устройство). Появляется устройство в сети zigbee

Далее нужно добавить сам Termux в автозагрузку, zigbee2mqtt и прочие действия.
которые добавлю позже, пока главное zigbee2mqtt на android - запускается и работает.
Хотелось бы сказать спасибо за идею и статьи и материалы авторам: artt652 и krepton85
Дополнение и продолжение (возможно будет обновляться) .....
Устанавливаем пакет pm2 и запускаем zigbee2mqtt режиме сервиса
npm install -g pm2 pm2 start "pnpm start" --name zigbee2mqtt pm2 start "pnpm start" --name zigbee2mqtt
Управление процессом z2m:
• Посмотреть статус: pm2 status
• Посмотреть логи в реальном времени: pm2 logs zigbee2mqtt
• Остановить: pm2 stop zigbee2mqtt
Дополнение:
для нормальной работы в ОС, требуется добавить Termux в автозагрузку самого Android,
Для меня рабочий способ: Устанавливаем MacroDroid из Google Play.В самом Android заходим в настройки батареи и отключем оптимизацию энергопотребления для MacroDroid и Termux.Открываем MacroDroid и нажимаем «Добавить макрос».В разделе Триггеры (красный плюс) выберием: Устройство заблокировано/изменено → Загрузка устройства.В разделе Действия (синий плюс) выбераем: Запуск приложения → Выберите Termux из списка.
Минск, Беларусь
На форуме: udvnl