Tabla de contenido:
- Paso 1: Instale Linux en Raspberry Pi
- Paso 2: instala Python 3
- Paso 3: Configurar el módulo de varita
- Paso 4: Configurar la CLI de SmartThings
- step 5: improve response
- step 6: make smartwand execute on raspberry pi bootup
Video: SmartWand: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Este proyecto es para obtener un script de Python para controlar Smartthings con la varita de codificación Kano como entrada.
Mis hijas (8 y 12) son grandes fanáticas de Harry Potter y obtuvieron la varita codificadora Kano para Navidad. La aplicación de codificación Kano es genial y se están divirtiendo con ella. Gran herramienta para introducir conceptos de codificación.
También tenemos un poco de domótica esparcida por toda la casa con SmartThings, Phillips Hue, Logitech Harmony Hub, etc. Inevitablemente llegaron al punto en el que querían encender las luces del árbol de Navidad con la varita y comenzaron a lanzar términos como Lumos y Nox a mí. Parecía un desafío divertido, así que lo asumí.
Tenía que ir con un sistema operativo Linux ya que un elemento crítico (biblioteca de Python Bluepy para conectarse a la varita Bluetooth) solo está disponible en plataformas Linux. Conveniente de todos modos desde el punto de vista de eventualmente querer ejecutar esto en una Raspberry Pi.
Aquí hay dos referencias principales, sin las cuales, nunca hubiera podido hacer esto.
Gracias a GammaGames por crear y compartir un script de Python para leer la varita de codificación de Kano.
github.com/GammaGames/kano-wand-demos/blob…
y
Gracias a rllynch por crear y compartir un script de Python para una interfaz de línea de comandos de SmartThings.
github.com/rllynch/smartthings_cli
Para mantener esto intacto, voy a copiar la mayoría de los pasos a este Instructable para capturar cualquier ajuste que necesite para que funcione en mi configuración.
Esto es lo que necesitará:
- Kit de codificación Harry Potter Kano (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
- Un sistema operativo basado en Linux (tengo uno en funcionamiento con VirtualBox, luego lo instalé en una Raspberry Pi)
- Un adaptador USB Bluetooth (utilicé un adaptador USB Bluetooth 4.0 de Kensington)
- Conexión a Internet (para el RPi, utilicé un adaptador WiFi USB Edimax que tenía de un proyecto anterior)
Paso 1: Instale Linux en Raspberry Pi
Siga los enlaces a continuación para instalar un sistema operativo Linux en la Raspberry Pi. Usé Raspbian Stretch con el software de escritorio y recomendado y lo flasheé con Etcher.
www.raspberrypi.org/learning/software-guid…
Una vez que haya completado la instalación y tenga un símbolo del sistema de Linux, es una buena práctica ejecutar los siguientes dos comandos para asegurarse de que todo esté actualizado.
sudo apt-get update
sudo apt-get upgrade
Escriba lo siguiente en la interfaz de línea de comandos para iniciar la interfaz de usuario del escritorio.
sudo startx
Lo siguiente que debe configurar es una conexión a Internet para que pueda acceder a repositorios y demás para instalar más software. También se requerirá conexión a Internet para acceder a la API de SmartThings. Siga esta guía para conectarse. Bastante sencillo desde el escritorio. Usé un adaptador wifi USB que tenía por ahí.
www.raspberrypi.org/learning/software-guid…
Alternativamente a la Raspberry Pi, puede usar otra computadora existente para arrancar dual un sistema operativo Linux junto con su sistema operativo existente (una especie de molestia porque tiene que reiniciar para cambiar entre los dos) o ejecutar una instancia del sistema operativo Linux en un VirtualBox. Para que este proyecto funcione inicialmente, instalé Debian Stretch con Raspberry Pi Desktop en una caja virtual usando esta guía:
thepi.io/how-to-run-raspberry-pi-desktop-o…
(nota: Me lo pasé genial instalando los complementos para invitados correctamente según las instrucciones anteriores. Nunca conseguí que el cortar y pegar entre el host y el cliente funcionara, lo que habría sido bueno, pero logré actualizar la resolución para utilizarla mi tamaño de monitor completo. Esta fue una serie de agujeros de rabit de Google que no documentaré aquí).
Paso 2: instala Python 3
Python3 ya debería estar instalado con Raspian Stretch.
Paso 3: Configurar el módulo de varita
Sigue esta guía creada por GammaGames
Primero tuve que cambiar a un directorio diferente antes de clonar el repositorio kano_wand, de lo contrario, mi script de Python no podría encontrarlo. Probablemente podría haber actualizado algunas referencias de ruta en algún archivo en algún lugar, pero no profundicé en eso.
cd /usr/local/lib/python3.5/dist-packages
clon de git
sudo pip3 instalar bluepy moosegesture
Tuve que usar sudo para que estos obtuvieran los permisos adecuados. También tuve que usar los siguientes comandos en su lugar para instalar numpy, por alguna razón, no pudo hacer que pip funcionara. Podría haber sido otro problema de ruta, pero esto funcionó para mí, así que lo seguí:
sudo apt-get install python3-numpy
Por último, para obtener los permisos adecuados para ejecutar bluepy desde el script de Python, encontré este comando.
sudo setcap 'cap_net_raw, cap_net_admin + eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper
Esto es todo lo que se necesita para poner en marcha nuestro script. El resto de la guía de GammaGames recorre las piezas paso a paso requeridas en el script de Python. Es un gran desglose para comprender mejor cómo está estructurado el script y qué está haciendo cada objeto. Muchas gracias a GammaGames por proporcionar esta documentación. También podría ser útil para solucionar problemas de una sección del script. Por ejemplo, el primer objeto mostrado realiza la tarea de buscar varitas y devolver una lista de varitas descubiertas. Buena verificación de que su configuración de bluetooth está funcionando en todos los cilindros. Para hacer esto, puede copiar el código de test1_BLE_wand_detect.py que se encuentra en el siguiente repositorio:
github.com/maspieljr/SmartWand
Paso 4: Configurar la CLI de SmartThings
A continuación se muestra una copia de las instrucciones incluidas en el repositorio smartthings_cli en github (https://github.com/rllynch/smartthings_cli).
He incluido aquí los pequeños ajustes que tuve que hacer en mi configuración para que todo funcionara. Gracias de nuevo a rllynch por proporcionar esto.
1) Inicie sesión y en Mis SmartApps, cree una nueva SmartApp con el código en groovy / app.groovy.
* Tenga en cuenta que en el primer paso hay una referencia a un sitio web de SmartThings. Preste mucha atención a dónde está su cuenta de smartthings. Esto me hizo tropezar por un tiempo ya que el otro sitio me permitió iniciar sesión, pero no pude encontrar ninguna de mis cosas. Tuve que usar el siguiente enlace para acceder a mi cuenta de SmartThings.
(De nada por las 2 horas que pasé resolviendo eso:) esto también será importante en el paso posterior).
2) Haga clic en Configuración de la aplicación y, en OAuth, haga clic en Habilitar OAuth en la aplicación inteligente. Anote el ID de cliente OAuth y el secreto del cliente OAuth. Actualice la pantalla del cliente OAuth a SmartThings CLI Control. Haga clic en Actualizar.
3) Vuelva a My SmartApps y luego haga clic en SmartThings CLI Control. Haga clic en Publicar => Para mí.
4) Clone el repositorio smartthings_cli, cree un virtualenv si lo desea (no hice esto), luego ejecute los siguientes comandos, reemplazando CLIENTID y CLIENTSECRET con la ID y el secreto del paso 2.
Para clonar el repositorio de smartthings, puede utilizar el siguiente comando. Asegúrese de que el símbolo del sistema de Linux esté en el directorio de su proyecto creado durante la configuración del módulo Wand.
clon de 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…
Recomendado:
Cómo hacer una antena 4G LTE Doble BiQuade Pasos sencillos: 3 pasos
Cómo hacer una antena 4G LTE Doble BiQuade Pasos sencillos: La mayoría de las veces que me enfrenté, no tengo una buena intensidad de señal para mis trabajos diarios. Entonces. Busco y pruebo diferentes tipos de antena pero no trabajo. Después de perder el tiempo, encontré una antena que espero hacer y probar, porque es un principio de construcción, no
Diseño de juegos en Flick en 5 pasos: 5 pasos
Diseño de juegos en Flick en 5 pasos: Flick es una forma realmente sencilla de hacer un juego, especialmente algo como un rompecabezas, una novela visual o un juego de aventuras
Detección facial en Raspberry Pi 4B en 3 pasos: 3 pasos
Detección de rostros en Raspberry Pi 4B en 3 pasos: En este Instructable vamos a realizar la detección de rostros en Raspberry Pi 4 con Shunya O / S usando la Biblioteca Shunyaface. Shunyaface es una biblioteca de reconocimiento / detección de rostros. El proyecto tiene como objetivo lograr la velocidad de detección y reconocimiento más rápida con
¿Cómo hacer un contador de pasos ?: 3 pasos (con imágenes)
¿Cómo hacer un contador de pasos ?: Solía desempeñarme bien en muchos deportes: caminar, correr, andar en bicicleta, jugar al bádminton, etc. Me encanta andar en bicicleta para viajar en poco tiempo. Bueno, mira mi corpulento vientre … Bueno, de todos modos, decido volver a hacer ejercicio. ¿Qué equipo debo preparar?
Espejo de tocador de bricolaje en sencillos pasos (usando tiras de luces LED): 4 pasos
Espejo de tocador de bricolaje en sencillos pasos (usando tiras de luces LED): En esta publicación, hice un espejo de tocador de bricolaje con la ayuda de las tiras de LED. Es realmente genial y debes probarlos también