engrmuhammadrizwan01 commited on
Commit
f563847
·
verified ·
1 Parent(s): b11f5f8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -63
app.py CHANGED
@@ -1,90 +1,77 @@
1
  import streamlit as st
2
  import pandas as pd
3
  import numpy as np
4
- from datetime import datetime, timedelta
5
- import random
6
 
7
- # App Configuration
8
  st.set_page_config(page_title="Maintenance Prediction & Scheduling", layout="wide")
9
 
10
- # Sidebar for Navigation
11
  st.sidebar.title("Navigation")
12
- view_option = st.sidebar.radio("Choose View:", ["Home", "Upload Data", "View Predictions", "Schedule Maintenance"])
 
 
 
13
 
14
  # App Title
15
  st.title("Maintenance Prediction & Scheduling App")
16
- st.markdown("### Reduce downtime by predicting maintenance needs effectively.")
 
 
17
 
18
- # Helper Functions
19
- def predict_maintenance(data):
20
- """Simulate maintenance prediction based on input data."""
21
- data["Predicted_Issue"] = np.where(data["Usage_Hours"] > 500, "Yes", "No")
22
- data["Predicted_Downtime"] = np.where(data["Predicted_Issue"] == "Yes", random.randint(1, 5), 0)
23
- return data
 
 
 
 
24
 
25
- def schedule_maintenance(data):
26
- """Generate maintenance schedule based on predictions."""
27
- today = datetime.now()
28
- data["Scheduled_Maintenance_Date"] = data.apply(
29
- lambda row: today + timedelta(days=random.randint(1, 14)) if row["Predicted_Issue"] == "Yes" else "N/A",
30
- axis=1
31
- )
32
- return data
33
 
34
- # Home Section
35
  if view_option == "Home":
36
- st.image("https://via.placeholder.com/800x400.png?text=Maintenance+Prediction+App", caption="Welcome Screen", use_column_width=True)
37
  st.markdown(
38
- "### Key Features:\n- Upload IoT sensor data for equipment monitoring.\n- Predict equipment breakdowns and plan preventive maintenance.\n- Generate centralized health reports."
 
 
 
 
 
39
  )
40
 
41
- # Upload Data Section
42
  elif view_option == "Upload Data":
43
  st.subheader("Upload Equipment Data")
44
- data_upload = st.file_uploader("Upload your equipment data (CSV format):", type="csv")
45
  if data_upload:
46
- try:
47
- data = pd.read_csv(data_upload)
48
- st.write("Uploaded Data:")
49
- st.dataframe(data)
50
- except Exception as e:
51
- st.error(f"Error loading data: {e}")
52
 
53
- # View Predictions Section
54
- elif view_option == "View Predictions":
55
- st.subheader("Predicted Maintenance Needs")
56
- if data_upload:
57
- try:
58
- data = pd.read_csv(data_upload)
59
- predicted_data = predict_maintenance(data)
60
- st.write("Predicted Maintenance Data:")
61
- st.dataframe(predicted_data)
62
- except Exception as e:
63
- st.error(f"Error processing predictions: {e}")
 
 
64
  else:
65
- st.info("Please upload equipment data in the 'Upload Data' section.")
66
 
67
- # Schedule Maintenance Section
68
- elif view_option == "Schedule Maintenance":
69
- st.subheader("Maintenance Scheduling")
70
- if data_upload:
71
- try:
72
- data = pd.read_csv(data_upload)
73
- predicted_data = predict_maintenance(data)
74
- scheduled_data = schedule_maintenance(predicted_data)
75
- st.write("Scheduled Maintenance Plan:")
76
- st.dataframe(scheduled_data)
77
- st.download_button(
78
- label="Download Maintenance Schedule",
79
- data=scheduled_data.to_csv(index=False),
80
- file_name="maintenance_schedule.csv",
81
- mime="text/csv"
82
- )
83
- except Exception as e:
84
- st.error(f"Error generating schedule: {e}")
85
  else:
86
- st.info("Please upload equipment data in the 'Upload Data' section.")
87
 
88
  # Footer
89
  st.markdown("---")
90
- st.markdown("Designed and developed by [Your Name] - Advanced Maintenance Solutions for the Construction Industry.")
 
1
  import streamlit as st
2
  import pandas as pd
3
  import numpy as np
 
 
4
 
5
+ # Streamlit App Configuration
6
  st.set_page_config(page_title="Maintenance Prediction & Scheduling", layout="wide")
7
 
8
+ # Sidebar for Navigation and File Upload
9
  st.sidebar.title("Navigation")
10
+ view_option = st.sidebar.radio("Choose View:", ["Home", "Upload Data", "Maintenance Schedule", "Equipment Insights"])
11
+
12
+ st.sidebar.title("Upload Data")
13
+ data_upload = st.sidebar.file_uploader("Upload Equipment Data (CSV):", type=["csv"])
14
 
15
  # App Title
16
  st.title("Maintenance Prediction & Scheduling App")
17
+ st.markdown(
18
+ "This app predicts maintenance needs and schedules activities to minimize downtime for construction equipment like HVAC, elevators, and generators."
19
+ )
20
 
21
+ # Helper Function - Process Uploaded Data
22
+ def process_uploaded_data(uploaded_file):
23
+ try:
24
+ data = pd.read_csv(uploaded_file)
25
+ st.success("Data uploaded successfully!")
26
+ st.dataframe(data)
27
+ return data
28
+ except Exception as e:
29
+ st.error(f"Error processing the uploaded file: {e}")
30
+ return None
31
 
32
+ # Main Views
33
+ uploaded_data = None
 
 
 
 
 
 
34
 
 
35
  if view_option == "Home":
36
+ st.image("https://via.placeholder.com/800x400.png?text=Maintenance+Scheduling+App", caption="Welcome Screen")
37
  st.markdown(
38
+ """
39
+ ### Key Features:
40
+ - Upload site data for analysis.
41
+ - Predict maintenance needs based on historical data.
42
+ - Schedule maintenance tasks and download the schedule.
43
+ """
44
  )
45
 
 
46
  elif view_option == "Upload Data":
47
  st.subheader("Upload Equipment Data")
 
48
  if data_upload:
49
+ uploaded_data = process_uploaded_data(data_upload)
 
 
 
 
 
50
 
51
+ elif view_option == "Maintenance Schedule":
52
+ st.subheader("Maintenance Schedule")
53
+ if data_upload and uploaded_data is not None:
54
+ st.write("Generating maintenance schedule...")
55
+ # Simulate maintenance schedule
56
+ uploaded_data["Maintenance_Due"] = np.where(uploaded_data["Condition_Score"] < 75, "Yes", "No")
57
+ st.dataframe(uploaded_data[["Equipment_ID", "Equipment_Type", "Maintenance_Due"]])
58
+ st.download_button(
59
+ label="Download Schedule as CSV",
60
+ data=uploaded_data.to_csv(index=False).encode('utf-8'),
61
+ file_name="maintenance_schedule.csv",
62
+ mime="text/csv",
63
+ )
64
  else:
65
+ st.info("Please upload data in the 'Upload Data' section.")
66
 
67
+ elif view_option == "Equipment Insights":
68
+ st.subheader("Equipment Insights")
69
+ if data_upload and uploaded_data is not None:
70
+ st.write("Analyzing equipment performance...")
71
+ st.bar_chart(uploaded_data[["Usage_Hours", "Condition_Score"]].set_index(uploaded_data["Equipment_Type"]))
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  else:
73
+ st.info("Please upload data in the 'Upload Data' section.")
74
 
75
  # Footer
76
  st.markdown("---")
77
+ st.markdown("Developed by [Your Name] - Enhancing Maintenance Planning with AI")