data_store: replace PeriodicCallback
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
4e625aef37
commit
5dadc2067d
|
@ -8,7 +8,6 @@ from __future__ import annotations
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
from collections import deque
|
from collections import deque
|
||||||
from tornado.ioloop import PeriodicCallback
|
|
||||||
|
|
||||||
# Annotation imports
|
# Annotation imports
|
||||||
from typing import (
|
from typing import (
|
||||||
|
@ -28,7 +27,7 @@ if TYPE_CHECKING:
|
||||||
GCQueue = Deque[Dict[str, Any]]
|
GCQueue = Deque[Dict[str, Any]]
|
||||||
TempStore = Dict[str, Dict[str, Deque[float]]]
|
TempStore = Dict[str, Dict[str, Deque[float]]]
|
||||||
|
|
||||||
TEMPERATURE_UPDATE_MS = 1000
|
TEMP_UPDATE_TIME = 1.
|
||||||
|
|
||||||
class DataStore:
|
class DataStore:
|
||||||
def __init__(self, config: ConfigHelper) -> None:
|
def __init__(self, config: ConfigHelper) -> None:
|
||||||
|
@ -40,8 +39,9 @@ class DataStore:
|
||||||
self.last_temps: Dict[str, Tuple[float, ...]] = {}
|
self.last_temps: Dict[str, Tuple[float, ...]] = {}
|
||||||
self.gcode_queue: GCQueue = deque(maxlen=self.gcode_store_size)
|
self.gcode_queue: GCQueue = deque(maxlen=self.gcode_store_size)
|
||||||
self.temperature_store: TempStore = {}
|
self.temperature_store: TempStore = {}
|
||||||
self.temp_update_cb = PeriodicCallback(
|
eventloop = self.server.get_event_loop()
|
||||||
self._update_temperature_store, TEMPERATURE_UPDATE_MS)
|
self.temp_update_timer = eventloop.register_timer(
|
||||||
|
self._update_temperature_store)
|
||||||
|
|
||||||
# Register status update event
|
# Register status update event
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
|
@ -102,12 +102,12 @@ class DataStore:
|
||||||
del self.last_temps[sensor]
|
del self.last_temps[sensor]
|
||||||
# Update initial temperatures
|
# Update initial temperatures
|
||||||
self._set_current_temps(status)
|
self._set_current_temps(status)
|
||||||
self.temp_update_cb.start()
|
self.temp_update_timer.start()
|
||||||
else:
|
else:
|
||||||
logging.info("No sensors found")
|
logging.info("No sensors found")
|
||||||
self.last_temps = {}
|
self.last_temps = {}
|
||||||
self.temperature_store = {}
|
self.temperature_store = {}
|
||||||
self.temp_update_cb.stop()
|
self.temp_update_timer.stop()
|
||||||
|
|
||||||
def _set_current_temps(self, data: Dict[str, Any]) -> None:
|
def _set_current_temps(self, data: Dict[str, Any]) -> None:
|
||||||
for sensor in self.temperature_store:
|
for sensor in self.temperature_store:
|
||||||
|
@ -119,7 +119,7 @@ class DataStore:
|
||||||
data[sensor].get('power', last_val[2]),
|
data[sensor].get('power', last_val[2]),
|
||||||
data[sensor].get('speed', last_val[3]))
|
data[sensor].get('speed', last_val[3]))
|
||||||
|
|
||||||
def _update_temperature_store(self) -> None:
|
def _update_temperature_store(self, eventtime: float) -> float:
|
||||||
# XXX - If klippy is not connected, set values to zero
|
# XXX - If klippy is not connected, set values to zero
|
||||||
# as they are unknown?
|
# as they are unknown?
|
||||||
for sensor, vals in self.last_temps.items():
|
for sensor, vals in self.last_temps.items():
|
||||||
|
@ -127,6 +127,7 @@ class DataStore:
|
||||||
for val, item in zip(vals[1:], ["targets", "powers", "speeds"]):
|
for val, item in zip(vals[1:], ["targets", "powers", "speeds"]):
|
||||||
if item in self.temperature_store[sensor]:
|
if item in self.temperature_store[sensor]:
|
||||||
self.temperature_store[sensor][item].append(val)
|
self.temperature_store[sensor][item].append(val)
|
||||||
|
return eventtime + TEMP_UPDATE_TIME
|
||||||
|
|
||||||
async def _handle_temp_store_request(self,
|
async def _handle_temp_store_request(self,
|
||||||
web_request: WebRequest
|
web_request: WebRequest
|
||||||
|
@ -137,7 +138,7 @@ class DataStore:
|
||||||
return store
|
return store
|
||||||
|
|
||||||
async def close(self) -> None:
|
async def close(self) -> None:
|
||||||
self.temp_update_cb.stop()
|
self.temp_update_timer.stop()
|
||||||
|
|
||||||
def _update_gcode_store(self, response: str) -> None:
|
def _update_gcode_store(self, response: str) -> None:
|
||||||
curtime = time.time()
|
curtime = time.time()
|
||||||
|
|
Loading…
Reference in New Issue