Spaces:
Sleeping
Sleeping
| from flask import Flask, render_template, jsonify, request | |
| from flask_cors import CORS | |
| app = Flask(__name__) | |
| CORS(app, resources={r"/api/*": {"origins": "*"}}) | |
| # Thêm security headers cho HF Spaces | |
| def after_request(response): | |
| response.headers.add('Access-Control-Allow-Origin', '*') | |
| response.headers.add('Access-Control-Allow-Headers', 'Content-Type') | |
| response.headers.add('Access-Control-Allow-Methods', 'GET,POST,OPTIONS') | |
| return response | |
| # Trạng thái đèn (lưu trong memory, có thể thay bằng database) | |
| light_status = { | |
| 'on': False | |
| } | |
| def index(): | |
| """Trang chủ với giao diện điều khiển đèn""" | |
| return render_template('index.html') | |
| def get_light_status(): | |
| """API lấy trạng thái đèn hiện tại""" | |
| return jsonify({ | |
| 'status': 'on' if light_status['on'] else 'off', | |
| 'on': light_status['on'] | |
| }) | |
| def toggle_light(): | |
| """API bật/tắt đèn""" | |
| light_status['on'] = not light_status['on'] | |
| return jsonify({ | |
| 'status': 'on' if light_status['on'] else 'off', | |
| 'on': light_status['on'], | |
| 'message': 'Đèn đã bật' if light_status['on'] else 'Đèn đã tắt' | |
| }) | |
| def turn_on(): | |
| """API bật đèn""" | |
| light_status['on'] = True | |
| return jsonify({ | |
| 'status': 'on', | |
| 'on': True, | |
| 'message': 'Đèn đã bật' | |
| }) | |
| def turn_off(): | |
| """API tắt đèn""" | |
| light_status['on'] = False | |
| return jsonify({ | |
| 'status': 'off', | |
| 'on': False, | |
| 'message': 'Đèn đã tắt' | |
| }) | |
| if __name__ == '__main__': | |
| app.run(debug=False, host='0.0.0.0', port=7860) |