-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
66 lines (53 loc) · 1.85 KB
/
app.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from decouple import config
from flask import Flask, request, jsonify
from flask_mqtt import Mqtt
from random import random
import json
import requests
app = Flask(__name__)
# Funcionalidades MQTT
app.config['MQTT_REFRESH_TIME'] = 1.0
app.config['TEMPLATES_AUTO_RELOAD'] = True
app.config['MQTT_BROKER_URL'] = config('MQTT_URL')
app.config['MQTT_BROKER_PORT'] = int(config('MQTT_PORT'))
app.config['MQTT_USERNAME'] = config('MQTT_USER')
app.config['MQTT_PASSWORD'] = config('MQTT_PASSWORD')
app.config['MQTT_KEEPALIVE'] = 60
app.config['MQTT_TLS_ENABLED'] = False
mqtt = Mqtt(app)
@mqtt.on_connect()
def handle_connect(client, userdata, flags, rc):
mqtt.subscribe('#')
@mqtt.on_subscribe()
@mqtt.on_message()
def handle_mqtt_message(client, userdata, message):
topic = message.topic
payload = message.payload.decode()
payload = json.loads(payload)
print(topic, payload)
if topic == 'controller/sendrequest':
print(payload['method'], payload['url'])
req = ""
if payload['method'].lower() == 'get':
req = requests.get(payload['url'])
print(req.text)
if payload['method'].lower() == 'post':
req = requests.post(payload['url'], data=payload['body'])
if payload['method'].lower() == 'put':
req = requests.put(payload['url'], data=payload['body'])
if payload['method'].lower() == 'delete':
req = requests.delete(payload['url'], data=payload['body'])
print(req)
mqtt.publish('controller/out', req.status_code)
def handle_publish(data):
mqtt.publish(data['topic'], data['message'])
@app.route('/')
def index():
return {"data": random()}
@app.route('/send-mqtt', methods=['POST'])
def send_mqtt():
content = request.json
handle_publish(content)
return content
if __name__ == '__main__':
app.run(port=config('PORT'))