Sisällysluettelo:

SmartWand: 6 vaihetta
SmartWand: 6 vaihetta

Video: SmartWand: 6 vaihetta

Video: SmartWand: 6 vaihetta
Video: ЗАКРИЧАЛ – ПОТЕРЯЛ ₽200.000 / ТРЭШКЭШ: Тишина 2024, Heinäkuu
Anonim
SmartWand
SmartWand

Tämän projektin tarkoituksena on saada Python -komentosarja, joka ohjaa Smartthing -toimintoja syötteenä Kano -koodaussauvalla.

Tyttäreni (8 ja 12) ovat suuria Harry Potter -faneja ja saivat Kano Coding Wandin jouluksi. Kano -koodaussovellus on siisti ja he pitävät siitä hauskaa. Erinomainen työkalu koodauskonseptien esittelyyn.

Meillä on myös hiukan koti -automaatiota, joka on siroteltu koko taloon SmartThings, Phillips Hue, Logitech Harmony -keskittymä, jne.… He väistämättä pääsivät siihen pisteeseen, että halusivat sytyttää joulukuusi -valot sauvalla ja alkoivat heittää termejä, kuten Lumos ja Nox minua kohtaan. Kuulosti hauskalta haasteelta, joten otin sen vastaan.

Piti käyttää Linux -käyttöjärjestelmää, koska kriittinen elementti (Bluepy python -kirjasto Bluetooth -yhteyden muodostamiseen) on käytettävissä vain Linux -alustoilla. Kätevä joka tapauksessa siltä kannalta, että haluan lopulta käyttää tätä Raspberry Pi: llä.

Tässä on kaksi pääviittausta, joita ilman en olisi koskaan voinut tehdä tätä.

Kiitos GammaGamesille python -komentosarjan luomisesta ja jakamisesta Kano -koodaussauvan lukemista varten.

github.com/GammaGames/kano-wand-demos/blob…

ja

Kiitos rllynchille python -komentosarjan luomisesta ja jakamisesta SmartThings -komentorivikäyttöliittymälle.

github.com/rllynch/smartthings_cli

Jotta tämä säilyisi ehjänä, aion kopioida useimmat vaiheet tähän Instructable -ohjelmaan kaapataakseni kaikki muutokset, joita tarvitsin saadakseni sen toimimaan asetuksissani.

Tässä on mitä tarvitset:

  • Harry Potter Kano -koodaussarja (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Linux -pohjainen käyttöjärjestelmä (otin sellaisen käyttöön VirtualBoxilla ja asensin sitten Raspberry Pi: lle)
  • Bluetooth -USB -sovitin (käytin Kensington Bluetooth 4.0 USB -sovitinta)
  • Internet -yhteys (RPi: ssä käytin Edimax USB WiFi -sovitinta, joka minulla oli edellisestä projektista)

Vaihe 1: Asenna Linux Raspberry Pi: hen

Asenna Linux -käyttöjärjestelmä Raspberry Pi -laitteeseen alla olevien linkkien avulla. Käytin Raspbian Stretchiä työpöydän ja suositellun ohjelmiston kanssa ja vilkkasin Etcherin kanssa.

www.raspberrypi.org/learning/software-guid…

Kun olet suorittanut asennuksen ja sinulla on Linux -komentorivi, on hyvä käytäntö suorittaa seuraavat kaksi komentoa varmistaaksesi, että kaikki on ajan tasalla.

sudo apt-get päivitys

sudo apt-get päivitys

Käynnistä työpöydän käyttöliittymä kirjoittamalla komentorivikäyttöliittymään seuraava.

sudo startx

Seuraavaksi määritettävä asia on Internet -yhteys, jotta voit päästä repoihin ja muihin ohjelmistoihin. Internet -yhteys tarvitaan myös SmartThings -sovellusliittymän avaamiseen. Noudata tätä opasta muodostaaksesi yhteyden. Melko suoraan eteenpäin työpöydältä. Käytin USB -wifi -sovitinta, joka oli paikallaan.

www.raspberrypi.org/learning/software-guid…

Vaihtoehtoisesti Raspberry Pi: lle voit käyttää toista olemassa olevaa tietokonetta joko käynnistämään Linux -käyttöjärjestelmän kahdesti nykyisen käyttöjärjestelmän kanssa (eräänlainen kipu, koska sinun on käynnistettävä uudelleen vaihtaaksesi näiden kahden välillä) tai suorita Linux -käyttöjärjestelmän esiintymä VirtualBox. Saadakseni tämän projektin aluksi toimimaan, asensin Debian Stretchin Raspberry Pi Desktopin kanssa virtuaalilaatikkoon käyttämällä tätä opasta:

thepi.io/how-to-run-raspberry-pi-desktop-o…

(Huomautus: Minulla oli aikaa saada Guest Addons asennettu oikein yllä olevien ohjeiden mukaisesti. En koskaan saanut leikkausta ja liittämistä isännän ja asiakkaan välillä toimimaan, mikä olisi ollut mukavaa, mutta onnistuin päivittämään resoluution hyödyntämään koko näytön koko. Tämä oli sarja Googlen rabit -reikiä, joita en dokumentoi täällä.)

Vaihe 2: Asenna Python 3

Python3 on jo asennettava Raspian Stretchin kanssa.

Vaihe 3: Asenna sauvamoduuli

Noudata tätä GammaGamesin luomaa opasta

Minun piti ensin vaihtaa toiseen hakemistoon ennen kano_wand repon kloonaamista, muuten python -skriptini ei löytänyt sitä. Luultavasti olisi voinut päivittää joitain polkuviittauksia johonkin tiedostoon jossain, mutta en kaivannut sitä.

cd /usr/local/lib/python3.5/dist-packages

git -klooni

sudo pip3 asenna bluepy moosegesture

Näiden piti käyttää sudoa saadakseen oikeat käyttöoikeudet. Piti myös käyttää seuraavia komentoja asentaakseen numpy, jostain syystä, ei voinut saada pipia toimimaan. Saattoi olla toinen polkuongelma, mutta tämä toimi minulle, joten menin sen kanssa:

sudo apt-get install python3-numpy

Lopuksi löysin tämän komennon saadakseni oikeat käyttöoikeudet bluepyn suorittamiseen python -komentosarjasta.

sudo setcap 'cap_net_raw, cap_net_admin+eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper

Tämä on kaikki mitä tarvitaan käsikirjoituksemme käynnistämiseen. Loput GammaGames -oppaasta käyvät läpi python -skriptissä vaaditut vaihe vaiheet. On hienoa ymmärtää, miten käsikirjoitus on rakennettu ja mitä kukin objekti tekee. Suuri kiitos GammaGamesille tämän dokumentaation toimittamisesta. Voisi myös olla hyödyllinen skriptin osan vianmäärityksessä. Esimerkiksi ensimmäinen näytetty objekti suorittaa sauvojen etsinnän ja palauttaa löydettyjen sauvojen luettelon. Hyvä vahvistus siitä, että Bluetooth -asetukset toimivat kaikissa sylintereissä. Voit tehdä tämän kopioimalla koodin test1_BLE_wand_detect.py seuraavasta reposta:

github.com/maspieljr/SmartWand

Vaihe 4: Määritä SmartThings CLI

Alla on kopio smartthings_cli -repon ohjeista githubissa (https://github.com/rllynch/smartthings_cli).

Olen sisällyttänyt tänne pieniä säätöjä, jotka minun piti tehdä asetuksissani, jotta kaikki toimisi. Kiitos vielä rllynchille tämän tarjoamisesta.

1) Kirjaudu My SmartAppsiin ja luo se, luo uusi SmartApp, jonka koodi on groovy/app.groovy.

*Huomaa, että ensimmäisessä vaiheessa on viittaus SmartThings -verkkosivustoon. Kiinnitä erityistä huomiota smartthings -tilisi sijaintiin. Tämä herätti minut hetkeksi, kun toinen sivusto salli minun kirjautua sisään, mutta en löytänyt mitään. Minun täytyi käyttää seuraavaa linkkiä päästäkseni SmartThings-tililleni.

(Olet tervetullut niiden kahden tunnin ajan, jotka vietin sen selvittämiseen:) tämä on tärkeää myös myöhemmässä vaiheessa.)

2) Napsauta Sovellusasetukset ja OAuth -kohdasta Ota OAuth käyttöön Smart Appissa. Kirjoita muistiin OAuth -asiakastunnus ja OAuth -asiakassalaisuus. Päivitä OAuth -asiakasnäyttö SmartThings CLI -ohjaimeksi. Napsauta Päivitä.

3) Palaa My SmartApps -sivulle ja napsauta SmartThings CLI Control. Napsauta Julkaise => Minulle.

4) Kloonaa smartthings_cli -arkisto, luo halutessasi virtualenv (en tehnyt tätä) ja suorita sitten seuraavat komennot korvaamalla CLIENTID ja CLIENTSECRET tunnuksella ja salaisuudella vaiheesta 2.

Voit kloonata smartthings -repon käyttämällä seuraavaa komentoa. Varmista, että linux -komentokehote on Wand -moduulin asennuksen aikana luodussa projektihakemistossa.

git klooni >

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…

Suositeltava: