Съдържание:
- Стъпка 1: Инсталирайте Linux на Raspberry Pi
- Стъпка 2: Инсталирайте Python 3
- Стъпка 3: Настройка на модула на пръчката
- Стъпка 4: Настройте CLI на SmartThings
- step 5: improve response
- step 6: make smartwand execute on raspberry pi bootup
Видео: SmartWand: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Този проект има за цел да получи скрипт на Python, който да контролира Smartthings с кодиращата пръчка Kano като вход.
Дъщерите ми (8 и 12) са големи фенове на Хари Потър и получиха кодиращата пръчка Kano за Коледа. Приложението за кодиране на Kano е страхотно и те се забавляват с него. Страхотен инструмент за въвеждане на концепции за кодиране.
Имаме и малко домашна автоматизация, поръсена в цялата къща със SmartThings, Phillips Hue, Logitech Harmony хъб и т.н. Нокс при мен. Звучеше като забавно предизвикателство, затова се заех.
Трябваше да отида с операционна система Linux, тъй като критичен елемент (библиотека на Bluepy python за свързване към пръчката Bluetooth) е наличен само на платформи на Linux. Удобно така или иначе от гледна точка на евентуалното желание да се изпълни това на Raspberry Pi.
Тук има две основни справки, без които никога не бих могъл да направя това.
Благодарение на GammaGames за създаването и споделянето на скрипт на python за четене на кодиращата пръчка Kano.
github.com/GammaGames/kano-wand-demos/blob…
и
Благодарение на rllynch за създаването и споделянето на скрипт на python за интерфейс на командния ред SmartThings.
github.com/rllynch/smartthings_cli
За да запазя това непокътнато, ще копирам повечето стъпки в този Instructable, за да заснема всички ощипвания, от които се нуждая, за да го накарам да работи върху моята настройка.
Ето какво ще ви трябва:
- Хари Потър Кано комплект за кодиране (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
Следвайте връзките по -долу, за да инсталирате Linux операционна система на Raspberry Pi. Използвах Raspbian Stretch с десктоп и препоръчителен софтуер и мигах с Etcher.
www.raspberrypi.org/learning/software-guid…
След като завършите инсталацията и имате командния ред на Linux, добра практика е да изпълните следните две команди, за да сте сигурни, че всичко е актуално.
sudo apt-get update
sudo apt-get надстройка
Въведете следното в интерфейса на командния ред, за да стартирате потребителския интерфейс на работния плот.
sudo startx
Следващото нещо, което трябва да настроите, е интернет връзка, така че да можете да стигнете до репо и така да инсталирате допълнителен софтуер. Интернет връзка също ще бъде необходима, за да се достигне API на SmartThings. Следвайте това ръководство, за да се свържете. Доста направо напред от работния плот. Използвах USB wifi адаптер, който имах наоколо.
www.raspberrypi.org/learning/software-guid…
Като алтернатива на Raspberry Pi, можете да използвате друг съществуващ компютър, за да стартирате двойно Linux операционна система заедно със съществуващата си операция (нещо като болка, защото трябва да рестартирате, за да превключвате между двете) или да стартирате екземпляр на операционната система Linux на VirtualBox. За да заработя първоначално този проект, инсталирах Debian Stretch с Raspberry Pi Desktop във Virtual Box, използвайки това ръководство:
thepi.io/how-to-run-raspberry-pi-desktop-o…
(Забележка: Имах доста време да инсталирам правилно гост добавките съгласно инструкциите по -горе. Никога не съм работил с изрязване и поставяне между хост и клиент, което би било хубаво, но успях да актуализирам разделителната способност, за да използвам моя пълен размер на монитора. Това беше поредица от дупки за заек в Google, които няма да документирам тук.)
Стъпка 2: Инсталирайте Python 3
Python3 вече трябва да бъде инсталиран с Raspian Stretch.
Стъпка 3: Настройка на модула на пръчката
Следвайте това ръководство, създадено от GammaGames
Първо трябваше да премина в друга директория, преди да клонирам repo на kano_wand, в противен случай моят скрипт на python не можа да го намери. Вероятно би могъл да актуализира някои препратки към път в някой файл някъде, но аз не се задълбочих в това.
cd /usr/local/lib/python3.5/dist-packages
git clone
sudo pip3 инсталирате bluepy moosegesture
Трябваше да използвам sudo за тях, за да получа подходящите разрешения. Също така трябваше да използвам следните команди вместо да инсталирам numpy, по някаква причина, не можа да накара pip да работи. Може би е имало друг проблем с пътя, но това ми свърши работа, затова отидох с него:
sudo apt-get install python3-numpy
И накрая, за да получа подходящите разрешения за изпълнение на bluepy от скрипта на python, намерих тази команда.
sudo setcap 'cap_net_raw, cap_net_admin+eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper
Това е всичко, което е необходимо, за да стартира нашия скрипт. Останалата част от ръководството за GammaGames преминава през стъпка по стъпка, необходими в скрипта на python. Това е чудесна разбивка, за да разберете по -нататък как е структуриран скриптът и какво прави всеки обект. Голямо благодаря на GammaGames за предоставянето на тази документация. Също така може да бъде полезно за отстраняване на неизправности в част от скрипта. Например, първият показан обект изпълнява задачата да сканира за пръчки и да върне списък с откритите пръчки. Добра проверка, че настройката ви за bluetooth работи на всички цилиндри. За да направите това, можете да копирате кода от test1_BLE_wand_detect.py, намерен в следното репо:
github.com/maspieljr/SmartWand
Стъпка 4: Настройте CLI на SmartThings
По -долу са копие на инструкциите, включени в репото на smartthings_cli на github (https://github.com/rllynch/smartthings_cli).
Тук съм включил малките ощипвания, които трябваше да направя в настройката си, за да работи всичко. Отново благодаря на rllynch за предоставяне на това.
1) Влезте в и под Моите SmartApps, създайте ново SmartApp с кода в groovy/app.groovy.
*Обърнете внимание, че в първата стъпка има препратка към уебсайт на SmartThings. Обърнете специално внимание къде е вашият акаунт за smartthings. Това ме изненада за известно време, тъй като другият сайт ми позволи да вляза, но не можах да намеря нищо от моите неща. Трябваше да използвам следната връзка, за да стигна до моя акаунт в SmartThings.https://graph-na04-useast2.api.smartthings.com
(Добре дошли сте за 2 часа, които прекарах, за да реша това:) Това ще бъде важно и на по -късната стъпка.)
2) Щракнете върху Настройки на приложението и под OAuth щракнете върху Активиране на OAuth в Smart App. Запишете OAuth Client ID и OAuth Client Secret. Актуализирайте OAuth Client Display до SmartThings CLI Control. Щракнете върху Актуализиране.
3) Върнете се в My SmartApps, след което щракнете върху SmartThings CLI Control. Щракнете върху Публикуване => За мен.
4) Клонирайте хранилището smartthings_cli, създайте virtualenv, ако желаете (не го направих), след това изпълнете следните команди, като замените CLIENTID и CLIENTSECRET с ID и секрет от стъпка 2.
За да клонирате репо на smartthings, можете да използвате следната команда. Уверете се, че командният ред на Linux е в директорията на вашия проект, създадена по време на настройката на Wand Module.
git клонинг >
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…
Препоръчано:
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: 7 стъпки
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: Понякога вибрациите са причина за сериозни проблеми в много приложения. От валове и лагери на машината до работа на твърдия диск, вибрациите причиняват повреда на машината, ранна подмяна, ниска производителност и нанасят сериозен удар върху точността. Мониторинг
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: 3 стъпки
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: КУПЕТЕ (щракнете върху теста, за да закупите/посетете уеб страницата) STM32F767ZISUPPORTED SOFTWARE · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORKBENCH използва се за програмиране на STM микроконтролери
Как да направите 4G LTE двойна BiQuade антена Лесни стъпки: 3 стъпки
Как да направя 4G LTE двойна BiQuade антена лесни стъпки: През повечето време, с което се сблъсквах, нямам добра сила на сигнала за ежедневните ми работи. Така. Търся и опитвам различни видове антени, но не работи. След загубено време намерих антена, която се надявам да направя и изпробвам, защото тя не градивен принцип
Дизайн на играта с бързо движение в 5 стъпки: 5 стъпки
Дизайн на игра с Flick в 5 стъпки: Flick е наистина прост начин да направите игра, особено нещо като пъзел, визуален роман или приключенска игра
Система за предупреждение за паркиране на автомобил Arduino - Стъпки по стъпка: 4 стъпки
Система за предупреждение за паркиране на автомобил Arduino | Стъпки по стъпка: В този проект ще проектирам обикновена верига за сензори за паркиране на автомобил Arduino, използвайки Arduino UNO и HC-SR04 ултразвуков сензор. Тази базирана на Arduino система за предупреждение за автомобил за заден ход може да се използва за автономна навигация, измерване на роботи и други обхвати