diff --git a/src/endpoints/handlers/bett.py b/src/endpoints/handlers/bett.py index 50d4c40..e4c2631 100644 --- a/src/endpoints/handlers/bett.py +++ b/src/endpoints/handlers/bett.py @@ -15,9 +15,9 @@ matrix_clock_api: str = "http://192.168.178.84:8000" empty_weight: Optional[float] = None local_history = [] -history_max_length: int = 24 * 60 * 60 # 24 hours -min_noticable_difference: float= 25 # In kg -show_scale_countdown: int = 0 # Number of updates for the scale, until return to clock +history_max_length: int = 24 * 60 * 60 # 24 hours +min_noticable_difference: float = 25 # In kg +show_scale_countdown: int = 0 # Number of updates for the scale, until return to clock average_person_weight: float = 75 @@ -29,7 +29,6 @@ leg_capacity_limit_patterns = [ ] - def get_clusters(data: list[float], min_delta: float) -> dict: clusters = {} for point in data: @@ -40,13 +39,13 @@ def get_clusters(data: list[float], min_delta: float) -> dict: clusters[point] = [point] return clusters + def show_time(): r.post(f"{matrix_clock_api}/time") -def show_scale(weight:float): - r.post(f"{matrix_clock_api}/message", json={ - "message": f"{weight:3.1f}kg" -}) + +def show_scale(weight: float): + r.post(f"{matrix_clock_api}/message", json={"message": f"{weight:3.1f}kg"}) def is_capacity_reached() -> bool: @@ -65,15 +64,18 @@ def is_capacity_reached() -> bool: is_warning_active = False show_time() return - + is_warning_active = True - r.post(f"{matrix_clock_api}/pattern?pattern={highest_limit["pattern"]}&step_ms={highest_limit["duration"]}&contrast=255") + r.post( + f"{matrix_clock_api}/pattern?pattern={highest_limit['pattern']}&step_ms={highest_limit['duration']}&contrast=255" + ) + def check_for_change(): # Check for capicity limits if is_capacity_reached(): return - + global show_scale_countdown latest = local_history[-1] if show_scale_countdown > 0 and show_scale_countdown % 3 == 0: @@ -93,12 +95,12 @@ def check_for_change(): if empty_weight is None: clusters = get_clusters(local_history) empty_weight = min([median(cluster) for cluster in clusters.values()]) - + # Determine number of people number_of_people = round((latest["total"] - empty_weight) / average_person_weight) - + if number_of_people == 1 and weight_increased: - show_scale_countdown = 60 # Should be a multiple of 3 + show_scale_countdown = 60 # Should be a multiple of 3 elif number_of_people >= 2 and weight_increased: show_scale_countdown = 0 show_time()