Освоение устройств 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


