ilham86's picture
ilham push 9
5d6e040 verified
import streamlit as st
import pickle
import pandas as pd
from PIL import Image
import datetime
# Load File
with open('./src/model_best.pkl', 'rb') as file:
best_pipe = pickle.load(file)
def run():
# Title
st.title('Equipment in Smart Manufacturing for Predictive Maintenance')
# Sub Header
st.subheader('Equipment Predictive Maintenance Prediction')
# Image
image = Image.open('./src/image2.jpg')
st.image(image)
# Create form
with st.form(key='maintenance-prediction'):
st.markdown('Data ID')
date = st.date_input("Select a date")
time = st.time_input("Select a time")
timestamp = datetime.datetime.combine(date, time)
machine_id = st.text_input('Machine ID', value='---machine id--')
st.markdown('Equipment Operation Parameters')
temperature = st.number_input('Temperature', min_value=0.00, max_value=200.00, value=0.00)
vibration = st.number_input('Vibration', min_value=-20.00, max_value=200.00, value=0.00)
humidity = st.number_input('Humidity', min_value=0.00, max_value=85.00, value=0.00)
pressure = st.number_input('Pressure', min_value=0.00, max_value=6.00, value=0.00)
energy_consumption = st.number_input('Energy Consumption', min_value=0.00, max_value=6.00, value=0.00)
st.markdown('Equipment Status and Condition')
machine_status = st.selectbox('Machine Status', (0, 1), index=0, help='0 = not running, 1 = running')
anomaly_flag = st.selectbox('Anomaly Flag', (0, 1), index=0, help='0 = normal temperature & vibration, 1 = extreme temperature & vibration')
predicted_remaining_life = st.number_input ('Remaining life Prediction', min_value=0, max_value=500, value=0)
failure_type = st.selectbox('Failure Type', ('Normal', 'Vibration Issue', 'Overheating', 'Pressure Drop', 'Electrical Fault'), index=0)
downtime_risk = st.number_input('Downtime Risk Score', min_value=0.00, max_value=1.00, value=0.00, help='range from 0-1')
submitted = st.form_submit_button('Predict')
# Data inference
data_inf_input = {
'timestamp': timestamp,
'machine_id': machine_id,
'temperature': temperature,
'vibration': vibration,
'humidity': humidity,
'pressure': pressure,
'energy_consumption': energy_consumption,
'machine_status': machine_status,
'anomaly_flag': anomaly_flag,
'predicted_remaining_life': predicted_remaining_life,
'failure_type': failure_type,
'downtime_risk': downtime_risk,
}
# Data frame
st.markdown('Data Summary:')
data_inference = pd.DataFrame([data_inf_input])
st.dataframe(data_inference)
st.markdown('Result:')
if submitted:
# Prediction (0/1)
pred = best_pipe.predict(data_inference)
if pred == 1:
st.write('### Equipment NEEDS Maintenance')
else:
st.write('### Equipment NO NEED Maintenance')
if __name__ == '__main__':
run()