Điều khiển Raspberry Pi bằng giọng nói của bạn
Ứng dụng để kích hoạt các hành động trên RPi
Ứng dụng web được tạo bằng cách sử dụng khung Python có tên là Flask.
Chúng tôi bắt đầu bằng cách cài đặt khung công tác trên Rpi của chúng tôi.
1
2
|
sudo apt–get install pip
sudo pip install flask
|
Chúng tôi tạo một tệp python mà chúng tôi thực thi
1
2
|
touch controle_volets.py
chmox +x controle_volets.py
|
Đây là mã được sử dụng. Tôi đã xác định 2 tài nguyên: mở và đóng.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#! /usr/bin/python
# -*- coding:utf-8 -*-
from flask import Flask, request
from gpio_control import GpioControl
app = Flask(__name__)
@app.route(‘/’)
def index():
return « App de control des volets »
@app.route(‘/ouverture’, methods=[‘POST’])
def ouverture():
if request.method == ‘POST’:
if request.values[‘password’] == « monpass »:
# lancez ici le script que vous voulez
print « ouverture volet »
gpio_ouverture = GpioControl()
gpio_ouverture.ouverture()
else:
print « mauvais pass »
return « Ouverture des volets »
@app.route(‘/fermeture’, methods=[‘POST’])
def fermeture():
if request.method == ‘POST’:
if request.values[‘password’] == « monpass »:
print « Fermeture des volets »
gpio_fermeture = GpioControl()
gpio_fermeture.fermeture()
else:
print « mauvais pass »
return « Fermeture des volets »
if __name__ == ‘__main__’:
app.run(debug=True, host=‘0.0.0.0’)
|
Trong ví dụ, tôi sử dụng lớp “GpioControl” mà tôi cung cấp cho bạn làm ví dụ. Điều này đặt các cổng GPIO ở trạng thái “1” trong một giây. Rõ ràng, tập lệnh này dành riêng cho việc điều khiển cửa chớp con lăn của tôi. Bạn phải thay thế của bạn như một phần của điều khiển tự động hóa gia đình mà bạn đang phát triển.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import time
import RPi.GPIO as gpio
class GpioControl:
def __init__(self):
pass
def ouverture(self):
# on passe en mode BMC qui veut dire que nous allons utiliser directement
# le numero GPIO plutot que la position physique sur la carte
gpio.setmode(gpio.BCM)
# defini le port GPIO 4 comme etant une sortie output
gpio.setup(4, gpio.OUT)
# Mise a 1 une seconde puis 0 une seconde
gpio.output(4, gpio.HIGH)
time.sleep(1)
gpio.output(4, gpio.LOW)
gpio.cleanup()
def fermeture(self):
# on passe en mode BMC qui veut dire que nous allons utiliser directement
# le numero GPIO plutot que la position physique sur la carte
gpio.setmode(gpio.BCM)
# defini le port GPIO 4 comme etant une sortie output
gpio.setup(22, gpio.OUT)
# Mise a 1 une seconde puis 0 une seconde
gpio.output(22, gpio.HIGH)
time.sleep(1)
gpio.output(22, gpio.LOW)
gpio.cleanup()
|
Khởi động máy chủ Web Flask (Tôi chạy trong sudo vì thư viện GPIO yêu cầu quyền root)
1
|
sudo ./controle_volets.py
|
Chúng tôi sẽ kiểm tra tài nguyên. Trên Linux, tôi kiểm tra bằng công cụ Curl. Cú pháp như sau
1
|
curl <url> –d <data> –X type de requete
|
Để kiểm tra tài nguyên "đóng", tôi nhập
1
|
curl http://192.168.0.20/fermeture –d « password=monpass » –X POST
|
Tạo hành động Tasker
Tôi giả sử bạn đã tạo một sự kiện và ghi lại lệnh thoại. Bây giờ chúng tôi sẽ tạo hành động liên quan đến sự kiện này.
Hành động sẽ bao gồm việc gửi yêu cầu HTTP POST đến máy chủ Flask trên Rpi.
- Trong menu nhiệm vụ đã mở trước đó sau khi tạo sự kiện, hãy nhập tên cho nhiệm vụ của bạn.
- Nhấp vào “+” để thêm một hành động mới
- Chúng tôi chuyển đến danh mục "Mạng", sau đó "Đăng HTTP"
- Trong “Máy chủ: Cổng”, chúng tôi cung cấp địa chỉ IP của Rpi cũng như cổng của máy chủ Web. Trong trường hợp của tôi là 5000, cổng mặc định của Flask
- Trong "đường dẫn", chúng tôi nhập URL của tài nguyên được yêu cầu. Trong ví dụ / đóng cửa của tôi
- Trong “Dữ liệu / tệp”, tôi đặt dữ liệu được gửi trong BÀI ĐĂNG, cụ thể là mật khẩu. mật khẩu = ”mypass”
Thì đấy, tất cả những gì còn lại là gọi đơn đặt hàng qua Google Hiện hành. Đây là những gì nó mang lại cho tôi.