Для реализации данного решения потребуется:
планшет (можно использовать и любой более/менее современный телефон, но размер экрана слишком мал для удобного управления) на котором можно получить разблокированный загрузчик и в дальнейшем, root права;
zigbee2mqtt контроллер;
OTG кабель;
Предполагается что Вы знаете, что такое IP адрес, командная строка и немного знакомы с unix системами.
Вы все делаете на свой страх и риск. Любые данные, находящиееся на планшете перед началом действий, могут и будут потеряны.
Мой выбор пал на Aquarius NS220 - 10", 2/16ГБ, Type-C. Брал на Авито.
Довел до стостояния root прав (на каждом конкретном уст-ве это достигается разными способами, поэтому нет смысла это описывать).
Все действия выполняются именно в такой последовательности, поскольку некоторые вещи зависят от наличия других вещей.
1.Termux
Берется на f-droid. Далее все делается в Termux.
Запустить Termux, выполнить:
termux-change-repo
apt update
apt upgrade
pkg install root-repo tsu mc openssh coreutils nodejs git
2.Настроить ssh:
ssh-keygen -t rsa -b 2048
cd .ssh
cat id_rsa.pub > authorized_keys
cp id_rsa /storage/self/primary/Download/
cd ~/
Забрать с планшета файл id_rsa на свой комп, запустить puttygen.exe (из пакета PuTTY)
Импортировать id_rsa в puttygen.exe, при этом будет показан пользователь
для которого созданы ключи ssh, его и нужно использовать при логине с ключом (
или whoami для определения пользователя Андроида).
Нажать кнопку "Save private key" и записать файл с произвольным именем в защищенное место.
Запустить putty.exe, указать адрес, который получил планшет в сети, порт 8022, слева на дереве опций в разделе "Data"->"Auto-login username" прописать ранее определенное имя пользователя, в разделе "SSH"->"Auth"->"Private key file for authontication" указать полный путь к файлу с приватным ключом, который записали ранее.
Выбрать раздел "Windows"->"Translation"->"Remoute character set" и указать KOI8-R.
Выбрать раздел "Session"->"Saved session" и указать осмысленное имя подключения к планшету, нажать кнопку "Save".
В дальнейшем для подключения к планшету запустить putty.exe, для подключения два раза кликнуть на имени ранее созданного подключения.
Чтобы не иметься с vi, nano и подобными "правильными" редакторами используем mc (благо Termux позволяет) - работа с файлами, редактор текстовых файлов, выставление прав на файлы и.д. и т.п.
Далее все действия производятся через ssh подключение с компа. Все команды копируются на компе в буфер обмена, в putty вставляеются Shift+ПКМ, копируются - Shift+ЛКМ
2.NodeRed
npm i -g --unsafe-perm node-red
node-red
При первом запуске будет создан каталог .node-red в котором содержаться конфиги.
С компа - http://адрес_планшета:1880
Если веб-морда доступна, то движемся дальше, если нет, смотрим вывод инфы при старте.
Останавливаем - Ctrl+C
Для недопущения посторонних к управлению NodeRed рекомендуется выставить авторизацию для доступа к настройкам и панели управления:
mcedit ~/.node-red/settings.js
(или идем в каталог .node-red и F4 на файле settings.js)
доступ к настройкам: adminAuth
доступ к управлению: httpNodeAuth
Запуск как сервис:
node-red &
Остановка:
killall node-red
3.MQTT
Функционал MQTT реализуется нодой в NodeRed. Название ноды: node-red-contrib-aedes
Создать в NodeRed подключение "MQTT брокер" используя ноду "aedes broker".
После деплоя должен поднятся порт 1883, убедится, что порт поднялся:
sudo netstat -ant
4.Zigbee2mqtt
Ноды, реализующий функционал zigbee2mqtt шлюза на NodeRed не обнаружил.
zigbee2mqtt реализован отдельной прогой, являющейся по сути стандартом. Поскольку она также, как и NodeRed, реализована на nodejs, особых проблем не возникло.
Необходимо убедится, что Zigbee контроллер распознается в Termux. Подключить контроллер OTG кабелем к планшету и посмотреть, что появилось:
sudo ls /dev|grep tty
среди всего прочего должно быть что-то такое: ttyACM0
таким образом название контроллера, в данном случае, будет: /dev/ttyACM0
Установка Zigbee2mqtt шлюза:
npm install -g pnpm
git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git zigbee2mqtt
cd zigbee2mqtt
pnpm install --no-frozen-lockfile
pnpm run build
cd ..
cp zigbee2mqtt/data/configuration.example.yaml zigbee2mqtt/data/configuration.yaml
chmod 644 zigbee2mqtt/data/configuration.yaml
в configuration.yaml раскоментировать и установить параметры (у меня - adapter: zstack):
mcedit zigbee2mqtt/data/configuration.yaml
frontend:
enabled: true
port: 8080
serial:
port: /dev/ttyACM0
adapter: zstack
Запуск:
su -c `which node` zigbee2mqtt/index.js &
Остановка:
sudo killall -9 su
С компа - http://адрес_планшета:8080
Для обнаружения zigbee уст-в веб-морде нажать кнопку "Разрешить обнаружение".
Если доступа нет - логи лежат в zigbee2mqtt/data/log/
Zigbee2mqtt должен запускаться через su, т.к. требуется повышение привилегий для доступа к /dev/ttyACM0. Для редактирования конфига и просмотра логов также потребуются права root, поэтому и mc нужно запускать как
sudo mc
Будет хорошо запустить два подключения к планшету, в одном запусить mc от пользователя, в другом от root. В первом делать все настройки, во втором только то, что связано с Zigbee2mqtt.
5.Завершение
После выполнения всего вышеперечисленного на планшете в среде Termux будут выполнятся NodeRed+MQTT broker, Zigbee2mqtt+zigbee2mqtt контроллер. И браузер, в котором открыть адрес панели управления NodeRed http://127.0.0.1:1880/ui
Для запуска приложений при загрузке планшета или через виджеты возможно использовать следующие варианты: Termux:Boot или Termux:Widget.
Комментариев нет:
Добавлять новые комментарии запрещено.