Turinys:
- 1 veiksmas: įdiekite „Linux“„Raspberry Pi“
- 2 veiksmas: įdiekite „Python 3“
- 3 žingsnis: nustatykite lazdelės modulį
- 4 veiksmas: nustatykite „SmartThings CLI“
- step 5: improve response
- step 6: make smartwand execute on raspberry pi bootup
Video: „SmartWand“: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Šis projektas skirtas gauti „Python“scenarijų, skirtą valdyti „Smartthings“naudojant „Kano“kodavimo lazdelę kaip įvestį.
Mano dukros (8 ir 12) yra didelės Hario Poterio gerbėjos ir Kalėdoms gavo Kano kodavimo lazdelę. „Kano“kodavimo programa yra šauni ir jiems smagu. Puikus įrankis supažindinti su kodavimo sąvokomis.
Mes taip pat turime šiek tiek namų automatikos, apšlakstytos namuose su „SmartThings“, „Phillips Hue“, „Logitech Harmony“stebulėmis ir tt Noksas į mane. Skambėjo kaip įdomus iššūkis, todėl ėmiausi jo.
Turėjau naudoti „Linux“OS, nes kritinis elementas („Bluepy python“biblioteka, skirta prisijungti prie „Bluetooth“lazdelės) yra prieinama tik „Linux“platformose. Bet kokiu atveju patogu, kai galų gale norėsite tai paleisti „Raspberry Pi“.
Čia yra dvi pagrindinės nuorodos, be kurių niekada nebūčiau galėjusi to padaryti.
Ačiū „GammaGames“už tai, kad sukūrė ir bendrino „python“scenarijų, skirtą „Kano“kodavimo lazdai skaityti.
github.com/GammaGames/kano-wand-demos/blob…
ir
Ačiū rllynch už tai, kad sukūrė ir bendrino „SmartThings“komandinės eilutės sąsajos „python“scenarijų.
github.com/rllynch/smartthings_cli
Kad tai būtų nepažeista, daugumą veiksmų nukopijuosiu į šią „Instructable“, kad užfiksuotų visus patobulinimus, kurių man prireikė, kad ji veiktų mano sąrankoje.
Štai ko jums reikės:
- Hario Poterio Kano kodavimo rinkinys (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
- „Linux“pagrindu sukurta operacinė sistema (aš pradėjau ją naudoti su „VirtualBox“, tada įdiegta „Raspberry Pi“)
- „Bluetooth“USB adapteris (aš naudoju „Kensington Bluetooth 4.0“USB adapterį)
- Interneto ryšys (RPi naudoju Edimax USB WiFi adapterį, kurį turėjau iš ankstesnio projekto)
1 veiksmas: įdiekite „Linux“„Raspberry Pi“
Sekite toliau pateiktas nuorodas, kad įdiegtumėte „Linux“OS į „Raspberry Pi“. Aš naudoju „Raspbian Stretch“su darbalaukiu ir rekomenduojamą programinę įrangą ir mirgėjau su „Etcher“.
www.raspberrypi.org/learning/software-guid…
Kai baigsite diegimą ir turėsite „Linux“komandų eilutę, gera praktika yra paleisti šias dvi komandas, kad įsitikintumėte, jog viskas atnaujinta.
sudo apt-get atnaujinimas
sudo apt-get atnaujinimas
Įveskite komandų eilutės sąsajoje, kad paleistumėte darbalaukio vartotojo sąsają.
sudo startx
Kitas dalykas, kurį reikia nustatyti, yra interneto ryšys, kad galėtumėte pasiekti repos ir kitus, kad įdiegtumėte papildomą programinę įrangą. Norint pasiekti „SmartThings“API, taip pat reikės interneto ryšio. Vadovaukitės šiuo vadovu, kad prisijungtumėte. Gana tiesiai iš darbalaukio. Aš naudoju USB „WiFi“adapterį, kurį turėjau.
www.raspberrypi.org/learning/software-guid…
Arba kaip „Raspberry Pi“, galite naudoti kitą esamą kompiuterį, kad kartu paleistumėte „Linux“OS kartu su esama operacine sistema (tam tikras skausmas, nes norint perjungti iš vieno į kitą) reikia paleisti iš naujo arba paleisti „Linux“OS egzempliorių „VirtualBox“. Norėdami, kad šis projektas iš pradžių veiktų, įdiegiau „Debian Stretch“su „Raspberry Pi Desktop“virtualioje dėžutėje, naudodamas šį vadovą:
thepi.io/how-to-run-raspberry-pi-desktop-o…
(pastaba: aš turėjau daug laiko, kai svečių priedai buvo tinkamai įdiegti pagal aukščiau pateiktas instrukcijas. Niekada nepavyko iškirpti ir įklijuoti tarp pagrindinio kompiuterio ir kliento, o tai būtų buvę malonu, bet man pavyko atnaujinti skiriamąją gebą, kad ji būtų naudojama mano viso monitoriaus dydis. Tai buvo serija „Google rabit“skylių, kurių čia neužfiksuosiu.)
2 veiksmas: įdiekite „Python 3“
„Python3“jau turėtų būti įdiegtas naudojant „Raspian Stretch“.
3 žingsnis: nustatykite lazdelės modulį
Sekite šį vadovą, kurį sukūrė „GammaGames“
Prieš klonuojant kano_wand repo, pirmiausia turėjau pakeisti į kitą katalogą, kitaip mano python scenarijus negalėjo jo rasti. Tikriausiai galėjau atnaujinti kelias kelio nuorodas kažkuriame faile, bet aš to nesigilinau.
cd /usr/local/lib/python3.5/dist-packages
git klonas
sudo pip3 įdiegti „bluepy moosegesture“
Norint gauti tinkamus leidimus, reikėjo naudoti „sudo“. Taip pat turėjo naudoti šias komandas vietoj to, kad įdiegtų „numpy“, dėl kokių nors priežasčių nepavyko gauti „pip“. Galbūt tai buvo kita kelio problema, bet man tai pavyko, todėl aš ėjau su ja:
sudo apt-get install python3-numpy
Galiausiai, norėdamas gauti tinkamus leidimus paleisti „bluepy“iš „python“scenarijaus, radau šią komandą.
sudo setcap 'cap_net_raw, cap_net_admin+eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper
Tai viskas, ko reikia, kad mūsų scenarijus būtų paleistas ir paleistas. Likusiame „GammaGames“vadove pateikiami žingsniai po žingsnio, kurių reikia python scenarijuje. Tai puikus suskirstymas, norint toliau suprasti scenarijaus struktūrą ir ką kiekvienas objektas daro. Didelis ačiū „GammaGames“už šios dokumentacijos pateikimą. Taip pat gali būti naudinga šalinant scenarijaus dalį. Pavyzdžiui, pirmasis parodytas objektas atlieka lazdelių nuskaitymo užduotį ir grąžina atrastų lazdelių sąrašą. Geras patikrinimas, ar „Bluetooth“sąranka veikia visuose cilindruose. Norėdami tai padaryti, galite nukopijuoti kodą iš test1_BLE_wand_detect.py, kurį rasite šioje repoje:
github.com/maspieljr/SmartWand
4 veiksmas: nustatykite „SmartThings CLI“
Žemiau yra instrukcijų, įtrauktų į „smartthings_cli“repą „github“(https://github.com/rllynch/smartthings_cli), kopija.
Čia įtraukiau nedidelius patobulinimus, kuriuos turėjau atlikti savo sąrankoje, kad viskas veiktų. Dar kartą dėkoju rllynchui už tai.
1) Prisijunkite prie „My SmartApps“ir joje sukurkite naują „SmartApp“su kodu groovy/app.groovy.
*Atminkite, kad pirmame žingsnyje yra nuoroda į „SmartThings“svetainę. Atidžiai stebėkite, kur yra jūsų „smartthings“paskyra. Tai kurį laiką mane suglumino, nes kita svetainė leido man prisijungti, bet nepavyko rasti jokių mano daiktų. Norėdami patekti į „SmartThings“paskyrą, turėjau naudoti šią nuorodą.
(Maloniai prašome 2 valandas, kurias praleidau išspręsdamas:) tai bus svarbu ir vėliau.)
2) Spustelėkite Programos nustatymai ir skiltyje „OAuth“spustelėkite Įgalinti „OAuth“išmaniojoje programoje. Užsirašykite „OAuth“kliento ID ir „OAuth“kliento paslaptį. Atnaujinkite „OAuth“kliento ekraną į „SmartThings CLI Control“. Spustelėkite Atnaujinti.
3) Grįžkite į „My SmartApps“, tada spustelėkite „SmartThings CLI Control“. Spustelėkite Skelbti => Man.
4) Klonuokite „smartthings_cli“saugyklą, jei norite, sukurkite virtualenv (aš to nepadariau), tada paleiskite šias komandas, pakeisdami „CLIENTID“ir „CLIENTSECRET“ID ir paslaptimi nuo 2 veiksmo.
Norėdami klonuoti „smartthings“repo, galite naudoti šią komandą. Įsitikinkite, kad „Linux“komandų eilutė yra jūsų projekto kataloge, sukurtame „Wand Module“sąrankos metu.
git klonas >
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…
Rekomenduojamas:
„Arduino“automobilių atbulinės eigos įspėjimo sistema - Žingsniai po žingsnio: 4 žingsniai
„Arduino“automobilių atbulinės eigos įspėjimo sistema | Žingsniai po žingsnio: Šiame projekte aš suprojektuosiu paprastą „Arduino“automobilio atbulinės eigos stovėjimo jutiklio grandinę, naudodamas „Arduino UNO“ir ultragarsinį jutiklį „HC-SR04“. Ši „Arduino“pagrįsta automobilio atbulinės eigos įspėjimo sistema gali būti naudojama autonominei navigacijai, robotų diapazonui ir kitiems diapazonams
„Arduino Halloween Edition“- „Zombies“iššokantis ekranas (žingsniai su nuotraukomis): 6 žingsniai
„Arduino Halloween Edition“- „Zombies“iššokantis ekranas (žingsniai su paveikslėliais): norite Helovino metu išgąsdinti savo draugus ir sukelti riksmą? O gal tiesiog norite padaryti gerą išdaigą? Šis iššokantis „Zombies“ekranas gali tai padaryti! Šioje instrukcijoje aš išmokysiu jus, kaip lengvai padaryti iššokančius zombius naudojant „Arduino“. HC-SR0
Akustinė levitacija naudojant „Arduino Uno“žingsnis po žingsnio (8 žingsniai): 8 žingsniai
Akustinė levitacija naudojant „Arduino Uno“žingsnis po žingsnio (8 žingsniai): ultragarsiniai garso keitikliai L298N nuolatinės srovės adapterio maitinimo šaltinis su vyrišku nuolatinės srovės kaiščiu „Arduino UNOBreadboard“Kaip tai veikia: pirmiausia įkelkite kodą į „Arduino Uno“(tai yra mikrovaldiklis su skaitmeniniu ir analoginiai prievadai kodui konvertuoti (C ++)
„Pixel Kit“, kuriame veikia „MicroPython“: pirmieji žingsniai: 7 žingsniai
„Pixel Kit“, kuriame veikia „MicroPython“: pirmieji žingsniai: Kelionė, skirta visam „Kano Pixel“potencialui išnaudoti, prasideda gamyklos programinės įrangos pakeitimu „MicroPython“, tačiau tai tik pradžia. Norėdami koduoti „Pixel Kit“, turime prie jo prijungti savo kompiuterius. Ši pamoka paaiškins, kas
Tiesioginė 4G/5G HD vaizdo transliacija iš DJI drono esant mažai delsai [3 žingsniai]: 3 žingsniai
Tiesioginis 4G/5G HD vaizdo įrašų srautinis perdavimas iš DJI drono esant mažai delsai [3 žingsniai]: Šis vadovas padės jums gauti tiesioginius HD kokybės vaizdo srautus iš beveik visų DJI dronų. Naudodami „FlytOS Mobile App“ir „FlytNow Web Application“galite pradėti transliuoti vaizdo įrašus iš drono