Sisukord:

SmartWand: 6 sammu
SmartWand: 6 sammu

Video: SmartWand: 6 sammu

Video: SmartWand: 6 sammu
Video: НОВОГОДНИЙ КОНКУРС - XIAOMI MI SMART BAND 6 NFC 🔥🔥🔥 2024, Juuli
Anonim
SmartWand
SmartWand

Selle projekti eesmärk on saada Pythoni skript Smartthingi juhtimiseks sisendina Kano kodeerimispulgaga.

Minu tütred (8 ja 12) on suured Harry Potteri fännid ja said jõuludeks Kano kodeerimispulga. Kano kodeerimisrakendus on lahe ja neil on sellega lõbus. Suurepärane tööriist kodeerimiskontseptsioonide tutvustamiseks.

Samuti on meil kogu kodus pisike koduautomaatika, kuhu on puistatud SmartThings, Phillips Hue, Logitech Harmony hub jne. Nad jõudsid paratamatult selleni, et tahtsid jõulupuu tuled võlukepiga sisse lülitada ja hakkasid viskama selliseid termineid nagu Lumos ja Nox minu poole. Tundus lõbus väljakutse, nii et võtsin selle vastu.

Tuli kasutada Linuxi operatsioonisüsteemi, kuna kriitiline element (Bluepy python -teek Bluetooth -ühenduse loomiseks) on saadaval ainult Linuxi platvormidel. Mugav igatahes sellest seisukohast, et tahaks lõpuks seda Raspberry Pi -ga käitada.

Siin on kaks peamist viidet, ilma milleta poleks ma seda kunagi suutnud.

Aitäh GammaGamesile, et ta lõi ja jagas pythoni skripti Kano kodeerimispulga lugemiseks.

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

ja

Aitäh rllynchile SmartThingsi käsurealiidese jaoks Pythoni skripti loomise ja jagamise eest.

github.com/rllynch/smartthings_cli

Selle puutumatuse säilitamiseks kopeerin enamiku samme sellesse Instructable'i, et jäädvustada kõik muudatused, mida mul oli vaja selle seadistamisel töötamiseks.

Siin on vaja:

  • Harry Potteri Kano kodeerimiskomplekt (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Linuxil põhinev operatsioonisüsteem (sain selle VirtualBoxiga tööle ja käivitasin seejärel Raspberry Pi -le)
  • Bluetoothi USB -adapter (kasutasin Kensingtoni Bluetooth 4.0 USB -adapterit)
  • Interneti -ühendus (RPi jaoks kasutasin Edimaxi USB WiFi -adapterit, mis mul oli eelmisest projektist)

Samm: installige Linux Raspberry Pi -sse

Linuxi operatsioonisüsteemi Raspberry Pi installimiseks järgige allolevaid linke. Kasutasin Raspbian Stretchit töölaua ja soovitatud tarkvaraga ning välgutasin Etcheriga.

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

Kui olete installimise lõpetanud ja teil on Linuxi käsuviip, on hea tava käivitada järgmised kaks käsku, et olla kindel, et kõik on ajakohane.

sudo apt-get update

sudo apt-get upgrade

Töölaua kasutajaliidese käivitamiseks tippige käsurea liidesesse järgmine.

sudo startx

Järgmine asi, mida seadistada, on Interneti -ühendus, et saaksite pääseda reposse ja sellisesse täiendava tarkvara installimiseks. SmartThings API käivitamiseks on vaja ka Interneti -ühendust. Ühenduse loomiseks järgige seda juhendit. Päris otse töölaualt edasi. Ma kasutasin USB -WiFi -adapterit, mis mul oli.

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

Alternatiivina Raspberry Pi -le saate Linuxi operatsioonisüsteemi kahekordseks käivitamiseks koos olemasoleva operatsioonisüsteemiga kasutada mõnda teist olemasolevat arvutit (selline piin, sest nende vahel vahetamiseks peate taaskäivitama) või käivitada Linuxi OS -i eksemplari VirtualBox. Selle projekti esialgseks töötamiseks installisin Debian Stretchi koos Raspberry Pi töölauaga virtuaalsesse kasti, kasutades seda juhendit:

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

(märkus: mul oli kuradima aega, et külaliste lisandmoodulid õigesti installida vastavalt ülaltoodud juhistele. Kunagi ei õnnestunud hosti ja kliendi vahel töötamist lõigata ja kleepida, mis oleks olnud tore, kuid mul õnnestus resolutsiooni kasutada minu täissuuruses monitor. See oli rida Google'i rabitsi auke, mida ma siin ei dokumenteeri.)

Samm: installige Python 3

Python3 tuleks juba installida Raspian Stretchiga.

3. samm: Wand -mooduli seadistamine

Järgige seda GammaGames'i loodud juhendit

Enne kano_wand repo kloonimist pidin kõigepealt minema teise kataloogi, vastasel juhul ei suutnud mu pythoni skript seda leida. Tõenäoliselt oleks kuskil mõnes failis mõningaid teeviiteid saanud värskendada, aga ma ei süvenenud sellesse.

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

git kloon

sudo pip3 install sinine moosegesture

Õigete õiguste saamiseks tuli nende jaoks kasutada sudot. Samuti pidi numpy installimiseks kasutama järgmisi käske, mingil põhjusel ei saanud pip tööle. Võib -olla oli see teine tee probleem, kuid see töötas minu jaoks, nii et ma läksin sellega:

sudo apt-get install python3-numpy

Lõpuks leidsin selle käsu, et saada python -skriptist nõuetekohased õigused bluepy käivitamiseks.

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

See on kõik, mis on vajalik meie skripti käivitamiseks. Ülejäänud GammaGames juhend juhendab samm -sammult pythoni skriptis nõutavaid osi. See on suurepärane jaotus, et paremini mõista, kuidas skript on üles ehitatud ja mida iga objekt teeb. Suur tänu GammaGamesile selle dokumentatsiooni esitamise eest. Samuti võib see olla kasulik skripti osa tõrkeotsinguks. Näiteks täidab esimene näidatud objekt võlukeppide otsimist ja avastatud võlukeppide loendi tagastamist. Hea kinnitus selle kohta, et teie Bluetoothi seadistus käivitub kõigil silindritel. Selleks saate kopeerida koodi järgmisest repost leitud test1_BLE_wand_detect.py:

github.com/maspieljr/SmartWand

4. samm: seadistage SmartThings CLI

Allpool on koopia juhistest, mis on lisatud githubi smartthings_cli reposse (https://github.com/rllynch/smartthings_cli).

Olen siia lisanud väikesed muudatused, mida pidin seadistamisel tegema, et kõik toimiks. Tänan veelkord rllynchi selle pakkumise eest.

1) Logige sisse ja jaotisse Minu SmartApps, looge uus SmartApp koos koodiga groovy/app.groovy.

*Pange tähele, et esimeses etapis on viide SmartThingsi veebisaidile. Pöörake tähelepanelikult tähelepanu sellele, kus asub teie nutikate konto. See ajas mind mõneks ajaks närvi, kuna teine sait lubas mul sisse logida, kuid ei leidnud ühtegi minu asja. Pidin oma SmartThingsi kontole pääsemiseks kasutama järgmist linki.

(Olete oodatud selle 2 tunni jooksul, mille veetsin selle lahendamiseks:) see on oluline ka hilisemas etapis.)

2) Klõpsake rakenduse sätetel ja OAuthi all käsul Luba OAuth nutikas rakenduses. Märkige üles OAuth kliendi ID ja OAuth kliendi saladus. Värskendage OAuthi kliendiekraani SmartThings CLI Control. Klõpsake nuppu Värskenda.

3) Minge tagasi jaotisse Minu SmartApps, seejärel klõpsake valikul SmartThings CLI Control. Klõpsake nuppu Avalda => Minu jaoks.

4) Kloonige repositoorium smartthings_cli, looge soovi korral virtualenv (ma ei teinud seda), seejärel käivitage järgmised käsud, asendades CLIENTID ja CLIENTSECRET ID -ga ja alates 2. toimingust.

Smartthings repo kloonimiseks võite kasutada järgmist käsku. Veenduge, et linuxi käsuviip on teie projekti kataloogis, mis on loodud Wand -mooduli seadistamise ajal.

git kloon >

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…

Soovitan: