Padroneggiare i dispositivi Shelly IoT: Una guida completa allo script Shelly RPC BLE Client
.png?inst-v=8eb5b645-f616-454e-a1eb-47030b06b1ec)
Introduzione
In questa guida approfondita utilizzeremo lo script Shelly RPC BLE Client per interagire con i dispositivi Shelly IoT tramite Bluetooth Low Energy (BLE). I dispositivi Shelly sono rinomati per la loro versatilità e facilità di integrazione negli ecosistemi di smart home. Questa guida ha l'obiettivo di educare gli utenti su come sfruttare uno script Python per scansionare i dispositivi Shelly, eseguire Remote Procedure Calls (RPC) e gestire le configurazioni dei dispositivi in modo fluido. Questo script è facile da usare con opzioni per la selezione del dispositivo e comandi predefiniti oltre alla possibilità di eseguire comandi RPC personalizzati. Nel caso desideriate uno script più snello che esegua solo il comando RPC personalizzato, fate riferimento a questa versione dello script.
Prerequisiti
Prima di immergervi nello script, assicuratevi di avere quanto segue:
Macchina Linux che utilizza Ubuntu o un'altra distribuzione Linux.
Python 3.8 o superiore installato sul vostro sistema.
Supporto Bluetooth Low Energy (BLE) sulla vostra macchina.
Pacchetti Python: Installate i pacchetti richiesti usando il comando:
pip install -r requirements.txt Il file requirements.txt dovrebbe includere:
asyncio
bleak
colorama
prettytable
yaspin
utility jq installata per la formattazione JSON (opzionale ma consigliata).
Comprendere lo Script
Lo script Shelly RPC BLE Client è un programma Python progettato per:
Scansionare i dispositivi Shelly IoT nelle vicinanze usando BLE.
Elencare i dispositivi scoperti con indicatori di intensità del segnale.
Connettersi a un dispositivo selezionato.
Eseguire metodi RPC sul dispositivo per recuperare informazioni o modificare impostazioni.
Gestire errori in modo elegante e fornire log informativi.
Caratteristiche principali
CLI interattiva: Interfaccia a riga di comando user-friendly con output a colori.
Logging: Log dettagliati sono mantenuti in shelly_rpc.log per la risoluzione dei problemi.
Personalizzazione: Possibilità di inserire metodi e parametri RPC personalizzati.
Meccanismo di retry: Implementa ritentativi e backoff esponenziale per una comunicazione affidabile.
Installazione e configurazione
Installare
Clonare il repository
git clone https://github.com/ALLTERCO/Utilities.git cd shelly-ble-rpc Installare le dipendenze
Assicuratevi di avere pip installato, quindi eseguite:
pip install -r requirements.txt Installare jq (opzionale)
jq è usato per la stampa formattata delle risposte JSON.
Su Ubuntu/Debian:
sudo apt-get install jq Su macOS (usando Homebrew):
brew install jq Esecuzione dello script
Eseguite lo script usando:
python3 shelly-ble-rpc.py Argomenti da linea di comando
--scan-duration: Durata (in secondi) per la scansione dei dispositivi BLE. Il valore predefinito è 5 secondi.
--log-level: Imposta il livello di logging (DEBUG, INFO, WARNING, ERROR, CRITICAL).
python3 shelly-ble-rpc.py --scan-duration 10 --log-level DEBUG Navigare nell'interfaccia utente
All'avvio dello script, sarete guidati attraverso diversi passaggi:
Scansione dei dispositivi
Lo script scansiona i dispositivi Shelly nelle vicinanze.
I dispositivi scoperti sono elencati con il loro Nome, Indirizzo, e RSSI (intensità del segnale).
Selezione di un dispositivo
Inserite il numero corrispondente al dispositivo con cui desiderate interagire.
-
Opzioni:
Inserite un numero di dispositivo per selezionarlo.
Inserite r per rieseguire la scansione dei dispositivi.
Inserite q per uscire dallo script.

Scegliere un dispositivo e un comando
Selezione del comando
Dopo aver selezionato un dispositivo, viene mostrata una lista di comandi disponibili.
-
I comandi includono:
Shelly.ListMethods
Shelly.GetDeviceInfo
Shelly.GetStatus
Shelly.GetConfig
WiFi.SetConfig
WiFi.GetStatus
Eth.GetConfig
Eth.SetConfig
Switch.Toggle
Comando personalizzato
-
Opzioni:
Inserite un numero di comando per eseguirlo.
Inserite r per tornare alla selezione del dispositivo.
Inserite q per uscire dallo script.

Ottenere una risposta
Esecuzione dei comandi
Shelly.GetDeviceInfo
Recupera informazioni dettagliate sul dispositivo.
Uso: Selezionate il comando; non sono necessari parametri aggiuntivi.
Shelly.GetStatus
Recupera lo stato attuale del dispositivo.
Uso: Selezionate il comando; non sono necessari parametri aggiuntivi.
WiFi.SetConfig
Configura le impostazioni Wi-Fi del dispositivo.
-
Parametri:
SSID: Il nome della rete Wi-Fi.
Password: La password della rete.
IP statico: Opzionalmente impostare un indirizzo IP statico, netmask, gateway e nameserver.
Esempio:
Inserisci SSID: MyWiFiNetwork Inserisci Password: mypassword Vuoi impostare un indirizzo IP statico? (y/n): y Inserisci indirizzo IP statico: 192.168.1.50 Inserisci Netmask: 255.255.255.0 Inserisci Gateway: 192.168.1.1 Inserisci Nameserver: 8.8.8.8 Switch.Toggle
Attiva o disattiva lo stato di un interruttore (es. accendere/spegnere una luce).
-
Parametri:
ID: L'ID dell'interruttore (default è 0). Se avete un dispositivo con più canali/ID potete selezionarlo.
Comando personalizzato
Permette di eseguire qualsiasi metodo RPC supportato dal dispositivo.
-
Uso:
Inserite il nome del metodo RPC.
Fornite i parametri come stringa JSON.
Esempio:
Inserisci il nome del metodo RPC: Light.SetConfig Inserisci i parametri come stringa JSON (o lascia vuoto se nessuno): {"id":0,"config":{"brightness":50}} Uso avanzato
Livelli di logging
DEBUG: Informazioni dettagliate, generalmente utili solo per diagnosticare problemi.
INFO: Conferma che tutto funziona come previsto.
WARNING: Indicazione che è successo qualcosa di inaspettato.
ERROR: A causa di un problema più serio, il software non è riuscito a eseguire una funzione.
Impostare il livello di log:
python3 shelly-ble-rpc.py --log-level DEBUG Gestione timeout e retry
Lo script ritenta automaticamente le chiamate RPC fallite con backoff esponenziale.
Personalizzazione:
Modificate il parametro retries nel metodo call_rpc se necessario.
Modifica dello script
Lo script è modulare, con una chiara separazione delle responsabilità.
Sentitevi liberi di estendere le funzionalità, ad esempio aggiungendo nuovi comandi o migliorando la gestione degli errori.
Risoluzione dei problemi
Problemi comuni
Nessun dispositivo trovato:
Assicuratevi che il dispositivo Shelly sia acceso e nel raggio d'azione.
Verificate che il vostro adattatore BLE funzioni correttamente.
Connessione al dispositivo fallita:
Il dispositivo potrebbe essere connesso a un altro client.
Riprova a connetterti dopo qualche istante.
Metodo RPC non disponibile:
Il metodo potrebbe non essere supportato dal firmware del dispositivo.
Usate Shelly.ListMethods per controllare i metodi disponibili.
Argomenti non validi:
Controllate i parametri forniti per il metodo RPC.
Assicuratevi che le stringhe JSON siano formattate correttamente.
Log
Controllate shelly_rpc.log per messaggi di errore dettagliati.
I log includono timestamp e dettagli degli errori per facilitare il debug.
Apprezziamo il vostro feedback!
Grazie per aver dedicato del tempo a leggere il nostro articolo! È stato utile o interessante?
Le vostre opinioni possono aiutarci a migliorare. Saremmo grati per qualsiasi feedback. Se avete un momento,
vi preghiamo di condividerlo con noi al seguente indirizzo email: