Table des matières:
- Étape 1: Installer Linux sur Raspberry Pi
- Étape 2: Installez Python 3
- Étape 3: Configurer le module de baguette
- Étape 4: Configurer la CLI de SmartThings
- step 5: improve response
- step 6: make smartwand execute on raspberry pi bootup
Vidéo: SmartWand : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Ce projet consiste à obtenir un script Python pour contrôler Smartthings avec la baguette de codage Kano en entrée.
Mes filles (8 et 12 ans) sont de grandes fans de Harry Potter et ont reçu la baguette de codage Kano pour Noël. L'application de codage Kano est cool et ils s'amusent avec. Excellent outil pour introduire les concepts de codage.
Nous avons également un peu de domotique saupoudrée dans toute la maison avec SmartThings, Phillips Hue, Logitech Harmony hub, etc. Nox à moi. Cela ressemblait à un défi amusant, alors je l'ai relevé.
A dû aller avec un système d'exploitation Linux car un élément critique (bibliothèque python Bluepy pour se connecter à la baguette Bluetooth) n'est disponible que sur les plates-formes Linux. Pratique de toute façon du point de vue de vouloir éventuellement exécuter cela sur un Raspberry Pi.
Il y a deux références principales ici, sans lesquelles, je n'aurais jamais pu faire cela.
Merci à GammaGames d'avoir créé et partagé un script python pour lire la baguette de codage Kano.
github.com/GammaGames/kano-wand-demos/blob…
et
Merci à rllynch d'avoir créé et partagé un script python pour une interface de ligne de commande SmartThings.
github.com/rllynch/smartthings_cli
Afin de garder cela intact, je vais copier la plupart des étapes sur ce Instructable pour capturer tous les réglages dont j'avais besoin pour le faire fonctionner sur ma configuration.
Voici ce dont vous aurez besoin:
- Kit de codage Harry Potter Kano (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
- Un système d'exploitation basé sur Linux (j'en ai un opérationnel avec VirtualBox, puis installé sur un Raspberry Pi)
- Un adaptateur USB Bluetooth (j'ai utilisé un adaptateur USB Bluetooth 4.0 Kensington)
- Connexion Internet (Pour le RPi, j'ai utilisé un adaptateur WiFi USB Edimax que j'avais d'un projet précédent)
Étape 1: Installer Linux sur Raspberry Pi
Suivez les liens ci-dessous pour installer un système d'exploitation Linux sur le Raspberry Pi. J'ai utilisé Raspbian Stretch avec le bureau et les logiciels recommandés et j'ai flashé avec Etcher.
www.raspberrypi.org/learning/software-guid…
Une fois que vous avez terminé l'installation et que vous disposez d'une invite de commande Linux, il est recommandé d'exécuter les deux commandes suivantes pour vous assurer que tout est à jour.
sudo apt-get mise à jour
sudo apt-get mise à niveau
Tapez ce qui suit dans l'interface de ligne de commande pour lancer l'interface utilisateur du bureau.
sudo startx
La prochaine chose à configurer est une connexion Internet afin que vous puissiez accéder aux dépôts et autres pour installer d'autres logiciels. Une connexion Internet sera également nécessaire pour accéder à l'API SmartThings. Suivez ce guide pour vous connecter. Assez simple depuis le bureau. J'ai utilisé un adaptateur wifi USB que j'avais autour.
www.raspberrypi.org/learning/software-guid…
Alternativement au Raspberry Pi, vous pouvez utiliser un autre ordinateur existant pour doubler démarrer un système d'exploitation Linux avec votre système d'exploitation existant (un peu pénible car vous devez redémarrer pour basculer entre les deux) ou exécuter une instance du système d'exploitation Linux sur un VirtualBox. Pour que ce projet fonctionne initialement, j'ai installé Debian Stretch avec Raspberry Pi Desktop dans une boîte virtuelle à l'aide de ce guide:
thepi.io/how-to-run-raspberry-pi-desktop-o…
(Remarque: j'ai eu beaucoup de mal à installer correctement les modules complémentaires d'invité conformément aux instructions ci-dessus. Je n'ai jamais réussi à faire fonctionner le copier-coller entre l'hôte et le client, ce qui aurait été bien, mais j'ai réussi à mettre à jour la résolution pour l'utiliser ma taille de moniteur complète. Il s'agissait d'une série de trous google rabit que je ne documenterai pas ici.)
Étape 2: Installez Python 3
Python3 doit déjà être installé avec Raspian Stretch.
Étape 3: Configurer le module de baguette
Suivez ce guide créé par GammaGames
J'ai d'abord dû changer de répertoire avant de cloner le référentiel kano_wand, sinon mon script python ne pouvait pas le trouver. J'aurais probablement pu mettre à jour certaines références de chemin dans un fichier quelque part, mais je n'ai pas creusé cela.
cd /usr/local/lib/python3.5/dist-packages
git clone
sudo pip3 installer bluepy moosegesture
J'ai dû utiliser sudo pour que ceux-ci obtiennent les autorisations appropriées. J'ai également dû utiliser les commandes suivantes à la place pour installer numpy, pour une raison quelconque, ne pouvait pas faire fonctionner pip. C'était peut-être un autre problème de chemin, mais cela a fonctionné pour moi, alors j'y suis allé:
sudo apt-get installer python3-numpy
Enfin, afin d'obtenir les autorisations appropriées pour exécuter bluepy à partir du script python, j'ai trouvé cette commande.
sudo setcap 'cap_net_raw, cap_net_admin+eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper
C'est tout ce qui est nécessaire pour que notre script soit opérationnel. Le reste du guide GammaGames décrit étape par étape les éléments requis dans le script python. C'est une excellente analyse pour mieux comprendre comment le script est structuré et ce que fait chaque objet. Un grand merci à GammaGames pour avoir fourni cette documentation. Peut également être utile pour dépanner une section du script. Par exemple, le premier objet affiché effectue la tâche de rechercher des baguettes et de renvoyer une liste de baguettes découvertes. Bonne vérification que votre configuration Bluetooth fonctionne sur tous les cylindres. Pour ce faire, vous pouvez copier le code de test1_BLE_wand_detect.py trouvé dans le repo suivant:
github.com/maspieljr/SmartWand
Étape 4: Configurer la CLI de SmartThings
Vous trouverez ci-dessous une copie des instructions incluses dans le référentiel smartthings_cli sur github (https://github.com/rllynch/smartthings_cli).
J'ai inclus ici les petits ajustements que j'ai dû faire sur ma configuration pour que tout fonctionne. Merci encore à rllynch d'avoir fourni cela.
1) Connectez-vous à et sous Mes SmartApps, créez une nouvelle SmartApp avec le code dans groovy/app.groovy.
*Notez que dans la première étape, il y a une référence à un site Web SmartThings. Faites très attention à l'emplacement de votre compte smartthings. Cela m'a fait trébucher pendant un moment car l'autre site m'a permis de me connecter, mais je n'ai trouvé aucun de mes trucs. J'ai dû utiliser le lien suivant pour accéder à mon compte SmartThings.https://graph-na04-useast2.api.smartthings.com
(Vous êtes le bienvenu pour les 2 heures que j'ai passées à régler cela:) ce sera également important à une étape ultérieure.)
2) Cliquez sur Paramètres de l'application et sous OAuth, cliquez sur Activer OAuth dans Smart App. Notez l'ID client OAuth et le secret client OAuth. Mettez à jour l'affichage du client OAuth vers le contrôle CLI SmartThings. Cliquez sur Mettre à jour.
3) Revenez à Mes SmartApps puis cliquez sur SmartThings CLI Control. Cliquez sur Publier => Pour moi.
4) Clonez le référentiel smartthings_cli, créez un virtualenv si vous le souhaitez (je ne l'ai pas fait), puis exécutez les commandes suivantes, en remplaçant CLIENTID et CLIENTSECRET par l'ID et le secret de l'étape 2.
Pour cloner le référentiel smartthings, vous pouvez utiliser la commande suivante. Assurez-vous que l'invite de commande Linux se trouve dans votre répertoire de projet créé lors de l'installation du module Wand.
clone 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…
Conseillé:
Comment fabriquer une antenne double biquade 4G LTE en quelques étapes faciles : 3 étapes
Comment créer une antenne double biquade 4G LTE Étapes faciles : La plupart du temps, je n'ai pas une bonne force de signal pour mes travaux quotidiens. Donc. Je recherche et essaye différents types d'antenne mais ne fonctionne pas. Après une perte de temps, j'ai trouvé une antenne que j'espère fabriquer et tester, car ce n'est pas un principe de construction
Game Design dans Flick en 5 étapes : 5 étapes
Game Design dans Flick en 5 étapes : Flick est un moyen très simple de créer un jeu, en particulier quelque chose comme un puzzle, un roman visuel ou un jeu d'aventure
Système d'alerte de stationnement en marche arrière Arduino - Étapes par étape : 4 étapes
Système d'alerte de stationnement en marche arrière Arduino | Étapes par étape : dans ce projet, je vais concevoir un circuit de capteur de stationnement inversé pour voiture Arduino simple à l'aide d'un capteur à ultrasons Arduino UNO et HC-SR04. Ce système d'alerte de marche arrière basé sur Arduino peut être utilisé pour une navigation autonome, une télémétrie de robot et d'autres r
Détection de visage sur Raspberry Pi 4B en 3 étapes : 3 étapes
Détection de visage sur Raspberry Pi 4B en 3 étapes : dans ce Instructable, nous allons effectuer une détection de visage sur Raspberry Pi 4 avec Shunya O/S en utilisant la bibliothèque Shunyaface. Shunyaface est une bibliothèque de reconnaissance/détection de visage. Le projet vise à atteindre la vitesse de détection et de reconnaissance la plus rapide avec
Miroir de vanité de bricolage en étapes faciles (à l'aide de bandes lumineuses à LED): 4 étapes
Miroir de vanité DIY en étapes faciles (à l'aide de bandes lumineuses à LED) : Dans cet article, j'ai fabriqué un miroir de vanité DIY à l'aide des bandes LED. C'est vraiment cool et vous devez les essayer aussi