Spaces:
Sleeping
Sleeping
| # 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) | |