# import streamlit as st # import pandas as pd # import plotly.express as px # from app_backend import fetch_weather, generate_synthetic_data, optimize_load # # Constants # API_KEY = "84e26811a314599e940f343b4d5894a7" # LOCATION = "Pakistan" # # Sidebar # st.sidebar.title("Smart Grid Dashboard") # location = st.sidebar.text_input("Enter Location", LOCATION) # # Fetch and display weather data # weather = fetch_weather(API_KEY, location) # if weather: # st.sidebar.write(f"Temperature: {weather['temperature']} °C") # st.sidebar.write(f"Wind Speed: {weather['wind_speed']} m/s") # st.sidebar.write(f"Weather: {weather['weather']}") # # Main dashboard with tabs # tabs = st.tabs(["Home", "Electricity Storage", "Electricity Trading"]) # with tabs[0]: # st.title("Real-Time Smart Grid Dashboard") # # Generate synthetic data # data = generate_synthetic_data() # # Plot total consumption, grid generation, and storage usage # fig = px.line(data, x="timestamp", y=["total_consumption_kwh", "grid_generation_kwh", "storage_usage_kwh"], # title="Energy Consumption, Generation, and Storage Usage Over Time", # labels={"value": "Energy (kWh)", "variable": "Energy Source"}) # st.plotly_chart(fig) # # Grid health overview # st.subheader("Grid Health Overview") # grid_health_counts = data["grid_health"].value_counts() # st.bar_chart(grid_health_counts) # # Optimization recommendations # current_demand = data["total_consumption_kwh"].iloc[-1] # current_solar = data["solar_output_kw"].iloc[-1] # current_wind = data["wind_output_kw"].iloc[-1] # recommendation = optimize_load(current_demand, current_solar, current_wind) # st.subheader("Recommendations") # st.write(f"Current Load Demand: {current_demand} kWh") # st.write(f"Solar Output: {current_solar} kW") # st.write(f"Wind Output: {current_wind} kW") # st.write(f"Recommendation: {recommendation}") # with tabs[1]: # st.title("Energy Storage Overview") # # Total energy stored # total_storage = 500 # Example of total energy storage # st.subheader(f"Total Energy Stored: {total_storage} kWh") # # Energy storage contribution from different sources # st.subheader("Energy Storage Contributions") # energy_sources = pd.DataFrame({ # "Source": ["Wind", "Solar", "Turbine"], # "Energy (kW/min)": [5, 7, 10] # }) # st.bar_chart(energy_sources.set_index("Source")) # # Show energy storage status with a rounded circle # st.subheader("Energy Storage Circle") # st.markdown("Energy storage is a combination of contributions from different renewable sources.") # # Visualization of energy storage circle using Plotly # storage_data = { # "Source": ["Wind", "Solar", "Turbine"], # "Energy": [5, 7, 10], # } # storage_df = pd.DataFrame(storage_data) # fig = px.pie(storage_df, names="Source", values="Energy", title="Energy Storage Sources") # st.plotly_chart(fig) # with tabs[2]: # st.title("Energy Trading Overview") # # Energy cubes # st.subheader("Energy Cubes Stored") # energy_cubes = pd.DataFrame({ # "Country": ["China", "Sri Lanka", "Bangladesh"], # "Energy (kWh)": [100, 200, 300], # "Shareable": [True, True, False] # }) # # Displaying the energy cubes in a grid # st.write("Stored energy can be shared with other countries.") # st.dataframe(energy_cubes) # # Visualization of energy that can be shared # st.subheader("Energy Trading Visualization") # st.markdown("The following energy amounts are available for sharing with different countries.") # trading_fig = px.bar(energy_cubes, x="Country", y="Energy (kWh)", color="Shareable", title="Energy Trading") # st.plotly_chart(trading_fig) # code 2 # import streamlit as st # import pandas as pd # import plotly.graph_objects as go # from app_backend import fetch_weather, generate_synthetic_data, generate_storage_data # # Constants # API_KEY = "84e26811a314599e940f343b4d5894a7" # DEFAULT_LOCATION = "Pakistan" # # Sidebar for location and weather data # st.sidebar.title("Smart Grid Dashboard") # location = st.sidebar.text_input("Enter Location", DEFAULT_LOCATION) # weather = fetch_weather(API_KEY, location) # if weather: # st.sidebar.write(f"Temperature: {weather['temperature']} °C") # st.sidebar.write(f"Wind Speed: {weather['wind_speed']} m/s") # st.sidebar.write(f"Weather: {weather['weather']}") # # Main interface # st.title("Real-Time Smart Grid Dashboard") # # Tabs # tabs = st.tabs(["Home", "Power Storage", "Electricity Trade Management"]) # # Home Tab # with tabs[0]: # st.header("Overview: Power and Energy Usage") # # Fetch synthetic data # data = generate_synthetic_data() # # Line Graph for Power Consumption, Generation, and Storage # fig = go.Figure() # fig.add_trace(go.Scatter( # x=data["timestamp"], # y=data["total_power_consumption_mw"], # mode='lines', # name="Total Power Consumption (MW)", # line=dict(color="red") # )) # fig.add_trace(go.Scatter( # x=data["timestamp"], # y=data["grid_generation_mw"], # mode='lines', # name="Grid Generation (MW)", # line=dict(color="green") # )) # fig.add_trace(go.Scatter( # x=data["timestamp"], # y=data["storage_utilization_mw"], # mode='lines', # name="Storage Utilization (MW)", # line=dict(color="blue") # )) # fig.update_layout(title="Power and Energy Trends", xaxis_title="Time", yaxis_title="Power (MW)") # st.plotly_chart(fig) # # Storage Tab # with tabs[1]: # st.header("Energy Storage Overview") # storage_data = generate_storage_data() # st.write(f"**Total Energy Stored:** {storage_data['total_stored_kwh']} kWh") # # Circular storage breakdown # sources = ["Wind", "Solar", "Turbine"] # values = [storage_data["wind"], storage_data["solar"], storage_data["turbine"]] # fig = go.Figure(data=[go.Pie(labels=sources, values=values, hole=.4)]) # fig.update_layout(title="Energy Storage Breakdown") # st.plotly_chart(fig) # # Electricity Trade Management Tab # with tabs[2]: # st.header("Electricity Trade Management") # # Sample trade data # trade_data = { # "Country": ["Srilanka", "China", "Bangladesh"], # "Energy Exported (MW)": [50, 30, 70], # "Energy Imported (MW)": [20, 40, 10], # } # trade_df = pd.DataFrame(trade_data) # st.subheader("Trade Details") # st.write(trade_df) # # Visualization # fig = go.Figure() # fig.add_trace(go.Bar(x=trade_df["Country"], y=trade_df["Energy Exported (MW)"], name="Exported", marker_color='purple')) # fig.add_trace(go.Bar(x=trade_df["Country"], y=trade_df["Energy Imported (MW)"], name="Imported", marker_color='orange')) # fig.update_layout(title="Energy Trade", barmode='group') # st.plotly_chart(fig) # code 3 import streamlit as st import pandas as pd import plotly.graph_objects as go from app_backend import fetch_weather, generate_synthetic_data, generate_storage_data # Constants API_KEY = "84e26811a314599e940f343b4d5894a7" DEFAULT_LOCATION = "pakistan" # Sidebar for location and weather data st.sidebar.title("Smart Grid Dashboard") location = st.sidebar.text_input("Enter Location", DEFAULT_LOCATION) weather = fetch_weather(API_KEY, location) if weather: st.sidebar.write(f"Temperature: {weather['temperature']} °C") st.sidebar.write(f"Wind Speed: {weather['wind_speed']} m/s") st.sidebar.write(f"Weather: {weather['weather']}") # Main interface st.title("Real-Time Smart Grid Dashboard") # Tabs tabs = st.tabs(["Home", "Storage", "Electricity Trade Management"]) # Home Tab with tabs[0]: st.header("Overview: Power and Energy Usage") # Fetch synthetic data data = generate_synthetic_data() # Line Graph for Power Consumption, Generation, and Storage fig = go.Figure() fig.add_trace(go.Scatter( x=data["timestamp"], y=data["total_power_consumption_mw"], mode='lines', name="Total Power Consumption (MW)", line=dict(color="red") )) fig.add_trace(go.Scatter( x=data["timestamp"], y=data["grid_generation_mw"], mode='lines', name="Grid Generation (MW)", line=dict(color="green") )) fig.add_trace(go.Scatter( x=data["timestamp"], y=data["storage_utilization_mw"], mode='lines', name="Storage Utilization (MW)", line=dict(color="blue") )) fig.update_layout(title="Power and Energy Trends", xaxis_title="Time", yaxis_title="Power (MW)") st.plotly_chart(fig) # Grid Health Indicator st.subheader("Grid Health Status") grid_health = "Stable" if data["grid_generation_mw"].mean() >= data["total_power_consumption_mw"].mean() else "Critical" st.write(f"**Grid Health:** {grid_health}") # AI Recommendations st.subheader("AI Recommendations") recommendations = [ "Increase solar panel efficiency by 10% for peak hours.", "Optimize wind turbine alignment based on real-time wind data.", "Store excess energy during low-demand periods for future use.", "Improve grid stability by distributing load dynamically across sectors.", ] for rec in recommendations: st.write(f"- {rec}") # Storage Tab with tabs[1]: st.header("Energy Storage Overview") storage_data = generate_storage_data() # Individual Circles for Wind, Solar, and Turbine st.subheader("Energy Contributions") col1, col2, col3 = st.columns(3) with col1: st.metric("Wind Energy", f"{storage_data['wind']} MW/min") with col2: st.metric("Solar Energy", f"{storage_data['solar']} MW/min") with col3: st.metric("Turbine Energy", f"{storage_data['turbine']} MW/min") # Central Grid Storage Visualization st.subheader("Total Energy Stored in Grid") fig = go.Figure() fig.add_trace(go.Scatter(x=[0], y=[0], mode='markers+text', text=["Grid"], marker=dict(size=70, color="blue"))) fig.add_trace(go.Scatter( x=[-1, 1, 0], y=[1, 1, -1], mode='markers+text', text=["Wind", "Solar", "Turbine"], marker=dict(size=50, color=["green", "yellow", "orange"]) )) fig.add_trace(go.Scatter( x=[-0.5, 0.5, 0], y=[0.5, 0.5, -0.5], mode="lines", line=dict(width=3, color="gray"), )) fig.update_layout( title="Energy Storage Visualization", xaxis=dict(visible=False), yaxis=dict(visible=False), showlegend=False ) st.plotly_chart(fig) st.write(f"**Total Energy Stored:** {storage_data['total_stored_kwh']} kWh") # Electricity Trade Management Tab with tabs[2]: st.header("Electricity Trade Management") # Sample trade data trade_data = { "Country": ["Country A", "Country B", "Country C"], "Energy Exported (MW)": [50, 30, 70], "Energy Imported (MW)": [20, 40, 10], } trade_df = pd.DataFrame(trade_data) st.subheader("Trade Details") st.write(trade_df) # Visualization fig = go.Figure() fig.add_trace(go.Bar(x=trade_df["Country"], y=trade_df["Energy Exported (MW)"], name="Exported", marker_color='purple')) fig.add_trace(go.Bar(x=trade_df["Country"], y=trade_df["Energy Imported (MW)"], name="Imported", marker_color='orange')) fig.update_layout(title="Energy Trade", barmode='group') st.plotly_chart(fig)