from simple_salesforce import Salesforce import pandas as pd def connect_salesforce(): return Salesforce( username='greenenergy@vedavathi.com', password='Vedavathi@04', security_token='jqe4His8AcuFJucZz5NBHfGU' ) def fetch_pole_data_from_salesforce(sf): query = """ SELECT Name, Solar_Generation__c, Wind_Generation__c, Power_Required__c, Camera_Status__c, Tilt__c, Vibration__c, Alert_Level__c, Power_Sufficient__c FROM VIEP_Pole__c # ← replace this with your actual API name query = """ SELECT Name, Solar_Generation__c, Wind_Generation__c, Power_Required__c, Camera_Status__c, Tilt__c, Vibration__c, Alert_Level__c, Power_Sufficient__c FROM VIEP_Pole__c LIMIT 50 """ LIMIT 50 """ result = sf.query(query) records = result['records'] data = [] for r in records: data.append({ "Pole ID": r['Name'], "Solar Gen (kWh)": r.get('Solar_Generation__c', 0), "Wind Gen (kWh)": r.get('Wind_Generation__c', 0), "Power Required (kWh)": r.get('Power_Required__c', 0), "Power Sufficient": r.get('Power_Sufficient__c', "No"), "Camera Status": r.get('Camera_Status__c', "Offline"), "Tilt (°)": r.get('Tilt__c', 0), "Vibration (g)": r.get('Vibration__c', 0), "Anomalies": "N/A", # Optional: You can add your logic "Alert Level": r.get('Alert_Level__c', "Green"), "Date": pd.Timestamp.today().date() }) return pd.DataFrame(data)