| | import streamlit as st |
| | import requests |
| |
|
| | |
| | st.set_page_config( |
| | page_title="Predictive Maintenance for Engine Health", |
| | page_icon="⚙️", |
| | layout="centered", |
| | initial_sidebar_state="expanded", |
| | ) |
| |
|
| | st.title("⚙️ Predictive Maintenance for Engine Health") |
| | st.markdown("### Predict if an engine is Normal or Faulty based on sensor readings") |
| |
|
| | |
| | st.subheader("Engine Sensor Readings") |
| |
|
| | |
| | engine_rpm = st.number_input( |
| | "Engine RPM", min_value=0.0, max_value=3000.0, value=700.0, step=10.0, |
| | help="Revolutions per minute of the engine (RPM)" |
| | ) |
| | lub_oil_pressure = st.number_input( |
| | "Lub Oil Pressure (bar/kPa)", min_value=0.0, max_value=10.0, value=2.5, step=0.1, |
| | help="Pressure of the lubricating oil" |
| | ) |
| | fuel_pressure = st.number_input( |
| | "Fuel Pressure (bar/kPa)", min_value=0.0, max_value=30.0, value=12.0, step=0.1, |
| | help="Pressure at which fuel is supplied to the engine" |
| | ) |
| | coolant_pressure = st.number_input( |
| | "Coolant Pressure (bar/kPa)", min_value=0.0, max_value=10.0, value=3.0, step=0.1, |
| | help="Pressure of the engine coolant" |
| | ) |
| | lub_oil_temperature = st.number_input( |
| | "Lub Oil Temperature (°C)", min_value=0.0, max_value=150.0, value=85.0, step=0.5, |
| | help="Temperature of the lubricating oil" |
| | ) |
| | coolant_temperature = st.number_input( |
| | "Coolant Temperature (°C)", min_value=0.0, max_value=150.0, value=80.0, step=0.5, |
| | help="Temperature of the engine coolant" |
| | ) |
| |
|
| | |
| |
|
| | |
| | |
| | |
| | BACKEND_API_URL = "https://veerendramanikonda-predictivemaintenancebackend.hf.space/v1/engine_condition_prediction" |
| |
|
| | if st.button("Predict Engine Condition", type="primary"): |
| | |
| | engine_data = { |
| | "Engine_RPM": engine_rpm, |
| | "Lub_Oil_Pressure": lub_oil_pressure, |
| | "Fuel_Pressure": fuel_pressure, |
| | "Coolant_Pressure": coolant_pressure, |
| | "Lub_Oil_Temperature": lub_oil_temperature, |
| | "Coolant_Temperature": coolant_temperature |
| | } |
| |
|
| | try: |
| | |
| | response = requests.post(BACKEND_API_URL, json=engine_data) |
| | response.raise_for_status() |
| | prediction = response.json() |
| |
|
| | st.subheader("Prediction Results:") |
| | predicted_label = prediction['predicted_engine_condition_label'] |
| | probability_faulty = prediction['probability_faulty'] |
| | probability_normal = prediction['probability_normal'] |
| |
|
| | if predicted_label == "Faulty": |
| | st.error(f"The engine is predicted to be: **{predicted_label}**") |
| | st.write(f"Probability of Faulty: {probability_faulty:.2f}") |
| | st.write(f"Probability of Normal: {probability_normal:.2f}") |
| | st.warning("Immediate maintenance recommended!") |
| | else: |
| | st.success(f"The engine is predicted to be: **{predicted_label}**") |
| | st.write(f"Probability of Normal: {probability_normal:.2f}") |
| | st.write(f"Probability of Faulty: {probability_faulty:.2f}") |
| | st.info("Engine is operating normally.") |
| |
|
| | except requests.exceptions.ConnectionError: |
| | st.error("Connection Error: Could not connect to the backend API. Please ensure the backend is running and the URL is correct.") |
| | except requests.exceptions.Timeout: |
| | st.error("Timeout Error: The request to the backend API timed out.") |
| | except requests.exceptions.RequestException as e: |
| | st.error(f"An error occurred during the API request: {e}") |
| | except Exception as e: |
| | st.error(f"An unexpected error occurred: {e}") |
| |
|
| |
|