Sommario:
- Passaggio 1: installa Linux su Raspberry Pi
- Passaggio 2: installa Python 3
- Passaggio 3: configurazione del modulo bacchetta
- Passaggio 4: imposta SmartThings CLI
- step 5: improve response
- step 6: make smartwand execute on raspberry pi bootup
Video: SmartWand: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
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:
Come realizzare un'antenna doppia biQuade 4G LTE Semplici passaggi: 3 passaggi
Come realizzare un'antenna doppia biQuade 4G LTE Semplici passaggi: La maggior parte delle volte che ho affrontato, non ho una buona potenza del segnale per i miei lavori quotidiani. Così. Cerco e provo diversi tipi di antenna ma non funziona. Dopo aver perso tempo ho trovato un'antenna che spero di realizzare e testare, perché è principio costruttivo non
Rilevamento del volto su Raspberry Pi 4B in 3 passaggi: 3 passaggi
Rilevamento del volto su Raspberry Pi 4B in 3 passaggi: In questo Instructable eseguiremo il rilevamento del volto su Raspberry Pi 4 con Shunya O/S utilizzando la libreria Shunyaface. Shunyaface è una libreria di riconoscimento/rilevamento facciale. Il progetto mira a raggiungere la massima velocità di rilevamento e riconoscimento con
Specchio per il trucco fai-da-te in semplici passaggi (usando le strisce luminose a LED): 4 passaggi
Specchio per il trucco fai-da-te in semplici passaggi (usando le strisce luminose a LED): in questo post, ho realizzato uno specchio per il trucco fai-da-te con l'aiuto delle strisce LED. Sono davvero fantastici e devi provarli anche tu
Gioca a Doom sul tuo iPod in 5 semplici passaggi!: 5 passaggi
Gioca a Doom sul tuo iPod in 5 semplici passaggi!: una guida passo passo su come eseguire il dual-boot di Rockbox sul tuo iPod per giocare a Doom e a dozzine di altri giochi. È qualcosa di veramente facile da fare, ma molte persone rimangono stupite quando mi vedono giocare a doom sul mio iPod e si confondono con le istruzioni
Come installare plugin in WordPress in 3 passaggi: 3 passaggi
Come installare plugin in WordPress in 3 passaggi: In questo tutorial ti mostrerò i passaggi essenziali per installare il plugin wordpress sul tuo sito web. Fondamentalmente puoi installare i plugin in due modi diversi. Il primo metodo è tramite ftp o tramite cpanel. Ma non lo elencherò perché è davvero completo