Mündəricat:

SmartWand: 6 addım
SmartWand: 6 addım

Video: SmartWand: 6 addım

Video: SmartWand: 6 addım
Video: Xiaomi Mi Band 6 Sıfırlama Fabrika Ayarlarına Döndürme: Mi Band 6 Factory Reset 2024, Iyul
Anonim
SmartWand
SmartWand

Bu layihə, giriş olaraq Kano kodlaşdırma çubuğu ilə Smartthings -i idarə etmək üçün bir Python skriptini əldə etməkdir.

Qızlarım (8 və 12) böyük Harry Potter pərəstişkarlarıdır və Milad üçün Kano Kodlama Çubuğunu aldılar. Kano kodlaşdırma proqramı sərindir və onunla əylənirlər. Kodlaşdırma anlayışlarını tanıtmaq üçün əla vasitədir.

SmartThings, Phillips Hue, Logitech Harmony hub və s. İlə evin hər tərəfinə səpilən bir az ev avtomatlaşdırma sistemimiz var … İstər -istəməz Milad Ağacı İşıqlarını çubuqla yandırmaq istədikləri yerə gəldilər və Lumos kimi terminləri atmağa başladılar. Mənə yox. Əyləncəli bir problem kimi səsləndi, buna görə də götürdüm.

Kritik bir element (çubuq Bluetooth -a qoşulmaq üçün Bluepy python kitabxanası) yalnız Linux platformalarında mövcud olduğundan bir Linux OS ilə getmək məcburiyyətində qaldım. Nəhayət bunu bir Raspberry Pi üzərində işlətmək istəmək baxımından əlverişlidir.

Burada iki əsas istinad var, onsuz mən bunu heç vaxt edə bilməzdim.

Kano kodlaşdırma çubuğunu oxumaq üçün bir python skripti yaratdığınız və paylaşdığınız üçün GammaGames -ə təşəkkürlər.

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

SmartThings əmr satırı interfeysi üçün bir python skriptini yaratdığınız və paylaşdığınız üçün rllynch -ə təşəkkürlər.

github.com/rllynch/smartthings_cli

Bunu pozmamaq üçün, addımlarımın çoxunu bu Təlimat kitabına kopyalayaraq quruluşumda işləməyim üçün lazım olan hər hansı bir çimdikləri çəkəcəyəm.

İşdə sizə lazım olan budur:

  • Harry Potter Kano Kodlaşdırma Kiti (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Linux əsaslı bir əməliyyat sistemi (VirtualBox ilə işə saldım, sonra Raspberry Pi -də quraşdırdım)
  • Bluetooth USB adapteri (Kensington Bluetooth 4.0 USB Adaptoru istifadə etdim)
  • İnternet Bağlantısı (RPi üçün əvvəlki bir layihədən aldığım bir Edimax USB WiFi adapterindən istifadə etdim)

Addım 1: Linux -u Raspberry Pi -yə quraşdırın

Raspberry Pi üzərində bir Linux OS qurmaq üçün aşağıdakı bağlantıları izləyin. Raspbian Stretch -i masa üstü və tövsiyə olunan proqramla istifadə etdim və Etcher ilə parıldadım.

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

Quraşdırmanı başa vurduqdan və Linux Komut İstemi əldə etdikdən sonra, hər şeyin aktual olduğundan əmin olmaq üçün aşağıdakı iki əmri yerinə yetirmək yaxşı bir tətbiqdir.

sudo apt-get yeniləməsi

sudo apt-get yeniləmə

Masaüstü UI -ni işə salmaq üçün əmr satırı interfeysinə aşağıdakıları yazın.

sudo startx

Növbəti şey, İnternet bağlantısıdır ki, repo əldə edə biləsiniz və daha çox proqram quraşdıra bilərsiniz. SmartThings API -ni vurmaq üçün İnternet bağlantısı da tələb olunacaq. Bağlanmaq üçün bu təlimatı izləyin. Masaüstündən olduqca irəli. Ətrafımda yerləşdirdiyim USB wifi adapterindən istifadə etdim.

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

Alternativ olaraq Raspberry Pi -yə başqa bir mövcud kompüterdən istifadə edərək ya mövcud OS ilə birlikdə bir Linux OS -ni ikiqat yükləmək olar (ya da ikisi arasında keçmək üçün yenidən başlamalısınız) və ya Linux OS -in bir nümunəsini işə sala bilərsiniz. VirtualBox. Əvvəlcə bu layihəni işə salmaq üçün bu təlimatı istifadə edərək, Raspberry Pi Desktop ilə Debian Stretch'i Virtual Qutuda quraşdırdım:

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

(Qeyd: Yuxarıdakı təlimatlara uyğun olaraq Qonaqlar Əlavələrini düzgün bir şəkildə qurmağa vaxt tapdım. Ev sahibi ilə müştəri arasında işləməyi heç vaxt etmədim, bu yaxşı olardı, amma istifadə etmək üçün qətnaməni yeniləməyi bacardım. tam monitor ölçülərim. Bura sənəd verməyəcəyim google rabit delikləri idi.)

Addım 2: Python 3 qurun

Python3 artıq Raspian Stretch ilə quraşdırılmalıdır.

Addım 3: Çubuq Modulunu qurun

GammaGames tərəfindən yaradılan bu təlimatı izləyin

Kano_wand repo -nu klonlamadan əvvəl əvvəlcə fərqli bir qovluğa keçməli oldum, əks halda python skriptim tapa bilmədi. Yəqin ki, hər hansı bir faylda bəzi yol istinadlarını yeniləyə bilərdi, amma mən bunu araşdırmadım.

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

git klonu

sudo pip3 bluepy moosegesture qurun

Müvafiq icazələri əldə etmək üçün bunlar üçün sudo istifadə etməli oldum. Həm də numpy qurmaq üçün aşağıdakı əmrləri istifadə etməli oldum, hər hansı bir səbəbdən pip işə düşə bilmədi. Başqa bir yol problemi ola bilərdi, amma bu mənim üçün işlədi, buna görə də getdim:

sudo apt-get python3-numpy quraşdırın

Nəhayət, python skriptindən bluepy işlətmək üçün lazımi icazələri əldə etmək üçün bu əmri tapdım.

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

Skriptimizi işə salmaq üçün tələb olunanların hamısı budur. GammaGames bələdçisinin qalan hissəsi python skriptində tələb olunan addım -addım parçaları gəzir. Ssenarinin necə qurulduğunu və hər bir obyektin nə etdiyini daha yaxşı başa düşmək böyük bir bölükdür. Bu sənədi təqdim etdiyi üçün GammaGames -ə böyük təşəkkürlər. Skriptin bir hissəsinin problemlərini həll etmək üçün də faydalı ola bilər. Məsələn, göstərilən ilk obyekt çubuqlar üçün tarama və aşkar edilmiş çubuqların siyahısını qaytarmaq vəzifəsini yerinə yetirir. Bluetooth qurğunuzun bütün silindrlərə atəş açdığının yaxşı təsdiqlənməsi. Bunu etmək üçün kodu aşağıdakı repoda tapılmış test1_BLE_wand_detect.py saytından kopyalaya bilərsiniz:

github.com/maspieljr/SmartWand

Addım 4: SmartThings CLI qurun

Aşağıda github -da smartthings_cli reposuna daxil olan təlimatların bir nüsxəsi verilmişdir (https://github.com/rllynch/smartthings_cli).

Hər şeyi işə salmaq üçün quruluşumda etməli olduğum kiçik düzəlişləri bura daxil etdim. Bunu təmin etdiyi üçün rllynch -ə bir daha təşəkkür edirəm.

1) Mənim SmartApps -a daxil olun və altında groovy/app.groovy kodlu yeni bir SmartApp yaradın.

*İlk addımda SmartThings veb saytına istinad olduğunu qeyd edin. Smartthings hesabınızın harada olduğuna diqqət yetirin. Digər sayt daxil olmağım üçün icazə verdiyinə baxmayaraq, bir müddət məni yıxdı, amma heç bir şeyi tapa bilmədim. SmartThings hesabıma daxil olmaq üçün aşağıdakı linki istifadə etməli oldum.

(Bunu sıralamağa sərf etdiyim 2 saat ərzində xoş gəlmisiniz:) bu sonrakı mərhələdə də vacib olacaq.)

2) Tətbiq Ayarları və OAuth altında Ağıllı Tətbiqdə OAuthu Aktivləşdir düyməsini basın. OAuth Müştəri ID və OAuth Müştəri Sirrini qeyd edin. OAuth Müştəri Ekranını SmartThings CLI Nəzarətinə yeniləyin. Yeniləyin vurun.

3) SmartApps -a qayıdın, sonra SmartThings CLI Control düyməsini basın. Yayımla => Mənim üçün vurun.

4) smartthings_cli deposunu klonlaşdırın, istəsəniz bir virtualenv yaradın (bunu etmədim), sonra CLIENTID və CLIENTSECRET -i 2 -ci addımdakı ID və sirr ilə əvəz edərək aşağıdakı əmrləri yerinə yetirin.

Ağıllı şeylər reposunu klonlamaq üçün aşağıdakı əmrdən istifadə edə bilərsiniz. Çubuq Modulu Quraşdırması zamanı yaradılmış layihə qovluğunda linux əmr istəyinin olduğundan əmin olun.

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…

Tövsiyə: