Подключение устройств Zigbee к контроллеру Wiren Board

From Wiren Board
This is the approved revision of this page, as well as being the most recent.

Описание

Для использования Zigbee-устройств с контроллером Wiren Board понадобится:

  1. Модуль расширения WBE2R-R-ZIGBEE v.2 (WBE2R-R-ZIGBEE v.1) или любой USB Zigbee стик.
  2. Дополнительное ПО:

Инструкции по установке смотрите ниже на этой странице.

Копируйте команды из инструкции, вставляйте их в консоль контроллера с помощью клавиш Shift+Insert и запускайте клавишей Enter. В случае ошибок, внимательно читайте вывод, там будут инструкции и подсказки.

Установка и настройка zigbee2mqtt

Процесс установки

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

Мы рекомендуем устанавливать готовый пакет из нашего репозитория, их там два:

  • zigbee2mqtt — всегда свежая версия, рекомендуем ставить её.
  • zigbee2mqtt-1.18.1 — версия для старых адаптеров WBE2R-R-ZIGBEE v.1, выпущенных до января 2022 года. Таблица ревизий.

Для установки свежей версии, введите команду:

apt update && apt install zigbee2mqtt

Чтобы установить 1.18.1, выполните:

apt update && apt install zigbee2mqtt-1.18.1

Альтернативный способ установки — сборка из исходников по инструкции.

Дальше мост надо настроить, смотрите раздел Конфигурация.

После установки пакета сервис zigbee2mqtt будет запускаться автоматически при старте контроллера, вы можете отключать и включать автозапуск командами:

systemctl disable zigbee2mqtt
systemctl enable zigbee2mqtt

Конфигурация

Если вы используете модуль расширения WBE2R-R-ZIGBEE, убедитесь, что правильно выставили модуль в SettingsConfigsHardware Modules Configuration.

Наименование порта:

  • при использовании модуля расширения WBE2R-R-ZIGBEE порт будет называться /dev/ttyMODx, где x — номер порта;
  • при использовании USB-стика порт будет называться /dev/ttyUSBx, где x — номер порта, нумерация с нуля
  • Нумерация портов для модулей расширения (WB 6.7-8.4)

  • Нумерация портов для модулей расширения (WB 8.5, 8M)

  • Настройка:

    1. Откройте файл конфигурации для редактирования (полное описание параметров на английском
      nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
      
      По умолчанию файл конфигурации выглядит так:
      homeassistant: false
      permit_join: false
      mqtt:
        base_topic: zigbee2mqtt
        server: 'mqtt://localhost'
      serial:
        port: /dev/ttyMOD4
        adapter: zstack
      advanced:
        rtscts: false
        last_seen: epoch
        channel: 11
        pan_id: GENERATE
        network_key: GENERATE
      
    2. Измените необходимые параметры
      • В параметре port укажите порт, куда физически вставлен модуль. Если порт уже указан и он верен, не изменяйте файл.
      • Вместо GENERATE после первого запуска моста появятся значения, не изменяйте их. Если изменяете - то откорректируйте/удалите бэкап.
    3. Нажмите Ctrl+S для сохранения изменений, Ctrl+X — для выхода из редактора.
    4. Перезапустите сервис zigbee2mqtt:
      systemctl restart zigbee2mqtt
      

    Теперь вы можете установить конвертер wb-zigbee2mqtt и Zigbee-устройства будут добавлены на вкладку Devices в стандартном веб-интерфейсе контроллера.

    Веб-интерфейс (Frontend)

    Интерфейс zigbee2mqtt

    Веб-интерфейс zigbee2mqtt висит на отдельном порту и потенциально является дырой в безопасности — не включайте его, если не используете: добавлять и удалять устройства можно через наш конвертер wb-zigbee2mqtt.

    Если вам всё же нужен родной веб-интерфейс zigbee2mqtt, то его можно включить в файле настроек:

    1. Откройте файл configuration.yaml для редактированияː
      nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
      
    2. Добавьте в него блок:
      frontend:
        enabled: true
        port: 8081
        host: 0.0.0.0
      
    3. Сохраните и закройте файл.
    4. Перезапустите сервис zigbee2mqtt:
      systemctl restart zigbee2mqtt
      

    Веб-интерфейс моста zigbee2mqtt будет доступен по адресу http://wb-ip-address:PORT, например, если IP-адрес контроллера 192.168.42.1, а порт указан 8081, то веб-интерфейс будет доступен по адресу http://192.168.42.1:8081

    Проверка статуса

    Успешно ли запустился z2m можно понять двумя способами

    1) Кратко проверив статус его работы.

    Ниже приведен корректный вывод когда не обнаружено ошибок.

    # systemctl status zigbee2mqtt
    ● zigbee2mqtt.service - zigbee2mqtt
         Loaded: loaded (/lib/systemd/system/zigbee2mqtt.service; enabled; vendor preset: enabled)
         Active: active (running) since Thu 2025-03-06 10:23:02 UTC; 1s ago
       Main PID: 630240 (npm start)
          Tasks: 26 (limit: 2340)
         Memory: 34.0M
            CPU: 2.087s
         CGroup: /system.slice/zigbee2mqtt.service
                 ├─630240 npm start
                 ├─630262 sh -c node index.js
                 └─630263 node index.js
    
    Mar 06 10:23:02 wirenboard-AQLNJER2 systemd[1]: Started zigbee2mqtt.
    Mar 06 10:23:03 wirenboard-AQLNJER2 npm[630240]: > zigbee2mqtt@2.1.1 start
    Mar 06 10:23:03 wirenboard-AQLNJER2 npm[630240]: > node index.js
    #
    

    Обратите внимание на строку "Active: active (running) since ..." и отсутствие ошибок/предупреждений.

    Если вы указали не верный номер модуля на предыдушем шагу то будет примерно следующий вывод

    # systemctl status zigbee2mqtt
    ● zigbee2mqtt.service - zigbee2mqtt
         Loaded: loaded (/lib/systemd/system/zigbee2mqtt.service; enabled; vendor preset: enabled)
         Active: activating (auto-restart) (Result: exit-code) since Thu 2025-03-06 10:19:33 UTC; 5s ago
       Main PID: 628249 (code=exited, status=1/FAILURE)
          Tasks: 0 (limit: 2340)
         Memory: 0B
            CPU: 0
         CGroup: /system.slice/zigbee2mqtt.service
    #
    

    В выводе выше в строке PID написано что есть ошибка "Main PID: 628249 (code=exited, status=1/FAILURE)"

    2) Подробно - посмотреть лог работы zigbee2mqtt

    # journalctl -u zigbee2mqtt -f
    -- Journal begins at Tue 2025-03-04 16:14:09 UTC. --
    Mar 06 14:17:00 wirenboard-AQLNJER2 npm[27126]: [2025-03-06 14:17:00] error:         z2m: Exiting...
    Mar 06 14:17:01 wirenboard-AQLNJER2 npm[27126]: [2025-03-06 14:17:01] error:         z2m: Error: Failed to connect to the adapter (Error: SRSP - SYS - ping after 6000ms)
    Mar 06 14:17:01 wirenboard-AQLNJER2 npm[27126]:     at ZStackAdapter.start (/mnt/data/root/zigbee2mqtt/node_modules/.pnpm/zigbee-herdsman@3.2.5/node_modules/zigbee-herdsman/src/adapter/z-stack/adapter/zStackAdapter.ts:113:27)
    Mar 06 14:17:01 wirenboard-AQLNJER2 npm[27126]:     at Controller.start (/mnt/data/root/zigbee2mqtt/node_modules/.pnpm/zigbee-herdsman@3.2.5/node_modules/zigbee-herdsman/src/controller/controller.ts:136:29)
    Mar 06 14:17:01 wirenboard-AQLNJER2 npm[27126]:     at Zigbee.start (/mnt/data/root/zigbee2mqtt/lib/zigbee.ts:69:27)
    Mar 06 14:17:01 wirenboard-AQLNJER2 npm[27126]:     at Controller.start (/mnt/data/root/zigbee2mqtt/lib/controller.ts:142:13)
    Mar 06 14:17:01 wirenboard-AQLNJER2 npm[27126]:     at start (/mnt/data/root/zigbee2mqtt/index.js:161:5)
    Mar 06 14:17:01 wirenboard-AQLNJER2 systemd[1]: zigbee2mqtt.service: Main process exited, code=exited, status=1/FAILURE
    Mar 06 14:17:01 wirenboard-AQLNJER2 systemd[1]: zigbee2mqtt.service: Failed with result 'exit-code'.
    Mar 06 14:17:01 wirenboard-AQLNJER2 systemd[1]: zigbee2mqtt.service: Consumed 14.449s CPU time.
    Mar 06 14:18:19 wirenboard-AQLNJER2 systemd[1]: Stopped zigbee2mqtt.
    ...
    

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

    # systemctl reset-failed zigbee2mqtt.service
    

    Например это может помочь с такой ошибкой, которая возникает после изменения номера порта в настройках z2m

    # systemctl restart zigbee2mqtt
    Job for zigbee2mqtt.service failed because the control process exited with error code.
    See "systemctl status zigbee2mqtt.service" and "journalctl -xe" for details.
    # systemctl reset-failed zigbee2mqtt.service
    # systemctl restart zigbee2mqtt
    #
    

    Обновление

    Для обновления zigbee2mqtt на свежую версию просто обновите программное обеспечение контроллера по инструкции. Будут сохранены все настройки и подключенные устройства.

    Если у вас старый адаптер WBE2R-R-ZIGBEE v.1, выпущенный до января 2022 года, то новая версия работать не будет, в этом случае у вас есть три варианта:

    Настройка мощности передачи

    По умолчанию модуль использует настройку мощности равную 9 dBm. Для увеличения мощности (доступные значения 0..20):

    1. Откройте файл configuration.yaml для редактированияː
      nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
      
    2. Добавьте в блок advanced:
      advanced:
        transmit_power: 20
      
    3. Сохраните и закройте файл.
    4. Перезапустите сервис zigbee2mqtt:
      systemctl restart zigbee2mqtt
      

    Конвертер wb-zigbee2mqtt

    Описание

    Zigbee-устройство на вкладке Devices — в заголовке указан friendly_name

    Wb-zigbee2mqtt — конвертер данных zigbee2mqtt в топики виртуальных устройств, написан на движке правил wb-rules и устанавливается в папку с системными правилами wb-rules-system. Умеет отображать Zigbee-устройства в интерфейсе контроллера Wiren Board, но для управления пользователь должен сам писать в контролы zigbee2mqtt с помощью функции publish.

    Принцип работы

    Конвертер wb-zigbee2mqtt запрашивает у zigbee2mqtt список всех подключенных устройств и подписывается на их топики. При получении данных от физических устройств конвертер парсит json, создает виртуальное устройство и посылает в него полученную информацию.

    Так же конвертер создает виртуальное устройство zigbee2mqtt и передает в него логи, версию и состояние (online\offline) моста zigbee2mqtt. Можно включить и выключить режим добавления устройств. Также там расположена кнопка Update devices. При нажатии на эту кнопку конвертер заново запрашивает у моста список добавленных устройств и, если они появились — подписывается на них.

    Установка

    wb-zigbee2mqtt ставится автоматически при установке пакета zigbee2mqtt, если этого не произошло, установите его командой:

    apt update && apt install wb-zigbee2mqtt
    

    После этого в стандартном веб-интерфейсе контроллера на вкладке Devices появится устройство zigbee2mqtt.

    Добавление устройств

    Добавление устройства, сообщение Device '0x00158d0007013f71' is supported.
    Неподдерживаемое устройство, сообщение Device '0x2c1165fffeabe0b8' not supported.

    Устройства можно добавлять по одному или все разом. Чтобы добавить новые устройства:

    1. Перейдите в стандартный веб-интерфейс контроллера.
    2. Откройте вкладку Devices.
    3. Найдите там карточку устройства Zigbee2mqtt и проверьте статус в поле State — должно быть написано online. Если вы только, что установили zigbee2mqtt и указан статус offline — подождите пару минут.
    4. Включите переключатель Permit join.
    5. Следуйте инструкции к Zigbee-устройству: в основном требуется зажать на устройстве кнопку pair на несколько секунд и дождаться мигания индикатора на устройстве.
    6. В процессе добавления устройства в карточке Zigbee2mqtt в поле Log по очереди будут появляться сообщения Starting interview on 0xN → Device 0xN is supported. Последнее сообщение означает, что устройство успешно опрошено.
    7. Повторите шаги 5 и 6 для каждого Zigbee-устройства, которое у вас есть.
    8. Завершите добавление устройств, для этого выключите переключатель Permit join.
    9. Нажмите кнопку Update devices, добавленные устройства будут доступны на вкладке Devices.

    Иногда, новые устройства не появляются на вкладке Devices — это может быть по причинам:

    1. Произошла ошибка в конвертере при разборе данных от zigbee2mqtt, в этом случае перезапустите движок правил:
      systemctl restart wb-rules
      
    2. Некоторые устройства не поддерживаются zigbee2mqtt, для таких устройств в сообщении будет указано Starting interview on 0xN → Device 0xN ... is NOT supported. В этом случае убедитесь, что устройство есть в списке поддерживаемых и у вас установлена свежая версия zigbee2mqtt.

    Ещё бывает так, что карточка устройства появилась, но пустая — это значит, что устройство добавлено, но данные пока не были получены. Если это датчик, то тут нужно немного подождать, а в случае с выключателем — выключить или включить его.

    Изменение friendly_name

    friendly_name — это человекочитаемое имя устройства. Вы можете оставить значение по умолчанию, или настроить своё:

    1. Откройте файл конфигурации для редактированияː
      nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
      
    2. Найдите в секции devices ваше устройство.
    3. Измените friendly_name.
    4. Сохраните файл настроек и перезапустите сервис:
      systemctl restart zigbee2mqtt
      
    5. В стандартном веб-интерфейсе контроллера на вкладке Devices должно появиться устройство с заданным именем.
    6. Удалите карточку устройства со старым именем с вкладки Devices, для этого нажмите на корзинку в заголовке.

    Новое имя устройства должно соответствовать этим требованиям (плюс нельзя использовать косую черту /) и не должно быть одинаковым для нескольких устройств, а также соответствовать определённым правилам — так называемым соглашениям (Wiren Board MQTT Conventions).

    Управление устройствами

    Управление через конвертер wb-zigbee2mqtt пока не реализовано, но вы можете управлять устройствами стандартными инструментами zigbee2mqtt через wb-rules, отправляя команды с помощью функции publish.

    Другими словами, вместо ожидаемого по традиции wb-rules:

    dev["friendly_name/control_name"] = "OFF"
    

    надо в скрипте делать:

    publish("zigbee2mqtt/friendly_name/set", JSON.stringify({ control_name: "OFF" }), 2, false);
    

    Вот пример включения и отключения реле с friendly_name равным 0x00158d0001f3fc34 в правилах wb-rules:

     publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "ON" }), 2, false);
     publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "OFF" }), 2, false);
    

    Если wb-rules для вас сложен, вы всегда можете использовать визуальный редактор автоматизаций Node-RED.

    Удаление устройств

    Чтобы удалить устройство:

    1. Убедитесь, что в карточке устройства с заголовком Zigbee2mqtt перключатель Permit join находится в положении OFF.
    2. Разорвите связь устройства с координатором. Обычно для этого нужно зажать кнопку сопряжения на 5 секунд, смотрите документацию на устройство.
    3. Проследите, чтобы в карточке с заголовком Zigbee2mqtt в поле Log появилось сообщение left_network.
    4. Удалите карточку этого Zigbee-устройства из веб-интерфейса, для этого наведите на заголовок карточки курсор мыши и нажмите на корзинку.
    5. Подключитесь к контроллеру по SSH и перезапустите wb-rules — это перезапустит конвертер wb-zigbee2mqtt:
      systemctl restart wb-rules
      

    Как переустановить с сохранением данных

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

    Инструкция:

    1. Перейдите в домашний каталог:
      cd ~
      
    2. Сохраните настройки:
      cp -R /mnt/data/root/zigbee2mqtt/data data-backup
      
    3. Удалите zigbee2mqtt командой:
      apt purge zigbee2mqtt
      
    4. Если остался каталог с node-modules — удалите его:
      rm -r /mnt/data/root/zigbee2mqtt/node_modules
      
    5. Заново поставьте zigbee2mqtt:
      apt install zigbee2mqtt
      
    6. Восстановите настройки из архива:
      cp -R data-backup/* /mnt/data/root/zigbee2mqtt/data
      
    7. Перезапустите сервис:
      systemctl restart zigbee2mqtt
      

    Диагностика неисправностей

    Если вы столкнулись с проблемами в работе zigbee2mqtt, то прояснить ситуацию поможет статус сервиса и чтение подробных логов. Для выполнения команд подключитесь к контроллеру по SSH.

    Посмотреть текущий статус и последние несколько сообщений из лога можно командой:

    # systemctl status zigbee2mqtt
    ● zigbee2mqtt.service - zigbee2mqtt
       Loaded: loaded (/lib/systemd/system/zigbee2mqtt.service; enabled; vendor preset: enabled)
       Active: activating (auto-restart) (Result: exit-code) since Fri 2022-05-13 10:06:04 +04; 3s ago
      Process: 25986 ExecStart=/usr/bin/npm start (code=exited, status=1/FAILURE)
     Main PID: 25986 (code=exited, status=1/FAILURE)
    
    May 13 10:06:04 wirenboard-AYXIHFQ6 systemd[1]: zigbee2mqtt.service: Main process exited, code=exited, status=1/FAILURE
    May 13 10:06:04 wirenboard-AYXIHFQ6 systemd[1]: zigbee2mqtt.service: Unit entered failed state.
    May 13 10:06:04 wirenboard-AYXIHFQ6 systemd[1]: zigbee2mqtt.service: Failed with result 'exit-code'.
    
    Пример проблем при запуске zigbee2mqtt командой npm start
    Пример успешного запуска zigbee2mqtt при выполнении команды npm start

    Часто бывает так, что из предыдущего шага мы видим наличие проблемы, но причина непонятна, в этом случае нужно смотреть логи:

    1. Остановите сервис командой:
      systemctl stop zigbee2mqtt
      
    2. Перейдите в каталог с zigbee2mqtt:
      cd /mnt/data/root/zigbee2mqtt/
      
    3. Запустите zigbee2mqtt в ручном режиме с выводом всех сообщений в консоль командой npm start:
      # npm start
      
       > zigbee2mqtt@1.18.1 start /mnt/data/root/zigbee2mqtt
       > node index.js
      
      Zigbee2MQTT:info  2022-05-13 09:59:30: Logging to console and directory: '/mnt/data/root/zigbee2mqtt/data/log/2022-05-13.09-59-19' filename: log.txt
      Zigbee2MQTT:info  2022-05-13 09:59:30: Starting Zigbee2MQTT version 1.18.1 (commit #unknown)
      Zigbee2MQTT:info  2022-05-13 09:59:30: Starting zigbee-herdsman (0.13.71)
      Zigbee2MQTT:error 2022-05-13 09:59:39: Error while starting zigbee-herdsman
      Zigbee2MQTT:error 2022-05-13 09:59:39: Failed to start zigbee
      Zigbee2MQTT:error 2022-05-13 09:59:39: Exiting...
      Zigbee2MQTT:error 2022-05-13 09:59:39: Error: Error while opening serialport 'Error: Error: No such file or directory, cannot open /dev/ttyUSB01'
          at Znp.<anonymous> (/mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/dist/adapter/z-stack/znp/znp.js:136:32)
          at Generator.next (<anonymous>)
          at /mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/dist/adapter/z-stack/znp/znp.js:27:71
          at new Promise (<anonymous>)
          at __awaiter (/mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/dist/adapter/z-stack/znp/znp.js:23:12)
          at SerialPort.<anonymous> (/mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/dist/adapter/z-stack/znp/znp.js:134:49)
          at SerialPort._error (/mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/node_modules/@serialport/stream/lib/index.js:198:14)
          at /mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/node_modules/@serialport/stream/lib/index.js:242:12
      npm ERR! code ELIFECYCLE
      npm ERR! errno 1
      npm ERR! zigbee2mqtt@1.18.1 start: `node index.js`
      npm ERR! Exit status 1
      npm ERR! 
      npm ERR! Failed at the zigbee2mqtt@1.18.1 start script.
      npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
      
      npm ERR! A complete log of this run can be found in:
      npm ERR!     /root/.npm/_logs/2022-05-13T05_59_39_596Z-debug.log
      
      здесь сразу видно, что мы в настройках неверно указали порт.
    4. После того, как вы нашли и устранили проблему, снова запустите сервис:
      systemctl start zigbee2mqtt
      

    Если при выполнении npm start сервис запустился успешно, то остановить его можно нажатием клавиш Ctrl+C.

    Иногда может потребоваться отключить автозапуск сервиса, управлять автозапуском можно командами:

    systemctl disable zigbee2mqtt
    systemctl enable zigbee2mqtt
    

    Решение проблем

    Не запускается 1.18.1 после обновления

    В консоли такое:

    Zigbee2MQTT version 1.18.1.
    Не нарвится версия node. Zigbee2MQTT requires node version ^10  ^12  ^14 |
    | ^15 || ^16, you are running v20.5.1!
    

    Установите предыдущую версию пакета nodejs:

    apt install nodejs=16.20.2-deb-1nodesource1
    

    zigbee2mqtt ругается на модуль

    Здесь надо понять, проблема в zigbee2mqtt, конфигурации или модуле.

    Для начала проверьте, что модуль правильно сконфигурирован, смотрите документацию на модуль расширения.

    Если к конфигурации вопросов нет, можете проверить работу модуля сторонним скриптом check-cc2652p:

    1. Скачайте модуль по инструкции в репозитории.
    2. Остановите zigbee2mqtt командой
      systemctl stop zigbee2mqtt
      
    3. Выполните команду, замените порт на свой:
      python3 ./check_cc2652p.py /dev/ttyMOD4
      

    Если в ответ получили сообщения о версии прошивки и модуля — он работает и значит проблема в zigbee2mqtt: неверно задан порт или что-то сломалось.

    Пример успешного вывода:

    # python3 ./check_cc2652p.py /dev/ttyMOD4
    SYS Version response detected for CC2652:
    Transport Version: 2
    Product ID: 1 — CC2652 Zigbee Module.
    Major Release: 2
    Minor Release: 7
    Maintenance Release: 1
    Stack Version: 2.7.1 — Indicates Z-Stack compatibility.
    Revision: 6bb1340100 — Firmware Revision Details.
    Additional asynchronous data detected. Skipping:
    Raw data: 81fe0345c4f2dd00ad
    

    Проблема обновления zigbee2mqtt до версии 2.1.1

    Если при обновлении zigbee2mqtt до версии 2.1.1 вы столкнулись с проблемой, что пакет не запускается с такими симптомами:

    > zigbee2mqtt@2.1.1 start
    > node index.js
    node:internal/modules/cjs/loader:1051
      throw err;
      ^
    Error: Cannot find module 'semver'
    Require stack:
    - /mnt/data/root/zigbee2mqtt/index.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1048:15)
    

    то рекомендуется сделать следующее для решения проблемы:

    1. Сделайте резервную копию файла configuration.yaml.
    2. Удалите текущую версию: apt remove zigbee2mqtt
    3. В файле configuration.yaml добавьте тип адаптера adapter в раздел serial. Пример для нашего модуля:
      serial:
        port: /dev/ttyMOD1
        adapter: zstack
      
    4. Установите заново пакет: apt update && apt install zigbee2mqtt

    Полезные ссылки