Kbsa Mastering Shelly Dispositivi Iot Una Guida Completa

Padroneggiare i dispositivi Shelly IoT: Una guida completa allo script Shelly RPC BLE Client

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

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:

BASH
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

  1. Clonare il repository

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

  1. Installare le dipendenze

Assicuratevi di avere pip installato, quindi eseguite:

BASH
pip install -r requirements.txt

  1. Installare jq (opzionale)

jq è usato per la stampa formattata delle risposte JSON.

  • Su Ubuntu/Debian:

CODE
sudo apt-get install jq

  • Su macOS (usando Homebrew):

BASH
brew install jq

Esecuzione dello script

Eseguite lo script usando:

BASH
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).

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

Navigare nell'interfaccia utente

All'avvio dello script, sarete guidati attraverso diversi passaggi:

  1. 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).

  1. 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.

image-20241118-135856.png

Scegliere un dispositivo e un comando

  1. 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.

image-20241118-140049.png

Ottenere una risposta

Esecuzione dei comandi

  1. Shelly.GetDeviceInfo

  • Recupera informazioni dettagliate sul dispositivo.

  • Uso: Selezionate il comando; non sono necessari parametri aggiuntivi.

  1. Shelly.GetStatus

  • Recupera lo stato attuale del dispositivo.

  • Uso: Selezionate il comando; non sono necessari parametri aggiuntivi.

  1. 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:

BASH
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

  1. 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.

  1. 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:

BASH
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:

BASH
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

  1. Nessun dispositivo trovato:

  • Assicuratevi che il dispositivo Shelly sia acceso e nel raggio d'azione.

  • Verificate che il vostro adattatore BLE funzioni correttamente.

  1. Connessione al dispositivo fallita:

  • Il dispositivo potrebbe essere connesso a un altro client.

  • Riprova a connetterti dopo qualche istante.

  1. Metodo RPC non disponibile:

  • Il metodo potrebbe non essere supportato dal firmware del dispositivo.

  • Usate Shelly.ListMethods per controllare i metodi disponibili.

  1. 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:

Integration@shelly.com