arsalan16's picture
Update app.py
03f1aea verified
raw
history blame
3.68 kB
import streamlit as st
from grooq import Translator # Grooq translation API
from pvlib import location
import pandas as pd
import numpy as np
# Grooq Translator setup
translator = Translator(api_key="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") # Replace with your actual API key
# Function to handle translation
def translate(text, language):
return translator.translate(text, target_language=language)
# Set up the app
st.set_page_config(page_title="Solar System Designer", layout="centered", initial_sidebar_state="expanded")
# Language selection
languages = {"English": "en", "French": "fr", "Spanish": "es", "German": "de", "Chinese": "zh"}
selected_language = st.sidebar.selectbox("Select Language", options=list(languages.keys()))
lang_code = languages[selected_language]
# Title
st.title(translate("Solar System Designer", lang_code))
# Solar panel options
solar_panels = {
"300W": 300,
"400W": 400,
"550W": 550
}
selected_panel = st.selectbox(translate("Select Solar Panel Capacity", lang_code), options=list(solar_panels.keys()))
panel_capacity = solar_panels[selected_panel]
# Battery options
battery_types = {"Lithium-Ion": 95, "Lead-Acid": 80} # Efficiency ratings
selected_battery = st.selectbox(translate("Select Battery Type", lang_code), options=list(battery_types.keys()))
battery_efficiency = battery_types[selected_battery]
battery_voltages = [12, 24, 48]
selected_voltage = st.selectbox(translate("Select Battery Voltage", lang_code), options=battery_voltages)
# Appliance data input
st.subheader(translate("Enter Appliance Details", lang_code))
appliances = []
if "appliance_list" not in st.session_state:
st.session_state["appliance_list"] = []
appliance_name = st.text_input(translate("Appliance Name", lang_code))
appliance_power = st.number_input(translate("Power (Watts)", lang_code), min_value=1)
appliance_hours = st.number_input(translate("Usage Hours per Day", lang_code), min_value=1)
if st.button(translate("Add Appliance", lang_code)):
st.session_state["appliance_list"].append({
"name": appliance_name,
"power": appliance_power,
"hours": appliance_hours
})
if st.session_state["appliance_list"]:
st.table(st.session_state["appliance_list"])
# Calculate system recommendations
if st.button(translate("Calculate Recommendations", lang_code)):
total_load = sum([a["power"] * a["hours"] for a in st.session_state["appliance_list"]])
st.write(translate(f"Total Load in Watts: {total_load}", lang_code))
# Solar panels required
panels_required = np.ceil(total_load / (panel_capacity * 5)) # Assuming 5 peak sunlight hours
st.write(translate(f"Solar Panels Required: {panels_required}", lang_code))
# Battery capacity required
battery_capacity = np.ceil((total_load / battery_efficiency) / selected_voltage)
st.write(translate(f"Batteries Required: {battery_capacity} (Ah)", lang_code))
# Suggestions
st.subheader(translate("System Design Suggestions", lang_code))
suggestions = [
"Consider using MPPT charge controllers for better efficiency.",
"Ensure panels are installed at the optimal tilt angle for your location.",
"Use high-quality cables to minimize energy losses.",
"Regularly clean solar panels to maintain performance.",
"Consider hybrid inverters for grid and off-grid compatibility.",
"Allow space for future system expansion.",
"Invest in reliable surge protection devices.",
"Ensure batteries are stored in a cool, ventilated area.",
]
for suggestion in suggestions:
st.write(translate(suggestion, lang_code))