Add color configuration and extra signals to vehicle frames
This commit is contained in:
@@ -437,7 +437,7 @@ def render_vehicles(vehicle):
|
|||||||
for sig in frame_def.signals:
|
for sig in frame_def.signals:
|
||||||
unit_str = f" ({sig.unit})" if sig.unit else ""
|
unit_str = f" ({sig.unit})" if sig.unit else ""
|
||||||
title = f"{frame_def.can_id} - {sig.name}{unit_str}"
|
title = f"{frame_def.can_id} - {sig.name}{unit_str}"
|
||||||
fig = vehicle_module.plot_signal(decoded, sig.name, title=title)
|
fig = vehicle_module.plot_signal(decoded, sig.name, title=title, color=frame_def.color)
|
||||||
|
|
||||||
card = dbc.Card([
|
card = dbc.Card([
|
||||||
dbc.CardBody([
|
dbc.CardBody([
|
||||||
|
|||||||
+3
-2
@@ -23,6 +23,7 @@ class SignalDef:
|
|||||||
class FrameDef:
|
class FrameDef:
|
||||||
can_id: str
|
can_id: str
|
||||||
description: str = ""
|
description: str = ""
|
||||||
|
color: str = "#377eb8"
|
||||||
signals: List[SignalDef] = field(default_factory=list)
|
signals: List[SignalDef] = field(default_factory=list)
|
||||||
|
|
||||||
def normalize_id(can_id: str) -> str:
|
def normalize_id(can_id: str) -> str:
|
||||||
@@ -92,7 +93,7 @@ def decode_dataframe(df: pd.DataFrame, can_id: str, decoder_rules: dict) -> pd.D
|
|||||||
|
|
||||||
return out
|
return out
|
||||||
|
|
||||||
def plot_signal(df: pd.DataFrame, signal_name: str, title: str, height: int = 280) -> go.Figure:
|
def plot_signal(df: pd.DataFrame, signal_name: str, title: str, color: str = "#377eb8", height: int = 280) -> go.Figure:
|
||||||
fig = go.Figure()
|
fig = go.Figure()
|
||||||
|
|
||||||
if df.empty or signal_name not in df.columns:
|
if df.empty or signal_name not in df.columns:
|
||||||
@@ -109,7 +110,7 @@ def plot_signal(df: pd.DataFrame, signal_name: str, title: str, height: int = 28
|
|||||||
x=df["Timestamp"],
|
x=df["Timestamp"],
|
||||||
y=df[signal_name],
|
y=df[signal_name],
|
||||||
mode="lines",
|
mode="lines",
|
||||||
line=dict(width=2, color="#377eb8"),
|
line=dict(width=2, color=color),
|
||||||
name=signal_name,
|
name=signal_name,
|
||||||
hovertemplate=f"<b>{signal_name}</b><br>Time: %{{x}}<br>Value: %{{y:.2f}}<extra></extra>",
|
hovertemplate=f"<b>{signal_name}</b><br>Time: %{{x}}<br>Value: %{{y:.2f}}<extra></extra>",
|
||||||
))
|
))
|
||||||
|
|||||||
+31
-4
@@ -10,6 +10,7 @@ DECODER_RULES = {
|
|||||||
normalize_id("0x011F"): FrameDef(
|
normalize_id("0x011F"): FrameDef(
|
||||||
can_id="0x011F",
|
can_id="0x011F",
|
||||||
description="Engine ECM Main Broadcast",
|
description="Engine ECM Main Broadcast",
|
||||||
|
color="#e41a1c",
|
||||||
signals=[
|
signals=[
|
||||||
SignalDef(
|
SignalDef(
|
||||||
name="Engine",
|
name="Engine",
|
||||||
@@ -25,15 +26,41 @@ DECODER_RULES = {
|
|||||||
name="Pressure / Load",
|
name="Pressure / Load",
|
||||||
bit_start=16,
|
bit_start=16,
|
||||||
bit_length=16,
|
bit_length=16,
|
||||||
factor=1.0,
|
factor=0.05,
|
||||||
offset=0.0,
|
offset=0,
|
||||||
is_signed=False,
|
is_signed=False,
|
||||||
byte_order="little",
|
byte_order="little",
|
||||||
unit="raw",
|
unit="%",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
normalize_id("0x0CFF3300"): FrameDef(
|
||||||
|
can_id="0x0CFF3300",
|
||||||
|
description="Engine temperature block",
|
||||||
|
color="#0080fe",
|
||||||
|
signals=[
|
||||||
|
SignalDef(
|
||||||
|
name="Engine coolant temp",
|
||||||
|
bit_start=8,
|
||||||
|
bit_length=8,
|
||||||
|
factor=1,
|
||||||
|
offset=0.0,
|
||||||
|
is_signed=False,
|
||||||
|
byte_order="big",
|
||||||
|
unit="℃",
|
||||||
|
),
|
||||||
|
SignalDef(
|
||||||
|
name="Engine oil temp",
|
||||||
|
bit_start=40,
|
||||||
|
bit_length=8,
|
||||||
|
factor=1,
|
||||||
|
offset=0.0,
|
||||||
|
is_signed=False,
|
||||||
|
byte_order="big",
|
||||||
|
unit="℃",
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def decode_dataframe(df, can_id):
|
def decode_dataframe(df, can_id):
|
||||||
|
|||||||
Reference in New Issue
Block a user