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

Освоение устройств Shelly IoT: подробное руководство по скрипту клиента Shelly RPC BLE.

Материал из База знаний Shelly

Введение

[править]

В этом подробном руководстве мы будем использовать скрипт Shelly RPC BLE Client

для взаимодействия с устройствами Shelly IoT по протоколу Bluetooth Low Energy (BLE). Устройства Shelly известны своей универсальностью и простотой интеграции в экосистемы умного дома. Цель этого руководства — научить пользователей использовать скрипт на Python для сканирования устройств Shelly, выполнения удаленных вызовов процедур (RPC) и беспроблемного управления конфигурациями устройств. Этот скрипт удобен в использовании и предлагает опции для выбора устройства и предопределенных команд, а также для выполнения пользовательских команд RPC. Если вам нужен более простой скрипт, который просто выполняет пользовательскую команду RPC, обратитесь к версии скрипта по ссылке: this

Предварительные условия

[править]

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

  • Linux Machine с Ubuntu или другим дистрибутивом Linux.
  • Python 3.8 или выше установлен в вашей системе.
  • Поддержка Bluetooth Low Energy (BLE) на вашем компьютере.
  • Пакеты Python : Установите необходимые пакеты с помощью команды:

BASH

pip install -r requirements.txt

Файл requirements.txt должен содержать:

  • asyncio
  • bleak
  • colorama
  • prettytable
  • yaspin
  • утилиту jq для форматирования JSON (необязательно, но рекомендуется).

Понимание скрипта

[править]

Скрипт Shelly RPC BLE Client представляет собой программу на Python, предназначенную для:

  • Сканирования ближайших устройств Shelly IoT с использованием BLE.
  • Вывода списка обнаруженных устройств с индикаторами уровня сигнала.
  • Подключения к выбранному устройству.
  • Выполнения методов RPC на устройстве для получения информации или изменения настроек.
  • Обработка ошибок корректно и предоставление информативных логов.

Ключевые особенности

[править]
  • Интерактивный CLI: Удобный интерфейс командной строки с цветовой кодировкой вывода.
  • Логирование: Подробные логи хранятся в файле shelly_rpc.log для устранения неполадок.
  • Настройка: Возможность ввода пользовательских методов и параметров RPC.
  • Механизм повторных попыток: Реализует повторные попытки и экспоненциальную задержку для надежной связи.

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

[править]

Установка

[править]
  1. Клонируйте репозиторий

BASH

git clone https://github.com/ALLTERCO/Utilities.git cd shelly-ble-rpc

  1. Установите зависимости

Убедитесь, что у вас установлен pip, затем выполните:

BASH

pip install -r requirements.txt

  1. Установите jq (необязательно)

jq используется для форматированного вывода JSON-ответов.

  • В Ubuntu/Debian:

КОД

sudo apt-get install jq

  • В macOS (с использованием Homebrew):

BASH

brew install jq

Запуск скрипта

[править]

Выполните скрипт с помощью:

BASH

python3 shelly-ble-rpc.py

==== Аргументы командной строки ====\n

  • --scan-duration: Длительность (в секундах) сканирования BLE-устройств. По умолчанию 5 секунд.
  • --log-level: Установить уровень логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL).

BASH

python3 shelly-ble-rpc.py --scan-duration 10 --log-level DEBUG

Навигация по пользовательскому интерфейсу

[править]

После запуска скрипта вы пройдете несколько шагов:

  1. Сканирование устройств
  • Скрипт сканирует ближайшие устройства Shelly.
  • Обнаруженные устройства отображаются с их Именем, Адресом и RSSI (уровнем сигнала).
  1. Выбор устройства
  • Введите номер устройства, с которым вы хотите взаимодействовать.
  • Параметры: Введите номер устройства, чтобы выбрать его. Введите r для повторного сканирования устройств. Введите q для выхода из скрипта.

Выберите устройство и команду

  1. Выбор команды
  • После выбора устройства отобразится список доступных команд.
  • Команды включают: Shelly.ListMethods Shelly.GetDeviceInfo Shelly.GetStatus Shelly.GetConfig WiFi.SetConfig WiFi.GetStatus Eth.GetConfig Eth.SetConfig Switch.Toggle Пользовательская команда
  • Параметры: Введите номер команды для ее выполнения. Введите r для возврата к выбору устройства. Введите q для выхода из скрипта.

Получение ответа

Выполнение команд

[править]
  1. Shelly.GetDeviceInfo
  • Получает подробную информацию об устройстве.
  • Usage : Выберите команду; дополнительные параметры не требуются.
  1. Shelly.GetStatus
  • Получает текущий статус устройства.
  • Usage : Выберите команду; дополнительные параметры не требуются.
  1. WiFi.SetConfig
  • Настраивает параметры Wi-Fi устройства.
  • Parameters : SSID : Имя сети Wi-Fi. Password : Пароль сети. Статический IP : При желании можно задать статический IP-адрес, маску подсети, шлюз и сервер имен.

Пример:

BASH

Введите SSID: MyWiFiNetwork Введите пароль: mypassword Хотите установить статический IP-адрес? (y/n): y Введите статический IP-адрес: 192.168.1.50 Введите маску подсети: 255.255.255.0 Введите шлюз: 192.168.1.1 Введите сервер имен: 8.8.8.8

  1. Switch.Toggle
  • Переключает состояние переключателя (например, включает/выключает свет).
  • Параметры : ID : Идентификатор переключателя (по умолчанию 0). Если у вас есть устройство с несколькими каналами/идентификаторами, вы можете выбрать его.
  1. Пользовательская команда
  • Разрешает выполнение любого метода RPC, поддерживаемого устройством.
  • Использование: Введите имя метода RPC. Укажите параметры в виде строки JSON.

Пример:

BASH

Введите имя метода RPC: Light.SetConfig Введите параметры в виде строки JSON (или оставьте пустым, если никаких параметров не требуется): {"id":0,"config":{"brightness":50}}

Расширенное использование

[править]

==== Уровни логирования ====\n

  • DEBUG: Подробная информация, обычно представляющая интерес только при диагностике проблем.
  • INFO: Подтверждение того, что все работает как ожидалось.
  • WARNING: Указание на то, что произошло что-то неожиданное.
  • ОШИБКА : Из-за более серьезной проблемы программное обеспечение не смогло выполнить некоторые функции.

Установка уровня логирования

BASH

python3 shelly-ble-rpc.py --log-level DEBUG

==== Обработка тайм-аутов и повторных попыток ====\n

  • Скрипт автоматически повторяет неудачные вызовы RPC с экспоненциальной задержкой.
  • Настройка :
  • При необходимости измените параметр retries в методе call_rpc.

==== Изменение скрипта ====\n

  • Скрипт имеет модульную структуру с четким разделением задач.
  • Вы можете расширять функциональность, например, добавлять новые команды или улучшать обработку ошибок.

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

[править]

Распространенные проблемы

[править]
  1. Устройства не найдены :
  • Убедитесь, что ваше устройство Shelly включено и находится в зоне действия.
  • Проверьте, правильно ли работает ваш BLE-адаптер.
  1. Не удалось подключиться к устройству :
  • Возможно, устройство подключено к другому клиенту.
  • Попробуйте подключиться через несколько минут.
  1. Метод RPC недоступен :
  • Возможно, этот метод не поддерживается прошивкой устройства.
  • Используйте Shelly.ListMethods для проверки доступных методов.
  1. Неверные аргументы :
  • Дважды проверьте параметры, предоставленные для метода RPC.
  • Убедитесь, что строки JSON правильно отформатированы.

Журналы

[править]
  • Проверьте файл shelly_rpc.log для получения подробных сообщений об ошибках.
  • Журналы содержат метки времени и подробную информацию об ошибках для упрощения отладки.

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

[править]

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