DSatishchandra commited on
Commit
9377013
·
verified ·
1 Parent(s): e566f9b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -2
app.py CHANGED
@@ -3,6 +3,7 @@ import pandas as pd
3
  import streamlit as st
4
  import pydeck as pdk
5
  from datetime import datetime, timedelta
 
6
 
7
  # ---- Constants ----
8
  POLES_PER_SITE = 12
@@ -20,7 +21,7 @@ def generate_location(base_lat, base_lon):
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)
@@ -44,6 +45,20 @@ def simulate_pole(pole_id, site_name):
44
  health_score = max(0, 100 - (tilt_angle + vibration * 10))
45
  timestamp = datetime.now() - timedelta(hours=random.randint(0, 6))
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  return {
48
  'Pole ID': f'{site_name[:3].upper()}-{pole_id:03}',
49
  'Site': site_name,
@@ -70,8 +85,11 @@ st.title("🌍 Smart Renewable Pole Monitoring - Multi-Site")
70
  selected_site = st.text_input("Enter site to view (Hyderabad, Gadwal, Kurnool, Ballari):", "Hyderabad")
71
 
72
  if selected_site in SITES:
 
 
 
73
  with st.spinner(f"Simulating poles at {selected_site}..."):
74
- poles_data = [simulate_pole(i + 1, site) for site in SITES for i in range(POLES_PER_SITE)]
75
  df = pd.DataFrame(poles_data)
76
  site_df = df[df['Site'] == selected_site]
77
 
 
3
  import streamlit as st
4
  import pydeck as pdk
5
  from datetime import datetime, timedelta
6
+ from salesforce_integration import fetch_salesforce_data # Import the Salesforce integration
7
 
8
  # ---- Constants ----
9
  POLES_PER_SITE = 12
 
21
  base_lon + random.uniform(-0.02, 0.02)
22
  ]
23
 
24
+ def simulate_pole(pole_id, site_name, salesforce_data=None):
25
  lat, lon = generate_location(*SITES[site_name])
26
  solar_kwh = round(random.uniform(3.0, 7.5), 2)
27
  wind_kwh = round(random.uniform(0.5, 2.0), 2)
 
45
  health_score = max(0, 100 - (tilt_angle + vibration * 10))
46
  timestamp = datetime.now() - timedelta(hours=random.randint(0, 6))
47
 
48
+ # If salesforce data exists, prioritize it over simulation
49
+ if salesforce_data:
50
+ # Merge or override simulated data with Salesforce data
51
+ for pole_data in salesforce_data:
52
+ if pole_data['Site'] == site_name and pole_data['Pole ID'] == f'{site_name[:3].upper()}-{pole_id:03}':
53
+ solar_kwh = pole_data.get('Solar (kWh)', solar_kwh)
54
+ wind_kwh = pole_data.get('Wind (kWh)', wind_kwh)
55
+ power_required = pole_data.get('Power Required (kWh)', power_required)
56
+ total_power = solar_kwh + wind_kwh
57
+ power_status = 'Sufficient' if total_power >= power_required else 'Insufficient'
58
+ health_score = round(pole_data.get('Health Score', health_score), 2)
59
+ alert_level = pole_data.get('Alert Level', alert_level)
60
+ break
61
+
62
  return {
63
  'Pole ID': f'{site_name[:3].upper()}-{pole_id:03}',
64
  'Site': site_name,
 
85
  selected_site = st.text_input("Enter site to view (Hyderabad, Gadwal, Kurnool, Ballari):", "Hyderabad")
86
 
87
  if selected_site in SITES:
88
+ # Fetch Salesforce data
89
+ salesforce_data = fetch_salesforce_data(selected_site)
90
+
91
  with st.spinner(f"Simulating poles at {selected_site}..."):
92
+ poles_data = [simulate_pole(i + 1, selected_site, salesforce_data) for i in range(POLES_PER_SITE)]
93
  df = pd.DataFrame(poles_data)
94
  site_df = df[df['Site'] == selected_site]
95