Cuprins:

SmartWand: 6 pași
SmartWand: 6 pași

Video: SmartWand: 6 pași

Video: SmartWand: 6 pași
Video: Xiaomi Mi Smart Band 6 | Un upgrade major față de modelul precedent | Unboxing & Review CEL.ro 2024, Iulie
Anonim
SmartWand
SmartWand

Acest proiect este de a obține un script Python pentru a controla Smartthings cu bagheta de codare Kano ca intrare.

Fiicele mele (8 și 12) sunt mari fani ai lui Harry Potter și au primit bagheta de codare Kano pentru Crăciun. Aplicația de codare Kano este grozavă și se distrează cu ea. Un instrument excelent pentru a introduce concepte de codare.

De asemenea, avem un pic de automatizare a locuinței presărată în toată casa cu SmartThings, Phillips Hue, hub Logitech Harmony, etc … Au ajuns inevitabil în punctul în care au vrut să aprindă lumina pomului de Crăciun cu bagheta și au început să arunce termeni precum Lumos și Nox la mine. Părea o provocare distractivă, așa că am luat-o.

A trebuit să merg cu un sistem de operare Linux, deoarece un element critic (biblioteca Python Bluepy pentru conectarea la bagheta Bluetooth) este disponibil numai pe platformele Linux. Convenabil oricum din punctul de vedere al dorinței de a rula în cele din urmă pe un Raspberry Pi.

Există două referințe principale aici, fără de care, nu aș fi reușit niciodată să fac acest lucru.

Mulțumim GammaGames pentru crearea și partajarea unui script python pentru citirea baghetei de codare Kano.

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

și

Mulțumim lui rllynch pentru crearea și partajarea unui script python pentru o interfață de linie de comandă SmartThings.

github.com/rllynch/smartthings_cli

Pentru a păstra acest lucru intact, voi copia majoritatea pașilor din acest Instructable pentru a surprinde orice modificări de care aveam nevoie pentru a-l face să funcționeze la configurarea mea.

Iată de ce veți avea nevoie:

  • Kit de codare Harry Potter Kano (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Un sistem de operare bazat pe Linux (am instalat unul și am rulat cu VirtualBox, apoi am instalat pe un Raspberry Pi)
  • Un adaptor USB Bluetooth (am folosit un adaptor USB Kensington Bluetooth 4.0)
  • Conexiune la internet (Pentru RPi, am folosit un adaptor Edimax USB WiFi pe care l-am avut dintr-un proiect anterior)

Pasul 1: Instalați Linux pe Raspberry Pi

Urmați linkurile de mai jos pentru a instala un sistem de operare Linux pe Raspberry Pi. Am folosit Raspbian Stretch cu desktop și software-ul recomandat și am făcut flash cu Etcher.

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

Odată ce ați finalizat instalarea și ați primit un prompt de comandă Linux, este o bună practică să rulați următoarele două comenzi pentru a vă asigura că totul este actualizat.

sudo apt-get update

sudo apt-get upgrade

Tastați următoarele în interfața liniei de comandă pentru a lansa interfața de utilizare a desktopului.

sudo startx

Următorul lucru pe care trebuie să-l configurați este o conexiune la internet, astfel încât să puteți accesa repozitii și altele pentru a instala software suplimentar. Conexiunea la internet va fi, de asemenea, necesară pentru a accesa SmartThings API. Urmați acest ghid pentru a vă conecta. Destul de direct de pe desktop. Am folosit un adaptor USB wifi pe care îl aveam în jurul meu.

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

Alternativ la Raspberry Pi, puteți utiliza un alt computer existent pentru a porni dual un sistem de operare Linux împreună cu sistemul de operare existent (un fel de durere, deoarece trebuie să reporniți pentru a comuta între cele două) sau să rulați o instanță a sistemului de operare Linux pe un VirtualBox. Pentru ca acest proiect să funcționeze inițial, am instalat Debian Stretch cu Raspberry Pi Desktop într-o cutie virtuală folosind acest ghid:

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

(notă: am avut o vreme când am instalat corect suplimentele pentru oaspeți conform instrucțiunilor de mai sus. Nu am reușit niciodată să funcționeze tăierea și lipirea între gazdă și client, ceea ce ar fi fost frumos, dar am reușit să actualizez rezoluția pentru a o utiliza dimensiunea mea completă a monitorului. Aceasta a fost o serie de găuri Google Rabit pe care nu le voi documenta aici.)

Pasul 2: Instalați Python 3

Python3 ar trebui să fie deja instalat cu Raspian Stretch.

Pasul 3: Configurați modulul baghetă

Urmați acest ghid creat de GammaGames

Mai întâi a trebuit să mă schimb într-un alt director înainte de a clona repo kano_wand, altfel scriptul meu python nu l-ar putea găsi. Probabil că ar fi putut actualiza unele referințe de cale într-un fișier undeva, dar nu am săpat în asta.

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

git clone

sudo pip3 instala bluepy moosegesture

A trebuit să folosesc sudo pentru a obține permisiunile corespunzătoare. De asemenea, a trebuit să folosească următoarele comenzi în schimb pentru a instala numpy, indiferent de motiv, nu a reușit ca pip să funcționeze. S-ar putea să fi fost o altă problemă de cale, dar acest lucru a funcționat pentru mine, așa că am mers cu ea:

sudo apt-get install python3-numpy

În cele din urmă, pentru a obține permisiunile corespunzătoare pentru a rula bluepy din scriptul python, am găsit această comandă.

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

Acesta este tot ceea ce este necesar pentru a pune în funcțiune scriptul nostru. Restul ghidului GammaGames parcurge pas cu pas piesele necesare în scriptul Python. Este o defecțiune excelentă pentru a înțelege în continuare modul în care este structurat scriptul și ce face fiecare obiect. Mulțumiri mari GammaGames pentru furnizarea acestei documentații. De asemenea, ar putea fi util pentru depanarea unei secțiuni din script. De exemplu, primul obiect afișat îndeplinește sarcina de scanare a baghetelor și returnarea unei liste de baghete descoperite. Bună verificare a faptului că configurarea dvs. Bluetooth se declanșează pe toți cilindrii. Pentru a face acest lucru, puteți copia codul din test1_BLE_wand_detect.py găsit în următoarea repo:

github.com/maspieljr/SmartWand

Pasul 4: Configurați SmartThings CLI

Mai jos este o copie a instrucțiunilor incluse în repozitia smartthings_cli de pe github (https://github.com/rllynch/smartthings_cli).

Am inclus aici micile modificări pe care a trebuit să le fac la configurarea mea pentru ca totul să funcționeze. Vă mulțumim din nou lui rllynch pentru că ați furnizat acest lucru.

1) Conectați-vă și sub SmartApp-urile mele, creați o nouă SmartApp cu codul în groovy / app.groovy.

* Rețineți că în primul pas există o referință la un site web SmartThings. Acordați o atenție deosebită locului în care este contul dvs. smartthings. Acest lucru m-a împiedicat o vreme, deoarece celălalt site mi-a permis să mă conectez, dar nu am putut găsi nimic din lucrurile mele. A trebuit să folosesc următorul link pentru a ajunge la contul meu SmartThings.https://graph-na04-useast2.api.smartthings.com

(Sunteți binevenit pentru cele 2 ore pe care le-am petrecut sortând asta:) acest lucru va fi important și în etapa ulterioară.)

2) Faceți clic pe Setări aplicație și sub OAuth, faceți clic pe Activați OAuth în aplicația inteligentă. Notați ID-ul clientului OAuth și secretul clientului OAuth. Actualizați afișajul clientului OAuth la SmartThings CLI Control. Faceți clic pe Actualizare.

3) Reveniți la My SmartApps, apoi faceți clic pe SmartThings CLI Control. Faceți clic pe Publicare => Pentru mine.

4) Clonați depozitul smartthings_cli, creați un virtualenv dacă doriți (nu am făcut asta), apoi executați următoarele comenzi, înlocuind CLIENTID și CLIENTSECRET cu ID-ul și secretul de la pasul 2.

Pentru a clona reparația smartthings puteți utiliza următoarea comandă. Asigurați-vă că promptul de comandă linux se află în directorul de proiect creat în timpul configurării modulului Wand.

git clona >

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…

Recomandat: