تحكم في Raspberry Pi بصوتك
تطبيق لتحريك الإجراءات على RPi
يتم إنشاء تطبيق الويب باستخدام إطار عمل Python المسمى Flask.
نبدأ بتثبيت الإطار على Rpi الخاص بنا.
1
2
|
sudo apt–get install pip
sudo pip install flask
|
نقوم بإنشاء ملف python نجعله قابلاً للتنفيذ
1
2
|
touch controle_volets.py
chmox +x controle_volets.py
|
هنا هو الرمز المستخدم. لقد حددت مصدرين: الافتتاح والختام.
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’)
|
في المثال أستخدم فئة "GpioControl" التي أعطيك إياها كمثال. يؤدي هذا إلى وضع منافذ GPIO في حالة "1" لمدة ثانية واحدة. من الواضح أن هذا البرنامج النصي خاص بالتحكم في الستائر الدوارة الخاصة بي. يجب عليك استبدال جهازك كجزء من التحكم في التشغيل الآلي للمنزل الذي تقوم بتطويره.
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 (أقوم بتشغيل sudo لأن مكتبة GPIO تتطلب حقوق الجذر)
1
|
sudo ./controle_volets.py
|
سنقوم باختبار المورد. في Linux ، أختبر باستخدام أداة Curl. بناء الجملة على النحو التالي
1
|
curl <url> –d <data> –X type de requete
|
لاختبار مورد "الإغلاق" ، اكتب
1
|
curl http://192.168.0.20/fermeture –d « password=monpass » –X POST
|
خلق عمل تاسكر
أفترض أنك أنشأت بالفعل حدثًا وسجلت الأمر الصوتي. سنقوم الآن بإنشاء الإجراء المرتبط بهذا الحدث.
سيتألف الإجراء من إرسال طلب HTTP POST إلى خادم Flask على Rpi.
- في قائمة المهام المفتوحة سابقًا بعد إنشاء حدث ، أدخل اسمًا لمهمتك.
- انقر فوق "+" لإضافة إجراء جديد
- ننتقل إلى فئة "الشبكة" ، ثم "Post HTTP"
- في "Server: Port" نعطي عنوان IP الخاص بـ Rpi بالإضافة إلى منفذ خادم الويب. في حالتي 5000 ، المنفذ الافتراضي لـ Flask
- في "المسار" نقوم بإدخال عنوان URL للمورد المطلوب. في بلدي المثال / الإغلاق
- في "البيانات / الملف" أضع بياناتي المرسلة في POST ، أي كلمة المرور. كلمة المرور = "mypass"
Voila ، كل ما عليك فعله هو الاتصال بالطلب عبر Google Now. هذا ما يعطيني.