50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from flask import Flask, abort, jsonify, make_response, request, send_from_directory
|
|
|
|
|
|
class Led:
|
|
__IFACE_PIN = 18
|
|
def __init__(self, power, brightness, color_angle):
|
|
self.power = power
|
|
self.brightness = brightness
|
|
self.color_angle = color_angle
|
|
self.iface_pin = self.__IFACE_PIN
|
|
|
|
def change_state(self, power, brightness, color_angle):
|
|
pass
|
|
|
|
def angle_2_rgb(self, angle):
|
|
pass
|
|
|
|
|
|
class LightNode:
|
|
def __init__(self):
|
|
self.led = Led(False, 0, 0)
|
|
self.server = Flask('light_node')
|
|
|
|
def init_server(self):
|
|
@self.server.errorhandler(404)
|
|
def not_found(self, error):
|
|
return make_response(jsonify({'error': 'Not found'}), 404)
|
|
|
|
@self.server.errorhandler(400)
|
|
def bad_request(self, error):
|
|
# Happens when unexpected request sent to observer
|
|
return make_response(jsonify({'error': 'Bad request'}), 400)
|
|
|
|
@self.server.errorhandler(501)
|
|
def server_crash(sef, error):
|
|
# This only happens when a sensor fails to initialise
|
|
return make_response(jsonify({'error': 'Server crashed, check logs'}), 501)
|
|
|
|
@self.server.route('/setState', methhods=['POST'])
|
|
def change_led_state(self):
|
|
try:
|
|
new_state = request.json
|
|
self.led.power = bool(new_state['power'])
|
|
self.led.brightness = int(new_state['brightness'])
|
|
self.led.color = int(new_state['color'])
|
|
return jsonify({"success":True})
|
|
except:
|
|
self.bad_request()
|
|
pass
|