Talaan ng mga Nilalaman:

SmartWand: 6 na Hakbang
SmartWand: 6 na Hakbang

Video: SmartWand: 6 na Hakbang

Video: SmartWand: 6 na Hakbang
Video: Металл больше не нужен! Теперь есть ФИБЕРГЛАСС своими руками в домашних условиях. 2024, Hulyo
Anonim
SmartWand
SmartWand

Ang proyektong ito ay upang makakuha ng isang script ng Python upang makontrol ang Smartthings gamit ang Kano coding wand bilang isang input.

Ang aking mga anak na babae (8 at 12) ay malaking tagahanga ng Harry Potter at nakuha ang Kano Coding Wand para sa Pasko. Ang Kano coding app ay cool at masaya sila kasama nito. Mahusay na tool upang ipakilala ang mga konsepto ng pag-coding.

Mayroon din kaming kaunting pag-aautomat sa bahay na sinablig sa buong bahay na may SmartThings, Phillips Hue, Logitech Harmony hub, atbp … Hindi maiwasang umabot sa puntong nais nilang buksan ang Christmas Tree Lights gamit ang wand at nagsimulang magtapon ng mga term tulad ng Lumos at Nox sa akin. Parang isang nakakatuwang hamon kaya't tinuloy ko ito.

Kailangang pumunta sa isang Linux OS dahil ang isang kritikal na elemento (Bluepy python library para sa pagkonekta sa wand Bluetooth) ay magagamit lamang sa mga platform ng Linux. Maginhawa pa rin mula sa pananaw ng kalaunan nais na patakbuhin ito sa isang Raspberry Pi.

Mayroong dalawang pangunahing sanggunian dito, kung wala ito, hindi ko magawa ito.

Salamat sa GammaGames para sa paglikha at pagbabahagi ng isang python script para sa pagbabasa ng Kano coding wand.

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

at

Salamat kay rllynch sa paglikha at pagbabahagi ng isang script ng sawa para sa isang interface ng linya ng utos ng SmartThings.

github.com/rllynch/smartthings_cli

Upang mapanatili itong buo, makokopya ko ang karamihan ng mga hakbang sa Instructable na ito upang makuha ang anumang mga pag-aayos na kailangan ko upang ito ay gumana sa aking pag-set up.

Narito ang kakailanganin mo:

  • Harry Potter Kano Coding Kit (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Isang Linux Base OS (Nakakuha ako ng isa at tumatakbo sa VirtualBox, pagkatapos ay naka-install sa isang Raspberry Pi)
  • Isang adapter ng USB USB (Gumamit ako ng Kensington Bluetooth 4.0 USB Adapter)
  • Koneksyon sa Internet (Para sa RPi, gumamit ako ng isang Edimax USB WiFi adapter na mayroon ako mula sa isang nakaraang proyekto)

Hakbang 1: I-install ang Linux sa Raspberry Pi

Sundin ang mga link sa ibaba upang mai-install ang isang Linux OS papunta sa Raspberry Pi. Gumamit ako ng Raspbian Stretch sa desktop at inirekumenda ang software at na-flash kasama si Etcher.

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

Kapag nakumpleto mo na ang pag-install at magkaroon ng isang Linux Command Prompt, mabuting kasanayan na patakbuhin ang sumusunod na dalawang utos upang matiyak na napapanahon ang lahat.

sudo apt-get update

sudo apt-get upgrade

I-type ang sumusunod sa interface ng command line upang ilunsad ang desktop UI.

sudo startx

Susunod na i-set up ay isang koneksyon sa internet upang makapunta ka sa mga repos at tulad upang mai-install ang karagdagang software. Kakailanganin din ang koneksyon sa Internet upang ma-hit ang SmartThings API. Sundin ang patnubay na ito upang makakonekta. Medyo diretso pasulong mula sa desktop. Gumamit ako ng isang USB wifi Adapter na aking inilalagay.

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

Bilang kahalili sa Raspberry Pi, maaari kang gumamit ng isa pang umiiral na computer sa alinman sa dual boot ng isang Linux OS kasama ang iyong mayroon nang OS (uri ng sakit dahil kailangan mong i-reboot upang lumipat sa pagitan ng dalawa) o magpatakbo ng isang halimbawa ng Linux OS sa isang VirtualBox. Upang unang magamit ang proyektong ito sa una, na-install ko ang Debian Stretch sa Raspberry Pi Desktop sa isang Virtual Box gamit ang gabay na ito:

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

(Tandaan: Nagkaroon ako ng isang oras ng pagkuha ng mga Addon ng Bisita nang maayos ayon sa mga tagubilin sa itaas. Hindi kailanman nakuha ang hiwa at i-paste sa pagitan ng host at client upang gumana, na kung saan ay magiging maganda, ngunit pinamahalaan ko upang ma-update ang resolusyon upang magamit ang aking buong laki ng monitor. Ito ay isang serye ng mga hole ng google rabit na hindi ko idodokumento dito.)

Hakbang 2: I-install ang Python 3

Ang Python3 ay dapat na naka-install sa Raspian Stretch.

Hakbang 3: I-setup ang Wand Module

Sundin ang gabay na ito na nilikha ng GammaGames

Kailangang palitan muna ako sa ibang direktoryo bago i-clone ang repo ng kano_wand, kung hindi man ito mahanap ng aking script na sawa. Marahil ay maaaring na-update ang ilang mga sanggunian sa landas sa ilang mga file sa kung saan, ngunit hindi ko ito hinukay.

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

git clone

sudo pip3 i-install ang bluepy moosegesture

Kailangang gumamit ng sudo para sa mga ito upang makakuha ng tamang mga pahintulot. Kailangan ding gamitin ang mga sumusunod na utos sa halip upang mai-install ang numpy, para sa anumang kadahilanan, hindi makakuha ng pip upang gumana. Maaaring naging isa pang isyu sa landas, ngunit ito ay gumagana para sa akin kaya't sumama ako rito:

sudo apt-get install python3-numpy

Panghuli, upang makakuha ng tamang mga pahintulot na magpatakbo ng bluepy mula sa script ng sawa nakita ko ang utos na ito.

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

Ito lang ang kinakailangan upang mapagana ang aming script. Ang natitirang gabay ng GammaGames ay naglalakad sa mga hakbang-hakbang na piraso na kinakailangan sa script ng sawa. Ito ay isang mahusay na breakdown upang higit na maunawaan kung paano nakaayos ang script at kung ano ang ginagawa ng bawat bagay. Malaking salamat sa GammaGames sa pagbibigay ng dokumentasyong ito. Maaari ding maging kapaki-pakinabang para sa pag-troubleshoot ng isang seksyon ng script. Halimbawa, ang unang bagay na ipinakita ay gumaganap ng gawain ng pag-scan para sa mga wands at pagbabalik ng isang listahan ng mga wands na natuklasan. Mahusay na pag-verify na ang iyong pag-setup ng bluetooth ay nagpapaputok sa lahat ng mga silindro. Upang magawa ito, maaari mong kopyahin ang code mula sa test1_BLE_wand_detect.py na matatagpuan sa sumusunod na repo:

github.com/maspieljr/SmartWand

Hakbang 4: I-setup ang SmartThings CLI

Nasa ibaba ang isang kopya ng mga tagubiling kasama sa repost ng smartthings_cli sa github (https://github.com/rllynch/smartthings_cli).

Isinama ko rito ang maliliit na pag-aayos na kailangan kong gawin sa aking pag-set up upang gumana ang lahat. Salamat muli kay rllynch sa pagbibigay nito.

1) Mag-log in at sa ilalim ng Aking SmartApps, lumikha ng isang bagong SmartApp na may code sa groovy / app.groovy.

* Tandaan sa unang hakbang mayroong isang sanggunian sa isang website ng SmartThings. Bigyang pansin kung nasaan ang iyong smartthings account. Napasadya ako nito saglit habang pinapayagan ako ng ibang site na mag-login, ngunit hindi makahanap ng anuman sa aking mga bagay-bagay. Kailangan kong gamitin ang sumusunod na link upang makapunta sa aking SmartThings account.https://graph-na04-useast2.api.smartthings.com

(Maligayang pagdating sa 2 oras na ginugol ko sa pag-uuri nito:) magiging mahalaga din ito sa susunod na hakbang.)

2) I-click ang Mga Setting ng App at sa ilalim ng OAuth, i-click ang Paganahin ang OAuth sa Smart App. Tandaan ang OAuth Client ID at OAuth Client Secret. I-update ang OAuth Client Display sa SmartThings CLI Control. I-click ang I-update.

3) Bumalik sa Aking SmartApps pagkatapos mag-click sa SmartThings CLI Control. I-click ang I-publish => Para sa Akin.

4) I-clone ang smartthings_cli repository, lumikha ng isang virtualenv kung ninanais (hindi ko ito ginawa), pagkatapos ay patakbuhin ang mga sumusunod na utos, palitan ang CLIENTID at CLIENTSECRET ng ID at lihim mula sa hakbang 2.

Upang i-clone ang smartthings repo maaari mong gamitin ang sumusunod na utos. Tiyaking ang prompt ng linux command ay nasa iyong direktoryo ng proyekto na nilikha sa panahon ng Wand Module Setup.

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…

Inirerekumendang: