Índice:

SmartWand: 6 etapas
SmartWand: 6 etapas

Vídeo: SmartWand: 6 etapas

Vídeo: SmartWand: 6 etapas
Vídeo: Pulseira inteligente smartBand 6 entrega rapida 2024, Julho
Anonim
SmartWand
SmartWand

Este projeto é para obter um script Python para controlar Smartthings com a varinha de codificação Kano como uma entrada.

Minhas filhas (8 e 12) são grandes fãs de Harry Potter e ganharam a Varinha de Codificação Kano no Natal. O aplicativo de codificação Kano é legal e eles estão se divertindo com ele. Ótima ferramenta para introduzir conceitos de codificação.

Também temos um pouco de automação residencial espalhada por toda a casa com SmartThings, Phillips Hue, hub Logitech Harmony, etc … Eles inevitavelmente chegaram ao ponto em que queriam acender as luzes da árvore de Natal com a varinha e começaram a lançar termos como Lumos e Nox para mim. Parecia um desafio divertido, então aceitei.

Tive que ir com um sistema operacional Linux, pois um elemento crítico (biblioteca Bluepy python para conexão com a varinha Bluetooth) está disponível apenas em plataformas Linux. De qualquer forma, conveniente do ponto de vista de eventualmente querer rodar isso em um Raspberry Pi.

Existem duas referências principais aqui, sem as quais eu nunca teria sido capaz de fazer isso.

Obrigado a GammaGames por criar e compartilhar um script Python para ler a varinha de codificação Kano.

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

e

Obrigado a rllynch por criar e compartilhar um script Python para uma interface de linha de comando SmartThings.

github.com/rllynch/smartthings_cli

Para manter isso intacto, copiarei a maioria das etapas neste Instructable para capturar todos os ajustes necessários para fazê-lo funcionar em minha configuração.

Aqui está o que você precisa:

  • Harry Potter Kano Coding Kit (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Um sistema operacional baseado em Linux (eu tenho um instalado e funcionando com o VirtualBox, em seguida, instalei em um Raspberry Pi)
  • Um adaptador USB Bluetooth (usei um adaptador USB Kensington Bluetooth 4.0)
  • Conexão com a Internet (para o RPi, usei um adaptador WiFi USB da Edimax que tinha em um projeto anterior)

Etapa 1: Instale o Linux no Raspberry Pi

Siga os links abaixo para instalar um sistema operacional Linux no Raspberry Pi. Usei Raspbian Stretch com desktop e software recomendado e flashed com Etcher.

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

Depois de concluir a instalação e ter um prompt de comando do Linux, é uma boa prática executar os dois comandos a seguir para ter certeza de que tudo está atualizado.

sudo apt-get update

sudo apt-get upgrade

Digite o seguinte na interface da linha de comando para iniciar a IU da área de trabalho.

sudo startx

A próxima coisa a configurar é uma conexão com a Internet para que você possa obter os repositórios e outros recursos para instalar outros softwares. A conexão com a Internet também será necessária para acessar a API SmartThings. Siga este guia para se conectar. Bem direto da área de trabalho. Usei um adaptador wi-fi USB que tinha por perto.

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

Alternativamente ao Raspberry Pi, você pode usar outro computador existente para inicializar duas vezes um sistema operacional Linux junto com seu sistema operacional existente (uma espécie de dor porque você tem que reiniciar para alternar entre os dois) ou executar uma instância do sistema operacional Linux em um VirtualBox. Para fazer este projeto funcionar inicialmente, instalei o Debian Stretch com Raspberry Pi Desktop em uma caixa virtual usando este guia:

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

(Observação: tive muita dificuldade para instalar os complementos de convidado corretamente de acordo com as instruções acima. Nunca consegui cortar e colar entre o host e o cliente para funcionar, o que teria sido bom, mas consegui atualizar a resolução para utilizar meu monitor completo. Esta foi uma série de buracos de coelho do Google que não documentarei aqui.)

Etapa 2: instalar o Python 3

Python3 já deve estar instalado com Raspian Stretch.

Etapa 3: configurar o módulo da varinha

Siga este guia criado por GammaGames

Primeiro, tive que mudar para um diretório diferente antes de clonar o repo kano_wand, caso contrário, meu script python não poderia encontrá-lo. Provavelmente poderia ter atualizado algumas referências de caminho em algum arquivo em algum lugar, mas não me aterrei a isso.

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

git clone

sudo pip3 install bluepy moosegesture

Tive que usar o sudo para obter as permissões adequadas. Também tive que usar os seguintes comandos em vez de instalar o numpy, por qualquer motivo, não conseguiu fazer o pip funcionar. Pode ter sido outro problema de caminho, mas funcionou para mim, então fui com ele:

sudo apt-get install python3-numpy

Por último, a fim de obter as permissões adequadas para executar o bluepy a partir do script Python, encontrei este comando.

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

Isso é tudo o que é necessário para colocar nosso script em funcionamento. O restante do guia GammaGames percorre as peças passo a passo exigidas no script python. É uma grande análise para entender melhor como o script está estruturado e o que cada objeto está fazendo. Muito obrigado a GammaGames por fornecer esta documentação. Também pode ser útil para solucionar problemas em uma seção do script. Por exemplo, o primeiro objeto mostrado executa a tarefa de procurar varinhas e retornar uma lista de varinhas descobertas. Boa verificação de que sua configuração de bluetooth está disparando em todos os cilindros. Para fazer isso, você pode copiar o código de test1_BLE_wand_detect.py encontrado no seguinte repositório:

github.com/maspieljr/SmartWand

Etapa 4: configurar SmartThings CLI

Abaixo está uma cópia das instruções incluídas no repositório smartthings_cli no github (https://github.com/rllynch/smartthings_cli).

Eu incluí aqui os pequenos ajustes que tive que fazer na minha configuração para fazer tudo funcionar. Obrigado novamente a rllynch por fornecer isso.

1) Faça login e em Meus SmartApps, crie um novo SmartApp com o código em groovy / app.groovy.

* Observe que na primeira etapa há uma referência a um site da SmartThings. Preste muita atenção em onde está sua conta smartthings. Isso me deixou confuso por um tempo, pois o outro site permitiu que eu fizesse o login, mas não conseguiu encontrar nenhuma das minhas coisas. Tive de usar o seguinte link para acessar minha conta SmartThings.https://graph-na04-useast2.api.smartthings.com

(De nada, nas 2 horas que passei resolvendo isso:) isso também será importante em uma etapa posterior.)

2) Clique em Configurações do aplicativo e, em OAuth, clique em Ativar OAuth no aplicativo inteligente. Anote o ID do cliente OAuth e o Segredo do cliente OAuth. Atualize a exibição do cliente OAuth para o controle CLI SmartThings. Clique em Atualizar.

3) Volte para Meus SmartApps e clique em SmartThings CLI Control. Clique em Publicar => Para mim.

4) Clone o repositório smartthings_cli, crie um virtualenv se desejar (não fiz isso) e execute os seguintes comandos, substituindo CLIENTID e CLIENTSECRET pelo ID e segredo da etapa 2.

Para clonar o repositório smartthings, você pode usar o seguinte comando. Certifique-se de que o prompt de comando do linux esteja no diretório do projeto criado durante a configuração do módulo 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…

Recomendado: