Files
gimmiCoffee/modules/other.py
derlole 6d90b34929 jikes
2025-05-12 18:30:20 +00:00

94 lines
2.7 KiB
Python

# this function is processing the cyclic data from the esp format:
# [off_value/on_value]
# {
# # eingänge
# "an": [1/0],
# "bereit": [1/0],
# "fehler": [1/0],
# "bohnen_voll": [1/0],
# "Wasser_voll": [1/0],
#
# # ausgänge
# "einschalten": [0/1],
# "starten": [0/1],
#
# # status
# "kaffee_machen": [0/1],
# "vorbereitung": [0/1],
# "kaffee_fertig": [0/1],
# }
from modules.persistence import load_dict, save_dict
from modules.socketio import resend_static_data
import os
import sqlite3
DB_PATH_COFFEE = os.path.join(os.path.dirname(__file__), '../db/coffee.db')
def track_coffee_made(data, flanksUp, flanksDown):
coffee_made = False
#logic for tracking coffee made
if coffee_made:
conn = sqlite3.connect(DB_PATH_COFFEE)
cursor = conn.cursor()
cursor.execute("""
INSERT INTO coffee (user, status)
VALUES (?, ?)
""", ("admin", "served"))
conn.commit()
conn.close()
print("Coffee made detected, data saved.")
return
def track_error_water(data, flanksUp, flanksDown):
water = load_dict("water")
if water["fill"] <= 7:
return True
return False
def track_error_beans(data, flanksUp, flanksDown):
beans = load_dict("beans")
if beans["fill"] <= 7:
return True
return False
def track_error(data, flanksUp, flanksDown):
if track_error_water(data, flanksUp, flanksDown):
return "Wasser Leer"
elif track_error_beans(data, flanksUp, flanksDown):
return "Bohnen Leer"
return "Unbekannter Fehler"
def refactor_and_use_esp_data(data):
# global oldDataSet
if 'oldDataSet' not in globals() or oldDataSet is None:
oldDataSet = data # Initialize oldDataSet with default values
flanksUp = {key: (oldDataSet[key] == 0 and data[key] == 1) for key in data}
flanksDown = {key: (oldDataSet[key] == 1 and data[key] == 0) for key in data}
machine = load_dict("machine")
if data["an"] == 0:
machine["state"] = "ON"
elif data["an"] == 1: #elif die Sängerin xD
machine["state"] = "OFF"
if data["bereit"] == 0:
machine["ready"] = True
elif data["bereit"] == 1:
machine["ready"] = False
if data["fehler"] == 0:
machine["berror"] = True
machine["error"] = track_error(data, flanksUp, flanksDown)
elif data["fehler"] == 1:
machine["berror"] = False
machine["error"] = "Keine Fehler"
save_dict("machine", machine)
resend_static_data()
track_coffee_made(data, flanksUp, flanksDown)
oldDataSet = data
return