Ovládajte Raspberry Pi hlasom
Aplikácia na spustenie akcií na RPi
Webová aplikácia je vytvorená pomocou frameworku Python s názvom Flask.
Začneme inštaláciou rámca na naše Rpi.
1
2
|
sudo apt–get install pip
sudo pip install flask
|
Vytvoríme súbor python, ktorý urobíme spustiteľným
1
2
|
touch controle_volets.py
chmox +x controle_volets.py
|
Tu je použitý kód. Definoval som 2 zdroje: otváranie a zatváranie.
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’)
|
V príklade používam triedu „GpioControl“, ktorú vám uvádzam ako príklad. Tým sa porty GPIO na jednu sekundu dostanú do stavu „1“. Je zrejmé, že tento skript je špecifický pre ovládanie mojich roliet. Svoje musíte vymeniť ako súčasť ovládania domácej automatizácie, ktoré vyvíjate.
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()
|
Spustite webový server Flask (spúšťam v sudo, pretože knižnica GPIO vyžaduje práva root)
1
|
sudo ./controle_volets.py
|
Otestujeme zdroj. Na Linuxe testujem pomocou nástroja Curl. Syntax je nasledovná
1
|
curl <url> –d <data> –X type de requete
|
Na otestovanie zdroja „uzavretia“ napíšem
1
|
curl http://192.168.0.20/fermeture –d « password=monpass » –X POST
|
Vytvorenie akcie Tasker
Predpokladám, že ste už vytvorili udalosť a nahrali hlasový príkaz. Teraz vytvoríme akciu spojenú s touto udalosťou.
Akcia bude pozostávať z odoslania požiadavky HTTP POST na server Flask na Rpi.
- V ponuke úloh, ktorá sa predtým otvorila po vytvorení udalosti, zadajte názov úlohy.
- Kliknutím na „+“ pridáte novú akciu
- Ideme do kategórie „Sieť“ a potom „Uverejniť HTTP“
- V „Server: Port“ uvádzame IP adresu Rpi, ako aj port webového servera. V mojom prípade 5000, predvolený port Flask
- Do „cesty“ zadáme URL požadovaného zdroja. V mojom príklade / uzavretí
- V časti „Údaje / súbor“ umiestnim svoje údaje odoslané v POST, konkrétne heslo. heslo = "mypass"
Voilá, všetko, čo musíte urobiť, je zavolať na objednávku cez Google Now. Toto mi dáva.