Оглавление:
- Шаг 1. Установите Linux на Raspberry Pi
- Шаг 2: установите Python 3
- Шаг 3: Настройте модуль Wand
- Шаг 4. Настройте интерфейс командной строки SmartThings
- step 5: improve response
- step 6: make smartwand execute on raspberry pi bootup
Видео: SmartWand: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Этот проект предназначен для получения скрипта Python для управления Smartthings с помощью палочки кодирования Kano в качестве входных данных.
Мои дочери (8 и 12) - большие поклонники Гарри Поттера, и на Рождество они получили палочку кодирования Кано. Приложение для кодирования Kano - это круто, и им это нравится. Отличный инструмент для ознакомления с концепциями программирования.
У нас также есть немного домашней автоматизации, разбросанной по всему дому с помощью SmartThings, Phillips Hue, Logitech Harmony hub и т. Д. Они неизбежно дошли до точки, когда они захотели включить огни рождественской елки с помощью палочки и начали бросать такие термины, как Lumos и Нокс у меня. Звучало как забавное испытание, поэтому я взялся за него.
Пришлось использовать ОС Linux, поскольку критический элемент (библиотека Bluepy python для подключения к палочке Bluetooth) доступен только на платформах Linux. В любом случае удобно с точки зрения того, что в конечном итоге захочется запустить это на Raspberry Pi.
Здесь есть две основные ссылки, без которых я бы никогда не смог этого сделать.
Спасибо GammaGames за создание и совместное использование скрипта Python для чтения палочки кодирования Кано.
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)
- USB-адаптер Bluetooth (я использовал USB-адаптер Kensington Bluetooth 4.0)
- Подключение к Интернету (для 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 upgrade
Введите следующее в интерфейсе командной строки, чтобы запустить пользовательский интерфейс рабочего стола.
sudo startx
Следующее, что нужно настроить, - это подключение к Интернету, чтобы вы могли получить доступ к репозиториям и тому подобное, чтобы установить дополнительное программное обеспечение. Также потребуется подключение к Интернету для доступа к SmartThings API. Следуйте этому руководству, чтобы подключиться. Довольно прямо с рабочего стола. Я использовал USB-адаптер Wi-Fi, который у меня был.
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: Настройте модуль Wand
Следуйте этому руководству, созданному GammaGames
Сначала мне пришлось перейти в другой каталог, прежде чем клонировать репозиторий kano_wand, иначе мой скрипт python не смог его найти. Возможно, где-то можно было обновить ссылки на пути в каком-нибудь файле, но я не стал вдаваться в подробности.
компакт-диск /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. Настройте интерфейс командной строки SmartThings
Ниже представлена копия инструкций, включенных в репозиторий smartthings_cli на github (https://github.com/rllynch/smartthings_cli).
Я включил сюда небольшие настройки, которые мне пришлось внести в свою настройку, чтобы все заработало. Еще раз спасибо rllynch за это.
1) Войдите в My SmartApps и создайте новое SmartApp с кодом в groovy / app.groovy.
* Обратите внимание, что на первом этапе есть ссылка на веб-сайт SmartThings. Обратите особое внимание на то, где находится ваша учетная запись smartthings. Это на время сбило меня с толку, так как другой сайт разрешил мне войти, но не смог найти ничего из моих вещей. Мне пришлось использовать следующую ссылку, чтобы попасть в мою учетную запись SmartThings.
(Добро пожаловать на те 2 часа, которые я потратил на то, чтобы разбираться в этом:), это также будет важно на более позднем этапе.)
2) Нажмите «Настройки приложения» и в разделе «OAuth» нажмите «Включить OAuth в смарт-приложении». Запишите идентификатор клиента OAuth и секрет клиента OAuth. Обновите дисплей клиента OAuth до SmartThings CLI Control. Щелкните Обновить.
3) Вернитесь в My SmartApps, затем нажмите SmartThings CLI Control. Щелкните Опубликовать => Для меня.
4) Клонируйте репозиторий smartthings_cli, при желании создайте virtualenv (я этого не делал), затем выполните следующие команды, заменив CLIENTID и CLIENTSECRET идентификатором и секретом из шага 2.
Чтобы клонировать репозиторий smartthings, вы можете использовать следующую команду. Убедитесь, что командная строка Linux находится в каталоге вашего проекта, созданном во время установки модуля Wand.
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…
Рекомендуемые:
Дизайн игры в Flick за 5 шагов: 5 шагов
Дизайн игры в Flick за 5 шагов: Flick - это действительно простой способ создания игры, особенно чего-то вроде головоломки, визуального романа или приключенческой игры
Счетчик шагов - Micro: Bit: 12 шагов (с изображениями)
Счетчик шагов - Микро: Бит: Этот проект будет счетчиком шагов. Мы будем использовать датчик акселерометра, встроенный в Micro: Bit, для измерения наших шагов. Каждый раз, когда Micro: Bit трясется, мы добавляем 2 к счетчику и отображаем его на экране
Играйте в Doom на своем IPod за 5 простых шагов !: 5 шагов
Играйте в Doom на своем IPod за 5 простых шагов!: Пошаговое руководство по двойной загрузке Rockbox на iPod, чтобы играть в Doom и десятки других игр. Это действительно легко сделать, но многие люди до сих пор удивляются, когда видят, как я играю дум на своем iPod, и путаются с инструкциями
Кормушка для рыбы Arduino Uno за 6 простых и простых шагов !: 6 шагов
Arduino Uno Fish Feeder за 6 простых и дешевых шагов !: Итак, для этого проекта может потребоваться немного предыстории. Людям с домашними рыбками, вероятно, приходилось сталкиваться с той же проблемой, что и мне: отпуск и забывчивость. Я постоянно забывала покормить рыбу и всегда старалась это сделать, пока она не упала
Акустическая левитация с Arduino Uno, шаг за шагом (8 шагов): 8 шагов
Акустическая левитация с Arduino Uno Пошаговая инструкция (8 шагов): ультразвуковые преобразователи звука L298N Женский адаптер питания постоянного тока с штыревым контактом постоянного тока Arduino UNOBreadboard Как это работает: сначала вы загружаете код в Arduino Uno (это микроконтроллер, оснащенный цифровым и аналоговые порты для преобразования кода (C ++)