Innehållsförteckning:
- Steg 1: Installera Linux på Raspberry Pi
- Steg 2: Installera Python 3
- Steg 3: Installera Wand -modul
- Steg 4: Konfigurera SmartThings CLI
- step 5: improve response
- step 6: make smartwand execute on raspberry pi bootup
Video: SmartWand: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:43
Detta projekt är att få ett Python -skript för att styra Smartthings med Kano -kodstaven som ingång.
Mina döttrar (8 och 12) är stora Harry Potter -fans och fick Kano Coding Wand till jul. Kanokodningsappen är cool och de har kul med den. Bra verktyg för att introducera kodningskoncept.
Vi har också lite hemautomatisering över hela huset med SmartThings, Phillips Hue, Logitech Harmony -hubb, osv … De kom oundvikligen till den punkten där de ville tända julgransbelysningen med trollstaven och började kasta termer som Lumos och Nox på mig. Det lät som en rolig utmaning så jag tog mig an den.
Var tvungen att gå med ett Linux -operativsystem eftersom ett kritiskt element (Bluepy python -bibliotek för anslutning till wand Bluetooth) bara är tillgängligt på Linux -plattformar. Bekvämt i alla fall ur synvinkeln att så småningom vilja köra detta på en Raspberry Pi.
Det finns två huvudreferenser här, utan vilka jag aldrig skulle ha kunnat göra detta.
Tack till GammaGames för att du skapade och delade ett python -skript för att läsa Kano -kodstav.
github.com/GammaGames/kano-wand-demos/blob…
och
Tack till rllynch för att skapa och dela ett python -skript för ett SmartThings kommandoradsgränssnitt.
github.com/rllynch/smartthings_cli
För att behålla detta intakt, kommer jag att kopiera de flesta av stegen till denna instruerbara för att fånga alla tweaks jag behövde för att få det att fungera på min installation.
Här är vad du behöver:
- Harry Potter Kano Coding Kit (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
- Ett Linux -baserat operativsystem (jag kom igång med VirtualBox och installerade sedan på en Raspberry Pi)
- En Bluetooth USB -adapter (jag använde en Kensington Bluetooth 4.0 USB -adapter)
- Internetanslutning (för RPi använde jag en Edimax USB WiFi -adapter som jag hade från ett tidigare projekt)
Steg 1: Installera Linux på Raspberry Pi
Följ länkarna nedan för att installera ett Linux -operativsystem på Raspberry Pi. Jag använde Raspbian Stretch med stationär och rekommenderad programvara och blinkade med Etcher.
www.raspberrypi.org/learning/software-guid…
När du har slutfört installationen och har en Linux -kommandotolk är det bra att köra följande två kommandon för att vara säker på att allt är uppdaterat.
sudo apt-get uppdatering
sudo apt-get uppgradering
Skriv följande på kommandoradsgränssnittet för att starta skrivbordets gränssnitt.
sudo startx
Nästa sak att konfigurera är en internetanslutning så att du kan komma till repos och sådant för att installera ytterligare programvara. Internetanslutning kommer också att krävas för att träffa SmartThings API. Följ den här guiden för att ansluta. Ganska rakt fram från skrivbordet. Jag använde en USB wifi -adapter som jag hade lagt runt.
www.raspberrypi.org/learning/software-guid…
Alternativt till Raspberry Pi kan du använda en annan befintlig dator för att antingen dubbelstarta ett Linux -operativsystem tillsammans med ditt befintliga operativsystem (en smärta eftersom du måste starta om för att växla mellan de två) eller köra en instans av Linux -operativsystemet på en VirtualBox. För att först få det här projektet att fungera först installerade jag Debian Stretch med Raspberry Pi Desktop i en virtuell låda med den här guiden:
thepi.io/how-to-run-raspberry-pi-desktop-o…
(Obs! Jag hade jävligt tid med att få gästtillägg installerade korrekt enligt instruktionerna ovan. Fick aldrig klipp och klistra mellan värd och klient för att fungera, vilket hade varit trevligt, men jag lyckades få upplösningen uppdaterad för att använda min fulla bildskärmsstorlek. Detta var en serie av google rabit -hål som jag inte kommer att dokumentera här.)
Steg 2: Installera Python 3
Python3 bör redan installeras med Raspian Stretch.
Steg 3: Installera Wand -modul
Följ den här guiden skapad av GammaGames
Jag var först tvungen att byta till en annan katalog innan jag klonade kano_wand repo, annars kunde mitt python -skript inte hitta den. Förmodligen kunde jag ha uppdaterat några sökvägsreferenser i någon fil någonstans, men jag grävde inte i det.
cd /usr/local/lib/python3.5/dist-packages
git -klon
sudo pip3 installera bluepy moosegesture
Var tvungen att använda sudo för att få rätt behörigheter. Var också tvungen att använda följande kommandon istället för att installera numpy, av vilken anledning som helst, kunde inte få pip att fungera. Kan ha varit en annan vägfråga, men det här fungerade för mig så jag gick med det:
sudo apt-get install python3-numpy
Slutligen, för att få rätt behörighet att köra bluepy från python -skriptet hittade jag det här kommandot.
sudo setcap 'cap_net_raw, cap_net_admin+eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper
Detta är allt som krävs för att få vårt manus igång. Resten av GammaGames -guiden går igenom de stegvisa bitarna som krävs i python -skriptet. Det är en stor uppdelning att ytterligare förstå hur manuset är uppbyggt och vad varje objekt gör. Stort tack till GammaGames för att tillhandahålla denna dokumentation. Kan också vara användbart för felsökning av en del av skriptet. Till exempel utför det första objektet som visas att skanna efter trollstavar och returnera en lista med upptäckta trollstavar. Bra verifiering av att din bluetooth -inställning aktiveras på alla cylindrar. För att göra detta kan du kopiera koden från test1_BLE_wand_detect.py som finns i följande repo:
github.com/maspieljr/SmartWand
Steg 4: Konfigurera SmartThings CLI
Nedan finns en kopia av instruktionerna som ingår i smartthings_cli repo på github (https://github.com/rllynch/smartthings_cli).
Jag har inkluderat här de små tweaks som jag var tvungen att göra på min installation för att få allt att fungera. Tack igen till rllynch för att ge detta.
1) Logga in och under Mina SmartApps, skapa en ny SmartApp med koden i groovy/app.groovy.
*Observera att det i det första steget finns en referens till en SmartThings -webbplats. Var noga med var ditt smartthings -konto finns. Detta snubblade mig ett tag eftersom den andra webbplatsen tillät mig att logga in, men kunde inte hitta något av mina saker. Jag var tvungen att använda följande länk för att komma till mitt SmartThings-konto.
(Du är välkommen under de två timmarna jag spenderade det:) det här kommer att vara viktigt vid senare steg också.)
2) Klicka på Appinställningar och under OAuth, klicka på Aktivera OAuth i Smart App. Anteckna OAuth -klient -ID och OAuth -klienthemlighet. Uppdatera OAuth -klientskärmen till SmartThings CLI -kontroll. Klicka på Uppdatera.
3) Gå tillbaka till Mina SmartApps och klicka sedan på SmartThings CLI Control. Klicka på Publicera => För mig.
4) Klona smartthings_cli -förvaret, skapa en virtualenv om så önskas (jag gjorde inte detta), kör sedan följande kommandon och ersätt CLIENTID och CLIENTSECRET med ID och hemlighet från steg 2.
För att klona smartthings repo kan du använda följande kommando. Se till att kommandotolken linux finns i din projektkatalog som skapades under Wand Module Setup.
git klon >
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…
Rekommenderad:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Tre högtalarkretsar -- Steg-för-steg handledning: 3 steg
Tre högtalarkretsar || Steg-för-steg-handledning: Högtalarkretsen förstärker ljudsignalerna som tas emot från miljön till MIC och skickar den till högtalaren varifrån förstärkt ljud produceras. Här visar jag dig tre olika sätt att göra denna högtalarkrets med:
Steg-för-steg-utbildning i robotik med ett kit: 6 steg
Steg-för-steg-utbildning i robotik med ett kit: Efter ganska många månader av att bygga min egen robot (se alla dessa), och efter att två gånger ha misslyckats med delar, bestämde jag mig för att ta ett steg tillbaka och tänka om min strategi och riktning. De flera månaders erfarenhet var ibland mycket givande och
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)