emhass 0.12.8__py3-none-any.whl → 0.13.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {emhass-0.12.8.dist-info → emhass-0.13.0.dist-info}/METADATA +1 -2
- emhass-0.13.0.dist-info/RECORD +5 -0
- emhass/data/associations.csv +0 -64
- emhass/data/cec_inverters.pbz2 +0 -0
- emhass/data/cec_modules.pbz2 +0 -0
- emhass/data/config_defaults.json +0 -117
- emhass/static/advanced.html +0 -36
- emhass/static/basic.html +0 -14
- emhass/static/configuration_list.html +0 -48
- emhass/static/configuration_script.js +0 -888
- emhass/static/data/param_definitions.json +0 -432
- emhass/static/img/emhass_icon.png +0 -0
- emhass/static/img/emhass_logo_short.svg +0 -544
- emhass/static/img/feather-sprite.svg +0 -1
- emhass/static/script.js +0 -443
- emhass/static/style.css +0 -1373
- emhass/templates/configuration.html +0 -75
- emhass/templates/index.html +0 -77
- emhass/templates/template.html +0 -5
- emhass-0.12.8.dist-info/RECORD +0 -22
- {emhass-0.12.8.dist-info → emhass-0.13.0.dist-info}/WHEEL +0 -0
- {emhass-0.12.8.dist-info → emhass-0.13.0.dist-info}/entry_points.txt +0 -0
- {emhass-0.12.8.dist-info → emhass-0.13.0.dist-info}/licenses/LICENSE +0 -0
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            Metadata-Version: 2.4
         | 
| 2 2 | 
             
            Name: emhass
         | 
| 3 | 
            -
            Version: 0. | 
| 3 | 
            +
            Version: 0.13.0
         | 
| 4 4 | 
             
            Summary: An Energy Management System for Home Assistant
         | 
| 5 5 | 
             
            Project-URL: Homepage, https://github.com/davidusb-geek/emhass
         | 
| 6 6 | 
             
            Author-email: David HERNANDEZ <davidusb@gmail.com>
         | 
| @@ -14,7 +14,6 @@ Classifier: Operating System :: OS Independent | |
| 14 14 | 
             
            Classifier: Programming Language :: Python :: 3.12
         | 
| 15 15 | 
             
            Classifier: Topic :: Software Development :: Build Tools
         | 
| 16 16 | 
             
            Requires-Python: <3.13,>=3.10
         | 
| 17 | 
            -
            Requires-Dist: beautifulsoup4>=4.12.3
         | 
| 18 17 | 
             
            Requires-Dist: flask>=3.1.0
         | 
| 19 18 | 
             
            Requires-Dist: gunicorn>=23.0.0
         | 
| 20 19 | 
             
            Requires-Dist: h5py>=3.12.1
         | 
| @@ -0,0 +1,5 @@ | |
| 1 | 
            +
            emhass-0.13.0.dist-info/METADATA,sha256=KfOdpO3P_mgs_TgVZgO-5Btt764l58UX64c5URpClG0,50967
         | 
| 2 | 
            +
            emhass-0.13.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
         | 
| 3 | 
            +
            emhass-0.13.0.dist-info/entry_points.txt,sha256=6Bp1NFOGNv_fSTxYl1ke3K3h3aqAcBxI-bgq5yq-i1M,52
         | 
| 4 | 
            +
            emhass-0.13.0.dist-info/licenses/LICENSE,sha256=1X3-S1yvOCBDBeox1aK3dq00m7dA8NDtcPrpKPISzbE,1077
         | 
| 5 | 
            +
            emhass-0.13.0.dist-info/RECORD,,
         | 
    
        emhass/data/associations.csv
    DELETED
    
    | @@ -1,64 +0,0 @@ | |
| 1 | 
            -
            config_categorie,legacy_parameter_name,parameter,list_name 
         | 
| 2 | 
            -
            retrieve_hass_conf,freq,optimization_time_step
         | 
| 3 | 
            -
            retrieve_hass_conf,days_to_retrieve,historic_days_to_retrieve
         | 
| 4 | 
            -
            retrieve_hass_conf,var_PV,sensor_power_photovoltaics
         | 
| 5 | 
            -
            retrieve_hass_conf,var_load,sensor_power_load_no_var_loads
         | 
| 6 | 
            -
            retrieve_hass_conf,load_negative,load_negative
         | 
| 7 | 
            -
            retrieve_hass_conf,set_zero_min,set_zero_min
         | 
| 8 | 
            -
            retrieve_hass_conf,var_replace_zero,sensor_replace_zero,list_sensor_replace_zero
         | 
| 9 | 
            -
            retrieve_hass_conf,var_interp,sensor_linear_interp,list_sensor_linear_interp
         | 
| 10 | 
            -
            retrieve_hass_conf,method_ts_round,method_ts_round
         | 
| 11 | 
            -
            retrieve_hass_conf,continual_publish,continual_publish
         | 
| 12 | 
            -
            params_secrets,time_zone,time_zone
         | 
| 13 | 
            -
            params_secrets,lat,Latitude
         | 
| 14 | 
            -
            params_secrets,lon,Longitude
         | 
| 15 | 
            -
            params_secrets,alt,Altitude
         | 
| 16 | 
            -
            optim_conf,costfun,costfun
         | 
| 17 | 
            -
            optim_conf,logging_level,logging_level
         | 
| 18 | 
            -
            optim_conf,set_use_pv,set_use_pv
         | 
| 19 | 
            -
            optim_conf,set_use_battery,set_use_battery
         | 
| 20 | 
            -
            optim_conf,num_def_loads,number_of_deferrable_loads
         | 
| 21 | 
            -
            optim_conf,P_deferrable_nom,nominal_power_of_deferrable_loads,list_nominal_power_of_deferrable_loads
         | 
| 22 | 
            -
            optim_conf,def_total_hours,operating_hours_of_each_deferrable_load,list_operating_hours_of_each_deferrable_load
         | 
| 23 | 
            -
            optim_conf,treat_def_as_semi_cont,treat_deferrable_load_as_semi_cont,list_treat_deferrable_load_as_semi_cont
         | 
| 24 | 
            -
            optim_conf,set_def_constant,set_deferrable_load_single_constant,list_set_deferrable_load_single_constant
         | 
| 25 | 
            -
            optim_conf,def_start_penalty,set_deferrable_startup_penalty,list_set_deferrable_startup_penalty
         | 
| 26 | 
            -
            optim_conf,delta_forecast,delta_forecast_daily
         | 
| 27 | 
            -
            optim_conf,load_forecast_method,load_forecast_method
         | 
| 28 | 
            -
            optim_conf,load_cost_forecast_method,load_cost_forecast_method
         | 
| 29 | 
            -
            optim_conf,load_cost_hp,load_peak_hours_cost
         | 
| 30 | 
            -
            optim_conf,load_cost_hc,load_offpeak_hours_cost
         | 
| 31 | 
            -
            optim_conf,prod_price_forecast_method,production_price_forecast_method
         | 
| 32 | 
            -
            optim_conf,prod_sell_price,photovoltaic_production_sell_price
         | 
| 33 | 
            -
            optim_conf,set_total_pv_sell,set_total_pv_sell
         | 
| 34 | 
            -
            optim_conf,lp_solver,lp_solver
         | 
| 35 | 
            -
            optim_conf,lp_solver_path,lp_solver_path
         | 
| 36 | 
            -
            optim_conf,set_nocharge_from_grid,set_nocharge_from_grid
         | 
| 37 | 
            -
            optim_conf,set_nodischarge_to_grid,set_nodischarge_to_grid
         | 
| 38 | 
            -
            optim_conf,set_battery_dynamic,set_battery_dynamic
         | 
| 39 | 
            -
            optim_conf,battery_dynamic_max,battery_dynamic_max
         | 
| 40 | 
            -
            optim_conf,battery_dynamic_min,battery_dynamic_min
         | 
| 41 | 
            -
            optim_conf,weight_battery_discharge,weight_battery_discharge
         | 
| 42 | 
            -
            optim_conf,weight_battery_charge,weight_battery_charge
         | 
| 43 | 
            -
            optim_conf,weather_forecast_method,weather_forecast_method
         | 
| 44 | 
            -
            optim_conf,def_start_timestep,start_timesteps_of_each_deferrable_load,list_start_timesteps_of_each_deferrable_load
         | 
| 45 | 
            -
            optim_conf,def_end_timestep,end_timesteps_of_each_deferrable_load,list_end_timesteps_of_each_deferrable_load
         | 
| 46 | 
            -
            optim_conf,list_hp_periods,load_peak_hour_periods
         | 
| 47 | 
            -
            plant_conf,P_from_grid_max,maximum_power_from_grid
         | 
| 48 | 
            -
            plant_conf,P_to_grid_max,maximum_power_to_grid
         | 
| 49 | 
            -
            plant_conf,module_model,pv_module_model,list_pv_module_model
         | 
| 50 | 
            -
            plant_conf,inverter_model,pv_inverter_model,list_pv_inverter_model
         | 
| 51 | 
            -
            plant_conf,surface_tilt,surface_tilt,list_surface_tilt
         | 
| 52 | 
            -
            plant_conf,surface_azimuth,surface_azimuth,list_surface_azimuth
         | 
| 53 | 
            -
            plant_conf,modules_per_string,modules_per_string,list_modules_per_string
         | 
| 54 | 
            -
            plant_conf,strings_per_inverter,strings_per_inverter,list_strings_per_inverter
         | 
| 55 | 
            -
            plant_conf,inverter_is_hybrid,inverter_is_hybrid
         | 
| 56 | 
            -
            plant_conf,compute_curtailment,compute_curtailment
         | 
| 57 | 
            -
            plant_conf,Pd_max,battery_discharge_power_max
         | 
| 58 | 
            -
            plant_conf,Pc_max,battery_charge_power_max
         | 
| 59 | 
            -
            plant_conf,eta_disch,battery_discharge_efficiency
         | 
| 60 | 
            -
            plant_conf,eta_ch,battery_charge_efficiency
         | 
| 61 | 
            -
            plant_conf,Enom,battery_nominal_energy_capacity
         | 
| 62 | 
            -
            plant_conf,SOCmin,battery_minimum_state_of_charge
         | 
| 63 | 
            -
            plant_conf,SOCmax,battery_maximum_state_of_charge
         | 
| 64 | 
            -
            plant_conf,SOCtarget,battery_target_state_of_charge
         | 
    
        emhass/data/cec_inverters.pbz2
    DELETED
    
    | Binary file | 
    
        emhass/data/cec_modules.pbz2
    DELETED
    
    | Binary file | 
    
        emhass/data/config_defaults.json
    DELETED
    
    | @@ -1,117 +0,0 @@ | |
| 1 | 
            -
            {
         | 
| 2 | 
            -
              "logging_level": "INFO",
         | 
| 3 | 
            -
              "costfun": "profit",
         | 
| 4 | 
            -
              "optimization_time_step": 30,
         | 
| 5 | 
            -
              "historic_days_to_retrieve": 2,
         | 
| 6 | 
            -
              "method_ts_round": "nearest",
         | 
| 7 | 
            -
              "continual_publish": false,
         | 
| 8 | 
            -
              "data_path": "default",
         | 
| 9 | 
            -
              "set_total_pv_sell": false,
         | 
| 10 | 
            -
              "lp_solver": "default",
         | 
| 11 | 
            -
              "lp_solver_path": "empty",
         | 
| 12 | 
            -
              "set_nocharge_from_grid": false,
         | 
| 13 | 
            -
              "set_nodischarge_to_grid": true,
         | 
| 14 | 
            -
              "set_battery_dynamic": false,
         | 
| 15 | 
            -
              "battery_dynamic_max": 0.9,
         | 
| 16 | 
            -
              "battery_dynamic_min": -0.9,
         | 
| 17 | 
            -
              "weight_battery_discharge": 1.0,
         | 
| 18 | 
            -
              "weight_battery_charge": 1.0,
         | 
| 19 | 
            -
              "sensor_power_photovoltaics": "sensor.power_photovoltaics",
         | 
| 20 | 
            -
              "sensor_power_load_no_var_loads": "sensor.power_load_no_var_loads",
         | 
| 21 | 
            -
              "sensor_replace_zero": [
         | 
| 22 | 
            -
                "sensor.power_photovoltaics" 
         | 
| 23 | 
            -
              ],
         | 
| 24 | 
            -
              "sensor_linear_interp": [
         | 
| 25 | 
            -
                "sensor.power_photovoltaics",
         | 
| 26 | 
            -
                "sensor.power_load_no_var_loads"
         | 
| 27 | 
            -
              ],
         | 
| 28 | 
            -
              "load_negative": false,
         | 
| 29 | 
            -
              "set_zero_min": true,
         | 
| 30 | 
            -
              "number_of_deferrable_loads": 2,
         | 
| 31 | 
            -
              "nominal_power_of_deferrable_loads": [
         | 
| 32 | 
            -
                3000.0,
         | 
| 33 | 
            -
                750.0
         | 
| 34 | 
            -
              ],
         | 
| 35 | 
            -
              "operating_hours_of_each_deferrable_load": [
         | 
| 36 | 
            -
                4,
         | 
| 37 | 
            -
                0
         | 
| 38 | 
            -
              ],
         | 
| 39 | 
            -
              "weather_forecast_method": "open-meteo",
         | 
| 40 | 
            -
              "load_forecast_method": "naive",
         | 
| 41 | 
            -
              "delta_forecast_daily": 1,
         | 
| 42 | 
            -
              "load_cost_forecast_method": "hp_hc_periods",
         | 
| 43 | 
            -
              "start_timesteps_of_each_deferrable_load": [
         | 
| 44 | 
            -
                0,
         | 
| 45 | 
            -
                0
         | 
| 46 | 
            -
              ],
         | 
| 47 | 
            -
              "end_timesteps_of_each_deferrable_load": [
         | 
| 48 | 
            -
                0,
         | 
| 49 | 
            -
                0
         | 
| 50 | 
            -
              ],
         | 
| 51 | 
            -
              "load_peak_hour_periods": {
         | 
| 52 | 
            -
                "period_hp_1": [
         | 
| 53 | 
            -
                  {
         | 
| 54 | 
            -
                    "start": "02:54"
         | 
| 55 | 
            -
                  },
         | 
| 56 | 
            -
                  {
         | 
| 57 | 
            -
                    "end": "15:24"
         | 
| 58 | 
            -
                  }
         | 
| 59 | 
            -
                ],
         | 
| 60 | 
            -
                "period_hp_2": [
         | 
| 61 | 
            -
                  {
         | 
| 62 | 
            -
                    "start": "17:24"
         | 
| 63 | 
            -
                  },
         | 
| 64 | 
            -
                  {
         | 
| 65 | 
            -
                    "end": "20:24"
         | 
| 66 | 
            -
                  }
         | 
| 67 | 
            -
                ]
         | 
| 68 | 
            -
              },
         | 
| 69 | 
            -
              "treat_deferrable_load_as_semi_cont": [
         | 
| 70 | 
            -
                true,
         | 
| 71 | 
            -
                true
         | 
| 72 | 
            -
              ],
         | 
| 73 | 
            -
              "set_deferrable_load_single_constant": [
         | 
| 74 | 
            -
                false,
         | 
| 75 | 
            -
                false
         | 
| 76 | 
            -
              ],
         | 
| 77 | 
            -
              "set_deferrable_startup_penalty": [
         | 
| 78 | 
            -
                0.0,
         | 
| 79 | 
            -
                0.0
         | 
| 80 | 
            -
              ],
         | 
| 81 | 
            -
              "load_peak_hours_cost": 0.1907,
         | 
| 82 | 
            -
              "load_offpeak_hours_cost": 0.1419,
         | 
| 83 | 
            -
              "production_price_forecast_method": "constant",
         | 
| 84 | 
            -
              "photovoltaic_production_sell_price": 0.1419,
         | 
| 85 | 
            -
              "maximum_power_from_grid": 9000,
         | 
| 86 | 
            -
              "maximum_power_to_grid": 9000,
         | 
| 87 | 
            -
              "set_use_pv": false,
         | 
| 88 | 
            -
              "pv_module_model": [
         | 
| 89 | 
            -
                "CSUN_Eurasia_Energy_Systems_Industry_and_Trade_CSUN295_60M"
         | 
| 90 | 
            -
              ],
         | 
| 91 | 
            -
              "pv_inverter_model": [
         | 
| 92 | 
            -
                "Fronius_International_GmbH__Fronius_Primo_5_0_1_208_240__240V_"
         | 
| 93 | 
            -
              ],
         | 
| 94 | 
            -
              "surface_tilt": [
         | 
| 95 | 
            -
                30
         | 
| 96 | 
            -
              ],
         | 
| 97 | 
            -
              "surface_azimuth": [
         | 
| 98 | 
            -
                205
         | 
| 99 | 
            -
              ],
         | 
| 100 | 
            -
              "modules_per_string": [
         | 
| 101 | 
            -
                16
         | 
| 102 | 
            -
              ],
         | 
| 103 | 
            -
              "strings_per_inverter": [
         | 
| 104 | 
            -
                1
         | 
| 105 | 
            -
              ],
         | 
| 106 | 
            -
              "inverter_is_hybrid": false,
         | 
| 107 | 
            -
              "compute_curtailment": false,
         | 
| 108 | 
            -
              "set_use_battery": false,
         | 
| 109 | 
            -
              "battery_discharge_power_max": 1000,
         | 
| 110 | 
            -
              "battery_charge_power_max": 1000,
         | 
| 111 | 
            -
              "battery_discharge_efficiency": 0.95,
         | 
| 112 | 
            -
              "battery_charge_efficiency": 0.95,
         | 
| 113 | 
            -
              "battery_nominal_energy_capacity": 5000,
         | 
| 114 | 
            -
              "battery_minimum_state_of_charge": 0.3,
         | 
| 115 | 
            -
              "battery_maximum_state_of_charge": 0.9,
         | 
| 116 | 
            -
              "battery_target_state_of_charge": 0.6
         | 
| 117 | 
            -
            }
         | 
    
        emhass/static/advanced.html
    DELETED
    
    | @@ -1,36 +0,0 @@ | |
| 1 | 
            -
            <!-- advance div, dynamically appended inside of index.html -->
         | 
| 2 | 
            -
            <!-- action button elements section -->
         | 
| 3 | 
            -
            <div class="loading-div" id="advance">
         | 
| 4 | 
            -
                <h4>Use the buttons below to manually launch different optimization tasks</h4>
         | 
| 5 | 
            -
                <div id=loader></div> <!-- status dynamic element -->
         | 
| 6 | 
            -
            </div>
         | 
| 7 | 
            -
            <button type="button" id="perfect-optim" class="button button1">Perfect Optimization</button>
         | 
| 8 | 
            -
            <button type="button" id="dayahead-optim" class="button button2">Day-ahead Optimization</button>
         | 
| 9 | 
            -
            <button type="button" id="naive-mpc-optim" class="button button3">MPC Optimization</button>
         | 
| 10 | 
            -
            <!--ml toggled div button -->
         | 
| 11 | 
            -
            <h4>Use the button below to publish the optimized variables at the current timestamp</h4>
         | 
| 12 | 
            -
            <button type="button" id="publish-data" class="button button1">Publish Optimization Results</button>
         | 
| 13 | 
            -
            <h4>Use the buttons below to fit, predict and tune a machine learning model for testing</h4>
         | 
| 14 | 
            -
            <button type="button" id="forecast-model-fit" class="button button1">ML forecast model fit</button>
         | 
| 15 | 
            -
            <button type="button" id="forecast-model-predict" class="button button2">ML forecast model
         | 
| 16 | 
            -
                predict</button>
         | 
| 17 | 
            -
            <button type="button" id="forecast-model-tune" class="button button3">ML forecast model tune</button>
         | 
| 18 | 
            -
            </br></br>
         | 
| 19 | 
            -
            <button type="button" id="regressor-model-fit" class="button button1">ML regressor model fit</button>
         | 
| 20 | 
            -
            <button type="button" id="regressor-model-predict" class="button button2">ML regressor model predict</button>
         | 
| 21 | 
            -
            <!-- -->
         | 
| 22 | 
            -
            <!--dynamic runtime parameter input (list and box) elements section -->
         | 
| 23 | 
            -
            <h4>Input Runtime Parameters</h4>
         | 
| 24 | 
            -
            <div class="input-button-container">
         | 
| 25 | 
            -
                <div class="input-buttons">
         | 
| 26 | 
            -
                    <button type="button" id="input-plus">+</button>
         | 
| 27 | 
            -
                    <button type="button" id="input-minus">-</button>
         | 
| 28 | 
            -
                    <select name="Select" id="input-select">
         | 
| 29 | 
            -
                        <option value="List" selected>List</option>
         | 
| 30 | 
            -
                        <option value="Box">Box</option>
         | 
| 31 | 
            -
                    </select>
         | 
| 32 | 
            -
                    <button type="button" id="input-clear">Clear</button>
         | 
| 33 | 
            -
                </div>
         | 
| 34 | 
            -
            </div>
         | 
| 35 | 
            -
            <div id="input-container"> <!-- (Box/List) dynamic input elements will be added here -->
         | 
| 36 | 
            -
            </div>
         | 
    
        emhass/static/basic.html
    DELETED
    
    | @@ -1,14 +0,0 @@ | |
| 1 | 
            -
            <!-- basic div, dynamically appended inside of index.html -->
         | 
| 2 | 
            -
            <!-- action button elements section -->
         | 
| 3 | 
            -
            <div class="loading-div" id="basic">
         | 
| 4 | 
            -
                <h4>Use the button below to manually launch optimization task</h4>
         | 
| 5 | 
            -
                <div id=loader></div> <!-- status dynamic element -->
         | 
| 6 | 
            -
            </div>
         | 
| 7 | 
            -
            <button type="button" id="dayahead-optim-basic" class="button button1">Day-ahead Optimization</button>
         | 
| 8 | 
            -
            <div class="info">
         | 
| 9 | 
            -
                <p>The day-ahead optimization button will run once, based on the values entered into the configuration page.
         | 
| 10 | 
            -
                    </br>
         | 
| 11 | 
            -
                    After a few seconds, the charts and table below should be updated to reflect the optimization plan for the next
         | 
| 12 | 
            -
                    24 hours.
         | 
| 13 | 
            -
                </p>
         | 
| 14 | 
            -
            </div>
         | 
| @@ -1,48 +0,0 @@ | |
| 1 | 
            -
            <!--  configuration list dynamically appended inside of configuration.html  -->
         | 
| 2 | 
            -
            <!--  configuration list view parameter sections  -->
         | 
| 3 | 
            -
            <div id="Local" class="section-card">
         | 
| 4 | 
            -
              <div class="section-card-header">
         | 
| 5 | 
            -
                <h4>Local</h4>
         | 
| 6 | 
            -
              </div>
         | 
| 7 | 
            -
              <div class="section-body"> </div> <!--  parameters will get generated here -->
         | 
| 8 | 
            -
            </div>
         | 
| 9 | 
            -
            <div id="System" class="section-card">
         | 
| 10 | 
            -
              <div class="section-card-header">
         | 
| 11 | 
            -
                <h4>System</h4>
         | 
| 12 | 
            -
              </div>
         | 
| 13 | 
            -
              <div class="section-body"> </div> <!--  parameters will get generated here -->
         | 
| 14 | 
            -
            </div>
         | 
| 15 | 
            -
            <div id="Tariff" class="section-card">
         | 
| 16 | 
            -
              <div class="section-card-header">
         | 
| 17 | 
            -
                <h4>Tariff</h4>
         | 
| 18 | 
            -
              </div>
         | 
| 19 | 
            -
              <div class="section-body"> </div> <!--  parameters will get generated here -->
         | 
| 20 | 
            -
            </div>
         | 
| 21 | 
            -
            <div id="Deferrable Loads" class="section-card">
         | 
| 22 | 
            -
              <div class="section-card-header">
         | 
| 23 | 
            -
                <h4>Deferrable Loads</h4>
         | 
| 24 | 
            -
                <input id="number_of_deferrable_loads" min="1" type="number">
         | 
| 25 | 
            -
                </label>
         | 
| 26 | 
            -
              </div>
         | 
| 27 | 
            -
              <div class="section-body"> </div> <!--  parameters will get generated here -->
         | 
| 28 | 
            -
            </div>
         | 
| 29 | 
            -
            <div id="Solar System (PV)" class="section-card">
         | 
| 30 | 
            -
              <div class="section-card-header">
         | 
| 31 | 
            -
                <h4>Solar System (PV)</h4>
         | 
| 32 | 
            -
                <label class="switch"> <!-- switch connected to set_use_pv  -->
         | 
| 33 | 
            -
                  <input id="set_use_pv" type="checkbox">
         | 
| 34 | 
            -
                  <span class="slider"></span>
         | 
| 35 | 
            -
                </label>
         | 
| 36 | 
            -
              </div>
         | 
| 37 | 
            -
              <div class="section-body"> </div> <!--  parameters will get generated here -->
         | 
| 38 | 
            -
            </div>
         | 
| 39 | 
            -
            <div id="Battery" class="section-card">
         | 
| 40 | 
            -
              <div class="section-card-header">
         | 
| 41 | 
            -
                <h4>Battery</h4>
         | 
| 42 | 
            -
                <label class="switch"> <!-- switch connected to set_use_battery  -->
         | 
| 43 | 
            -
                  <input id="set_use_battery" type="checkbox">
         | 
| 44 | 
            -
                  <span class="slider"></span>
         | 
| 45 | 
            -
                </label>
         | 
| 46 | 
            -
              </div>
         | 
| 47 | 
            -
              <div class="section-body"> </div> <!--  parameters will get generated here -->
         | 
| 48 | 
            -
            </div>
         |