สารบัญ:

SmartWand: 6 ขั้นตอน
SmartWand: 6 ขั้นตอน

วีดีโอ: SmartWand: 6 ขั้นตอน

วีดีโอ: SmartWand: 6 ขั้นตอน
วีดีโอ: แกะกล่อง Xiaomi Mi Band 6 ใช้งานเบื้องต้น เครื่อง 0 ไทย ราคาโคตรคุ้ม 1090 บาท 2024, พฤศจิกายน
Anonim
SmartWand
SmartWand

โปรเจ็กต์นี้คือการรับสคริปต์ Python เพื่อควบคุม Smartthings ด้วย Kano coding wand เป็นอินพุต

ลูกสาวของฉัน (8 และ 12 ปี) เป็นแฟนตัวยงของ Harry Potter และได้รับ Kano Coding Wand สำหรับคริสต์มาส แอพเขียนโค้ด Kano นั้นเจ๋งและพวกเขากำลังสนุกกับมัน เครื่องมือที่ยอดเยี่ยมในการแนะนำแนวคิดการเข้ารหัส

เรายังมีระบบอัตโนมัติในบ้านเล็กน้อยที่กระจายอยู่ทั่วบ้านด้วย SmartThings, Phillips Hue, ฮับ Logitech Harmony ฯลฯ… พวกเขามาถึงจุดที่พวกเขาต้องการเปิดไฟต้นคริสต์มาสด้วยไม้กายสิทธิ์อย่างหลีกเลี่ยงไม่ได้ และเริ่มโยนคำอย่าง Lumos และ น็อกซ์มาที่ฉัน ฟังดูเหมือนเป็นความท้าทายที่สนุก ฉันก็เลยทำมัน

ต้องใช้ระบบปฏิบัติการ Linux เนื่องจากองค์ประกอบที่สำคัญ (ไลบรารี Bluepy python สำหรับเชื่อมต่อกับ Bluetooth wand) มีให้ใช้งานบนแพลตฟอร์ม Linux เท่านั้น สะดวกจากมุมมองของในที่สุดต้องการใช้งานบน Raspberry Pi

มีข้อมูลอ้างอิงหลักสองประการที่นี่ หากปราศจากสิ่งนี้ ฉันจะไม่สามารถทำสิ่งนี้ได้

ขอบคุณ GammaGames สำหรับการสร้างและแบ่งปันสคริปต์ python สำหรับการอ่าน Kano coding wand

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

และ

ขอบคุณ rllynch สำหรับการสร้างและแบ่งปันสคริปต์ python สำหรับอินเทอร์เฟซบรรทัดคำสั่ง SmartThings

github.com/rllynch/smartthings_cli

เพื่อให้สิ่งนี้ไม่เสียหาย ฉันจะคัดลอกขั้นตอนส่วนใหญ่ไปยังคำแนะนำนี้เพื่อจับภาพการปรับแต่งใด ๆ ที่ฉันต้องการเพื่อให้มันทำงานในการตั้งค่าของฉัน

นี่คือสิ่งที่คุณต้องการ:

  • ชุดเข้ารหัส Harry Potter Kano (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • ระบบปฏิบัติการที่ใช้ Linux (ฉันได้รับและใช้งาน VirtualBox แล้วติดตั้งบน Raspberry Pi)
  • อะแดปเตอร์ Bluetooth USB (ฉันใช้อะแดปเตอร์ USB Bluetooth 4.0 ของ Kensington)
  • การเชื่อมต่ออินเทอร์เน็ต (สำหรับ RPi ฉันใช้อแด็ปเตอร์ Edimax USB WiFi ที่ฉันมีจากโปรเจ็กต์ก่อนหน้า)

ขั้นตอนที่ 1: ติดตั้ง Linux บน Raspberry Pi

ตามลิงค์ด้านล่างเพื่อติดตั้งระบบปฏิบัติการ Linux บน Raspberry Pi ฉันใช้ Raspbian Stretch กับเดสก์ท็อปและซอฟต์แวร์ที่แนะนำ และแฟลชด้วย Etcher

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

เมื่อคุณติดตั้งเสร็จแล้วและมีพรอมต์คำสั่งสำหรับ Linux คุณควรเรียกใช้สองคำสั่งต่อไปนี้เพื่อให้แน่ใจว่าทุกอย่างทันสมัยอยู่เสมอ

sudo apt-get update

sudo apt-get อัพเกรด

พิมพ์ข้อมูลต่อไปนี้ที่อินเทอร์เฟซบรรทัดคำสั่งเพื่อเปิด UI เดสก์ท็อป

sudo startx

สิ่งต่อไปในการตั้งค่าคือการเชื่อมต่ออินเทอร์เน็ตเพื่อให้คุณสามารถไปที่ repos และติดตั้งซอฟต์แวร์เพิ่มเติมได้ การเชื่อมต่ออินเทอร์เน็ตจะต้องเข้าถึง SmartThings API ด้วย ทำตามคำแนะนำนี้เพื่อเชื่อมต่อ ค่อนข้างตรงไปตรงมาจากเดสก์ท็อป ฉันใช้อะแดปเตอร์ USB wifi ที่ฉันวางไว้

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

อีกทางหนึ่งกับ Raspberry Pi คุณสามารถใช้คอมพิวเตอร์เครื่องอื่นที่มีอยู่เพื่อบูทระบบปฏิบัติการ Linux คู่กับระบบปฏิบัติการที่มีอยู่ของคุณ (ค่อนข้างลำบากเพราะคุณต้องรีบูตเพื่อสลับไปมาระหว่างสองเครื่อง) หรือเรียกใช้อินสแตนซ์ของ Linux OS บน VirtualBox. เพื่อให้โปรเจ็กต์นี้ใช้งานได้ในตอนแรก ฉันได้ติดตั้ง Debian Stretch กับ Raspberry Pi Desktop ใน Virtual Box โดยใช้คู่มือนี้:

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

(หมายเหตุ: ฉันเคยชินกับการติดตั้ง Guest Addons อย่างถูกต้องตามคำแนะนำข้างต้น ไม่เคยตัดและวางระหว่างโฮสต์และไคลเอนต์เพื่อทำงาน ซึ่งน่าจะดี แต่ฉันจัดการเพื่อให้ได้รับความละเอียดที่อัปเดตเพื่อใช้ ขนาดจอภาพเต็มของฉัน นี่คือชุดของ google rabit holes ซึ่งฉันจะไม่บันทึกที่นี่)

ขั้นตอนที่ 2: ติดตั้ง Python 3

ควรติดตั้ง Python3 ด้วย Raspian Stretch แล้ว

ขั้นตอนที่ 3: ตั้งค่า Wand Module

ทำตามคำแนะนำนี้ที่สร้างโดย GammaGames

ก่อนอื่นฉันต้องเปลี่ยนเป็นไดเร็กทอรีอื่นก่อนที่จะโคลน kano_wand repo ไม่เช่นนั้นสคริปต์ python ของฉันจะไม่พบ อาจอัปเดตการอ้างอิงพาธบางไฟล์ในไฟล์บางไฟล์ แต่ฉันไม่ได้เจาะลึกลงไป

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

โคลน git

sudo pip3 ติดตั้ง bluepy moosegesture

ต้องใช้ sudo เพื่อให้ได้รับสิทธิ์ที่เหมาะสม ต้องใช้คำสั่งต่อไปนี้แทนเพื่อติดตั้ง numpy ด้วยเหตุผลใดก็ตามจึงไม่สามารถใช้งาน pip ได้ อาจเป็นปัญหาเส้นทางอื่น แต่สิ่งนี้ใช้ได้สำหรับฉันดังนั้นฉันจึงไปกับมัน:

sudo apt-get ติดตั้ง python3-numpy

สุดท้าย เพื่อให้ได้รับสิทธิ์ที่เหมาะสมในการเรียกใช้ bluepy จากสคริปต์ python ฉันพบคำสั่งนี้

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

นี่คือทั้งหมดที่จำเป็นในการทำให้สคริปต์ของเราทำงาน คู่มือ GammaGames ที่เหลือจะอธิบายทีละขั้นตอนที่จำเป็นในสคริปต์หลาม เป็นรายละเอียดที่ยอดเยี่ยมในการทำความเข้าใจเพิ่มเติมว่าสคริปต์มีโครงสร้างอย่างไรและแต่ละออบเจกต์ทำอะไร ขอบคุณมากสำหรับ GammaGames ที่ให้เอกสารนี้ อาจเป็นประโยชน์สำหรับการแก้ปัญหาในส่วนของสคริปต์ ตัวอย่างเช่น วัตถุแรกที่แสดงดำเนินการสแกนหาไม้กายสิทธิ์และส่งคืนรายการไม้กายสิทธิ์ที่ค้นพบ การตรวจสอบที่ดีว่าการตั้งค่าบลูทู ธ ของคุณเริ่มทำงานกับกระบอกสูบทั้งหมด ในการทำเช่นนี้ คุณสามารถคัดลอกโค้ดจาก test1_BLE_wand_detect.py ที่พบใน repo ต่อไปนี้:

github.com/maspieljr/SmartWand

ขั้นตอนที่ 4: ตั้งค่า SmartThings CLI

ด้านล่างนี้คือสำเนาของคำแนะนำที่รวมอยู่ใน repo smartthings_cli บน github (https://github.com/rllynch/smartthings_cli)

ฉันได้รวมการปรับแต่งเล็กๆ น้อยๆ ที่ฉันต้องทำในการตั้งค่าไว้ที่นี่เพื่อให้ทุกอย่างทำงานได้ ขอขอบคุณอีกครั้งที่ rllynch ที่ให้สิ่งนี้

1) เข้าสู่ระบบและภายใต้ My SmartApps สร้าง SmartApp ใหม่ด้วยรหัสใน groovy/app.groovy

*หมายเหตุ ในขั้นตอนแรกจะมีการอ้างอิงถึงเว็บไซต์ SmartThings เอาใจใส่อย่างใกล้ชิดว่าบัญชีสมาร์ทของคุณอยู่ที่ไหน สิ่งนี้ทำให้ฉันสะดุดอยู่พักหนึ่งเนื่องจากไซต์อื่นอนุญาตให้ฉันลงชื่อเข้าใช้ แต่ไม่พบข้อมูลของฉันเลย ฉันต้องใช้ลิงก์ต่อไปนี้เพื่อไปที่บัญชี SmartThings ของฉันhttps://graph-na04-useast2.api.smartthings.com

(คุณยินดีสำหรับ 2 ชั่วโมงที่ฉันใช้ไปในการแยกแยะ:) สิ่งนี้จะมีความสำคัญในขั้นตอนต่อไปเช่นกัน)

2) คลิกการตั้งค่าแอพและภายใต้ OAuth คลิกเปิดใช้งาน OAuth ในแอพอัจฉริยะ จดบันทึกรหัสไคลเอ็นต์ OAuth และรหัสลับไคลเอ็นต์ OAuth อัปเดต OAuth Client Display เป็น SmartThings CLI Control คลิกอัปเดต

3) กลับไปที่ My SmartApps จากนั้นคลิกที่ SmartThings CLI Control คลิกเผยแพร่ => สำหรับฉัน

4) โคลนที่เก็บ smartthings_cli สร้าง virtualenv หากต้องการ (ฉันไม่ได้ทำ) จากนั้นเรียกใช้คำสั่งต่อไปนี้ แทนที่ CLIENTID และ CLIENTSECRET ด้วย ID และความลับจากขั้นตอนที่ 2

ในการโคลน repo smartthings คุณสามารถใช้คำสั่งต่อไปนี้ ตรวจสอบให้แน่ใจว่าพรอมต์คำสั่ง linux อยู่ในไดเร็กทอรีโครงการของคุณที่สร้างขึ้นระหว่างการตั้งค่าโมดูล Wand

git โคลน >

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…

แนะนำ: