Pole_management / app.py
Tigernawin's picture
Update app.py
b5f30bf verified
import streamlit as st
import pandas as pd
import os
from modules.simulator import simulate_data
from modules.filters import apply_filters
from modules.visuals import display_dashboard, display_charts
from simple_salesforce import Salesforce, SalesforceLogin
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
# Set this as the first Streamlit command
st.set_page_config(page_title="Vedavathi Smart Pole Monitoring", layout="wide")
# Connect to Salesforce
sf = Salesforce(
username=os.getenv("SF_USERNAME"),
password=os.getenv("SF_PASSWORD"),
security_token=os.getenv("SF_TOKEN"),
domain="login" # or "test" for sandbox
)
# Function to fetch Pole data
def fetch_pole_data():
query = """
SELECT Id, Name, Site__c, Date__c, Latitude__c, Longitude__c,
Solar_Generation__c, Wind_Generation__c, Power_Required__c,
Power_Sufficient__c, Camera_Status__c, Tilt_Angle__c, Vibration__c, Anomalies__c
FROM Pole__c
LIMIT 100
"""
result = sf.query(query)
records = result["records"]
df = pd.DataFrame(records).drop(columns=["attributes"])
return df
# Get and transform data
df = fetch_pole_data()
df = df.rename(columns={
"Name": "Pole ID",
"Site__c": "Site",
"Date__c": "Date",
"Latitude__c": "Latitude",
"Longitude__c": "Longitude",
"Solar_Generation__c": "Solar Gen (kWh)",
"Wind_Generation__c": "Wind Gen (kWh)",
"Power_Required__c": "Power Required (kWh)",
"Power_Sufficient__c": "Power Sufficient",
"Camera_Status__c": "Camera Status",
"Tilt_Angle__c": "Tilt (°)",
"Vibration__c": "Vibration (g)",
"Anomalies__c": "Anomalies"
})
# Format date
if "Date" in df.columns:
df["Date"] = pd.to_datetime(df["Date"]).dt.date
# Display the expander with the table
with st.expander("📋 Pole Monitoring Table", expanded=True):
st.dataframe(df, use_container_width=True)
# View poles
with st.expander("Pole__c"):
df_poles = fetch_data("Pole__c", fields="Id, Name") # Update fields after checking above
st.dataframe(df_poles)
# View sensor data
with st.expander("SensorData__c"):
df_sensors = fetch_data("SensorData__c", fields="Id, Pole__c") # Adjust if needed
st.dataframe(df_sensors)
# View alerts
with st.expander("Alert__c"):
df_alerts = fetch_data("Alert__c", fields="Id, Pole__c, Alert_Level__c") # Adjust if needed
st.dataframe(df_alerts)