2023-06-14 19:21:52 +00:00
|
|
|
import threading,logging,json,time,datetime
|
|
|
|
from oven import Oven
|
2023-06-16 06:22:52 +00:00
|
|
|
from displayhatmini import DisplayHATMini
|
2023-06-14 19:21:52 +00:00
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
2023-06-16 06:22:52 +00:00
|
|
|
try:
|
|
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
|
|
except ImportError:
|
2023-06-16 06:36:17 +00:00
|
|
|
print("""This requires PIL/Pillow, try:
|
2023-06-16 06:22:52 +00:00
|
|
|
|
|
|
|
sudo apt install python3-pil
|
|
|
|
|
|
|
|
""")
|
|
|
|
|
2023-06-14 19:21:52 +00:00
|
|
|
class OvenDisplay(threading.Thread):
|
|
|
|
def __init__(self,oven,ovenWatcher):
|
|
|
|
self.last_profile = None
|
|
|
|
self.last_log = []
|
|
|
|
self.started = None
|
|
|
|
self.recording = False
|
|
|
|
self.observers = []
|
|
|
|
threading.Thread.__init__(self)
|
|
|
|
self.daemon = True
|
2023-06-16 06:22:52 +00:00
|
|
|
# display HAT setup
|
|
|
|
self.width = DisplayHATMini.WIDTH
|
|
|
|
self.height = DisplayHATMini.HEIGHT
|
2023-06-16 06:36:17 +00:00
|
|
|
self.buffer = Image.new("RGB", (self.width, self.height))
|
|
|
|
self.draw = ImageDraw.Draw(self.buffer)
|
|
|
|
self.displayhatmini = DisplayHATMini(self.buffer)
|
2023-06-16 06:22:52 +00:00
|
|
|
self.displayhatmini.set_led(0.05, 0.05, 0.05)
|
|
|
|
# oven setup
|
2023-06-14 19:21:52 +00:00
|
|
|
self.oven = oven
|
|
|
|
self.ovenWatcher = ovenWatcher
|
|
|
|
ovenWatcher.add_observer(self)
|
|
|
|
# TODO - move to config
|
|
|
|
self.sleep_time = 0.1
|
|
|
|
self.start()
|
|
|
|
|
|
|
|
def run(self):
|
|
|
|
while True:
|
|
|
|
#oven_state = self.oven.get_state()
|
|
|
|
#update_display(oven_state)
|
|
|
|
time.sleep(self.sleep_time)
|
|
|
|
|
|
|
|
def update_display(self, oven_state):
|
|
|
|
log.info(oven_state)
|
2023-06-16 06:22:52 +00:00
|
|
|
self.text(oven_state, (25, 25), 15, (255, 255, 255))
|
2023-06-16 06:36:17 +00:00
|
|
|
self.displayhatmini.display()
|
2023-06-16 06:22:52 +00:00
|
|
|
|
2023-06-14 19:21:52 +00:00
|
|
|
|
|
|
|
def send(self,oven_state):
|
|
|
|
self.update_display(oven_state)
|
|
|
|
|
2023-06-16 06:22:52 +00:00
|
|
|
def text(self, text, position, size, color):
|
|
|
|
fnt = ImageFont.load_default()
|
|
|
|
self.draw.text(position, text, font=fnt, fill=color)
|
2023-06-14 19:21:52 +00:00
|
|
|
|
|
|
|
|