Turinys:

„SmartWand“: 6 žingsniai
„SmartWand“: 6 žingsniai

Video: „SmartWand“: 6 žingsniai

Video: „SmartWand“: 6 žingsniai
Video: Mi Smart Band 6: One Step Ahead! 2024, Liepa
Anonim
„SmartWand“
„SmartWand“

Š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: