
importiere dash
aus dash.dependencies, importiere Ausgabe, Eingabe,
importiere dash_core_components als dcc, importiere dash_html_components als html,
importiere plotly, zufällig,
importiere plotly.graph_objs als go
aus Sammlungen, importiere deque
aus pandas_datareader.data, importiere DataReader,
importiere Zeit, zufällig
app = dash.Dash('Fahrzeugdaten')
max_length = 20-
mal = deque(maxlen=max_length)
Öltemperatur = deque(maxlen=max_length)
Ansaugtemperatur = deque(maxlen=max_length)
Kühlmitteltemperatur = deque(maxlen=max_length) U/min
= deque(maxlen=max_length)
Geschwindigkeit = deque(maxlen=max_length)
Drosselklappenstellung = deque(maxlen=max_length)
data_dict = {"Öltemperatur":Öltemperatur,
"Ansaugtemperatur":Ansaugtemperatur,
"Kühlmitteltemperatur":Kühlmitteltemperatur,
"Drehzahl":Drehzahl,
"Geschwindigkeit":Geschwindigkeiten,
"Drosselklappenstellung":Drosselklappenstellung}
def update_obd_values(Zeiten, Öltemperaturen, Ansaugtemperaturen, Kühlmitteltemperaturen, U/min, Geschwindigkeiten, Drosselklappenstellung):
times.append(time.time())
if len(times) == 1:
#starting relevant values
oil_temps.append(random.randrange(180,230))
intake_temps.append(random.randrange(95,115))
coolant_temps.append(random.randrange(170,220))
rpms.append(random.randrange(1000,9500))
speeds.append(random.randrange(30,140))
throttle_pos.append(random.randrange(10,90))
else:
for data_of_interest in [oil_temps, intake_temps, coolant_temps, rpms, speeds, throttle_pos]:
data_of_interest.append(data_of_interest[-1]+data_of_interest[-1]*random.uniform(-0.0001,0.0001))
return times, oil_temps, intake_temps, coolant_temps, rpms, speeds, throttle_pos
Zeiten, Öltemperaturen, Ansaugtemperaturen, Kühlmitteltemperaturen, U/min, Geschwindigkeiten, Drosselklappenstellung = update_obd_values(Zeiten, Öltemperaturen, Ansaugtemperaturen, Kühlmitteltemperaturen, U/min, Geschwindigkeiten, Drosselklappenstellung)
app.layout = html.Div([
html.Div([
html.H2('Fahrzeugdaten',
style={'float': 'left',
}),
]),
dcc.Dropdown(id='vehicle-data-name',
options=[{'label': s, 'value': s}
for s in data_dict.keys()],
value=['Kühlmitteltemperatur','Öltemperatur','Ansaugtemperatur'],
multi=True
),
html.Div(children=html.Div(id='graphs'), className='row'),
dcc.Interval(
id='graph-update',
interval=100),
], className="container",style={'width':'98%','margin-left':10,'margin-right':10,'max-width':50000})
@app.callback(
dash.dependencies.Output('Grafiken','Kinder'),
[dash.dependencies.Input('Fahrzeugdatenname',
'Wert'),dash.dependencies.Input('Grafikaktualisierung', 'n_Intervalle')]
)
def update_graph(Datennamen, n_Intervalle):
Graphen = []
update_obd_values(Zeiten, Öltemperaturen, Ansaugtemperaturen, Kühlmitteltemperaturen, U/min,
Geschwindigkeiten, Drosselklappenstellung) wenn Länge(Datennamen)>2:
Klassenauswahl = 'col s12 m6 l4'
elif Länge(Datennamen) == 2:
Klassenauswahl = 'col s12 m6 l6'
sonst:
Klassenauswahl = 'col s12'
for data_name in data_names:
data = go.Scatter(
x=list(times),
y=list(data_dict[data_name]),
name='Scatter',
fill="tozeroy",
fillcolor="#6897bb"
)
graphs.append(html.Div(dcc.Graph(
id=data_name,
animate=True,
figure={'data': [data],'layout' : go.Layout(xaxis=dict(range=[min(times),max(times)]),
yaxis=dict(range=[min(data_dict[data_name]),max(data_dict[data_name])]),
margin={'l':50,'r':1,'t':45,'b':1},
title='{}'.format(data_name))}
), className=class_choice))
return graphs
external_css = ["https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"]
für CSS in external_css:
app.css.append_css({"external_url": css})
external_js =
['https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js']
für js in external_js:
app.scripts.append_script({'external_url': js})
WennName== 'hauptsächlich':
app.run_server(debug=True)