.png?inst-v=8eb5b645-f616-454e-a1eb-47030b06b1ec)
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:
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
Sklonuj repozytorium
git clone https://github.com/ALLTERCO/Utilities.git cd shelly-ble-rpc Zainstaluj zależności
Upewnij się, że masz zainstalowany pip, następnie uruchom:
pip install -r requirements.txt Zainstaluj jq (opcjonalnie)
jq służy do ładnego wyświetlania odpowiedzi JSON.
Na Ubuntu/Debian:
sudo apt-get install jq Na macOS (przez Homebrew):
brew install jq Uruchamianie skryptu
Uruchom skrypt za pomocą:
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).
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:
Skanowanie urządzeń
Skrypt skanuje pobliskie urządzenia Shelly.
Odkryte urządzenia są wypisane z ich Nazwą, Adresem i RSSI (siła sygnału).
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.

Wybierz urządzenie i polecenie
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.

Oczekiwanie na odpowiedź
Wykonywanie poleceń
Shelly.GetDeviceInfo
Pobiera szczegółowe informacje o urządzeniu.
Użycie: Wybierz polecenie; nie są wymagane dodatkowe parametry.
Shelly.GetStatus
Pobiera aktualny status urządzenia.
Użycie: Wybierz polecenie; nie są wymagane dodatkowe parametry.
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:
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 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ć.
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:
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:
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
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.
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.
Metoda RPC niedostępna:
Metoda może nie być obsługiwana przez firmware urządzenia.
Użyj Shelly.ListMethods, aby sprawdzić dostępne metody.
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: