INHOUDSOPGAWE:

SmartWand: 6 stappe
SmartWand: 6 stappe

Video: SmartWand: 6 stappe

Video: SmartWand: 6 stappe
Video: XIAOMI MI BAND 6 - ОБЗОР И ПЕРВАЯ НАСТРОЙКА 2024, November
Anonim
SmartWand
SmartWand

Hierdie projek is om 'n Python -script te kry om Smartthings te beheer met die Kano -koderingstok as invoer.

My dogters (8 en 12) is groot Harry Potter -aanhangers en het die Kano Coding Wand vir Kersfees gekry. Die Kano -kodering -app is cool en hulle geniet dit. Fantastiese hulpmiddel om koderingskonsepte bekend te stel.

Ons het ook 'n bietjie tuis -outomatisering oor die hele huis gestrooi met SmartThings, Phillips Hue, Logitech Harmony -hub, ens… Nox vir my. Dit klink soos 'n prettige uitdaging, so ek het dit aangepak.

Moet met 'n Linux -bedryfstelsel gaan, aangesien 'n kritieke element (Bluepy python -biblioteek vir verbinding met die wand Bluetooth) slegs op Linux -platforms beskikbaar is. Handig in elk geval vanuit die oogpunt om dit uiteindelik op 'n Raspberry Pi te wil gebruik.

Daar is twee hoofverwysings hier, sonder wie ek dit nooit sou kon doen nie.

Dankie aan GammaGames vir die skep en deel van 'n python -script om die Kano -koderingstok te lees.

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

en

Dankie aan rllynch vir die skep en deel van 'n python -script vir 'n SmartThings -opdragreël -koppelvlak.

github.com/rllynch/smartthings_cli

Om dit ongeskonde te hou, gaan ek die meeste van die stappe na hierdie instruksies kopieer om enige tweaks wat ek nodig gehad het om dit op my opset te laat werk, vas te vang.

Hier is wat u nodig het:

  • Harry Potter Kano-koderingstel (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • 'N Linux -gebaseerde bedryfstelsel (ek het een met VirtualBox begin en daarna op 'n Raspberry Pi geïnstalleer)
  • 'N Bluetooth -USB -adapter (ek het 'n Kensington Bluetooth 4.0 USB -adapter gebruik)
  • Internetverbinding (vir die RPi het ek 'n Edimax USB WiFi -adapter gebruik wat ek van 'n vorige projek gehad het)

Stap 1: Installeer Linux op Raspberry Pi

Volg die onderstaande skakels om 'n Linux -bedryfstelsel op die Raspberry Pi te installeer. Ek gebruik Raspbian Stretch met lessenaar en aanbevole sagteware en flits met Etcher.

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

Nadat u die installasie voltooi het en 'n Linux -opdragprompt het, is dit goed om die volgende twee opdragte uit te voer om seker te maak dat alles op datum is.

sudo apt-get update

sudo apt-get upgrade

Tik die volgende op die opdraglyn -koppelvlak om die lessenaar -UI te begin.

sudo startx

Die volgende ding wat u moet instel, is 'n internetverbinding, sodat u by repos kan kom en meer sagteware kan installeer. 'N Internetverbinding is ook nodig om die SmartThings API te bereik. Volg hierdie gids om aan te sluit. Van die lessenaar af redelik eenvoudig. Ek het 'n USB -wifi -adapter gebruik wat ek daar gehad het.

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

As alternatief vir die Raspberry Pi, kan u 'n ander bestaande rekenaar gebruik om 'n Linux -bedryfstelsel saam met u bestaande bedryfstelsel dubbel te laai (soort van pyn omdat u moet herlaai om tussen die twee te wissel) of 'n instansie van die Linux -bedryfstelsel op 'n VirtualBox. Om hierdie projek eers aan die gang te kry, het ek Debian Stretch met Raspberry Pi Desktop in 'n virtuele boks geïnstalleer met behulp van hierdie gids:

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

(let wel: ek het baie tyd gekry om Guest Addons behoorlik geïnstalleer te word volgens die instruksies hierbo. Ek het nooit die knip en plak tussen gasheer en kliënt aan die werk gekry nie, wat sou goed gewees het, maar ek het die resolusie opgedateer om dit te gebruik my volledige monitorgrootte. Dit was 'n reeks google hondsdolheidsgate wat ek nie hier sal dokumenteer nie.)

Stap 2: Installeer Python 3

Python3 behoort reeds met Raspian Stretch geïnstalleer te word.

Stap 3: Stel Wand -module op

Volg hierdie gids wat deur GammaGames geskep is

Ek moes eers na 'n ander gids verander voordat ek die kano_wand repo kloneer, anders kon my python -script dit nie vind nie. Waarskynlik kon ek 'n paar padverwysings in 'n lêer iewers opgedateer het, maar ek het nie daarin ingegrawe nie.

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

git -kloon

sudo pip3 installeer bluepy moosegesture

Moes sudo hiervoor gebruik om die regte toestemmings te kry. Moes ook eerder die volgende opdragte gebruik om numpy te installeer, om watter rede ook al, kon nie pip aan die werk kry nie. Dit was moontlik 'n ander probleem, maar dit het vir my gewerk, so ek het daarmee gegaan:

sudo apt-get install python3-numpy

Ten slotte, om die regte toestemming te kry om bluepy uit die python -script uit te voer, het ek hierdie opdrag gevind.

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

Dit is alles wat nodig is om ons script aan die gang te kry. Die res van die GammaGames -gids stap -vir -stap stukke deur wat in die python -skrif vereis word. Dit is 'n wonderlike uiteensetting om verder te verstaan hoe die script gestruktureer is en wat elke voorwerp doen. Baie dankie aan GammaGames vir die verskaffing van hierdie dokumentasie. Dit kan ook handig wees om 'n gedeelte van die script op te los. Byvoorbeeld, die eerste voorwerp wat gewys word, voer die taak uit om na toverstafies te soek en 'n lys met toewysings terug te besorg. Goeie verifikasie dat u bluetooth -opstelling op alle silinders brand. Om dit te kan doen, kan u die kode van test1_BLE_wand_detect.py kopieer in die volgende repo:

github.com/maspieljr/SmartWand

Stap 4: Stel SmartThings CLI op

Hieronder is 'n afskrif van die instruksies in die smartthings_cli repo op github (https://github.com/rllynch/smartthings_cli).

Ek het hier die klein aanpassings wat ek in my opstelling moes maak, ingesluit om alles aan die gang te kry. Weereens baie dankie aan rllynch dat u dit verskaf het.

1) Teken in en onder My SmartApps, skep 'n nuwe SmartApp met die kode in groovy/app.groovy.

*Let daarop dat daar in die eerste stap 'n verwysing na 'n SmartThings -webwerf is. Gee noukeurig aandag aan waar u smartthings -rekening is. Dit het my 'n rukkie laat val omdat die ander webwerf my kon aanmeld, maar ek kon niks van my goed vind nie. Ek moes die volgende skakel gebruik om by my SmartThings-rekening uit te kom.

(U is welkom vir die 2 uur wat ek bestee het om dit uit te sorteer:) dit sal ook later belangrik wees.)

2) Klik op App -instellings en onder OAuth, klik op Aktiveer OAuth in Smart App. Let op die OAuth -kliënt -ID en die OAuth -kliëntgeheim. Dateer die OAuth -kliëntskerm op na SmartThings CLI Control. Klik op Update.

3) Gaan terug na My SmartApps en klik dan op SmartThings CLI Control. Klik op Publiseer => Vir my.

4) Kloon die smartthings_cli -bewaarplek, skep indien nodig 'n virtualenv (ek het dit nie gedoen nie), voer dan die volgende opdragte uit en vervang CLIENTID en CLIENTSECRET met die ID en geheim van stap 2.

Om die smartthings repo te kloon, kan u die volgende opdrag gebruik. Maak seker dat die Linux -opdragprompt in u projekgids verskyn wat tydens die Wand Module -opstelling geskep is.

git kloon >

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…

Aanbeveel: