Indholdsfortegnelse:

SmartWand: 6 trin
SmartWand: 6 trin

Video: SmartWand: 6 trin

Video: SmartWand: 6 trin
Video: 5 ПРИЧИН НЕ ПОКУПАТЬ XIAOMI MI BAND 6 2024, Juli
Anonim
SmartWand
SmartWand

Dette projekt er at få et Python -script til at styre Smartthings med Kano -kodestaven som input.

Mine døtre (8 og 12) er store Harry Potter -fans og fik Kano Coding Wand til jul. Kano -kodningsappen er sej, og de hygger sig med den. Fantastisk værktøj til at introducere kodningskoncepter.

Vi har også en smule hjemmeautomatisering drysset i hele huset med SmartThings, Phillips Hue, Logitech Harmony -hub osv … De kom uundgåeligt til det punkt, hvor de ville tænde juletræslysene med staven og begyndte at kaste udtryk som Lumos og Nox på mig. Det lød som en sjov udfordring, så jeg tog det.

Var nødt til at gå med et Linux -operativsystem, da et kritisk element (Bluepy python -bibliotek til tilslutning til wand Bluetooth) kun er tilgængeligt på Linux -platforme. Praktisk alligevel set fra synspunktet om i sidste ende at ville køre dette på en Raspberry Pi.

Der er to hovedreferencer her, uden hvilke jeg aldrig ville have været i stand til dette.

Tak til GammaGames for at oprette og dele et python -script til læsning af Kano -kodestaven.

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

og

Tak til rllynch for at oprette og dele et python -script til en SmartThings kommandolinjegrænseflade.

github.com/rllynch/smartthings_cli

For at bevare dette intakt, vil jeg kopiere de fleste trin til denne Instructable for at fange eventuelle tweaks, jeg havde brug for for at få det til at fungere på min opsætning.

Her er hvad du skal bruge:

  • Harry Potter Kano Coding Kit (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Et Linux -baseret operativsystem (jeg fik et til at køre med VirtualBox og derefter installeret på en Raspberry Pi)
  • En Bluetooth USB -adapter (jeg brugte en Kensington Bluetooth 4.0 USB -adapter)
  • Internetforbindelse (til RPi brugte jeg en Edimax USB WiFi -adapter, jeg havde fra et tidligere projekt)

Trin 1: Installer Linux på Raspberry Pi

Følg nedenstående links for at installere et Linux OS på Raspberry Pi. Jeg brugte Raspbian Stretch med desktop og anbefalet software og blinkede med Etcher.

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

Når du har gennemført installationen og har et Linux -kommandoprompt, er det god praksis at køre de følgende to kommandoer for at være sikker på, at alt er opdateret.

sudo apt-get opdatering

sudo apt-get opgradering

Skriv følgende på kommandolinjegrænsefladen for at starte skrivebordets brugergrænseflade.

sudo startx

Næste ting at konfigurere er en internetforbindelse, så du kan komme til repos og sådan for at installere yderligere software. Internetforbindelse er også påkrævet for at ramme SmartThings API. Følg denne vejledning for at få forbindelse. Ret ligetil fra skrivebordet. Jeg brugte en USB wifi -adapter, jeg havde liggende.

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

Alternativt til Raspberry Pi kan du bruge en anden eksisterende computer til enten dual boot et Linux OS sammen med dit eksisterende operativsystem (lidt smerte, fordi du skal genstarte for at skifte mellem de to) eller køre en forekomst af Linux OS på en VirtualBox. For først at få dette projekt til at fungere, installerede jeg Debian Stretch med Raspberry Pi Desktop i en virtuel boks ved hjælp af denne vejledning:

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

(Bemærk: Jeg havde pokker tid til at få installeret Guest Addons korrekt i henhold til ovenstående instruktioner. Fik aldrig klip og indsæt mellem vært og klient til at fungere, hvilket ville have været rart, men det lykkedes mig at få opløsningen opdateret til at udnytte min fulde skærmstørrelse. Dette var en række google rabit -huller, som jeg ikke vil dokumentere her.)

Trin 2: Installer Python 3

Python3 skulle allerede være installeret med Raspian Stretch.

Trin 3: Opsæt Wand -modul

Følg denne vejledning oprettet af GammaGames

Jeg var først nødt til at skifte til en anden mappe, før jeg klonede kano_wand repo, ellers kunne mit python -script ikke finde det. Sandsynligvis kunne have opdateret nogle sti -referencer i en eller anden fil et sted, men jeg gravede ikke ind i det.

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

git -klon

sudo pip3 installer bluepy moosegesture

Var nødt til at bruge sudo til disse for at få de korrekte tilladelser. Var også nødt til at bruge følgende kommandoer i stedet for at installere numpy, uanset årsag, kunne ikke få pip til at fungere. Måske har det været et andet sti -problem, men dette fungerede for mig, så jeg gik med det:

sudo apt-get install python3-numpy

Endelig fandt jeg denne kommando for at få de korrekte tilladelser til at køre bluepy fra python -scriptet.

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

Dette er alt, hvad der kræves for at få vores script i gang. Resten af GammaGames -guiden går igennem de trin for trin stykker, der kræves i python -scriptet. Det er en stor sammenbrud at yderligere forstå, hvordan scriptet er opbygget, og hvad hvert objekt gør. Stor tak til GammaGames for at levere denne dokumentation. Kan også være nyttig til fejlfinding af et afsnit af scriptet. For eksempel udfører det første viste objekt opgaven med at scanne efter tryllestave og returnere en liste over opdagede tryllestave. God verifikation af, at din bluetooth -opsætning udløses på alle cylindre. For at gøre dette kan du kopiere koden fra test1_BLE_wand_detect.py fundet i følgende repo:

github.com/maspieljr/SmartWand

Trin 4: Opsætning af SmartThings CLI

Nedenfor er en kopi af instruktionerne i smartthings_cli repo på github (https://github.com/rllynch/smartthings_cli).

Jeg har her medtaget de små tweaks, som jeg var nødt til at lave på mit setup for at få alt til at fungere. Tak igen til rllynch for at levere dette.

1) Log ind på og under Mine SmartApps, opret en ny SmartApp med koden i groovy/app.groovy.

*Bemærk i det første trin er der en reference til et SmartThings -websted. Vær meget opmærksom på, hvor din smartthings -konto er. Dette snublede mig et stykke tid, da det andet websted tillod mig at logge ind, men kunne ikke finde nogen af mine ting. Jeg var nødt til at bruge følgende link for at komme til min SmartThings-konto.

(Du er velkommen i de 2 timer, jeg brugte på at sortere det:) dette vil også være vigtigt i senere trin.)

2) Klik på Appindstillinger, og klik på Aktiver OAuth i Smart App under OAuth. Noter OAuth -klient -id'et og OAuth -klienthemmeligheden. Opdater OAuth -klientdisplayet til SmartThings CLI -kontrol. Klik på Opdater.

3) Gå tilbage til Mine SmartApps, klik derefter på SmartThings CLI Control. Klik på Udgiv => For mig.

4) Klon smartthings_cli -depotet, opret en virtualenv, hvis det ønskes (jeg gjorde ikke dette), kør derefter følgende kommandoer, udskift CLIENTID og CLIENTSECRET med id'et og hemmeligheden fra trin 2.

For at klone smartthings repo kan du bruge følgende kommando. Sørg for, at kommandoprompten linux er i dit projektmappe oprettet 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…

Anbefalede: