Mục lục:

SmartWand: 6 bước
SmartWand: 6 bước

Video: SmartWand: 6 bước

Video: SmartWand: 6 bước
Video: Mi Smart Band 6 - Dẫn Bước Tiên Phong 2024, Tháng bảy
Anonim
SmartWand
SmartWand

Dự án này là để có được một tập lệnh Python để điều khiển Smartthings với cây đũa phép mã hóa Kano làm đầu vào.

Các con gái của tôi (8 và 12 tuổi) rất hâm mộ Harry Potter và đã nhận được Đũa phép mã hóa Kano vào dịp Giáng sinh. Ứng dụng mã hóa Kano rất thú vị và họ rất vui với nó. Công cụ tuyệt vời để giới thiệu các khái niệm mã hóa.

Chúng tôi cũng có một chút tự động hóa gia đình được rải khắp nhà với SmartThings, Phillips Hue, trung tâm Logitech Harmony, v.v. Nox tại tôi. Nghe có vẻ như một thử thách thú vị nên tôi đã tham gia.

Phải đi cùng với hệ điều hành Linux vì một yếu tố quan trọng (thư viện trăn Bluepy để kết nối với Bluetooth đũa phép) chỉ khả dụng trên nền tảng Linux. Dù sao cũng thuận tiện từ quan điểm cuối cùng muốn chạy điều này trên Raspberry Pi.

Có hai tài liệu tham khảo chính ở đây, nếu không có tài liệu này, tôi sẽ không bao giờ có thể làm được điều này.

Cảm ơn GammaGames đã tạo và chia sẻ tập lệnh python để đọc đũa phép mã hóa Kano.

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

Cảm ơn rllynch đã tạo và chia sẻ tập lệnh python cho giao diện dòng lệnh SmartThings.

github.com/rllynch/smartthings_cli

Để giữ nguyên điều này, tôi sẽ sao chép hầu hết các bước đối với Tài liệu hướng dẫn này để nắm bắt bất kỳ chỉnh sửa nào tôi cần để làm cho nó hoạt động trên thiết lập của tôi.

Đây là những gì bạn cần:

  • Bộ mã hóa Harry Potter Kano (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Hệ điều hành dựa trên Linux (tôi đã thiết lập và chạy với VirtualBox, sau đó được cài đặt trên Raspberry Pi)
  • Bộ điều hợp USB Bluetooth (Tôi đã sử dụng Bộ điều hợp USB 4.0 Kensington Bluetooth)
  • Kết nối Internet (Đối với RPi, tôi đã sử dụng bộ điều hợp Wi-Fi USB Edimax mà tôi có từ một dự án trước đó)

Bước 1: Cài đặt Linux trên Raspberry Pi

Làm theo các liên kết bên dưới để cài đặt HĐH Linux vào Raspberry Pi. Tôi đã sử dụng Raspbian Stretch với máy tính để bàn và phần mềm được đề xuất và flash bằng Etcher.

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

Khi bạn đã hoàn tất cài đặt và có Dấu nhắc lệnh của Linux, bạn nên chạy hai lệnh sau để đảm bảo mọi thứ đều được cập nhật.

sudo apt-get cập nhật

sudo apt-get nâng cấp

Nhập dòng lệnh sau vào giao diện dòng lệnh để khởi chạy giao diện người dùng trên máy tính để bàn.

sudo startx

Điều tiếp theo cần thiết lập là kết nối internet để bạn có thể truy cập các kho lưu trữ và cài đặt phần mềm khác. Kết nối Internet cũng sẽ được yêu cầu để đạt được API SmartThings. Làm theo hướng dẫn này để kết nối. Khá thẳng từ máy tính để bàn. Tôi đã sử dụng Bộ điều hợp USB wifi mà tôi đã đặt xung quanh.

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

Ngoài Raspberry Pi, bạn có thể sử dụng một máy tính hiện có khác để khởi động kép HĐH Linux cùng với HĐH hiện có của mình (hơi khó vì bạn phải khởi động lại để chuyển đổi giữa hai hệ điều hành này) hoặc chạy một phiên bản của HĐH Linux trên một VirtualBox. Trước tiên, để dự án này hoạt động ban đầu, tôi đã cài đặt Debian Stretch với Raspberry Pi Desktop trong Virtual Box bằng cách sử dụng hướng dẫn sau:

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

(lưu ý: Tôi đã rất lâu để cài đặt Tiện ích Khách cho khách đúng cách theo hướng dẫn ở trên. Chưa bao giờ việc cắt và dán giữa máy chủ và máy khách hoạt động, điều này sẽ rất hay, nhưng tôi đã cố gắng cập nhật độ phân giải để sử dụng kích thước màn hình đầy đủ của tôi. Đây là một loạt các lỗ hổng của google mà tôi sẽ không ghi lại ở đây.)

Bước 2: Cài đặt Python 3

Python3 đã được cài đặt với Raspian Stretch.

Bước 3: Thiết lập mô-đun Wand

Làm theo hướng dẫn này do GammaGames tạo

Đầu tiên tôi phải thay đổi sang một thư mục khác trước khi sao chép repo kano_wand, nếu không tập lệnh python của tôi không thể tìm thấy nó. Có lẽ có thể đã cập nhật một số tham chiếu đường dẫn trong một số tệp ở đâu đó, nhưng tôi không tìm hiểu kỹ về điều đó.

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

git clone

sudo pip3 cài bluepy moosegesture

Phải sử dụng sudo cho những điều này để nhận được các quyền thích hợp. Cũng phải sử dụng các lệnh sau để cài đặt numpy, vì bất kỳ lý do gì, không thể làm cho pip hoạt động. Có thể là một vấn đề về đường dẫn khác, nhưng điều này phù hợp với tôi vì vậy tôi đã đi với nó:

sudo apt-get install python3-numpy

Cuối cùng, để có được quyền thích hợp để chạy bluepy từ tập lệnh python, tôi đã tìm thấy lệnh này.

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

Đây là tất cả những gì cần thiết để thiết lập và chạy tập lệnh của chúng tôi. Phần còn lại của hướng dẫn GammaGames sẽ đi qua các phần từng bước được yêu cầu trong tập lệnh python. Đó là một bản phân tích tuyệt vời để hiểu thêm về cách tập lệnh được cấu trúc và những gì mỗi đối tượng đang làm. Xin chân thành cảm ơn GammaGames đã cung cấp tài liệu này. Cũng có thể hữu ích để khắc phục sự cố một phần của tập lệnh. Ví dụ: đối tượng đầu tiên được hiển thị thực hiện nhiệm vụ quét tìm cây đũa phép và trả về danh sách cây đũa phép được phát hiện. Xác minh tốt rằng thiết lập bluetooth của bạn đang kích hoạt trên tất cả các trụ. Để thực hiện việc này, bạn có thể sao chép mã từ test1_BLE_wand_detect.py được tìm thấy trong repo sau:

github.com/maspieljr/SmartWand

Bước 4: Thiết lập SmartThings CLI

Dưới đây là bản sao của các hướng dẫn có trong repo smartthings_cli trên github (https://github.com/rllynch/smartthings_cli).

Tôi đã đưa vào đây những chỉnh sửa nhỏ mà tôi phải thực hiện trên thiết lập của mình để mọi thứ hoạt động. Một lần nữa, cảm ơn rllynch đã cung cấp điều này.

1) Đăng nhập và bên dưới SmartApps của tôi, tạo một SmartApp mới với mã trong groovy / app.groovy.

* Lưu ý trong bước đầu tiên có tham chiếu đến trang web SmartThings. Hãy chú ý xem tài khoản smartthings của bạn đang ở đâu. Điều này khiến tôi gặp khó khăn trong một thời gian vì trang web khác cho phép tôi đăng nhập, nhưng không thể tìm thấy bất kỳ nội dung nào của tôi. Tôi phải sử dụng liên kết sau để truy cập tài khoản SmartThings của mình.

(Bạn được hoan nghênh trong 2 giờ tôi đã dành để phân loại nó:) điều này cũng sẽ quan trọng ở bước sau.)

2) Nhấp vào Cài đặt ứng dụng và trong OAuth, nhấp vào Bật OAuth trong Ứng dụng thông minh. Ghi lại ID ứng dụng khách OAuth và Bí mật về ứng dụng khách OAuth. Cập nhật Hiển thị ứng dụng khách OAuth thành Kiểm soát CLI SmartThings. Nhấp vào Cập nhật.

3) Quay lại My SmartApps rồi nhấp vào SmartThings CLI Control. Nhấp vào Xuất bản => Dành cho tôi.

4) Sao chép kho lưu trữ smartthings_cli, tạo một virtualenv nếu muốn (tôi không làm điều này), sau đó chạy các lệnh sau, thay thế CLIENTID và CLIENTSECRET bằng ID và bí mật từ bước 2.

Để sao chép kho lưu trữ thông minh, bạn có thể sử dụng lệnh sau. Đảm bảo rằng dấu nhắc lệnh linux nằm trong thư mục dự án của bạn được tạo trong quá trình Thiết lập mô-đun Wand.

git clone >

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…

Đề xuất: