Sommario:

SmartWand: 6 passaggi
SmartWand: 6 passaggi

Video: SmartWand: 6 passaggi

Video: SmartWand: 6 passaggi
Video: Распаковка Посылок с AliExpress /Алиэкспресс #7 / Обзор товаров с ALIEXPRESS🔥🔥🔥 2024, Novembre
Anonim
SmartWand
SmartWand

Questo progetto è ottenere uno script Python per controllare Smartthings con la bacchetta di codifica Kano come input.

Le mie figlie (8 e 12) sono grandi fan di Harry Potter e hanno ricevuto la bacchetta di codifica Kano per Natale. L'app di codifica Kano è fantastica e si stanno divertendo. Ottimo strumento per introdurre concetti di codifica.

Abbiamo anche un po' di domotica sparsa in tutta la casa con SmartThings, Phillips Hue, Logitech Harmony hub, ecc… Sono inevitabilmente arrivati al punto in cui volevano accendere le luci dell'albero di Natale con la bacchetta e hanno iniziato a lanciare termini come Lumos e Nox a me. Sembrava una sfida divertente, quindi l'ho accettata.

Ho dovuto utilizzare un sistema operativo Linux poiché un elemento critico (la libreria Python di Bluepy per la connessione alla bacchetta Bluetooth) è disponibile solo su piattaforme Linux. Comodo comunque dal punto di vista di volerlo eventualmente eseguire su un Raspberry Pi.

Ci sono due riferimenti principali qui, senza i quali non sarei mai stato in grado di farlo.

Grazie a GammaGames per aver creato e condiviso uno script Python per leggere la bacchetta di codifica di Kano.

github.com/GammaGames/kano-wand-demos/blob…

e

Grazie a rllynch per aver creato e condiviso uno script Python per un'interfaccia a riga di comando SmartThings.

github.com/rllynch/smartthings_cli

Per mantenerlo intatto, copierò la maggior parte dei passaggi su questo Instructable per acquisire tutte le modifiche necessarie per farlo funzionare sulla mia configurazione.

Ecco di cosa avrai bisogno:

  • Kit di codifica Kano di Harry Potter (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Un sistema operativo basato su Linux (ne ho installato uno funzionante con VirtualBox, quindi installato su un Raspberry Pi)
  • Un adattatore USB Bluetooth (ho usato un adattatore USB Bluetooth 4.0 Kensington)
  • Connessione Internet (Per l'RPi, ho usato un adattatore WiFi USB Edimax che avevo da un progetto precedente)

Passaggio 1: installa Linux su Raspberry Pi

Segui i collegamenti sottostanti per installare un sistema operativo Linux sul Raspberry Pi. Ho usato Raspbian Stretch con il desktop e il software consigliato e ho eseguito il flashing con Etcher.

www.raspberrypi.org/learning/software-guid…

Dopo aver completato l'installazione e avere un prompt dei comandi di Linux, è buona norma eseguire i seguenti due comandi per assicurarsi che tutto sia aggiornato.

sudo apt-get update

sudo apt-get upgrade

Digitare quanto segue nell'interfaccia della riga di comando per avviare l'interfaccia utente desktop.

sudo startx

La prossima cosa da configurare è una connessione Internet in modo da poter accedere a repository e simili per installare ulteriore software. Sarà inoltre necessaria una connessione Internet per accedere all'API SmartThings. Segui questa guida per connetterti. Abbastanza semplice dal desktop. Ho usato un adattatore wifi USB che avevo in giro.

www.raspberrypi.org/learning/software-guid…

In alternativa al Raspberry Pi, puoi utilizzare un altro computer esistente per eseguire il dual boot di un sistema operativo Linux insieme al tuo sistema operativo esistente (una specie di problema perché devi riavviare per passare da uno all'altro) o eseguire un'istanza del sistema operativo Linux su un VirtualBox. Per far funzionare inizialmente questo progetto, ho installato Debian Stretch con Raspberry Pi Desktop in una Virtual Box usando questa guida:

thepi.io/how-to-run-raspberry-pi-desktop-o…

(nota: ho avuto un sacco di tempo per installare i Guest Addons correttamente secondo le istruzioni sopra. Non ho mai fatto funzionare il taglia e incolla tra host e client, il che sarebbe stato bello, ma sono riuscito ad aggiornare la risoluzione per utilizzare la mia dimensione completa del monitor. Questa era una serie di buchi di Google Rabit che non documenterò qui.)

Passaggio 2: installa Python 3

Python3 dovrebbe essere già installato con Raspian Stretch.

Passaggio 3: configurazione del modulo bacchetta

Segui questa guida creata da GammaGames

Ho dovuto prima passare a una directory diversa prima di clonare il repository kano_wand, altrimenti il mio script python non è riuscito a trovarlo. Probabilmente avrei potuto aggiornare alcuni riferimenti di percorso in qualche file da qualche parte, ma non ho approfondito.

cd /usr/local/lib/python3.5/dist-packages

git clone

sudo pip3 install bluepy moosegesture

Ho dovuto usare sudo per ottenere le autorizzazioni appropriate. Inoltre, ho dovuto utilizzare i seguenti comandi per installare numpy, per qualsiasi motivo, non è stato possibile far funzionare pip. Potrebbe essere stato un altro problema di percorso, ma questo ha funzionato per me, quindi sono andato con esso:

sudo apt-get install python3-numpy

Infine, per ottenere i permessi appropriati per eseguire bluepy dallo script python ho trovato questo comando.

sudo setcap 'cap_net_raw, cap_net_admin+eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper

Questo è tutto ciò che serve per far funzionare il nostro script. Il resto della guida GammaGames illustra passo passo i pezzi richiesti nello script Python. È una grande suddivisione per comprendere ulteriormente come è strutturato lo script e cosa sta facendo ogni oggetto. Un grande ringraziamento a GammaGames per aver fornito questa documentazione. Potrebbe anche essere utile per la risoluzione dei problemi di una sezione dello script. Ad esempio, il primo oggetto mostrato svolge il compito di scansionare le bacchette e restituire un elenco di bacchette scoperte. Buona verifica che la tua configurazione bluetooth stia funzionando su tutti i cilindri. Per fare ciò, puoi copiare il codice da test1_BLE_wand_detect.py trovato nel seguente repository:

github.com/maspieljr/SmartWand

Passaggio 4: imposta SmartThings CLI

Di seguito è riportata una copia delle istruzioni incluse nel repository smartthings_cli su github (https://github.com/rllynch/smartthings_cli).

Ho incluso qui le piccole modifiche che ho dovuto apportare alla mia configurazione per far funzionare tutto. Grazie ancora a rllynch per aver fornito questo.

1) Accedi e in My SmartApps, crea una nuova SmartApp con il codice in groovy/app.groovy.

*Nota nel primo passaggio c'è un riferimento a un sito Web SmartThings. Presta molta attenzione a dove si trova il tuo account smartthings. Questo mi ha fatto inciampare per un po' poiché l'altro sito mi ha permesso di accedere, ma non sono riuscito a trovare nessuna delle mie cose. Ho dovuto utilizzare il seguente collegamento per accedere al mio account SmartThings.https://graph-na04-useast2.api.smartthings.com

(Prego per le 2 ore che ho passato a risolverlo:) questo sarà importante anche in un secondo momento.)

2) Fare clic su Impostazioni app e in OAuth, fare clic su Abilita OAuth in Smart App. Annotare l'ID client OAuth e il segreto client OAuth. Aggiorna la visualizzazione del client OAuth a SmartThings CLI Control. Fare clic su Aggiorna.

3) Torna a My SmartApps, quindi fai clic su SmartThings CLI Control. Fare clic su Pubblica => Per me.

4) Clonare il repository smartthings_cli, creare un virtualenv se lo si desidera (non l'ho fatto), quindi eseguire i seguenti comandi, sostituendo CLIENTID e CLIENTSECRET con l'ID e il segreto del passaggio 2.

Per clonare il repository smartthings puoi usare il seguente comando. Assicurati che il prompt dei comandi di Linux sia nella directory del progetto creata durante l'installazione del modulo Wand.

git clone >

then change directory again down to the smartthings_cli directory that was just created.

cd smartthings_cli

python setup.py install

smartthings_cli --clientid clientid --clientsecret clientsecret

5) smartthings_cli will direct you to a url to authorized access. copy the url from the response in the command window and be sure to update it with the proper path as we had to in step 1. go to that url in a browser and specify which devices the cli should be able to access. click authorize when finished. you should be redirected to a page reporting smartthings_cli.py received auth code.

last few things i needed to do in order to get rid of a warning that kept coming up:

sudo apt-get install libssl-dev

pip install service_identity

pip install attrs pip install pyopenssl pip install pyasn1 pip install pyasn1-modules pip install ipaddress

raspberry pi should now be set-up to issue smart thing commands from the command line interface, try it out with these examples:

smartthings_cli query switch all

smartthings_cli query switch "switch name"

smartthings_cli set switch "switch name" on

step 5: improve response

everything is running at this point but there's a bit of a lag once the wand gesture is captured. in attempt to speed up the response, i've embedded the smarthings logic into the smartwand python script rather than calling it from a command line as it does in smartwand.py. this eliminated the need to repeatedly import the modules required for smartthings communication, which is what was slowing everything down. here's what i had to do to get that working:

python3 -m pip install future

python3 -m pip install twisted

made update to the python script. see smartwand2.py stored in the following repo:

github.com/maspieljr/smartwand

step 6: make smartwand execute on raspberry pi bootup

so you only need to plug in the raspberry pi near your smartthings things and not require a monitor, and keyboard, i followed these instructions to get the script to run on boot or any time a command line terminal is launched. the script seems pretty robust but does get hung up from time to time, requiring a reboot. alternatively you could have a keyboard connected and use alt+f4 to kill a running script and ctrl+alt+t to launch a new terminal without needing a monitor to see anything.

method 2: modify the.bashrc file as described in the link below:

www.dexterindustries.com/howto/run-a-progr…

Consigliato: