# app.py import os os.environ["STREAMLIT_CONFIG_DIR"] = "./.streamlit" os.makedirs("./.streamlit", exist_ok=True) import pandas as pd import numpy as np from datetime import datetime, timedelta from prophet import Prophet import streamlit as st import matplotlib.pyplot as plt # Simulate factory sensor data def simulate_factory_data(days=30, freq='H'): date_rng = pd.date_range(end=datetime.now(), periods=24*days, freq=freq) df = pd.DataFrame(date_rng, columns=['ds']) df['temperature'] = np.random.normal(loc=70, scale=5, size=(len(date_rng))) df['vibration'] = np.random.normal(loc=20, scale=3, size=(len(date_rng))) df['power_usage'] = np.random.normal(loc=120, scale=10, size=(len(date_rng))) return df # Forecast temperature using Prophet def forecast_temperature(df): model = Prophet() df_temp = df[['ds', 'temperature']].rename(columns={"temperature": "y"}) model.fit(df_temp) future = model.make_future_dataframe(periods=48, freq='H') forecast = model.predict(future) return forecast # Streamlit UI st.title("🧠 Smart Factory AI Dashboard") st.markdown("Forecasting machine temperature to predict maintenance needs.") df = simulate_factory_data() forecast = forecast_temperature(df) # Plot forecast st.subheader("📈 Machine Temperature Forecast (Next 48 hours)") fig, ax = plt.subplots() ax.plot(df['ds'], df['temperature'], label='Actual') ax.plot(forecast['ds'], forecast['yhat'], label='Forecast') ax.fill_between(forecast['ds'], forecast['yhat_lower'], forecast['yhat_upper'], alpha=0.2, label='Confidence Interval') ax.set_xlabel("Time") ax.set_ylabel("Temperature (°C)") ax.legend() st.pyplot(fig)