Inhoudsopgave:
- Stap 1: Installeer Linux op Raspberry Pi
- Stap 2: Installeer Python 3
- Stap 3: Wandmodule instellen
- Stap 4: Stel SmartThings CLI in
- step 5: improve response
- step 6: make smartwand execute on raspberry pi bootup
Video: SmartWand: 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Dit project is bedoeld om een Python-script te krijgen om Smartthings te besturen met de Kano-codeerstaf als invoer.
Mijn dochters (8 en 12) zijn grote Harry Potter-fans en hebben de Kano Coding Wand voor Kerstmis gekregen. De Kano-coderingsapp is cool en ze hebben er plezier mee. Geweldig hulpmiddel om coderingsconcepten te introduceren.
We hebben ook een beetje domotica door het hele huis gestrooid met SmartThings, Phillips Hue, Logitech Harmony-hub, enz … Ze kwamen onvermijdelijk op het punt waarop ze de kerstboomverlichting wilden aanzetten met de toverstok en begonnen termen als Lumos en Nox tegen mij. Het leek me een leuke uitdaging, dus die ben ik aangegaan.
Moest met een Linux-besturingssysteem gaan omdat een cruciaal element (Bluepy python-bibliotheek voor verbinding met de toverstok Bluetooth) alleen beschikbaar is op Linux-platforms. Hoe dan ook handig vanuit het oogpunt van het uiteindelijk willen draaien op een Raspberry Pi.
Er zijn hier twee belangrijke referenties, zonder welke ik dit nooit zou hebben kunnen doen.
Met dank aan GammaGames voor het maken en delen van een python-script voor het lezen van de Kano-codeerstaf.
github.com/GammaGames/kano-wand-demos/blob…
en
Met dank aan rllynch voor het maken en delen van een python-script voor een SmartThings-opdrachtregelinterface.
github.com/rllynch/smartthings_cli
Om dit intact te houden, ga ik de meeste stappen naar deze Instructable kopiëren om eventuele aanpassingen vast te leggen die ik nodig had om het aan mijn installatie te laten werken.
Dit is wat je nodig hebt:
- Harry Potter Kano-coderingskit (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
- Een op Linux gebaseerd besturingssysteem (ik heb er een in gebruik genomen met VirtualBox en vervolgens geïnstalleerd op een Raspberry Pi)
- Een Bluetooth USB-adapter (ik gebruikte een Kensington Bluetooth 4.0 USB-adapter)
- Internetverbinding (voor de RPi gebruikte ik een Edimax USB WiFi-adapter die ik had van een vorig project)
Stap 1: Installeer Linux op Raspberry Pi
Volg de onderstaande links om een Linux-besturingssysteem op de Raspberry Pi te installeren. Ik gebruikte Raspbian Stretch met desktop en aanbevolen software en flitste met Etcher.
www.raspberrypi.org/learning/software-guid…
Zodra je de installatie hebt voltooid en een Linux-opdrachtprompt hebt, is het een goede gewoonte om de volgende twee opdrachten uit te voeren om er zeker van te zijn dat alles up-to-date is.
sudo apt-get update
sudo apt-get upgrade
Typ het volgende in de opdrachtregelinterface om de desktop-UI te starten.
sudo startx
Het volgende dat u moet instellen, is een internetverbinding, zodat u naar repo's en dergelijke kunt gaan om verdere software te installeren. Er is ook een internetverbinding vereist om de SmartThings API te gebruiken. Volg deze handleiding om verbinding te maken. Vrij rechttoe rechtaan vanaf het bureaublad. Ik gebruikte een USB wifi-adapter die ik had liggen.
www.raspberrypi.org/learning/software-guid…
Als alternatief voor de Raspberry Pi zou je een andere bestaande computer kunnen gebruiken om een Linux-besturingssysteem dubbel op te starten samen met je bestaande besturingssysteem (een beetje lastig omdat je opnieuw moet opstarten om tussen de twee te schakelen) of een instantie van het Linux-besturingssysteem op een VirtualBox. Om dit project in eerste instantie te laten werken, heb ik Debian Stretch met Raspberry Pi Desktop in een virtuele doos geïnstalleerd met behulp van deze handleiding:
thepi.io/how-to-run-raspberry-pi-desktop-o…
(opmerking: ik had een geweldige tijd om Guest Addons correct te installeren volgens de bovenstaande instructies. Ik heb nooit het knippen en plakken tussen host en client gekregen om te werken, wat leuk zou zijn geweest, maar het is me gelukt om de resolutie bijgewerkt te krijgen om te gebruiken mijn volledige monitorgrootte. Dit was een reeks google-rabitgaten die ik hier niet zal documenteren.)
Stap 2: Installeer Python 3
Python3 zou al met Raspian Stretch moeten zijn geïnstalleerd.
Stap 3: Wandmodule instellen
Volg deze handleiding gemaakt door GammaGames
Ik moest eerst naar een andere map gaan voordat ik de kano_wand-repo kon klonen, anders kon mijn python-script het niet vinden. Waarschijnlijk had ik ergens padverwijzingen in een bestand kunnen bijwerken, maar daar heb ik me niet in verdiept.
cd /usr/local/lib/python3.5/dist-packages
git kloon
sudo pip3 installeer bluepy moosegesture
Moest sudo gebruiken voor deze om de juiste rechten te krijgen. Moest in plaats daarvan ook de volgende opdrachten gebruiken om numpy te installeren, om wat voor reden dan ook, kon pip niet aan het werk krijgen. Misschien was het een ander padprobleem, maar dit werkte voor mij, dus ging ik ermee akkoord:
sudo apt-get install python3-numpy
Ten slotte vond ik deze opdracht om de juiste machtigingen te krijgen om bluepy vanuit het python-script uit te voeren.
sudo setcap 'cap_net_raw, cap_net_admin+eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper
Dit is alles wat nodig is om ons script in gebruik te nemen. De rest van de GammaGames-gids doorloopt de stapsgewijze stukjes die nodig zijn in het python-script. Het is een geweldige analyse om verder te begrijpen hoe het script is gestructureerd en wat elk object doet. Grote dank aan GammaGames voor het verstrekken van deze documentatie. Het kan ook handig zijn voor het oplossen van problemen met een gedeelte van het script. Het eerste getoonde object voert bijvoorbeeld de taak uit om naar toverstokken te scannen en een lijst met gevonden toverstokken terug te sturen. Goede verificatie dat uw bluetooth-setup op alle cilinders werkt. Om dit te doen, kunt u de code kopiëren van test1_BLE_wand_detect.py in de volgende repo:
github.com/maspieljr/SmartWand
Stap 4: Stel SmartThings CLI in
Hieronder vindt u een kopie van de instructies die zijn opgenomen in de smartthings_cli repo op github (https://github.com/rllynch/smartthings_cli).
Ik heb hier de kleine aanpassingen toegevoegd die ik aan mijn installatie moest maken om alles werkend te krijgen. Nogmaals bedankt aan rllynch voor het verstrekken hiervan.
1) Log in op en maak onder Mijn SmartApps een nieuwe SmartApp aan met de code in groovy/app.groovy.
*Let op in de eerste stap is er een verwijzing naar een SmartThings-website. Let goed op waar je smartthings-account is. Dit bracht me een tijdje in de war omdat de andere site me toestond in te loggen, maar mijn spullen niet kon vinden. Ik moest de volgende link gebruiken om naar mijn SmartThings-account te gaan.https://graph-na04-useast2.api.smartthings.com
(Je bent welkom voor de 2 uur die ik heb besteed om dat uit te zoeken:) dit zal ook belangrijk zijn in een latere stap.)
2) Klik op App-instellingen en klik onder OAuth op OAuth inschakelen in Smart App. Noteer de OAuth-client-ID en het OAuth-clientgeheim. Werk het OAuth-clientscherm bij naar SmartThings CLI Control. Klik op Bijwerken.
3) Ga terug naar Mijn SmartApps en klik vervolgens op SmartThings CLI Control. Klik op Publiceren => Voor mij.
4) Kloon de smartthings_cli-repository, maak desgewenst een virtualenv (ik heb dit niet gedaan), voer vervolgens de volgende opdrachten uit en vervang CLIENTID en CLIENTSECRET door de ID en het geheim uit stap 2.
Om de repo van smartthings te klonen, kunt u de volgende opdracht gebruiken. Zorg ervoor dat de linux-opdrachtprompt zich in uw projectdirectory bevindt die is gemaakt tijdens de installatie van de Wandmodule.
git kloon >
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…
Aanbevolen:
Game Design in Flick in 5 stappen: 5 stappen
Game-ontwerp in Flick in 5 stappen: Flick is een heel eenvoudige manier om een game te maken, vooral zoiets als een puzzel, visuele roman of avonturengame
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: 3 stappen
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: In deze Instructable gaan we gezichtsdetectie uitvoeren op Raspberry Pi 4 met Shunya O/S met behulp van de Shunyaface-bibliotheek. Shunyaface is een bibliotheek voor gezichtsherkenning/detectie. Het project streeft naar de hoogste detectie- en herkenningssnelheid met
Doe-het-zelfspiegel in eenvoudige stappen (met LED-stripverlichting): 4 stappen
DIY make-upspiegel in eenvoudige stappen (met behulp van LED-stripverlichting): In dit bericht heb ik een doe-het-zelfspiegel gemaakt met behulp van de LED-strips. Het is echt gaaf en je moet ze ook proberen
Hoe plug-ins in WordPress te installeren in 3 stappen: 3 stappen
Hoe plug-ins in WordPress te installeren in 3 stappen: In deze tutorial laat ik je de essentiële stappen zien om de WordPress-plug-in op je website te installeren. In principe kunt u plug-ins op twee verschillende manieren installeren. De eerste methode is via ftp of via cpanel. Maar ik zal het niet opsommen, want het is echt compl
Akoestische levitatie met Arduino Uno stap voor stap (8 stappen): 8 stappen
Akoestische levitatie met Arduino Uno Stap voor stap (8-stappen): ultrasone geluidstransducers L298N Vrouwelijke DC-adapter voeding met een mannelijke DC-pin Arduino UNOBreadboardHoe dit werkt: eerst upload je code naar Arduino Uno (het is een microcontroller uitgerust met digitale en analoge poorten om code te converteren (C++)