Ahududu Pi'yi sesinizle kontrol edin
RPi'de eylemleri tetiklemek için uygulama
Web uygulaması Flask adlı Python çerçevesi kullanılarak oluşturulmuştur.
Çerçeveyi Rpi'mize kurarak başlıyoruz.
1
2
|
sudo apt–get install pip
sudo pip install flask
|
Yürütülebilir hale getirdiğimiz bir python dosyası oluşturuyoruz
1
2
|
touch controle_volets.py
chmox +x controle_volets.py
|
İşte kullanılan kod. 2 kaynak tanımladım: açma ve kapama.
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’)
|
Örnekte size örnek olarak verdiğim “GpioControl” sınıfını kullanıyorum. Bu, GPIO bağlantı noktalarını bir saniyeliğine "1" durumuna getirir. Açıkçası, bu senaryo panjurlarımın kontrolüne özel. Geliştirmekte olduğunuz ev otomasyon kontrolünün bir parçası olarak sizinkini değiştirmelisiniz.
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()
|
Flask Web sunucusunu başlatın (GPIO kitaplığı kök hakları gerektirdiği için sudo'da çalışıyorum)
1
|
sudo ./controle_volets.py
|
Kaynağı test edeceğiz. Linux'ta Curl aracını kullanarak test ediyorum. Sözdizimi aşağıdaki gibidir
1
|
curl <url> –d <data> –X type de requete
|
“Kapatma” kaynağını test etmek için şunu yazarım
1
|
curl http://192.168.0.20/fermeture –d « password=monpass » –X POST
|
Tasker eylemi oluşturma
Zaten bir olay oluşturduğunuzu ve sesli komutu kaydettiğinizi varsayıyorum. Şimdi bu olayla ilişkili eylemi oluşturacağız.
Eylem, HTTP POST isteğinin Rpi üzerindeki Flask sunucusuna gönderilmesinden oluşacaktır.
- Etkinlik oluşturulduktan sonra daha önce açılan görev menüsünde, göreviniz için bir ad girin.
- Yeni bir eylem eklemek için “+” üzerine tıklayın
- “Ağ” kategorisine, ardından “Post HTTP” kategorisine gidiyoruz.
- “Sunucu: Bağlantı Noktası”nda, Web sunucusunun bağlantı noktasının yanı sıra Rpi'nin IP adresini de veriyoruz. Benim durumumda 5000, Flask'ın varsayılan bağlantı noktası
- "Yol" alanına, istenen kaynağın URL'sini giriyoruz. Örneğimde / kapanışta
- “Veri / dosya” alanına POST'a gönderilen verilerimi, yani bir şifre koyuyorum. şifre = ”mypass”
Voila, tek yapman gereken siparişi Google Now üzerinden aramak. Bana verdiği şey bu.