Completing event loop flask server
This commit is contained in:
parent
93b0cf70a9
commit
89261bc7bf
@ -1,24 +1,33 @@
|
|||||||
from flask import Flask, abort, jsonify, make_response, request
|
from flask import Flask, abort, jsonify, make_response, request
|
||||||
from colorsys import hsv_to_rgb
|
from colorsys import hsv_to_rgb
|
||||||
|
import board
|
||||||
|
import neopixel
|
||||||
|
import signal
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
class Led:
|
class Led:
|
||||||
__IFACE_PIN = 18
|
__IFACE_PIN = board.D18
|
||||||
__COLOR_OFFSET = 0
|
__PIXEL_COUNT = 36
|
||||||
|
|
||||||
def __init__(self, power, brightness, color_angle):
|
def __init__(self, power, brightness, color_angle):
|
||||||
self.power = power
|
self.power = power
|
||||||
self.brightness = brightness
|
self.brightness = brightness
|
||||||
self.color_angle = color_angle
|
self.color_angle = color_angle
|
||||||
self.iface_pin = self.__IFACE_PIN
|
self.iface_pin = self.__IFACE_PIN
|
||||||
|
self.strip = neopixel.NeoPixel(self.iface_pin, self.__PIXEL_COUNT)
|
||||||
|
|
||||||
def update(self):
|
def update(self, off=False):
|
||||||
rgb = self.angle_2_rgb()
|
rgb = self.angle_2_rgb()
|
||||||
r, g, b = rgb
|
r, g, b = rgb
|
||||||
print(f"Setting LED strip to RGB: {r}, {g}, {b}")
|
print(f"Setting LED strip to RGB: {r}, {g}, {b}")
|
||||||
|
self.strip.fill((r, g, b))
|
||||||
|
if not self.power:
|
||||||
|
print("Turning off strip")
|
||||||
|
self.strip.fill((0, 0, 0))
|
||||||
|
|
||||||
def angle_2_rgb(self):
|
def angle_2_rgb(self):
|
||||||
r, g, b = hsv_to_rgb((self.color_angle+self.__COLOR_OFFSET)/360, 1, self.brightness/255)
|
r, g, b = hsv_to_rgb((self.color_angle)/360, 1, self.brightness/255)
|
||||||
r *= 255
|
r *= 255
|
||||||
g *= 255
|
g *= 255
|
||||||
b *= 255
|
b *= 255
|
||||||
@ -30,6 +39,11 @@ class Led:
|
|||||||
'color': self.color_angle}
|
'color': self.color_angle}
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
def power_down(self):
|
||||||
|
print("Shutting down LEDs")
|
||||||
|
self.strip.fill((0, 0, 0))
|
||||||
|
self.strip.fill((0, 0, 0))
|
||||||
|
|
||||||
|
|
||||||
led = Led(False, 0, 0)
|
led = Led(False, 0, 0)
|
||||||
server = Flask('Light_Node')
|
server = Flask('Light_Node')
|
||||||
@ -56,7 +70,7 @@ def init_server():
|
|||||||
print(f"New state: {new_state}")
|
print(f"New state: {new_state}")
|
||||||
led.power = bool(new_state['power'])
|
led.power = bool(new_state['power'])
|
||||||
led.brightness = int(new_state['brightness'])
|
led.brightness = int(new_state['brightness'])
|
||||||
led.color_angle = int(new_state['color'])
|
led.color_angle = 360 - int(new_state['color'])
|
||||||
led.update()
|
led.update()
|
||||||
return jsonify({"success": True})
|
return jsonify({"success": True})
|
||||||
except:
|
except:
|
||||||
@ -69,8 +83,13 @@ def init_server():
|
|||||||
|
|
||||||
|
|
||||||
def start_server():
|
def start_server():
|
||||||
server.run(debug=True)
|
server.run(debug=True, host="0.0.0.0")
|
||||||
|
|
||||||
|
def exit_handler(*_):
|
||||||
|
print("Exiting gracefully")
|
||||||
|
led.power_down()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
signal.signal(signal.SIGINT, exit_handler)
|
||||||
init_server()
|
init_server()
|
||||||
start_server()
|
start_server()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user