Spaces:
Build error
Build error
| 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)) | |