Spaces:
Sleeping
Sleeping
| 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) | |