Освоение устройств Shelly IoT: подробное руководство по скрипту клиента Shelly RPC BLE.
Введение
[править]В этом подробном руководстве мы будем использовать скрипт 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.
- Механизм повторных попыток: Реализует повторные попытки и экспоненциальную задержку для надежной связи.
Установка и настройка
[править]Установка
[править]- Клонируйте репозиторий
BASH
git clone https://github.com/ALLTERCO/Utilities.git cd shelly-ble-rpc
- Установите зависимости
Убедитесь, что у вас установлен pip, затем выполните:
BASH
pip install -r requirements.txt
- Установите 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
Навигация по пользовательскому интерфейсу
[править]После запуска скрипта вы пройдете несколько шагов:
- Сканирование устройств
- Скрипт сканирует ближайшие устройства Shelly.
- Обнаруженные устройства отображаются с их Именем, Адресом и RSSI (уровнем сигнала).
- Выбор устройства
- Введите номер устройства, с которым вы хотите взаимодействовать.
- Параметры: Введите номер устройства, чтобы выбрать его. Введите r для повторного сканирования устройств. Введите q для выхода из скрипта.
- Выбор команды
- После выбора устройства отобразится список доступных команд.
- Команды включают: Shelly.ListMethods Shelly.GetDeviceInfo Shelly.GetStatus Shelly.GetConfig WiFi.SetConfig WiFi.GetStatus Eth.GetConfig Eth.SetConfig Switch.Toggle Пользовательская команда
- Параметры: Введите номер команды для ее выполнения. Введите r для возврата к выбору устройства. Введите q для выхода из скрипта.
Выполнение команд
[править]- Shelly.GetDeviceInfo
- Получает подробную информацию об устройстве.
- Usage : Выберите команду; дополнительные параметры не требуются.
- Shelly.GetStatus
- Получает текущий статус устройства.
- Usage : Выберите команду; дополнительные параметры не требуются.
- 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
- Switch.Toggle
- Переключает состояние переключателя (например, включает/выключает свет).
- Параметры : ID : Идентификатор переключателя (по умолчанию 0). Если у вас есть устройство с несколькими каналами/идентификаторами, вы можете выбрать его.
- Пользовательская команда
- Разрешает выполнение любого метода 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
- Скрипт имеет модульную структуру с четким разделением задач.
- Вы можете расширять функциональность, например, добавлять новые команды или улучшать обработку ошибок.
Устранение неполадок
[править]Распространенные проблемы
[править]- Устройства не найдены :
- Убедитесь, что ваше устройство Shelly включено и находится в зоне действия.
- Проверьте, правильно ли работает ваш BLE-адаптер.
- Не удалось подключиться к устройству :
- Возможно, устройство подключено к другому клиенту.
- Попробуйте подключиться через несколько минут.
- Метод RPC недоступен :
- Возможно, этот метод не поддерживается прошивкой устройства.
- Используйте Shelly.ListMethods для проверки доступных методов.
- Неверные аргументы :
- Дважды проверьте параметры, предоставленные для метода RPC.
- Убедитесь, что строки JSON правильно отформатированы.
Журналы
[править]- Проверьте файл shelly_rpc.log для получения подробных сообщений об ошибках.
- Журналы содержат метки времени и подробную информацию об ошибках для упрощения отладки.
Мы ценим ваши отзывы!
[править]Спасибо, что уделили время прочтению нашей статьи! Была ли она полезной или интересной? Ваши замечания помогут нам улучшить нашу работу. Мы будем благодарны за любые отзывы. Если у вас есть минутка, пожалуйста, поделитесь ими с нами по следующему адресу электронной почты: Integration@shelly.com


