AI_Smart_Grid_System / app_backend.py
rehanafzal's picture
Create app_backend.py
c93df57 verified
raw
history blame
1.57 kB
import pandas as pd
import numpy as np
import plotly.express as px
from datetime import datetime, timedelta
import requests
# Function to fetch real-time weather data
def fetch_weather(api_key, location):
url = f"http://api.openweathermap.org/data/2.5/weather?q={location}&appid={api_key}&units=metric"
response = requests.get(url).json()
if response["cod"] == 200:
return {
"temperature": response["main"]["temp"],
"wind_speed": response["wind"]["speed"],
"weather": response["weather"][0]["description"]
}
return None
# Generate synthetic grid data
def generate_synthetic_data():
time_index = pd.date_range(start=datetime.now(), periods=24, freq="H")
return pd.DataFrame({
"timestamp": time_index,
"total_consumption_kwh": np.random.randint(200, 500, len(time_index)),
"grid_generation_kwh": np.random.randint(150, 400, len(time_index)),
"storage_usage_kwh": np.random.randint(50, 150, len(time_index)),
"solar_output_kw": np.random.randint(50, 150, len(time_index)),
"wind_output_kw": np.random.randint(30, 120, len(time_index)),
"grid_health": np.random.choice(["Good", "Moderate", "Critical"], len(time_index))
})
# Load optimization recommendation
def optimize_load(demand, solar, wind):
renewable_supply = solar + wind
if renewable_supply >= demand:
return "Grid Stable"
return "Use Backup or Adjust Load"
# Export functions for use in Streamlit
if __name__ == "__main__":
print("Backend ready!")