Sanjayraju30 commited on
Commit
0d1e7aa
ยท
verified ยท
1 Parent(s): 2138290

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -16
app.py CHANGED
@@ -10,18 +10,12 @@ SITES = {
10
  "Hyderabad": [17.385044, 78.486671],
11
  "Gadwal": [16.2351, 77.8052],
12
  "Kurnool": [15.8281, 78.0373],
13
- "Ballari": [12.9716, 77.5946]
14
  }
15
 
16
  # ---- Helper Functions ----
17
- def generate_location(base_lat, base_lon):
18
- return [
19
- base_lat + random.uniform(-0.02, 0.02),
20
- base_lon + random.uniform(-0.02, 0.02)
21
- ]
22
-
23
  def simulate_pole(pole_id, site_name):
24
- lat, lon = generate_location(*SITES[site_name])
25
  solar_kwh = round(random.uniform(3.0, 7.5), 2)
26
  wind_kwh = round(random.uniform(0.5, 2.0), 2)
27
  power_required = round(random.uniform(4.0, 8.0), 2)
@@ -65,7 +59,7 @@ def simulate_pole(pole_id, site_name):
65
 
66
  # ---- Streamlit UI ----
67
  st.set_page_config(page_title="Smart Pole Monitoring", layout="wide")
68
- st.title("๐ŸŒ Smart Renewable Pole Monitoring - Multi-Site")
69
 
70
  selected_site = st.text_input("Enter site to view (Hyderabad, Gadwal, Kurnool, Ballari):", "Hyderabad")
71
 
@@ -82,7 +76,7 @@ if selected_site in SITES:
82
  col3.metric("Power Insufficiencies", site_df[site_df['Power Status'] == 'Insufficient'].shape[0])
83
 
84
  # Table View
85
- st.subheader(f"๐Ÿ“‹ Pole Data Table for {selected_site}")
86
  with st.expander("Filter Options"):
87
  alert_filter = st.multiselect("Alert Level", options=site_df['Alert Level'].unique(), default=site_df['Alert Level'].unique())
88
  camera_filter = st.multiselect("Camera Status", options=site_df['Camera Status'].unique(), default=site_df['Camera Status'].unique())
@@ -91,22 +85,22 @@ if selected_site in SITES:
91
  st.dataframe(filtered_df, use_container_width=True)
92
 
93
  # Charts
94
- st.subheader("๐Ÿ“Š Energy Generation Comparison")
95
  st.bar_chart(site_df[['Solar (kWh)', 'Wind (kWh)']].mean())
96
 
97
- st.subheader("๐Ÿ“ˆ Tilt vs. Vibration")
98
  st.scatter_chart(site_df[['Tilt Angle (ยฐ)', 'Vibration (g)']])
99
 
100
  # ---- Map Section with Tooltip ----
101
- st.subheader("๐Ÿ“ Pole Alert Levels (Green, Yellow, Red)")
102
 
103
  def alert_level_to_color(alert_level):
104
  if alert_level == 'Red':
105
- return [255, 0, 0, 160] # Red
106
  elif alert_level == 'Yellow':
107
- return [255, 255, 0, 160] # Yellow
108
  else:
109
- return [0, 255, 0, 160] # Green
110
 
111
  if not site_df.empty:
112
  site_df = site_df.copy()
 
10
  "Hyderabad": [17.385044, 78.486671],
11
  "Gadwal": [16.2351, 77.8052],
12
  "Kurnool": [15.8281, 78.0373],
13
+ "Ballari": [15.1394, 76.9214] # Corrected Ballari location
14
  }
15
 
16
  # ---- Helper Functions ----
 
 
 
 
 
 
17
  def simulate_pole(pole_id, site_name):
18
+ lat, lon = SITES[site_name] # FIXED: Use constant location without random offset
19
  solar_kwh = round(random.uniform(3.0, 7.5), 2)
20
  wind_kwh = round(random.uniform(0.5, 2.0), 2)
21
  power_required = round(random.uniform(4.0, 8.0), 2)
 
59
 
60
  # ---- Streamlit UI ----
61
  st.set_page_config(page_title="Smart Pole Monitoring", layout="wide")
62
+ st.title("\U0001F30D Smart Renewable Pole Monitoring - Multi-Site")
63
 
64
  selected_site = st.text_input("Enter site to view (Hyderabad, Gadwal, Kurnool, Ballari):", "Hyderabad")
65
 
 
76
  col3.metric("Power Insufficiencies", site_df[site_df['Power Status'] == 'Insufficient'].shape[0])
77
 
78
  # Table View
79
+ st.subheader(f"\U0001F4CB Pole Data Table for {selected_site}")
80
  with st.expander("Filter Options"):
81
  alert_filter = st.multiselect("Alert Level", options=site_df['Alert Level'].unique(), default=site_df['Alert Level'].unique())
82
  camera_filter = st.multiselect("Camera Status", options=site_df['Camera Status'].unique(), default=site_df['Camera Status'].unique())
 
85
  st.dataframe(filtered_df, use_container_width=True)
86
 
87
  # Charts
88
+ st.subheader("\U0001F4CA Energy Generation Comparison")
89
  st.bar_chart(site_df[['Solar (kWh)', 'Wind (kWh)']].mean())
90
 
91
+ st.subheader("\U0001F4C8 Tilt vs. Vibration")
92
  st.scatter_chart(site_df[['Tilt Angle (ยฐ)', 'Vibration (g)']])
93
 
94
  # ---- Map Section with Tooltip ----
95
+ st.subheader("\U0001F4CD Pole Alert Levels (Green, Yellow, Red)")
96
 
97
  def alert_level_to_color(alert_level):
98
  if alert_level == 'Red':
99
+ return [255, 0, 0, 160]
100
  elif alert_level == 'Yellow':
101
+ return [255, 255, 0, 160]
102
  else:
103
+ return [0, 255, 0, 160]
104
 
105
  if not site_df.empty:
106
  site_df = site_df.copy()