Innholdsfortegnelse:

SmartWand: 6 trinn
SmartWand: 6 trinn

Video: SmartWand: 6 trinn

Video: SmartWand: 6 trinn
Video: Женский Casio G-Shock White GMAS130 Step Tracker | Обзор 10 лучших вещей GMAS... 2024, Juli
Anonim
SmartWand
SmartWand

Dette prosjektet er å få et Python -skript for å kontrollere Smartthings med Kano -kodestaven som inngang.

Mine døtre (8 og 12) er store Harry Potter -fans og fikk Kano Coding Wand til jul. Kano -kodingsappen er kul, og de koser seg med den. Flott verktøy for å introdusere kodingskonsepter.

Vi har også litt hjemmeautomatisering sprinklet i hele huset med SmartThings, Phillips Hue, Logitech Harmony -hub osv. De kom uunngåelig til det punktet hvor de ønsket å slå på juletreet med staven og begynte å kaste begreper som Lumos og Nox på meg. Hørtes ut som en morsom utfordring, så jeg tok den.

Måtte gå med et Linux -operativsystem siden et kritisk element (Bluepy python -bibliotek for tilkobling til tryllestav Bluetooth) bare er tilgjengelig på Linux -plattformer. Praktisk uansett sett fra synspunktet om til slutt å ville kjøre dette på en Raspberry Pi.

Det er to hovedreferanser her, uten som jeg aldri ville ha klart dette.

Takk til GammaGames for å lage og dele et python -script for å lese Kano -kodestaven.

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

og

Takk til rllynch for å lage og dele et python -skript for et SmartThings kommandolinjegrensesnitt.

github.com/rllynch/smartthings_cli

For å beholde dette intakt, skal jeg kopiere de fleste trinnene til denne instruksjonsboken for å fange opp eventuelle tilpasninger jeg trengte for å få det til å fungere på oppsettet mitt.

Her er hva du trenger:

  • Harry Potter Kano Coding Kit (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Et Linux -basert operativsystem (jeg kom i gang med VirtualBox, deretter installert på en Raspberry Pi)
  • En Bluetooth USB -adapter (jeg brukte en Kensington Bluetooth 4.0 USB -adapter)
  • Internett -tilkobling (For RPi brukte jeg en Edimax USB WiFi -adapter jeg hadde fra et tidligere prosjekt)

Trinn 1: Installer Linux på Raspberry Pi

Følg koblingene nedenfor for å installere et Linux -operativsystem på Raspberry Pi. Jeg brukte Raspbian Stretch med stasjonær og anbefalt programvare og blinket med Etcher.

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

Når du har fullført installasjonen og har en Linux -kommandoprompt, er det god praksis å kjøre de følgende to kommandoene for å være sikker på at alt er oppdatert.

sudo apt-get oppdatering

sudo apt-get oppgradering

Skriv inn følgende på kommandolinjegrensesnittet for å starte skrivebordets brukergrensesnitt.

sudo startx

Det neste du skal sette opp er en internettforbindelse slik at du kan komme til repos og slikt for å installere ytterligere programvare. Internett -tilkobling vil også være nødvendig for å slå opp SmartThings API. Følg denne veiledningen for å få tilkobling. Ganske rett frem fra skrivebordet. Jeg brukte en USB wifi -adapter jeg hadde liggende.

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

Alternativt til Raspberry Pi kan du bruke en annen eksisterende datamaskin til å dual -boot et Linux -operativsystem sammen med ditt eksisterende operativsystem (litt smerte fordi du må starte på nytt for å bytte mellom de to) eller kjøre en forekomst av Linux -operativsystemet på en VirtualBox. For først å få dette prosjektet til å fungere, installerte jeg Debian Stretch med Raspberry Pi Desktop i en virtuell boks ved hjelp av denne guiden:

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

(merk: Jeg hadde en god tid med å få Guest Addons installert skikkelig i henhold til instruksjonene ovenfor. Fikk aldri klipp og lim mellom vert og klient til å fungere, noe som hadde vært fint, men jeg klarte å få oppløsningen oppdatert for å bruke min fulle skjermstørrelse. Dette var en serie med google rabit hull som jeg ikke vil dokumentere her.)

Trinn 2: Installer Python 3

Python3 bør allerede være installert med Raspian Stretch.

Trinn 3: Setup Wand Module

Følg denne veiledningen laget av GammaGames

Jeg måtte først bytte til en annen katalog før jeg klonet kano_wand repo, ellers kunne ikke python -skriptet mitt finne det. Sannsynligvis kunne jeg ha oppdatert noen banereferanser i en fil et sted, men jeg gravde ikke inn i det.

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

git -klon

sudo pip3 installer bluepy moosegesture

Måtte bruke sudo for disse for å få de riktige tillatelsene. Måtte også bruke følgende kommandoer i stedet for å installere numpy, uansett grunn, kunne ikke få pip til å fungere. Kan ha vært et annet veiproblem, men dette fungerte for meg, så jeg gikk med det:

sudo apt-get install python3-numpy

Til slutt, for å få de riktige tillatelsene til å kjøre bluepy fra python -skriptet, fant jeg denne kommandoen.

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

Dette er alt som kreves for å få skriptet vårt i gang. Resten av GammaGames -guiden går gjennom trinnvise brikkene som kreves i python -skriptet. Det er en stor sammenbrudd å ytterligere forstå hvordan skriptet er strukturert og hva hvert objekt gjør. Stor takk til GammaGames for å levere denne dokumentasjonen. Kan også være nyttig for feilsøking av en del av skriptet. For eksempel utfører det første objektet som vises, oppgaven med å skanne etter tryllestav og returnere en liste over stavene som er oppdaget. God bekreftelse på at Bluetooth -oppsettet ditt brenner på alle sylindere. For å gjøre dette kan du kopiere koden fra test1_BLE_wand_detect.py som finnes i følgende repo:

github.com/maspieljr/SmartWand

Trinn 4: Sett opp SmartThings CLI

Nedenfor er en kopi av instruksjonene som er inkludert i smartthings_cli -repoen på github (https://github.com/rllynch/smartthings_cli).

Jeg har inkludert de små justeringene jeg måtte gjøre på oppsettet mitt for å få alt til å fungere. Takk igjen til rllynch for å gi dette.

1) Logg deg på og under Mine SmartApps, opprett en ny SmartApp med koden i groovy/app.groovy.

*Merk at i det første trinnet er det en referanse til et SmartThings -nettsted. Vær nøye med hvor smartthings -kontoen din er. Dette snublet meg en stund da det andre nettstedet tillot meg å logge inn, men kunne ikke finne noen av tingene mine. Jeg måtte bruke følgende lenke for å komme til SmartThings-kontoen min.

(Du er velkommen i de 2 timene jeg brukte på å sortere det:) dette vil også være viktig på et senere trinn.)

2) Klikk på Appinnstillinger, og under OAuth klikker du på Aktiver OAuth i Smart App. Noter OAuth -klient -ID og OAuth -klienthemmelighet. Oppdater OAuth -klientdisplayet til SmartThings CLI -kontroll. Klikk på Oppdater.

3) Gå tilbake til Mine SmartApps, klikk deretter på SmartThings CLI Control. Klikk på Publiser => For meg.

4) Klon smartthings_cli -depotet, opprett en virtualenv hvis ønskelig (jeg gjorde ikke dette), kjør deretter følgende kommandoer, erstatt CLIENTID og CLIENTSECRET med ID og hemmelighet fra trinn 2.

For å klone smartthings repo kan du bruke følgende kommando. Sørg for at linux -ledeteksten er i prosjektkatalogen din som ble opprettet under Wand Module Setup.

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…

Anbefalt: