Расхождение версий node.js zigbee2mqtt

Добрый день

После обновления через apt update, перестал стартовать сервис zigbee2mqtt

Sep 5 10:10:37 wirenboard-A5KBVLVF npm[12458]: Zigbee2MQTT requires node version ^14 || ^16 || ^17 || ^18, you are running v12.19.0!

версии прошивки

Wirenboard release wb-2207 (as stable), target wb6/stretch

обновлял сегодня

с уважением
Евгений

Не призыв к действию! Просто пишу до кучи
Недавно обновлял Node.js из-за предупреждения Node-red о том, что я использую слишком старую версию

Обновить можно через менеджер версий Node.js N

Устанавливаем N

sudo npm install -g n

Дальше варианты:
Установить последнюю версию

n latest

или установить последнюю стабильную (предпочтительней)

n stable

Ссылка на GIT n

До кучи обновил npm
Правда после этого мне пришлось устанавливать еще и более свежую версию Python
и делать ребилд zigbee-herdsman. Из-за того что версия Node.js установленная менеджером оказалась новее той, в которой был собран herdsman. В идеале узнать бы какая конкретно нужна, и обновиться до нее
Сделать можно будет командой вида*

n 0.8.20

Предлагаю заранее позаботиться о достаточном кол-ве свободного места на диске :slight_smile:

Предлагаю заранее позаботиться о достаточном кол-ве свободного места на диске :slight_smile:

вы правы, попыталось встать в корень, место иссякло
не подскажете способы очистки?

Самый верный способ очистки будет перенос пользовательских пакетов
в большой раздел диска
и создание символической ссылки на них в прежнем месте
в конце есть несколько полезных ссылок чтобы не искать все ручками (начать лучше с них (отобразить самые большие пакеты и перенести их), а алгоритм изложен в моем сообщении)
две полезные темы по этому поводу

и собственный опыт)

Смотрим какие разделы примонтированы и куда

df -h

Пример вывода

root@wirenboard-AITGTIZ7:~# df -h
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
/dev/root          979M         718M  194M           79% /
devtmpfs           493M            0  493M            0% /dev
tmpfs              502M            0  502M            0% /dev/shm
tmpfs              502M         512K  501M            1% /run
tmpfs              5,0M            0  5,0M            0% /run/lock
tmpfs              502M            0  502M            0% /sys/fs/cgroup
/dev/mmcblk0p6     4,9G         1,4G  3,3G           30% /mnt/data
tmpfs              101M            0  101M            0% /run/user/0

Запоминаем что наш большой раздел примонтрован в /mnt/data
И исследуем что у нас занимает место в корне

root@wirenboard-AITGTIZ7:~# du -hd1 / 
5,5M	/sbin
4,0K	/opt
74M	/lib
4,0K	/home
4,9M	/etc
504K	/run
16K	/lost+found
5,6M	/bin
0	/sys
1,4G	/mnt
576M	/usr
4,0K	/media
5,5M	/tmp
du: невозможно получить доступ к '/proc/5666/task/5666/fd/4': Нет такого файла или каталога
du: невозможно получить доступ к '/proc/5666/task/5666/fdinfo/4': Нет такого файла или каталога
du: невозможно получить доступ к '/proc/5666/fd/3': Нет такого файла или каталога
du: невозможно получить доступ к '/proc/5666/fdinfo/3': Нет такого файла или каталога
du: невозможно получить доступ к '/proc/5721': Нет такого файла или каталога
du: невозможно получить доступ к '/proc/5725': Нет такого файла или каталога
du: невозможно получить доступ к '/proc/5726': Нет такого файла или каталога
0	/proc
4,0K	/srv
124M	/var
9,9M	/boot
16K	/root.default
0	/dev
2,2G	/

Условно видим что много места занимает /usr
далее

du -hd1 /usr

и в таком духе.

В моем случае много места занимал Node-red со своими модулями

поэтому я перенес такие папки как /usr/lib/node_modules/

Как перенести?
Для порядка предлагаю создать внутри /mnt/data какую-то отдельную папку, условно folder

mkdir /mnt/data/folder

и создавать внутри нее целевые папки по образу изначального нахождения (вообще я уверен что для cp есть какой-то синтаксис, который создаст все необходимые целевые папки, но я его не знаю)

mkdir /mnt/data/folder/usr
mkdir /mnt/data/folder/usr/lib
mkdir /mnt/data/folder/usr/lib/node_modules

Дальше берем нашу usr/lib/node_modules/ и копируем в нашу folder

cp -r  /usr/lib/node_modules /mnt/data/folder/usr/lib/

удаляем папку в прежнем месте

rm -r  /usr/lib/node_modules

и создаем на нее символическую ссылку

ln -s /mnt/data/folder/usr/lib/node_modules /usr/lib/node_modules /// ln -s целевой_файл(каталог) место_ссылки

можем проверить

root@wirenboard-AITGTIZ7:~# ls -l /usr/lib/
итого 20936
drwxr-xr-x  5 root root     4096 фев 23  2022 apt
drwxr-xr-x 19 root root    20480 сен  5 10:42 arm-linux-gnueabihf
drwxr-xr-x  2 root root     4096 июн 17 09:42 avahi
drwxr-xr-x  2 root root     4096 июл  8  2021 binfmt.d
drwxr-xr-x  2 root root     4096 мар 25 18:28 bluetooth
drwxr-xr-x  2 root root     4096 май 31 22:56 compat-ld
drwxr-xr-x  2 root root     4096 фев 23  2022 dbus-1.0
drwxr-xr-x  3 root root     4096 фев 23  2022 dpkg
drwxr-xr-x  2 root root     4096 фев 23  2022 file
drwxr-xr-x  3 root root     4096 фев 14  2018 gcc
drwxr-xr-x  3 root root    12288 май 31 22:56 git-core
drwxr-xr-x  2 root root     4096 май 31 22:56 gnupg
drwxr-xr-x  2 root root     4096 фев 23  2022 gnupg1
drwxr-xr-x  2 root root     4096 май 31 22:56 gnupg2
drwxr-xr-x  2 root root     4096 май 31 22:56 gold-ld
drwxr-xr-x  3 root root     4096 фев 23  2022 kernel
drwxr-xr-x  2 root root     4096 мар 25 18:26 knxd
-rwxr-xr-x  1 root root    39788 апр 27  2021 knxd_args
drwxr-xr-x  2 root root     4096 май 31 22:56 ldscripts
lrwxrwxrwx  1 root root       20 янв  5  2017 libGammu.so.8 -> libGammu.so.8.1.38.1
-rw-r--r--  1 root root  1009284 янв  5  2017 libGammu.so.8.1.38.1
lrwxrwxrwx  1 root root       24 фев 28  2017 libinotifytools.so.0 -> libinotifytools.so.0.4.1
-rw-r--r--  1 root root    22224 фев 28  2017 libinotifytools.so.0.4.1
-rwxr-xr-x  1 root root 20096302 авг 31 22:40 libpython3.9.a
drwxr-xr-x  3 root root     4096 фев 23  2022 locale
drwxr-xr-x  5 root root     4096 фев 23  2022 mc
drwxr-xr-x  3 root root     4096 фев 23  2022 mime
drwxr-xr-x  2 root root     4096 июл  8  2021 modules-load.d
lrwxrwxrwx  1 root root       31 авг 31 15:40 node_modules -> /mnt/data/usr/lib/node_modules/ ///такакя пометка говорит нам о том что папка находится по адресу  /mnt/data/usr/lib/node_modules/  ///
drwxr-xr-x  2 root root     4096 фев 23  2022 openssh
-rw-r--r--  1 root root      261 июл 11  2020 os-release
drwxr-xr-x  2 root root     4096 авг 31 23:16 pkgconfig
drwxr-xr-x  3 root root     4096 фев 23  2022 pm-utils
drwxr-xr-x  3 root root     4096 фев 23  2022 pppd
drwxr-xr-x  3 root root     4096 мар 25 18:25 python2.6
drwxr-xr-x 26 root root    20480 фев 23  2022 python2.7
drwxr-xr-x  3 root root     4096 май 21  2017 python3
drwxr-xr-x 32 root root     4096 фев 23  2022 python3.5
lrwxrwxrwx  1 root root       28 авг 31 23:42 python3.9 -> /mnt/data/usr/lib/python3.9/
drwxr-xr-x  3 root root     4096 фев 23  2022 resolvconf
drwxr-xr-x  2 root root     4096 дек 20  2019 sasl2
lrwxrwxrwx  1 root root       16 июл 15  2014 sendmail -> ../sbin/sendmail
lrwxrwxrwx  1 root root       19 июл 15  2019 sftp-server -> openssh/sftp-server
drwxr-xr-x  3 root root     4096 май 27 17:32 ssl
drwxr-xr-x  2 root root     4096 июн 17 09:42 sudo
drwxr-xr-x  7 root root     4096 фев 23  2022 systemd
drwxr-xr-x  2 root root     4096 мар 25 18:26 sysusers.d
drwxr-xr-x  2 root root     4096 окт 30  2016 tar
drwxr-xr-x  2 root root     4096 фев 23  2022 tc
drwxr-xr-x  3 root root     4096 мар 25 18:25 tcc
drwxr-xr-x  2 root root     4096 июл  4 00:06 tmpfiles.d
drwxr-xr-x  3 root root     4096 мар 25 18:25 u-boot
drwxr-xr-x  2 root root     4096 мар 25 18:23 valgrind
drwxr-xr-x  2 root root     4096 дек 15  2021 wb-homa-ism-radio
drwxr-xr-x  2 root root     4096 сен  5 10:42 wb-hwconf-manager
drwxr-xr-x  3 root root     4096 мар 25 18:25 wb-image-update
drwxr-xr-x  2 root root     4096 мар 25 18:26 wb-knxd-config
drwxr-xr-x  2 root root     4096 сен  5 10:42 wb-mqtt-adc
drwxr-xr-x  2 root root     4096 сен  5 10:42 wb-mqtt-gpio
drwxr-xr-x  2 root root     4096 сен  5 10:43 wb-mqtt-homeui
-rw-r--r--  1 root root       65 сен  5 09:06 wb-release
-rwxr-xr-x  1 root root       85 май 30 14:24 wb-rsyslog-rotation
drwxr-xr-x  6 root root     4096 апр  5 12:42 wb-test-suite
drwxr-xr-x  4 root root     4096 сен  5 10:42 wb-utils

Важно! нельзя перенести системные файлы
не знаю как правильно объяснить, шобы меня не заплевали
но при старте системы далеко не сразу загрузятся все примонтированные разделы
и может случиться так что ваша ссылка будет ссылать вникуда
печальный пример

пара полезных команд из той же темы
Узнать список файлов пакета nodejs:

dpkg -L nodejs

Список директорий пакета:

dpkg -S nodejs

и мастхев

dpkg-query --show --showformat='${Installed-Size}\t${Package}\n' | sort -rh | head -30 | awk '{print $1/1024, $2}'

pwd - present working directory. отобразит текущий рабочий каталог (может быть полезно если перемещаетесь по каталогам через cd, для удобства)

root@wirenboard-AITGTIZ7:~# pwd
/root

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

root@wirenboard-AITGTIZ7:/mnt/data# ls -d usr/*/*/* -R -l
drwxr-xr-x  3 root root     4096 авг 29 17:56 usr/lib/node_modules/
-rw-r--r--  1 root root     4489 авг 31 23:40 usr/lib/python3.9/ /// Установил из-за возникших проблем после перехода на последний node.js, чтоб сделать ребилд zigbee-herdsman ///
lrwxrwxrwx  1 root root       40 сен  1 01:10 usr/local/bin/gulp -> ../lib/node_modules/gulp-cli/bin/gulp.js
-rwxr-xr-x  1 root root 73801604 авг 31 21:36 usr/local/bin/node
drwxr-xr-x  5 root root     4096 сен  1 01:08 usr/local/lib/node_modules
drwxr-xr-x  3 root root     4096 авг 31 21:42 usr/local/n/versions
3 лайка

Здравствуйте!

Именно после apt update? Эта команда только обновляет списки доступных пакетов. Или после apt upgrade?

Мы рекомендуем устанавливать zigbee2mqtt и nodejs пакетами из наших репозиториев. Сейчас доступны:

zigbee2mqtt: 1.25.2
nodejs: 12.19.0-1nodesource1

Если при этом используется Node-Red, то нужно устанавливать версию 2.2, которая поддерживает nodejs v12. Иначе начинаются несовместимости версий.

Добрый день.

Да, разумеется после upgrade.

Спасибо за совет, место освободил, но не легче.

Мы рекомендуем устанавливать zigbee2mqtt и nodejs пакетами из наших репозиториев. Сейчас доступны:

к сожалению, ZigBee2MQTT 1.25.2 не завёлся с node 12.
обновил ноду на 16, предсказуемо потребовало перекомпилировать (спотыкалась о Serial…)
Перекомпиляция не поехала, ибо python3.5 obsolete

zigbee2mqtt# npm rebuild @serialport/bindings --update-binary
npm ERR! code 1
npm ERR! path /mnt/data/root/zigbee2mqtt/node_modules/@serialport/bindings
npm ERR! command failed
npm ERR! command sh /tmp/install-b3bea280.sh
npm ERR! prebuild-install WARN install No prebuilt binaries found (target=16.17.0 runtime=node arch=arm libc= platform=linux)
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.0.0
npm ERR! gyp info using node@16.17.0 | linux | arm
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python Python is not set from command line or npm configuration
npm ERR! gyp ERR! find Python Python is not set from environment variable PYTHON
npm ERR! gyp ERR! find Python checking if “python3” can be used
npm ERR! gyp ERR! find Python - executable path is “/usr/bin/python3”
npm ERR! gyp ERR! find Python - version is “3.5.3”
npm ERR! gyp ERR! find Python - version is 3.5.3 - should be >=3.6.0
npm ERR! gyp ERR! find Python - THIS VERSION OF PYTHON IS NOT SUPPORTED
npm ERR! gyp ERR! find Python checking if “python” can be used
npm ERR! gyp ERR! find Python - executable path is “/usr/bin/python”
npm ERR! gyp ERR! find Python - version is “2.7.13”
npm ERR! gyp ERR! find Python - version is 2.7.13 - should be >=3.6.0
npm ERR! gyp ERR! find Python - THIS VERSION OF PYTHON IS NOT SUPPORTED
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python **********************************************************
npm ERR! gyp ERR! find Python You need to install the latest version of Python.

Python 3.6.3 сопротивляется к установке. Аналогично не захотел 3.7.13

Напомню, что до apt upgrade система ехала

NodeRed не используется

какие варианты?
снести zigbee2mqtt и поставить заново?

с уважением
Евгений

Я проблему решил установкой python 3.9

Собрал из исходников прям на контролере

Что-то в духе такой инструкции (ставил через altinstall, дабы не трогать родной)

Правда супер неудобный момент от того что каждое обновление zigbee2mqtt (apt upgrade) приходится делать rebuild herdsmann

Поэтому тоже интересное официальное предложение по устранению проблемы :slight_smile:

1 лайк

При установке пакетами из нашего репозитория должно работать, проверил. Перед установкой нужно удалить ранее установленные nodejs и zigbee2mqtt.

Удалил свои эксперименты
поставил ещё раз из вашего репозитория
Опять ошибка, но в этот раз не откликается TTYMOD
Надо ехать к устройству, дёргать по питанию видимо

Нужно смотреть логи.
Порт правильно сконфигурирован (Подключение устройств Zigbee к контроллеру Wiren Board — Wiren Board)?
Также нужно учитывать, что для для старых адаптеров WBE2R-R-ZIGBEE v.1, выпущенных до января 2022 года (если прошивка не обновлялась) нужно использовать пакет zigbee2mqtt-1.18.1: Подключение устройств Zigbee к контроллеру Wiren Board — Wiren Board

использован configuration.yaml, с которым работало до обновления.
Адаптер куплен в этом году (по весне)
в логах скупо

Sep 6 10:30:56 wirenboard-A5KBVLVF npm[31802]: Zigbee2MQTT:error 2022-09-06 10:30:56: Error while starting zigbee-herdsman
Sep 6 10:30:56 wirenboard-A5KBVLVF npm[31802]: Zigbee2MQTT:error 2022-09-06 10:30:56: Failed to start zigbee
Sep 6 10:30:56 wirenboard-A5KBVLVF npm[31802]: Zigbee2MQTT:error 2022-09-06 10:30:56: Check Zigbee2MQTT fails to start | Zigbee2MQTT for possible solutions
Sep 6 10:30:56 wirenboard-A5KBVLVF npm[31802]: Zigbee2MQTT:error 2022-09-06 10:30:56: Exiting…
Sep 6 10:30:59 wirenboard-A5KBVLVF npm[31802]: Zigbee2MQTT:error 2022-09-06 10:30:59: Error: Failed to connect to the adapter (Error: SRSP - SYS - ping after 6000ms)
Sep 6 10:30:59 wirenboard-A5KBVLVF npm[31802]: at ZStackAdapter.start (/mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/src/adapter/z-stack/adapter/zStackAdapter.ts:102:27)

Похоже на проблему связи с модулем. Проверьте еще раз, что указан правильный порт, модуль сконфигурирован в настройках контроллера. По номеру партии модуля можно узнать, какая у него прошивка. Партия указана на наклейке на платемодуля, а сведения о прошивке - в конце страницы документации: Модуль расширения: ZigBee, WBE2R-R-ZIGBEE v.1 — Wiren Board

Также бывает, что у первой версии модулей может портиться прошивка: Модуль расширения: ZigBee, WBE2R-R-ZIGBEE v.1 — Wiren Board

Также рекомендую попробовать перезагрузить контроллер тублером или снятием питания и проверить работу модуля zigbee еще раз.

На старую прошивку модуля больше похоже.

Добрый день

После отключения питания, поехало.
Правда пришлось перепривязать устойства

с уважением
Евгений

Добрый день.

Аналогичная ситуация после обновления на wb-2207 (as stable) перестал работать zigbee.
WB 6.7.2
Zigbee 1.1 v1.1A - v1.1H

Выдает при перезапуске сервиса
Zigbee2MQTT requires node version ^14 || ^16 || ^17 || ^18, you are running v12.19.0!

Какая последовательность, что бы восстановить работоспособность?

Добрый день

В моём случае помогло

  1. передёрнуть по питанию - модуль Zigbee тупо завис
  2. снести и поставить подсистему снова (потребовалось перепривязать устройства)

с уважнием
Евгений

По питанию через переключатель передергивал. Всю систему не готов переставлять или вы имеете ввиду zigbee2mqtt?

Через apt снести zigbee2mqtt и поставить снова.
Я дополнительно делал apt autoremove для удаления мусора
Сохраните конфиги.
Устройства потеряют привязку - у меня так было.

Евгений

Ага, помогло. Сделал так: apt remove zigbee2mqtt && apt install zigbee2mqtt-1.18.1