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) | |