File size: 3,048 Bytes
4a9ac34
 
 
 
 
 
2e8e0c0
1ad33b7
2e8e0c0
 
 
 
 
 
1ad33b7
 
2e8e0c0
 
 
4a9ac34
2e8e0c0
4a9ac34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2e8e0c0
4a9ac34
2e8e0c0
4a9ac34
 
2e8e0c0
 
4a9ac34
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import gradio as gr
import pandas as pd
import random
from transformers import AutoTokenizer, AutoModelForCausalLM
import plotly.graph_objects as go

# Attempt to import PyTorch
try:
    import torch
except ImportError:
    torch = None

# Load GPT-2 model if PyTorch is available
if torch:
    tokenizer = AutoTokenizer.from_pretrained("gpt2")
    model = AutoModelForCausalLM.from_pretrained("gpt2")
else:
    tokenizer, model = None, None
    print("PyTorch not available. GPT-2 model will not be loaded.")

# Analyze energy data and provide consumption details, recommendations, and weather tips
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
    )

# The rest of the code remains the same

# Build the Gradio UI
def build_ui():
    with gr.Blocks() as demo:
        # Your UI code
        pass  # Replace with the full UI code

    return demo

demo = build_ui()
demo.launch()