Kontrolloni një Raspberry Pi me zërin tuaj
Aplikim për të shkaktuar veprime në RPi
Aplikacioni ueb është krijuar duke përdorur kornizën Python të quajtur Flask.
Ne fillojmë duke instaluar kornizën në Rpi tonë.
1
2
|
sudo apt–get install pip
sudo pip install flask
|
Ne krijojmë një skedar python që e bëjmë të ekzekutueshëm
1
2
|
touch controle_volets.py
chmox +x controle_volets.py
|
Këtu është kodi i përdorur. Unë kam përcaktuar 2 burime: hapjen dhe mbylljen.
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’)
|
Në shembullin që po përdor klasën “GpioControl” që po ju jap si shembull. Kjo i vendos portat GPIO në gjendjen "1" për një sekondë. Natyrisht, ky skenar është specifik për kontrollin e grilave të mia. Ju duhet të zëvendësoni tuajin si pjesë e kontrollit të automatizimit të shtëpisë që po zhvilloni.
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()
|
Nis serverin në ueb Flask (unë ekzekutoj në sudo sepse biblioteka GPIO kërkon të drejta rrënjësore)
1
|
sudo ./controle_volets.py
|
Ne do të testojmë burimin. Në Linux testoj duke përdorur mjetin Curl. Sintaksa është si më poshtë
1
|
curl <url> –d <data> –X type de requete
|
Për të testuar burimin "mbyllje", shkruaj
1
|
curl http://192.168.0.20/fermeture –d « password=monpass » –X POST
|
Krijimi i veprimit Tasker
Unë supozoj se ju keni krijuar tashmë një ngjarje dhe keni regjistruar komandën zanore. Tani do të krijojmë veprimin e lidhur me këtë ngjarje.
Veprimi do të konsistojë në dërgimin e kërkesës HTTP POST te serveri Flask në Rpi.
- Në menynë e detyrave të hapura më parë pas krijimit të një ngjarjeje, vendosni një emër për detyrën tuaj.
- Klikoni në "+" për të shtuar një veprim të ri
- Shkojmë në kategorinë "Rrjeti", pastaj "Post HTTP"
- Në "Server: Port" ne japim adresën IP të Rpi si dhe portin e serverit në internet. Në rastin tim 5000, porti i parazgjedhur i Flask
- Në "rrugë" ne futim URL-në e burimit të kërkuar. Në shembullin / mbylljen time
- Në "Data / skedar" vendos të dhënat e mia të dërguara në POST, përkatësisht një fjalëkalim. fjalëkalimi = "mypass"
Voila, gjithçka që duhet të bëni është të telefononi porosinë përmes Google Tani. Kjo është ajo që më jep.