Sommario:
- Passaggio 1: impostazione del progetto
- Passaggio 2: camminare attraverso il codice
- Passaggio 3: conclusione
Video: TextPlayBulb: REST abilitato PlayBulb utilizzando Raspberry Pi 3, BLE e Telegram: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Questa istruzione mostra come connettersi a una lampada LED bluetooth PlayBulb Color utilizzando Python, una libreria Raspberry Pi 3 e Bluetooth e come estendere i controlli tramite un'API REST per uno scenario IoT e, come bonus, il progetto mostra anche come estendere il API REST per controllare il tuo PlayBulb su un client di testo IM, ad es Telegram, come parlare con la tua casa automatizzata tramite SMS.
Questo progetto si basa su 3 moduli:
- pyBulbDriver: connettersi a PlayBulb tramite BLE gatttool e python.
- pyBulbServer: utilizzo di pyBulbDriver per esporre il controllo playbulb tramite l'API REST.
- pyBulbMessenger: connessione a un bot di telegram per inviare e ricevere comandi tramite client telegram installato su qualsiasi smartphone e utilizzo dell'API REST per inviare comandi a PlayBulb.
Puoi clonare il progetto tramite repository git:
Obiettivo del progetto:
Per creare uno strumento di base per interagire con la tua lampadina tramite diverse modalità come gli SMS per ora, gli scenari futuri potrebbero comportare comandi vocali, gesti verso la lampada … ecc.
Altre risorse utilizzate per creare questo istruibile:
- Protocollo Bluetooth PlayBulb Color:
- Collegamento di Python a Playbulb tramite Bluetooth:
- Configurazione del bot di Telegram:
Contributo
pyBulbDriver è stato esteso per essere più flessibile e parametrizzato per facilitare l'estensione futura, costruendo uno scenario che ti permetta di armeggiare con l'invio di SMS alla tua lampada. Interfaccia semplice per testare e giocherellare.
Limitazione
Il driver è scritto per PlayBulb Colour, per altri tipi di PlayBulb, ad es. Originale o candela, il codice bluetooth in pyBulbDriver deve essere modificato secondo il suddetto protocollo.
Devi registrare un account Telegram e ottenere una chiave API, che aggiungi in pyBulbMessenger.py, segui la configurazione del bot di Telegram in Altre risorse.
Passaggio 1: impostazione del progetto
1. Ottenere la tua chiave API da Telegram
> Segui le istruzioni correnti per ottenere la tua chiave API
> Aggiungi la tua chiave API all'API variabile in pyBulbMessenger.py
2. Impostazione del nome di PlayBulb in pyBulbDriver
> Affinché il gatttool trovi il dispositivo di scrittura, impostare il nome del dispositivo da scansionare utilizzando pyBulbDriver.scanForBulb("PLAYBULB COLOUR"). L'esempio può essere trovato in pyBulbServer.py per configurare il tuo server REST
3. Per avviare il progetto
> È necessario avviare prima pyBulbServer.py, quindi seguito da pyBulbMessenger.py per l'invio di messaggi di testo. Puoi testare i comandi pyBulbServer usando CURL.
4. Materiale necessario:
> Raspberry Pi 3 e PlayBulb Color o PlayBulb Candle
> Installazione di Telegram per Android o iOS
5. Installazione di Rasberry Pi 3 LE Bluetooth:
www.elinux.org/RPi_Bluetooth_LE
Passaggio 2: camminare attraverso il codice
pyBulbDriver.py
pyBulbDriver contiene le classi di driver per la connessione a PlayBulb tramite BLE
pyBulbDriver può essere utilizzato anche per altri progetti generici, in quanto contiene solo il codice per scansionare e configurare le connessioni playBulb.
Le principali API per l'interfaccia dell'applicazione utente:
- scanForBulb(devicename:String) > Per cercare PlayBulb o PlayBulbs tramite il nome del dispositivo
- setBulbColor(s:int, r:int, g:int, b:int) > Per definire i valori di luminosità e colore RGB (da 0 a 255)
-
setBulbEffect(s:int, r:int, g:int, b:int, mode:int, onbeat:int, offbeat:int) > Simile a setBulbColor, ma include il tipo di effetto e la velocità. Per saperne di più controlla la sezione Effetti del protocollo colore
In questa classe troverai anche altri metodi di supporto pensati per il controllo dell'integrità dei dati e non per l'interfaccia utente
- convertRGBToHexaCmd(s, r, g, b)
- convertIntToHex(numero)
- checkModeAndSpeed (modalità, insolito, onbeat)
- checkRGBInBounds(s, r, g, b)
pyBulbServer.py
pyBulbServer espone l'interfaccia dell'applicazione utente in collegamenti ipertestuali RESTful utilizzando PUT e JSON per inviare e ricevere dati a pyBulbDriver. Anche la scansione e l'inizializzazione della connessione BLE vengono eseguite all'attivazione del server.
pyBulbResource(Resource) canalizza le chiamate al server REST utilizzando il colore e l'effetto per definire il comando bulb.
Esempio Per comandare un effetto:
127.0.0.1/lampadina/effetto
JSON POST > {data':'{"s":0, "r":255, "g":255, "b":255, "m": 1, "on":15, "off":15 }'}
pyBulbMessenger.py
Infine pyBulbMessenger si occupa di interfacciare il bot di Telegram connesso al tuo client di smart phone di Telegram. Per maggiori dettagli su come configurare e connettersi a un bot di Telegram, controlla
cmdHandler(bot, update) è dove i comandi di testo sono definiti e connessi a PlayBulb tramite l'API RESTful.
Attualmente il progetto ha solo testo, un altro obiettivo è inviare anche messaggi vocali registrati che verrebbero inviati a un riconoscitore vocale per attivare altri comandi (non ancora implementato).
Passaggio 3: conclusione
L'attuale progettazione dell'architettura riguardava più la semplificazione che la scalabilità. Manca ancora la connettività di gruppo, inoltre sono ancora in fase di ricerca ulteriori applicazioni riguardanti l'invio di SMS alla lampadina sia per comandi diretti che per interazioni ludiche.
Iscrivendosi a git repo o seguendo, verranno forniti maggiori dettagli su questi aggiornamenti. Il motivo di tale progetto era interfacciare la playBulb e creare un'interfaccia RESTful per facilitare lo sviluppo in uno scenario IoT (internet of things) ma anche per aprire la possibilità di utilizzare diverse modalità tramite il telegramma IM Client come immagini, voce e testo per interagire con gli elettrodomestici da una prospettiva di ricerca.
Consigliato:
Indicatore di bicicletta minimalista, abilitato al tocco!: 10 passaggi (con immagini)
Indicatore di bicicletta minimalista, abilitato al tocco!: Ciao! Questo è il mio primo Instructable. Ho sempre voluto fare le cose da zero solo per vedere come funziona e a chi non piacciono le cose fai-da-te (fai da te) quando puoi modificare qualcosa in base alle tue esigenze, giusto? Interessante come un fai-da-te m
OpenLogger: un registratore di dati portatile ad alta risoluzione, abilitato per il Wi-Fi, open source: 7 passaggi
OpenLogger: un data logger portatile ad alta risoluzione, abilitato Wi-Fi, open source: OpenLogger è un data logger portatile, open source, a basso costo e ad alta risoluzione progettato per fornire misurazioni di alta qualità senza richiedere software costosi o scrivere software da zero. Se sei un ingegnere, uno scienziato o un appassionato che ne
IoT APIS V2 - Sistema di irrigazione automatizzato autonomo abilitato per IoT: 17 passaggi (con immagini)
IoT APIS V2 - Sistema di irrigazione automatizzato autonomo abilitato per IoT: questo progetto è un'evoluzione del mio precedente istruito: APIS - Sistema di irrigazione automatizzato per piante Uso APIS da quasi un anno e volevo migliorare il design precedente: capacità di monitorare l'impianto da remoto. Questo è come
VU Meter analogico abilitato Bluetooth: 6 passaggi
VU Meter analogico abilitato Bluetooth: questo era il mio progetto per una delle mie classi universitarie chiamata SMP. Poiché utilizzavamo la scheda di sviluppo STM32F103RB, ho basato il mio progetto su questa, partendo da un semplice VU meter. Ho quindi aggiunto alcune funzionalità extra come il supporto Bluetooth per trasmettere va
Monitoraggio dell'accelerazione utilizzando Raspberry Pi e AIS328DQTR utilizzando Python: 6 passaggi
Monitoraggio dell'accelerazione utilizzando Raspberry Pi e AIS328DQTR Utilizzando Python: l'accelerazione è finita, penso che secondo alcune leggi della fisica.- Terry Riley Un ghepardo utilizza un'accelerazione straordinaria e rapidi cambiamenti di velocità durante la caccia. La creatura più veloce a terra di tanto in tanto utilizza il suo ritmo più alto per catturare la preda. Il