Kazalo:
- 1. korak: Namestite Linux na Raspberry Pi
- Korak: Namestite Python 3
- 3. korak: Nastavitveni modul palice
- 4. korak: Nastavite CLI SmartThings
- step 5: improve response
- step 6: make smartwand execute on raspberry pi bootup
Video: SmartWand: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Ta projekt naj bi dobil skript Python za nadzor Smartthings s kodno palico Kano kot vhodom.
Moje hčerke (8 in 12) so velike oboževalke Harryja Potterja in za božič so dobile kano kodirno palico. Aplikacija za kodiranje Kano je kul in z njo se zabavajo. Odlično orodje za uvajanje konceptov kodiranja.
Imamo tudi malo avtomatizacije doma, ki je po hiši posuta s SmartThings, Phillips Hue, vozliščem Logitech Harmony itd … Neizogibno so prišli do točke, ko so s palico želeli prižgati lučke božičnega drevesa in začeli postavljati izraze, kot sta Lumos in Nox name. Slišati je bilo kot zabaven izziv, zato sem se ga lotil.
Moral sem iti z operacijskim sistemom Linux, saj je kritični element (knjižnica Python Bluepy za povezavo s palico Bluetooth) na voljo samo na platformah Linux. Vseeno priročno z vidika, da bi sčasoma želeli to zagnati na Raspberry Pi.
Tu sta dve glavni referenci, brez katerih tega nikoli ne bi zmogel.
Hvala podjetju GammaGames za ustvarjanje in skupno rabo skripta python za branje palice za kodiranje Kano.
github.com/GammaGames/kano-wand-demos/blob…
in
Hvala rllynchu za ustvarjanje in skupno rabo skripta python za vmesnik ukazne vrstice SmartThings.
github.com/rllynch/smartthings_cli
Da bi to ostalo nedotaknjeno, bom skopiral večino korakov v ta Instructable, da bom zajel vse spremembe, ki sem jih potreboval, da je deloval na moji nastavitvi.
Tukaj boste potrebovali:
- Komplet za kodiranje Harry Potter Kano (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
- OS, ki temelji na Linuxu (enega sem zagnal z VirtualBoxom, nato pa namestil na Raspberry Pi)
- USB -adapter Bluetooth (uporabil sem adapter Kensington Bluetooth 4.0 USB)
- Internetna povezava (za RPi sem uporabil Edimax USB WiFi adapter, ki sem ga imel iz prejšnjega projekta)
1. korak: Namestite Linux na Raspberry Pi
Sledite spodnjim povezavam, da namestite OS Linux na Raspberry Pi. Uporabil sem Raspbian Stretch z namizjem in priporočeno programsko opremo ter utripal z Etcherjem.
www.raspberrypi.org/learning/software-guid…
Ko dokončate namestitev in imate ukazni poziv za Linux, je dobro, da zaženete naslednja dva ukaza, da se prepričate, ali je vse posodobljeno.
sudo apt-get posodobitev
sudo apt-get nadgradnja
V vmesnik ukazne vrstice vnesite naslednje, da zaženete uporabniški vmesnik namizja.
sudo startx
Naslednja stvar, ki jo morate nastaviti, je internetna povezava, tako da lahko dostopate do repo -jev in podobno za namestitev dodatne programske opreme. Za dostop do API -ja SmartThings bo potrebna tudi internetna povezava. Če želite vzpostaviti povezavo, sledite tem navodilom. Precej naravnost naprej z namizja. Uporabil sem adapter za wifi USB, ki sem ga imel naokoli.
www.raspberrypi.org/learning/software-guid…
Namesto Raspberry Pi lahko uporabite drug obstoječi računalnik za dvojni zagon operacijskega sistema Linux skupaj z obstoječim operacijskim sistemom (bolečina, ker se morate za preklop med obema znova zagnati) ali pa zaženite primerek operacijskega sistema Linux na VirtualBox. Da bi ta projekt sprva deloval, sem s tem vodnikom namestil Debian Stretch z namizjem Raspberry Pi v navidezno škatlo:
thepi.io/how-to-run-raspberry-pi-desktop-o…
(Opomba: Imel sem kar nekaj časa, da sem pravilno namestil dodatke za goste v skladu z zgornjimi navodili. Nikoli mi ni uspelo, da bi rezanje in lepljenje med gostiteljem in odjemalcem delovalo, kar bi bilo lepo, vendar mi je uspelo posodobiti ločljivost za uporabo moja polna velikost monitorja. To je bil niz google rabit luknj, ki jih tukaj ne bom dokumentiral.)
Korak: Namestite Python 3
Python3 bi moral biti že nameščen z Raspian Stretch.
3. korak: Nastavitveni modul palice
Upoštevajte ta priročnik, ki ga je ustvaril GammaGames
Preden sem kloniral repo kano_wand, sem se najprej moral zamenjati v drug imenik, sicer ga moj skript python ni mogel najti. Verjetno bi lahko kje v kakšni datoteki posodobili nekatere sklice poti, vendar se v to nisem poglobil.
cd /usr/local/lib/python3.5/dist-paketi
git clone
sudo pip3 namestite bluepy moosegesture
Za pridobitev ustreznih dovoljenj sem moral uporabiti sudo. Namesto tega sem moral namesto naslednjih ukazov namestiti numpy, iz kakršnega koli razloga pip ni mogel delovati. Morda je bila druga težava, vendar mi je to uspelo, zato sem se odločil za to:
sudo apt-get install python3-numpy
Nazadnje, da bi dobil ustrezna dovoljenja za zagon bluepy iz skripta python, sem našel ta ukaz.
sudo setcap 'cap_net_raw, cap_net_admin+eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper
To je vse, kar je potrebno za zagon našega skripta. Preostali vodnik po programu GammaGames se podaja po korakih po korakih, ki so potrebni v skriptu python. To je odlična razčlenitev, če želite bolje razumeti, kako je skript strukturiran in kaj počne vsak predmet. Največja zahvala GammaGames za predložitev te dokumentacije. Lahko bi bilo koristno tudi za odpravljanje težav v delu skripta. Na primer, prvi prikazani predmet opravi iskanje palic in vrnitev seznama odkritih palic. Dobro preverjanje, ali vaša nastavitev bluetooth deluje na vse jeklenke. Če želite to narediti, lahko kopirate kodo iz test1_BLE_wand_detect.py, ki jo najdete v naslednjem repo:
github.com/maspieljr/SmartWand
4. korak: Nastavite CLI SmartThings
Spodaj je kopija navodil, vključenih v repo smartthings_cli na githubu (https://github.com/rllynch/smartthings_cli).
Sem sem vključil majhne popravke, ki sem jih moral narediti pri nastavitvi, da je vse delovalo. Še enkrat hvala rllynchu za to.
1) Prijavite se in v razdelku Moje aplikacije SmartApps, ustvarite novo aplikacijo SmartApp s kodo v groovy/app.groovy.
*Upoštevajte, da je v prvem koraku sklic na spletno mesto SmartThings. Bodite pozorni na to, kje je vaš račun za pametne stvari. To me je nekaj časa spotaknilo, saj mi je drugo spletno mesto omogočilo prijavo, vendar nisem našel nobenih svojih stvari. Za dostop do računa SmartThings sem moral uporabiti naslednjo povezavo.
(Vabljeni v 2 uri, ki sem jih porabil za razvrščanje:) to bo pomembno tudi na kasnejšem koraku.)
2) Kliknite Nastavitve aplikacije in pod OAuth kliknite Omogoči OAuth v pametni aplikaciji. Zapišite si ID odjemalca OAuth in skrivnost odjemalca OAuth. Posodobite zaslon odjemalca OAuth na nadzor CLI SmartThings. Kliknite Posodobi.
3) Vrnite se v Moje aplikacije SmartApps in kliknite na SmartThings CLI Control. Kliknite Objavi => Zame.
4) Klonirajte shrambo smartthings_cli, po želji ustvarite virtualenv (tega nisem storil), nato zaženite naslednje ukaze, tako da CLIENTID in CLIENTSECRET zamenjate z ID -jem in skrivnostjo iz 2. koraka.
Za kloniranje repo smartthings lahko uporabite naslednji ukaz. Prepričajte se, da je ukazni poziv linux v imeniku vašega projekta, ustvarjenem med nastavitvijo modula palice.
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…
Priporočena:
Števec korakov - mikro: Bit: 12 korakov (s slikami)
Števec korakov - Micro: Bit: Ta projekt bo števec korakov. Za merjenje korakov bomo uporabili senzor pospeška, ki je vgrajen v Micro: Bit. Vsakič, ko se Micro: Bit trese, bomo štetju dodali 2 in ga prikazali na zaslonu
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): 8 korakov
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): ultrazvočni pretvorniki zvoka L298N Dc ženski adapter z napajalnim vtičem za enosmerni tok Arduino UNOBreadboard Kako to deluje: Najprej naložite kodo v Arduino Uno (to je mikrokrmilnik, opremljen z digitalnim in analogna vrata za pretvorbo kode (C ++)
Vijak - Nočna ura za brezžično polnjenje DIY (6 korakov): 6 korakov (s slikami)
Bolt - Nočna ura za brezžično polnjenje DIY (6 korakov): Induktivno polnjenje (znano tudi kot brezžično polnjenje ali brezžično polnjenje) je vrsta brezžičnega prenosa energije. Za zagotavljanje električne energije prenosnim napravam uporablja elektromagnetno indukcijo. Najpogostejša aplikacija je brezžično polnjenje Qi
Merilnik korakov 1. del: Enobarvni zaslon 128x32 in Arduino: 5 korakov
Pedometer 1. del: Enobarvni zaslon 128x32 in Arduino: To je osnovna vadnica, ki uči, kako uporabljati zaslon OLED s svojim Arduinom. Uporabljam zaslon velikosti 128x32, lahko pa uporabite tudi drugačen zaslon z ločljivostjo in po potrebi spremenite ločljivost/koordinate. V tem delu vam bom pokazal, kako
Preklopna obremenitvena banka z manjšo velikostjo korakov: 5 korakov
Preklopna banka odpornikov obremenitve z manjšo velikostjo korakov: Banke uporovnih obremenitev so potrebne za preskušanje energetskih proizvodov, za karakterizacijo sončnih kolektorjev, v preskusnih laboratorijih in v industriji. Reostati zagotavljajo stalno spreminjanje odpornosti na obremenitev. Ker pa se vrednost upora zmanjša, moč