Innehållsförteckning:

SmartWand: 6 steg
SmartWand: 6 steg

Video: SmartWand: 6 steg

Video: SmartWand: 6 steg
Video: Xiaomi Smart Band 8 (M2239B1) | Обзор и распаковка | Это лучший гаджет 2023 года | NOWADAYS 2024, November
Anonim
SmartWand
SmartWand

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: