Мазмуну:

SmartWand: 6 кадам
SmartWand: 6 кадам

Video: SmartWand: 6 кадам

Video: SmartWand: 6 кадам
Video: Xiaomi Mi Band 6 — первый обзор! 2024, Ноябрь
Anonim
SmartWand
SmartWand

Бул долбоор Канто коддоо таякчасы менен Smartthingsти башкаруу үчүн Python скриптин алуу болуп саналат.

Менин кыздарым (8 жана 12) Гарри Поттердин чоң күйөрмандары жана Рождествого Кано коддоо таякчасын алышкан. Kano коддоо колдонмосу сонун жана алар аны менен көңүл ачып жатышат. Коддоо түшүнүктөрүн киргизүү үчүн эң сонун курал.

Бизде дагы үйдүн бир аз автоматташтырылышы SmartThings, Phillips Hue, Logitech Harmony хабы жана башкалар менен чачылган … Алар сөзсүз түрдө балатынын шамдарын таяк менен күйгүзгүсү келишкен жана Lumos сыяктуу терминдерди ыргыта башташкан. Жок мага. Кызыктуу чакырык сыяктуу угулду, мен аны кабыл алдым.

Linux OS менен иштөөгө туура келди, анткени маанилүү элемент (Bluetooth таякчасына туташуу үчүн Bluepy python китепканасы) Linux платформаларында гана бар. Акыры Raspberry Piде иштетүүнү каалаган позициядан ыңгайлуу.

Бул жерде эки негизги шилтеме бар, ансыз мен муну эч качан кыла алмак эмесмин.

Кано коддоо таякчасын окуу үчүн питон скриптин түзүү жана бөлүшүү үчүн GammaGamesке рахмат.

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

жана

SmartThings буйрук сабынын интерфейси үчүн питон скриптин түзүү жана бөлүшүү үчүн rllynchке рахмат.

github.com/rllynch/smartthings_cli

Муну сактап калуу үчүн, мен кадамдардын көбүн ушул Нускамага көчүрөм, аны менин орнотуумда иштеши үчүн керектүү болгон твиттерди басып алам.

Бул жерде сизге эмне керек:

  • Гарри Поттер Кано коддоочу комплект (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Linux негизиндеги ОС (менде VirtualBox менен иштеп, Raspberry Pi орнотулган)
  • Bluetooth USB адаптери (мен Kensington Bluetooth 4.0 USB адаптерин колдондум)
  • Интернетке туташуу (RPi үчүн мен мурунку долбоордо болгон Edimax USB WiFi адаптерин колдондум)

1 -кадам: Linuxту Raspberry Piге орнотуңуз

Raspberry Piге Linux ОЖ орнотуу үчүн төмөнкү шилтемелерди басыңыз. Мен Raspbian Stretchти стол жана сунушталган программалык камсыздоо менен колдондум жана Etcher менен жаркырадым.

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

Орнотууну аяктагандан кийин жана Linuxтун буйругу бар болгондон кийин, баары жаңырганына ынануу үчүн төмөнкү эки буйрукту иштетүү жакшы практика.

sudo apt-get update

sudo apt-get жогорулатуу

Үстөл интерфейсин ишке киргизүү үчүн буйрук сабынын интерфейсине төмөнкүлөрдү териңиз.

sudo startx

Кийинки орнотула турган нерсе - бул интернет байланышы, ошондо сиз репо жана башка программаларды орното аласыз. SmartThings API'ге тийүү үчүн интернет байланышы дагы талап кылынат. Туташуу үчүн бул колдонмону ээрчиңиз. Иш столунан түз эле алдыга. Мен тегерегиндеги USB wifi адаптерин колдондум.

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

Альтернатива Raspberry Pi үчүн, сиз дагы бир компьютерди колдонуп, Linux OSти учурдагы ОС менен кошо кош жүктөө үчүн (оорунун түрү, анткени экөөнүн ортосунда которулуу үчүн өчүрүп күйгүзүүңүз керек) же Linux OSтин мисалын иштете аласыз. VirtualBox. Бул долбоорду алгач иштетүү үчүн, мен бул колдонмону колдонуп, Raspberry Pi Desktop менен Debian Stretchти виртуалдык кутуга орноттум:

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

(Эскертүү: Конок Аддондорду жогоруда көрсөтүлгөн көрсөтмөлөргө ылайык туура орнотуп алганыма көп убакыт болду. Эч качан хост менен кардардын ортосунда иштөө үчүн эч нерсе болгон эмес, бул жакшы болмок, бирок мен резолюцияны колдонуу үчүн жаңыртылдым. Менин толук мониторумдун өлчөмү. Бул Google rabit тешиктеринин сериясы болчу, мен бул жерде документ кылбайм.)

2 -кадам: Python 3 орнотуңуз

Python3 мурунтан эле Raspian Stretch менен орнотулушу керек.

3 -кадам: таяк модулун орнотуу

GammaGames тарабынан түзүлгөн бул көрсөтмөнү аткарыңыз

Мен адегенде kano_wand репонун клондоштуруудан мурун башка каталогго өтүшүм керек болчу, антпесе менин питон сценарийим аны таба алган жок. Кыязы, кандайдыр бир файлдагы кээ бир жол шилтемелерин жаңыртса болмок, бирок мен муну казган жокмун.

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

git clone

sudo pip3 bluepy moosegesture орнотуу

Тийиштүү уруксаттарды алуу үчүн булар үчүн sudo колдонушу керек болчу. Ошондой эле numpy орнотуу үчүн төмөнкү буйруктарды колдонууга туура келди, эмне үчүн болбосун, пипти иштей алган жок. Башка жол маселеси болушу мүмкүн, бирок бул мен үчүн иштеди, ошондуктан мен аны менен кеттим:

sudo apt-get python3-numpy орнотуу

Акыр -аягы, питон скриптинен планы иштетүү үчүн тийиштүү уруксаттарды алуу үчүн, мен бул буйрукту таптым.

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

Бул биздин сценарийди иштетүү үчүн талап кылынат. GammaGames гидинин калган бөлүгү питон скриптинде талап кылынган этап -этабы менен жүрөт. Бул сценарийдин структураланганын жана ар бир объектинин эмне кылып жатканын түшүнүү үчүн эң сонун бөлүштүрүү. Бул документтерди бергени үчүн GammaGamesке чоң рахмат. Ошондой эле скрипттин бир бөлүгүн оңдоо үчүн пайдалуу болушу мүмкүн. Мисалы, көрсөтүлгөн биринчи объект таякчаларды сканерлөө жана табылган таякчалардын тизмесин кайтаруу тапшырмасын аткарат. Сиздин Bluetooth орнотууңуз бардык цилиндрлерди күйгүзүп жатканын жакшы текшерүү. Бул үчүн, кодду төмөнкү репода табылган test1_BLE_wand_detect.pyден көчүрө аласыз:

github.com/maspieljr/SmartWand

4 -кадам: SmartThings CLI орнотуу

Төмөндө githubдагы smartthings_cli репога киргизилген нускамалардын көчүрмөсү келтирилген (https://github.com/rllynch/smartthings_cli).

Мен бул жерге кичинекей твиттерди коштум, бардыгы иштеши үчүн. Муну бергени үчүн дагы бир жолу rllynchке рахмат.

1) Менин SmartApps программасына кирип, астына groovy/app.groovy коду менен жаңы SmartApp түзүңүз.

*Эскертүү биринчи кадамда SmartThings вебсайтына шилтеме бар. Акылдуу нерселериңиздин эсеби кайда экенине көңүл буруңуз. Бул башка сайт мага кирүүгө уруксат бергени үчүн мени бир азга чуркатты, бирок менин эч нерсемди таба алган жок. Мен SmartThings аккаунтума жетүү үчүн төмөнкү шилтемени колдонушум керек болчу.

(Мен муну иреттеп өткөргөн 2 саатка кош келиңиз:) бул кийинки баскычта да маанилүү болот.)

2) Колдонмонун жөндөөлөрүн чыкылдатыңыз жана OAuth астында, Smart Appде OAuthты иштетүүнү басыңыз. OAuth Кардар IDсин жана OAuth Кардар Сырын жазыңыз. OAuth Кардар Дисплейин SmartThings CLI Controlго жаңыртыңыз. Жаңыртууну басыңыз.

3) Менин SmartApps баракчама кайтып, андан кийин SmartThings CLI Control баскычын чыкылдатыңыз. Жарыялоо => Мен үчүн басыңыз.

4) smartthings_cli репозиторийин клондоштуруңуз, эгер кааласаңыз virtualenv түзүңүз (мен андай кылган жокмун), андан кийин CLIENTID менен CLIENTSECRETти 2 -кадамдагы ID менен сырды алмаштырып, төмөнкү буйруктарды аткарыңыз.

Акылдуу нерселер репонун клондоштуруу үчүн төмөнкү буйрукту колдонсоңуз болот. Таяк модулун орнотуу учурунда түзүлгөн линукс буйругу сиздин проект каталогуңузда экенине ишениңиз.

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…

Сунушталууда: