fixed frontend and added timeseries

This commit is contained in:
93094049+kraemr@users.noreply.github.com committed 2025-08-05 15:44:55 +02:00
1 parent 3c998d2f5c
commit bbc9783961
4 files changed
+61 -10

No files matched your search

@@ -26,9 +26,13 @@ export function Extruder2ControlPage() {
backPower,
middleTemperature,
middlePower,
screwRpm,
pressure,
motorCurrent,
motorFrequency,
motorScrewRpm,
motorVoltage,
setExtruderMode,
setBackHeatingTemperature,
setFrontHeatingTemperature,
@@ -170,7 +174,7 @@ export function Extruder2ControlPage() {
label="Rpm"
unit="rpm"
renderValue={(value) => roundToDecimals(value, 0)}
timeseries={screwRpm}
timeseries={motorScrewRpm}
/>
{state?.pressure_state?.wiring_error && (
@@ -22,11 +22,18 @@ import { useMemo } from "react";
export const modeSchema = z.enum(["Standby", "Heat", "Extrude"]);
export type Mode = z.infer<typeof modeSchema>;
export const liveMotorStatusDataSchema = z.object({
screw_rpm: z.number(),
frequency: z.number(),
voltage: z.number(),
current: z.number(),
});
export type MotorStatus = z.infer<typeof liveMotorStatusDataSchema>;
/**
* Consolidated live values event schema (60FPS data)
*/
export const liveValuesEventDataSchema = z.object({
screw_rpm: z.number(),
motor_status: liveMotorStatusDataSchema,
pressure: z.number(),
nozzle_temperature: z.number(),
front_temperature: z.number(),
@@ -174,7 +181,11 @@ export type Extruder2NamespaceStore = {
defaultState: StateEvent | null;
// Time series data for live values
screwRpm: TimeSeries;
motorFrequency: TimeSeries;
motorVoltage: TimeSeries;
motorCurrent: TimeSeries;
motorScrewRpm: TimeSeries;
pressure: TimeSeries;
nozzleTemperature: TimeSeries;
frontTemperature: TimeSeries;
@@ -234,6 +245,18 @@ const { initialTimeSeries: backPower, insert: addBackPower } = createTimeSeries(
ONE_HOUR,
);
const { initialTimeSeries: motorCurrent, insert: addMotorCurrent } =
createTimeSeries(TWENTY_MILLISECOND, ONE_SECOND, FIVE_SECOND, ONE_HOUR);
const { initialTimeSeries: motorVoltage, insert: addMotorVoltage } =
createTimeSeries(TWENTY_MILLISECOND, ONE_SECOND, FIVE_SECOND, ONE_HOUR);
const { initialTimeSeries: motorFrequency, insert: addMotorFrequency } =
createTimeSeries(TWENTY_MILLISECOND, ONE_SECOND, FIVE_SECOND, ONE_HOUR);
const { initialTimeSeries: motorScrewRpm, insert: addMotorScrewRpm } =
createTimeSeries(TWENTY_MILLISECOND, ONE_SECOND, FIVE_SECOND, ONE_HOUR);
export function extruder2MessageHandler(
store: StoreApi<Extruder2NamespaceStore>,
throttledUpdater: ThrottledStoreUpdater<Extruder2NamespaceStore>,
@@ -264,8 +287,20 @@ export function extruder2MessageHandler(
const timestamp = event.ts;
updateStore((state) => ({
...state,
screwRpm: addScrewRpm(state.screwRpm, {
value: liveValuesEvent.data.screw_rpm,
motorScrewRpm: addMotorScrewRpm(state.motorScrewRpm, {
value: liveValuesEvent.data.motor_status.screw_rpm,
timestamp,
}),
motorCurrent: addMotorCurrent(state.motorCurrent, {
value: liveValuesEvent.data.motor_status.current,
timestamp,
}),
motorVoltage: addMotorVoltage(state.motorVoltage, {
value: liveValuesEvent.data.motor_status.voltage,
timestamp,
}),
motorFrequency: addMotorFrequency(state.motorFrequency, {
value: liveValuesEvent.data.motor_status.frequency,
timestamp,
}),
pressure: addPressure(state.pressure, {
@@ -321,7 +356,12 @@ export const createExtruder2NamespaceStore =
return {
state: null,
defaultState: null,
screwRpm,
motorCurrent,
motorFrequency,
motorScrewRpm,
motorVoltage,
pressure,
nozzleTemperature,
frontTemperature,
@@ -41,7 +41,10 @@ export function useExtruder2() {
const {
state,
defaultState,
screwRpm,
motorCurrent,
motorFrequency,
motorScrewRpm,
motorVoltage,
pressure,
nozzleTemperature,
@@ -364,7 +367,11 @@ export function useExtruder2() {
defaultState: defaultState?.data,
// Individual live values (TimeSeries)
screwRpm,
motorCurrent,
motorFrequency,
motorScrewRpm,
motorVoltage,
pressure,
nozzleTemperature,
frontTemperature,
@@ -13,7 +13,7 @@ use uom::si::{
};
/// Specifies all System environment Variables
/// Register addresses are calculated as follows: Register-value 40002 -> address: 40002-40001 -> address:0x1
/// Register addresses are calculated as follows: Register-value 40002 -> address: 40002-40001 -> actual address in request:0x1
#[derive(Debug, Clone, Copy)]
enum MitsubishiCS80Register {
/// Register 40002