Mastodon

QNAP TS-212 как zigbee-шлюз умного дома

Долго выбирал себе шлюз zigbee и что-то ничего не выбрал. Решил делать сам, свой. И поскольку у меня работает NAS QNap TS-212 под управлением Debian 11 – то захотел использовать его и не закупать “малинки” или какой-либо другой хард под эту задачу.

Почитал интернет, выбрал для себя путь zigbee2mqtt -> какой нибудь брокер mqtt -> навык Алисы и т. п. и исходя из требований zigbee2mqtt пошел выбирать адаптер. Выбрал и заказал Sonoff ZBStick-P, а он взял и очень быстро приехал. Настало время ставить софт и настраивать это все, но тут настал облом. zigbee2mqtt работает под NodeJS и требует версию от 14 до 18, а вот такой версии под древнюю архитектуру arm5tel нет в принципе. В дистрибутив входит 12.22.5.

Я попытался поставить минимальную требуемую версию NodeJS через nvm – 14.21.2, nvm начал собирать NodeJS из исходников и сначала все шло хорошо, первые двое суток шло. А потом грохнулось:

g++ -o /root/.nvm/.cache/src/node-v14.21.2/files/out/Release/obj.target/v8_base_without_compiler/deps/v8/src/codegen/arm/assembler-arm.o ../deps/v8/src/codegen/arm/assembler-arm.cc '-DNODE_OPENSSL_CONF_NAME=nodejs_conf' '-DV8_GYP_BUILD' '-DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DV8_TARGET_ARCH_ARM' '-DCAN_USE_ARMV7_INSTRUCTIONS' '-DV8_EMBEDDER_STRING="-node.88"' '-DENABLE_DISASSEMBLER' '-DV8_PROMISE_INTERNAL_FIELD_COUNT=1' '-DENABLE_MINOR_MC' '-DOBJECT_PRINT' '-DV8_INTL_SUPPORT' '-DV8_CONCURRENT_MARKING' '-DV8_ARRAY_BUFFER_EXTENSION' '-DV8_ENABLE_LAZY_SOURCE_POSITIONS' '-DV8_USE_SIPHASH' '-DDISABLE_UNTRUSTED_CODE_MITIGATIONS' '-DV8_WIN64_UNWINDING_INFO' '-DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH' '-DV8_SNAPSHOT_COMPRESSION' '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' '-DUCONFIG_NO_SERVICE=1' '-DU_ENABLE_DYLOAD=0' '-DU_STATIC_IMPLEMENTATION=1' '-DU_HAVE_STD_STRING=1' '-DUCONFIG_NO_BREAK_ITERATION=0' -I../deps/v8 -I../deps/v8/include -I/root/.nvm/.cache/src/node-v14.21.2/files/out/Release/obj/gen/inspector-generated-output-root -I../deps/v8/third_party/inspector_protocol -I/root/.nvm/.cache/src/node-v14.21.2/files/out/Release/obj/gen/torque-output-root -I/root/.nvm/.cache/src/node-v14.21.2/files/out/Release/obj/gen/generate-bytecode-output-root -I../deps/icu-small/source/i18n -I../deps/icu-small/source/common -I../deps/v8/third_party/zlib -I../deps/v8/third_party/zlib/google  -pthread -Wno-unused-parameter -Wno-return-type -fno-strict-aliasing -mfpu=vfp -marm -O3 -fno-omit-frame-pointer -fdata-sections -ffunction-sections -O3 -fno-rtti -fno-exceptions -std=gnu++1y -MMD -MF /root/.nvm/.cache/src/node-v14.21.2/files/out/Release/.deps//root/.nvm/.cache/src/node-v14.21.2/files/out/Release/obj.target/v8_base_without_compiler/deps/v8/src/codegen/arm/assembler-arm.o.d.raw   -c
../deps/v8/src/codegen/arm/assembler-arm.cc:178:2: error: #error "CAN_USE_ARMV7_INSTRUCTIONS should match CAN_USE_VFP3_INSTRUCTIONS"
  178 | #error "CAN_USE_ARMV7_INSTRUCTIONS should match CAN_USE_VFP3_INSTRUCTIONS"
      |  ^~~~~
make[1]: *** [tools/v8_gypfiles/v8_base_without_compiler.target.mk:672: /root/.nvm/.cache/src/node-v14.21.2/files/out/Release/obj.target/v8_base_without_compiler/deps/v8/src/codegen/arm/assembler-arm.o] Ошибка 1
rm 799991d195a8788a72be237785690a3c47e2f705.intermediate 7ddaae8202fd01344acca2c3cd40f147d1075c0f.intermediate 70d3c10c100e250e22caf9768fc8100d4cbfd98c.intermediate
make: *** [Makefile:109: node] Ошибка 2
nvm: install v14.21.2 failed!

Судя по всему сборка этой версии на ARM младше 7 поколения авторами не предусматривается.

Пока это всё продолжалось – я посматривал на альтернативы zigbee2mqtt и казалось бы нашел – Home Assistant. Python, ну что с ним могло пойти не так? С пайтоном всё шло “так” и наверное, дошло бы до успешного конца, если бы не:

error: failed to parse manifest at `/home/homeassistant/.cargo/registry/src/github.com-1285ae84e5963aae/textwrap-0.16.0/Cargo.toml`

Caused by:
      failed to parse the `edition` key
  
    Caused by:
      this version of Cargo is older than the `2021` edition, and only supports `2015` and `2018` editions.

В зависимостях было что-то на Rust, и я наступил на уже знакомые грабли – древний системный компиллятор Rust и отсутствие новых версий под древнюю архитектуру.

Пока это всё продолжалось – я посматривал на альтернативы Home Assistant и нашёл Domoticz. Поэтому бороться с Home Assistant, пайтоном и растом не стал и занялся ею. Подкупило то, что она написана на C++ и по идее должна работать побыстрее zigbee2mqtt под NodeJS и Home Assistant на python.b ресурсов потреблять меньше. В общем, скачал, собрал и установил зависимости, сейчас собирается сама Domoticz. Надеюсь, что хоть этот процесс не закончится красной строчкой, начинающеся со слова error:

Один комментарий к “QNAP TS-212 как zigbee-шлюз умного дома”

Добавить комментарий