File size: 3,718 Bytes
fcb4f92
 
 
 
e60d54e
fcb4f92
 
 
e60d54e
fcb4f92
 
 
e60d54e
fcb4f92
 
 
 
 
 
e60d54e
fcb4f92
c4912b6
e60d54e
fcb4f92
 
e60d54e
fcb4f92
 
e60d54e
fcb4f92
 
 
 
 
e60d54e
fcb4f92
 
 
 
e60d54e
fcb4f92
 
 
 
 
e60d54e
fcb4f92
 
 
 
 
e60d54e
fcb4f92
 
e60d54e
fcb4f92
 
 
e60d54e
fcb4f92
 
 
 
 
 
 
e60d54e
fcb4f92
 
 
e60d54e
fcb4f92
 
 
 
 
 
 
 
e60d54e
fcb4f92
 
e60d54e
fcb4f92
 
 
 
616b7b7
fcb4f92
 
e60d54e
fcb4f92
 
 
e60d54e
fcb4f92
 
 
 
 
e60d54e
 
 
 
 
43bb94b
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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)