Перейти к содержанию

Обнаружение устройств Shelly через mDNS: различия между версиями

Материал из База знаний Shelly
imported>Unknown user
Нет описания правки
 
imported>Unknown user
Нет описания правки
 
(нет различий)

Текущая версия от 13:07, 11 марта 2026

Устройства Shelly (как и многие современные устройства умного дома) объявляют себя в локальной сети, используя mDNS (многоадресный DNS). В этой статье мы объясним:

  1. Что такое mDNS и как устройства Shelly его используют
  2. Как обнаружить устройства Shelly через mDNS (включая утилиты командной строки)
  3. Автоматическое обнаружение с помощью Python (ссылка на наш пример скрипта)
  4. Устранение неполадок и советы

Что такое mDNS?

[править]

mDNS (Multicast DNS) — это протокол, определенный в RFC 6762

который позволяет устройствам в LAN (локальной сети) обнаруживать друг друга без центрального DNS-сервера. Это достигается путем отправки и получения DNS-подобных запросов через UDP-порт 5353 в многоадресную группу. Популярные реализации mDNS включают Bonjour от Apple

и Avahi

в Linux.

Почему это важно для устройств Shelly?

Поскольку каждое устройство Shelly объявляет о себе, используя определенный тип службы ( _shelly._tcp.local.

), что позволяет любому инструменту с поддержкой mDNS обнаруживать эти широковещательные сообщения и отображать такие сведения, как IP-адреса и версии прошивки, и поскольку mDNS часто используется в паре с DNS-SD

(иногда называемым его «родственником») для обеспечения структурированного метода рекламы и просмотра служб по типу (например, _shelly._tcp.local.

), эта функциональность особенно важна для устройств Shelly.

Как обнаружить устройства Shelly через mDNS

[править]

Тип службы mDNS для Shelly

[править]

Устройства Shelly, осуществляющие широковещательную рассылку под этим типом службы:

КОД

_shelly._tcp.local.

По умолчанию каждое устройство Shelly объявляет следующее:

  • Имя экземпляра (имя службы) : Часто выглядит как shelly2pmg4-7c2c67640b38._shelly._tcp.local.
  • Имя хоста (сервера) (например, Shelly2PMG4-7C2C67640B38.local.)
  • IP-адрес(а)
  • Порт (80)
  • TXT-записи, содержащие ключевые свойства: gen: Поколение (например, 4) app: Имя/модель устройства (например, S2PMG4) ver: Версия прошивки (например, 1.5.99)

 

Инструменты обнаружения из командной строки

[править]

 

==== macOS: dns-sd ====\n

  1. Просмотр служб Shelly:

КОД

dns-sd -B _shelly._tcp

Вы увидите устройства Shelly по мере их появления появляется.

  1. Разрешить конкретное устройство для просмотра подробных записей TXT:

КОД

dns-sd -L "shelly2pmg4-7c2c67640b38" _shelly._tcp local

Вы увидите что-то вроде:

КОД

Поиск shelly2pmg4-7c2c67640b38._shelly._tcp.local ДАТА: ---Пт 21 фев 2025--- 10:38:08.309 ...НАЧАЛО... 10:38:08.611 shelly2pmg4-7c2c67640b38._shelly._tcp.local. Доступен по адресу Shelly2PMG4-7C2C67640B38.local.:80 (интерфейс 24) gen=4 app=S2PMG4 ver=1.5.99

==== Linux: avahi-browse ====\n

  1. Установить при необходимости:

КОД

sudo apt-get update sudo apt-get install avahi-utils

  1. Просмотреть службы _shelly._tcp:

КОД

avahi-browse --resolve --terminate --parsable _shelly._tcp | grep "^="

Эта команда отображает IP-адрес, порт и данные TXT каждого устройства Shelly (включая gen, app, ver) в таблице. Вы увидите что-то вроде:

КОД

=;eth0;IPv4;ShellyWallDisplay-00A90BA7352B;_shelly._tcp;local;ShellyWallDisplay-00A90BA7352B.local;192.168.1.134;80;"discoverable=false" "ver=2.3.1" "gen=2" "app=WallDisplay" =;eth0;IPv4;ShellyWallDisplay-000822858F3D;_shelly._tcp;local;ShellyWallDisplay-000822858F3D.local;192.168.7.208;80;"discoverable=false" "ver=2.3.2" "gen=2" "app=WallDisplay" =;eth0;IPv6;shellypstripg4-7c2c67642200;_shelly._tcp;local;ShellyPStripG4-7C2C67642200.local;fd62:7244:6b44:daec:7e2c:67ff:fe64:2200;80;"ver=1.5.99-dev113814" "app=PowerStrip" "gen=4" =;eth0;IPv6;shelly2pmg4-7c2c677a0220;_shelly._tcp;local;Shelly2PMG4-7C2C677A0220.local;fd62:7244:6b44:daec:7e2c:67ff:fe7a:220;80;"ver=1.5.99-dev114895" "app=S2PMG4" "gen=4" =;eth0;IPv4;shelly2pmg4-7c2c677a0220;_shelly._tcp;local;Shelly2PMG4-7C2C677A0220.local;192.168.9.14;80;"ver=1.5.99-dev114895" "app=S2PMG4" "gen=4" =;eth0;IPv4;shellyhtg3-84fce63f8908;_shelly._tcp;local;ShellyHTG3-84FCE63F8908.local;192.168.9.209;80;"ver=1.1.0" "app=HTG3" "gen=3" =;eth0;IPv4;ShellyWallDisplay-00A90BA735AC;_shelly._tcp;local;ShellyWallDisplay-00A90BA735AC.local;192.168.2.7;80;"discoverable=false" "ver=2.3.0" "gen=2" "app=WallDisplay"

Автоматическое обнаружение с помощью Python

[править]

Для полностью автоматизированного подхода попробуйте наш пример скрипта на Python

который использует библиотеку zeroconf

и библиотеку rich

  1. Сканирует _shelly._tcp.local. в течение настраиваемого временного окна.
  1. Собирает имя хоста, IP-адреса, TXT-записи и т. д. каждого устройства.
  2. Сортирует их (необязательно) по поколению, версии прошивки, имени устройства и т. д.
  3. Выводит цветную таблицу со всеми обнаруженными устройствами Shelly.

Пример использования:

[править]

КОД

python find_shelly_mdns_devices.py --scan-time 15 --sort gen

  • --scan-time 15 запускает сканирование на 15 секунд.
  • --sort gen сортирует результаты по полю gen в TXT-записи.

Вы увидите вывод, подобный следующему:

КОД

Имя службы IP-адрес(а) сервера Порт Имя устройства Версия Gen Другие свойства


--------------------------- ----------------- ---- ----------- -------- --- -----------------

shelly2pmg4-7c2c67640b38 Shelly2PMG4-7C2C67640B38.local. 192.168.1.15 80 S2PMG4 1.5.99 4 N/A ... Всего обнаружено устройств: 1

Устранение неполадок и советы

[править]

 

  1. Проверка многоадресного трафика
  • Некоторые маршрутизаторы или брандмауэры блокируют UDP-порт 5353 (используемый mDNS). Убедитесь, что ваш брандмауэр и сетевые настройки разрешают многоадресный трафик.
  1. Один сетевой сегмент
  • Убедитесь, что резолвер (ваш компьютер или скрипт) и устройства Shelly находятся в одной подсети уровня 2. Многоадресные пакеты обычно не проходят через VPN или сетевые сегменты, если это специально не настроено.
  1. Проверка с помощью других инструментов
  • Если скрипт Python не может найти устройства или вы хотите протестировать их с помощью других инструментов, попробуйте dns-sd (macOS) или avahi-browse (Linux), чтобы убедиться, что устройства Shelly действительно объявляют о себе через mDNS.
  1. Дайте время
  • Устройствам Shelly может потребоваться несколько секунд для ответа. Если вы подозреваете, что чего-то не хватает, сканируйте дольше (например, 15–30 секунд).

Мы ценим ваши отзывы!

[править]

Спасибо, что уделили время прочтению нашей статьи! Была ли она полезной или интересной? Ваши замечания помогут нам улучшить нашу работу. Мы будем благодарны за любые отзывы. Если у вас есть минутка, пожалуйста, поделитесь ею с нами по следующему адресу электронной почты: Integration@shelly.com