Përmbajtje:

SmartWand: 6 hapa
SmartWand: 6 hapa

Video: SmartWand: 6 hapa

Video: SmartWand: 6 hapa
Video: MI BAND 6 Unboxing & Review, SpO2, Waterproof, FULL SCREEN AMOLED display, SpO2, 14 Days Battery 2024, Nëntor
Anonim
SmartWand
SmartWand

Ky projekt do të marrë një shkrim Python për të kontrolluar Smartthings me shkopin e kodimit Kano si një hyrje.

Vajzat e mia (8 dhe 12) janë adhuruese të mëdha të Harry Potter dhe morën shkopin e kodimit Kano për Krishtlindje. Aplikacioni i kodimit Kano është i lezetshëm dhe ata po argëtohen me të. Mjet i shkëlqyeshëm për të futur konceptet e kodimit.

Ne gjithashtu kemi një pjesë të automatizimit të shtëpisë të spërkatur në të gjithë shtëpinë me SmartThings, Phillips Hue, shpërndarës Logitech Harmony, etj … Ata në mënyrë të pashmangshme arritën në pikën ku donin të ndiznin Dritat e Pemëve të Krishtlindjeve me shkopin dhe filluan të hedhin terma si Lumos dhe Nox në mua. Dukej si një sfidë argëtuese, kështu që e mora atë.

Duhej të shkoja me një Linux OS pasi një element kritik (biblioteka Bluepy python për t'u lidhur me shkopin Bluetooth) është i disponueshëm vetëm në platformat Linux. I përshtatshëm gjithsesi nga pikëpamja e dëshirës përfundimtare për ta drejtuar këtë në një Raspberry Pi.

Ka dy referenca kryesore këtu, pa të cilat, unë kurrë nuk do të kisha qenë në gjendje ta bëja këtë.

Faleminderit GammaGames për krijimin dhe ndarjen e një shkrimi python për leximin e shkopit të kodimit Kano.

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

dhe

Faleminderit rllynch për krijimin dhe ndarjen e një shkrimi python për një ndërfaqe të linjës së komandës SmartThings.

github.com/rllynch/smartthings_cli

Për ta mbajtur këtë të paprekur, do të kopjoj shumicën e hapave në këtë Instructable për të kapur çdo rregullim që më duhej për ta bërë atë të funksionojë në konfigurimin tim.

Ja çfarë do t'ju duhet:

  • Kompleti i kodimit të Harry Potter Kano (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Një sistem operativ i bazuar në Linux (fillova të funksionoj me VirtualBox, pastaj u instalova në një Raspberry Pi)
  • Një përshtatës USB Bluetooth (kam përdorur një përshtatës USB Kensington Bluetooth 4.0 USB)
  • Lidhja në internet (Për RPi, kam përdorur një përshtatës USB Edimax USB WiFi që kisha nga një projekt i mëparshëm)

Hapi 1: Instaloni Linux në Raspberry Pi

Ndiqni lidhjet më poshtë për të instaluar një OS Linux në Raspberry Pi. Përdora Raspbian Stretch me desktop dhe softuer të rekomanduar dhe u ndez me Etcher.

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

Pasi të keni përfunduar instalimin dhe të keni një Linux Command Prompt, është praktikë e mirë të ekzekutoni dy komandat e mëposhtme për t'u siguruar që gjithçka është e përditësuar.

përditësim sudo apt-get

sudo apt-get upgrade

Shkruani sa vijon në ndërfaqen e linjës së komandës për të nisur ndërfaqen e përdoruesit të desktopit.

sudo startx

Gjëja tjetër për të krijuar është një lidhje interneti në mënyrë që të arrini në repo dhe të tillë për të instaluar softuer të mëtejshëm. Gjithashtu do të kërkohet lidhje interneti për të aktivizuar API -në SmartThings. Ndiqni këtë udhëzues për t'u lidhur. Mjaft përpara nga desktopi. Kam përdorur një përshtatës wifi USB që kisha vendosur rreth e rrotull.

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

Përndryshe për Raspberry Pi, mund të përdorni një kompjuter tjetër ekzistues për të dyfishtë nisjen e një Linux OS së bashku me sistemin tuaj ekzistues (një lloj dhimbjeje sepse duhet të rindizni për të kaluar midis të dyve) ose të ekzekutoni një shembull të Linux OS në një VirtualBox. Për të filluar fillimisht funksionimin e këtij projekti, unë instalova Debian Stretch me Despberry Raspberry Pi në një Kuti Virtuale duke përdorur këtë udhëzues:

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

(Shënim: Unë kisha një kohë të mirë duke i instaluar siç duhet Shtojcat e Vizitorëve sipas udhëzimeve të mësipërme. Asnjëherë nuk kam marrë prerjen dhe ngjitjen midis hostit dhe klientit në punë, gjë që do të ishte mirë, por kam arritur të azhurnoj rezolucionin për ta përdorur madhësia ime e plotë e monitorit. Kjo ishte një seri vrimash google rabit të cilat nuk do t'i dokumentoj këtu.)

Hapi 2: Instaloni Python 3

Python3 tashmë duhet të instalohet me Raspian Stretch.

Hapi 3: Konfiguro modulin e shkopit

Ndiqni këtë udhëzues të krijuar nga GammaGames

Së pari më duhej të ndryshoja në një drejtori të ndryshme para se të klonoja repo kano_wand, përndryshe skripti im python nuk mund ta gjente. Ndoshta mund të ketë përditësuar diku ndonjë referencë të rrugës në ndonjë skedar, por unë nuk e gërmova atë.

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

git klon

sudo pip3 instaloni moosegesture bluepy

Duhej të përdorja sudo për këto për të marrë lejet e duhura. Gjithashtu duhej të përdorte komandat e mëposhtme për të instaluar numpy, për çfarëdo arsye, nuk mund të merrte pip në punë. Mund të ketë qenë një çështje tjetër e rrugës, por kjo funksionoi për mua kështu që unë shkova me të:

sudo apt-get install python3-numpy

Së fundmi, për të marrë lejet e duhura për të ekzekutuar blupy nga shkrimi python gjeta këtë komandë.

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

Kjo është gjithçka që kërkohet për të funksionuar skenarin tonë. Pjesa tjetër e udhëzuesit GammaGames ecën nëpër pjesët hap pas hapi të kërkuara në shkrimin python. Ashtë një avari e madhe për të kuptuar më tej se si është strukturuar skenari dhe çfarë po bën secili objekt. Faleminderit shumë GammaGames për sigurimin e këtij dokumentacioni. Gjithashtu mund të jetë e dobishme për zgjidhjen e problemeve të një pjese të skenarit. Për shembull, objekti i parë i shfaqur kryen detyrën e skanimit të shkopinjve dhe kthimin e një liste të shkopinjve të zbuluar. Verifikim i mirë që konfigurimi juaj bluetooth po ndizet në të gjitha cilindrat. Për ta bërë këtë, mund të kopjoni kodin nga test1_BLE_wand_detect.py që gjendet në repon e mëposhtme:

github.com/maspieljr/SmartWand

Hapi 4: Vendosni SmartThings CLI

Më poshtë janë një kopje të udhëzimeve të përfshira në repo smartthings_cli në github (https://github.com/rllynch/smartthings_cli).

Unë kam përfshirë këtu rregullimet e vogla që duhej të bëja në konfigurimin tim për të funksionuar gjithçka. Faleminderit përsëri për rllynch për sigurimin e kësaj.

1) Hyni dhe nën My SmartApps, krijoni një SmartApp të ri me kodin në groovy/app.groovy.

*Shënim në hapin e parë ka një referencë për një uebfaqe të SmartThings. Kushtojini vëmendje asaj se ku është llogaria juaj smartthings. Kjo më pengoi për ca kohë pasi sajti tjetër më lejoi të identifikohesha, por nuk gjeta asgjë nga gjërat e mia. Më duhej të përdorja lidhjen e mëposhtme për të arritur në llogarinë time SmartThings.https://graph-na04-useast2.api.smartthings.com

(Jeni të mirëpritur për 2 orët që kalova për ta zgjidhur atë:) kjo do të jetë e rëndësishme edhe në hapin e mëvonshëm.)

2) Klikoni Cilësimet e Aplikacionit dhe nën OAuth, klikoni Enable OAuth në Smart App. Shënoni ID -në e Klientit OAuth dhe Sekretin e Klientit OAuth. Përditësoni ekranin e klientit OAuth në SmartThings CLI Control. Klikoni Update.

3) Kthehuni te My SmartApps pastaj klikoni në SmartThings CLI Control. Kliko Publiko => Për Mua.

4) Klononi deponinë smartthings_cli, krijoni një virtualenv nëse dëshironi (nuk e bëra këtë), pastaj ekzekutoni komandat e mëposhtme, duke zëvendësuar CLIENTID dhe CLIENTSECRET me ID dhe sekretin nga hapi 2.

Për të klonuar repon e smartthings mund të përdorni komandën e mëposhtme. Sigurohuni që linux komanda linux të jetë në drejtorinë e projektit tuaj të krijuar gjatë konfigurimit të modulit Wand.

git klon >

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…

Recommended: