Kbsa — Opanowanie Urządzeń Shelly IoT: Kompleksowy Przewodnik

Mastering Shelly IoT Devices: A Comprehensive Guide to the Shelly RPC BLE Client Script

Mastering Shelly IoT Devices A Comprehensive Guide to the Shelly RPC BLE Client Script (2).png

Wprowadzenie

W tym szczegółowym przewodniku będziemy używać skryptu Shelly RPC BLE Client do komunikacji z urządzeniami Shelly IoT przez Bluetooth Low Energy (BLE). Urządzenia Shelly są znane z uniwersalności i prostoty integracji z ekosystemami inteligentnego domu. Celem tego przewodnika jest pokazanie, jak wykorzystać skrypt Pythona do skanowania urządzeń Shelly, wykonywania zdalnych wywołań procedur (RPC) oraz zarządzania konfiguracjami urządzeń w sposób bezproblemowy. Skrypt jest przyjazny dla użytkownika, oferuje opcje wyboru urządzenia i predefiniowane polecenia oraz uruchamianie niestandardowych poleceń RPC. Jeśli potrzebujesz bardziej uproszczonego skryptu, który tylko uruchamia niestandardowe polecenie RPC, odwołaj się proszę do tej wersji skryptu.

Wymagania wstępne

Zanim przejdziesz do skryptu, upewnij się, że masz następujące elementy:

  • Maszyna z Linuxem z Ubuntu lub inną dystrybucją Linuxa.

  • Python 3.8 lub nowszy zainstalowany na Twoim systemie.

  • Bluetooth Low Energy (BLE) obsługa na Twojej maszynie.

  • Pakiety Pythona: Zainstaluj wymagane pakiety przy użyciu polecenia:

BASH
pip install -r requirements.txt

Plik requirements.txt powinien zawierać:

  • asyncio

  • bleak

  • colorama

  • prettytable

  • yaspin

  • Narzędzie jq zainstalowane do formatowania JSON (opcjonalne, ale zalecane).

Zrozumienie skryptu

Skrypt Shelly RPC BLE Client to program w Pythonie zaprojektowany, aby:

  • Skanować w poszukiwaniu pobliskich urządzeń Shelly za pomocą BLE.

  • Wyświetlać odkryte urządzenia z wskaźnikami siły sygnału.

  • Łączyć się z wybranym urządzeniem.

  • Wykonywać metody RPC na urządzeniu, aby pobrać informacje lub zmienić ustawienia.

  • Obsługiwać błędy w sposób elegancki i dostarczać informacyjne logi.

Kluczowe funkcje

  • Interaktywny CLI: Przyjazny interfejs wiersza poleceń z kolorowanymi wynikami.

  • Logowanie: Szczegółowe logi są zapisywane w pliku shelly_rpc.log w celu rozwiązywania problemów.

  • Dostosowywanie: Możliwość wprowadzania niestandardowych metod i parametrów RPC.

  • Mechanizm ponowień: Implementuje ponowienia i wykładniczy backoff dla niezawodnej komunikacji.

Instalacja i konfiguracja

Instalacja

  1. Sklonuj repozytorium

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

  1. Zainstaluj zależności

Upewnij się, że masz zainstalowany pip, następnie uruchom:

BASH
pip install -r requirements.txt

  1. Zainstaluj jq (opcjonalnie)

jq służy do ładnego wyświetlania odpowiedzi JSON.

  • Na Ubuntu/Debian:

CODE
sudo apt-get install jq

  • Na macOS (przez Homebrew):

BASH
brew install jq

Uruchamianie skryptu

Uruchom skrypt za pomocą:

BASH
python3 shelly-ble-rpc.py

Argumenty wiersza poleceń

  • --scan-duration: Czas (w sekundach) skanowania urządzeń BLE. Domyślnie 5 sekund.

  • --log-level: Ustaw poziom logowania (DEBUG, INFO, WARNING, ERROR, CRITICAL).

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

Nawigacja po interfejsie użytkownika

Po uruchomieniu skryptu zostaniesz poprowadzony przez kilka kroków:

  1. Skanowanie urządzeń

  • Skrypt skanuje pobliskie urządzenia Shelly.

  • Odkryte urządzenia są wypisane z ich Nazwą, Adresem i RSSI (siła sygnału).

  1. Wybór urządzenia

  • Wprowadź numer odpowiadający urządzeniu, z którym chcesz się komunikować.

  • Opcje:

    • Wprowadź numer urządzenia, aby je wybrać.

    • Wpisz r aby ponownie przeskanować urządzenia.

    • Wpisz q aby wyjść ze skryptu.

image-20241118-135856.png

Wybierz urządzenie i polecenie

  1. Wybór polecenia

  • Po wybraniu urządzenia wyświetlana jest lista dostępnych poleceń.

  • Polecenia obejmują:

    • Shelly.ListMethods

    • Shelly.GetDeviceInfo

    • Shelly.GetStatus

    • Shelly.GetConfig

    • WiFi.SetConfig

    • WiFi.GetStatus

    • Eth.GetConfig

    • Eth.SetConfig

    • Switch.Toggle

    • Niestandardowe polecenie

  • Opcje:

    • Wprowadź numer polecenia, aby je wykonać.

    • Wpisz r aby wrócić do wyboru urządzenia.

    • Wpisz q aby zakończyć skrypt.

image-20241118-140049.png

Oczekiwanie na odpowiedź

Wykonywanie poleceń

  1. Shelly.GetDeviceInfo

  • Pobiera szczegółowe informacje o urządzeniu.

  • Użycie: Wybierz polecenie; nie są wymagane dodatkowe parametry.

  1. Shelly.GetStatus

  • Pobiera aktualny status urządzenia.

  • Użycie: Wybierz polecenie; nie są wymagane dodatkowe parametry.

  1. WiFi.SetConfig

  • Konfiguruje ustawienia Wi‑Fi urządzenia.

  • Parametry:

    • SSID: Nazwa sieci Wi‑Fi.

    • Hasło: Hasło do sieci.

    • Statyczny IP: Opcjonalnie ustaw adres IP statyczny, maskę sieci, bramę i serwer nazw.

Przykład:

BASH
Wpisz SSID: MyWiFiNetwork Wpisz Password: mypassword Czy chcesz ustawić statyczny adres IP? (y/n): y Wpisz Static IP Address: 192.168.1.50 Wpisz Netmask: 255.255.255.0 Wpisz Gateway: 192.168.1.1 Wpisz Nameserver: 8.8.8.8

  1. Switch.Toggle

  • Przełącza stan przełącznika (np. włączenie/wyłączenie światła).

  • Parametry:

    • ID: Identyfikator przełącznika (domyślnie 0). Jeśli urządzenie ma więcej kanałów/ID, możesz go wybrać.

  1. Niestandardowe polecenie

  • Umożliwia wykonanie dowolnej metody RPC obsługiwanej przez urządzenie.

  • Użycie:

    • Wpisz nazwę metody RPC.

    • Podaj parametry jako ciąg JSON.

Przykład:

BASH
Wpisz nazwę metody RPC: Light.SetConfig Wpisz parametry jako ciąg JSON (lub zostaw puste): {"id":0,"config":{"brightness":50}}

Zaawansowane użycie

Poziomy logów

  • DEBUG: Szczegółowe informacje, zwykle przydatne tylko przy diagnozowaniu problemów.

  • INFO: Potwierdzenie, że wszystko działa zgodnie z oczekiwaniami.

  • WARNING: Wskazuje, że wystąpiło coś nieoczekiwanego.

  • ERROR: Z powodu poważniejszego problemu oprogramowanie nie mogło wykonać pewnej funkcji.

Ustawianie poziomu logów:

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

Obsługa limitów czasowych i ponowień

  • Skrypt automatycznie ponawia nieudane wywołania RPC z wykładniczym backoffem.

  • Dostosowywanie:

  • Zmień parametr retries w metodzie call_rpc w razie potrzeby.

Modyfikowanie skryptu

  • Skrypt jest modułowy, z wyraźnym podziałem funkcji.

  • Możesz rozbudować funkcjonalność, np. dodając nowe polecenia lub ulepszając obsługę błędów.

Rozwiązywanie problemów

Częste problemy

  1. Brak znalezionych urządzeń:

  • Upewnij się, że urządzenie Shelly jest zasilane i znajduje się w zasięgu.

  • Sprawdź, czy Twój adapter BLE działa poprawnie.

  1. Nie udało się połączyć z urządzeniem:

  • Urządzenie może być połączone z innym klientem.

  • Spróbuj ponownie połączenia po kilku chwilach.

  1. Metoda RPC niedostępna:

  • Metoda może nie być obsługiwana przez firmware urządzenia.

  • Użyj Shelly.ListMethods, aby sprawdzić dostępne metody.

  1. Nieprawidłowe argumenty:

  • Sprawdź ponownie parametry przekazane do metody RPC.

  • Upewnij się, że ciągi JSON są poprawnie sformatowane.

Logi

  • Sprawdź shelly_rpc.log, aby zobaczyć szczegółowe komunikaty o błędach.

  • Logi zawierają znaczniki czasu i szczegóły błędów, co ułatwia debugowanie.

Cenimy Twoją opinię!

Dziękujemy za poświęcenie czasu na przeczytanie naszego artykułu! Czy był pomocny lub interesujący?

Twoje uwagi pomogą nam się poprawić. Będziemy wdzięczni za każdą opinię. Jeśli masz chwilę,

prosimy podziel się nią z nami pod następującym adresem e-mail:

Integration@shelly.com