Sommario:

TextPlayBulb: REST abilitato PlayBulb utilizzando Raspberry Pi 3, BLE e Telegram: 3 passaggi
TextPlayBulb: REST abilitato PlayBulb utilizzando Raspberry Pi 3, BLE e Telegram: 3 passaggi

Video: TextPlayBulb: REST abilitato PlayBulb utilizzando Raspberry Pi 3, BLE e Telegram: 3 passaggi

Video: TextPlayBulb: REST abilitato PlayBulb utilizzando Raspberry Pi 3, BLE e Telegram: 3 passaggi
Video: Угрюм-река (1969) (1 серия) фильм 2024, Novembre
Anonim
TextPlayBulb: REST abilitato PlayBulb utilizzando Raspberry Pi 3, BLE e Telegram
TextPlayBulb: REST abilitato PlayBulb utilizzando Raspberry Pi 3, BLE e Telegram

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:

  1. pyBulbDriver: connettersi a PlayBulb tramite BLE gatttool e python.
  2. pyBulbServer: utilizzo di pyBulbDriver per esporre il controllo playbulb tramite l'API REST.
  3. 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: