add more averaging to speed reader.py

This commit is contained in:
Jan Beníček 2025-01-22 10:02:54 +01:00
parent d78ac03500
commit 5aded9f031
2 changed files with 31 additions and 4 deletions

View file

@ -1,11 +1,15 @@
from src.variables.service import get_variable, set_variable from src.variables.service import get_variable, set_variable
from gpiozero import Button from gpiozero import Button
import datetime, os import datetime, os, json
pulses_per_rotation = 4 pulses_per_rotation = 4
reader = Button(4, pull_up=False, bounce_time=0.0005) reader = Button(4, pull_up=False, bounce_time=0.0005)
set_variable("speed_reader_last_impulse_time", datetime.datetime.now(), False) set_variable("speed_reader_last_impulse_time", datetime.datetime.now(), False)
set_variable("actual_rpm_unfiltered", 0, False) #set_variable("actual_rpm_unfiltered", 0, False)
set_variable("rpm_filter", json.dumps([0]), False)
if get_variable("rpm_filter_count") == None:
set_variable("rpm_filter_count", 8, True)
def printer(text): def printer(text):
if bool(os.getenv("DEBUG")): if bool(os.getenv("DEBUG")):
@ -19,8 +23,23 @@ def event():
rpm = (60 / difference) / pulses_per_rotation rpm = (60 / difference) / pulses_per_rotation
actual_rpm = (float(get_variable("actual_rpm_unfiltered")) + rpm) / 2 #actual_rpm = (float(get_variable("actual_rpm_unfiltered")) + rpm) / 2
set_variable("actual_rpm_unfiltered", rpm, False) #set_variable("actual_rpm_unfiltered", rpm, False)
rpm_filter = json.loads(get_variable("rpm_filter"))
print(rpm_filter)
while len(rpm_filter) > int(get_variable("rpm_filter_count")):
rpm_filter.remove(rpm_filter[0])
rpm_filter.append(rpm)
set_variable("rpm_filter", json.dumps(rpm_filter), False)
average = 0
for i in rpm_filter:
average = average + i
actual_rpm = average / len(rpm_filter)
set_variable("actual_rpm", round(actual_rpm, 1), False) set_variable("actual_rpm", round(actual_rpm, 1), False)
printer("Measured RPM: {}".format(round(actual_rpm, 1))) printer("Measured RPM: {}".format(round(actual_rpm, 1)))

View file

@ -4,6 +4,7 @@ from dotenv import load_dotenv
load_dotenv() load_dotenv()
from fastapi import FastAPI from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from src.modules.router import router as modulesrouter from src.modules.router import router as modulesrouter
from src.variables.router import router as variablesrouter from src.variables.router import router as variablesrouter
@ -13,6 +14,13 @@ import scripts.timer
app = FastAPI(root_path="/api") app = FastAPI(root_path="/api")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Can also use ["*"] to allow all origins
allow_credentials=True, # Allow cookies or authentication credentials
allow_methods=["*"], # Allow all HTTP methods
allow_headers=["*"], # Allow all headers
)
app.include_router(router=modulesrouter) app.include_router(router=modulesrouter)
app.include_router(router=variablesrouter) app.include_router(router=variablesrouter)