engr-awaisjamal's picture
Update app.py
1ad33b7 verified
raw
history blame
5.5 kB
import gradio as gr
import pandas as pd
import random
from transformers import AutoTokenizer, AutoModelForCausalLM
import plotly.graph_objects as go
# Attempt to load the GPT-2 model
try:
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
except ImportError as e:
tokenizer = None
model = None
print(f"Warning: {e}. GPT-2 model won't be used in this session.")
# Functionality remains the same; no GPT-2 model inference is used
def analyze_energy_data(energy_data, location, language):
appliances = {}
total_kwh = 0
peak_hours_rate = 20
off_peak_hours_rate = 12
benchmarks = {"AC": 400, "Refrigerator": 200, "Lighting": 150, "Fan": 100}
alerts = []
try:
for line in energy_data.strip().split("\n"):
appliance, kwh = line.split(":")
kwh_value = float(kwh.strip().split(" ")[0])
appliances[appliance.strip()] = kwh_value
total_kwh += kwh_value
if appliance.strip() in benchmarks and kwh_value > benchmarks[appliance.strip()]:
alert_message = (
f"Your {appliance.strip()} usage exceeds the limit by "
f"{kwh_value - benchmarks[appliance.strip()]:.2f} kWh."
)
alerts.append(alert_message)
except Exception:
return (
"Error: Enter data in the correct format (e.g., AC: 500 kWh).",
"",
"",
"",
"",
"",
"",
0.0
)
total_bill = total_kwh * peak_hours_rate
optimized_bill = sum(
appliances[app] * (off_peak_hours_rate if app in ["AC", "Refrigerator"] else peak_hours_rate)
for app in appliances
)
savings = total_bill - optimized_bill
carbon_emissions = total_kwh * 0.707 # Approx kg of CO2 per kWh
weather_tips = (
f"Considering high temperatures in {location}, keep windows closed during peak heat hours to optimize cooling."
if "Lahore" in location
else "Check local weather to optimize energy usage."
)
return (
f"Your current bill is PKR {total_bill:.2f}, potentially saving PKR {savings:.2f}.",
"\n".join([f"{appliance}: {random.choice(['Use during off-peak hours.', 'Turn off when not in use.'])}" for appliance in appliances]),
weather_tips,
"\n".join(alerts),
f"Your carbon footprint: {carbon_emissions:.2f} kg of CO2. Consider using renewable energy.",
f"AI Recommendation: Optimize usage of AC and lighting based on peak hours to reduce costs and emissions.",
savings # Return savings for ROI calculation
)
# Other functions remain unchanged
def build_ui():
with gr.Blocks() as demo:
with gr.Row():
home_size = gr.Slider(minimum=500, maximum=5000, step=100, label="Home Size (sq ft)", value=1200)
location = gr.Textbox(label="Location (City)", placeholder="Enter your city...", info="Specify the city to get weather-based tips.")
energy_data = gr.Textbox(
label="Energy Data (Appliance: kWh)",
placeholder="e.g., AC: 500 kWh\nLighting: 120 kWh\nRefrigerator: 150 kWh",
lines=5,
info="Enter your appliances and their energy usage."
)
language = gr.Radio(choices=["English", "Urdu"], label="Language")
with gr.Row():
user_name = gr.Textbox(label="Your Name", placeholder="Enter your name...", info="Provide your name to track performance.")
reduction_percentage = gr.Slider(minimum=0, maximum=50, step=1, label="Energy Reduction (%)", value=10)
initial_investment = gr.Number(label="Initial Investment (PKR)", value=10000)
fetch_data_button = gr.Button("Fetch Smart Device Data")
fetch_data_output = gr.Textbox(label="Smart Device Data", interactive=False)
fetch_data_button.click(fetch_smart_device_data, inputs=[], outputs=fetch_data_output)
submit_button = gr.Button("Analyze", variant="primary", elem_id="submit-button")
with gr.Row():
energy_output = gr.Textbox(label="Energy Consumption Analysis", interactive=False)
tips_output = gr.Textbox(label="Optimization Tips", interactive=False)
weather_output = gr.Textbox(label="Weather-specific Tips", interactive=False)
alerts_output = gr.Textbox(label="Alerts", interactive=False)
ai_recommendations = gr.Textbox(label="AI Recommendations", interactive=False)
with gr.Row():
carbon_output = gr.Textbox(label="Carbon Footprint", interactive=False)
energy_chart = gr.Plot(label="Energy Visualization")
with gr.Row():
leaderboard_output = gr.Textbox(label="Leaderboard", interactive=False)
badge_output = gr.Textbox(label="Your Badge", interactive=False)
with gr.Row():
roi_output = gr.Textbox(label="Return on Investment (ROI)", interactive=False)
submit_button.click(
chatbot_interface,
inputs=[home_size, location, energy_data, language, user_name, reduction_percentage, initial_investment],
outputs=[energy_output, tips_output, weather_output, alerts_output, carbon_output, ai_recommendations, energy_chart, leaderboard_output, badge_output, roi_output]
)
return demo
demo = build_ui()
demo.launch()