File size: 3,038 Bytes
ecd49b8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5d6e040
 
 
 
 
ecd49b8
 
 
 
5d6e040
ecd49b8
5d6e040
ecd49b8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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()