Hi, that feature has not been released yet.
I am trying to work on a new release very soon.
Ah that explains it haha. No problem, looking forward to it!
Perfect, thank you. I think I may have got it now.
How often should I run this?
{
"load_cost_forecast": [
0.084,
-0.006,
-0.024,
-0.025,
-0.025,
-0.02,
-0.002,
0.084,
0.272,
0.292,
0.35,
0.575,
0.679,
0.888,
0.892,
0.906,
1.262,
1.49,
1.751,
1.612,
1.477,
1.264,
1.16,
0.913,
0.882
],
"prod_price_forecast": [
0.07,
0,
-0.02,
-0.02,
-0.02,
-0.02,
0,
0.07,
0.22,
0.23,
0.28,
0.46,
0.54,
0.71,
0.71,
0.72,
1.01,
1.19,
1.4,
1.29,
1.18,
1.01,
0.93,
0.73,
0.71
],
"pv_power_forecast": [
0,
0,
0,
6,
55,
135,
220,
312,
442,
540,
606,
606,
540,
399,
263,
177,
116,
67,
18,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
6,
44,
101,
163,
220,
238,
257,
276,
270,
251,
213,
176,
144,
113,
69,
25,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"num_def_loads": 1,
"def_total_hours": [
3
],
"P_deferrable_nom": [
1300
],
"treat_def_as_semi_cont": [
1
]
}
Traceback (most recent call last):
File āā, line 198, in _run_module_as_main
File āā, line 88, in _run_code
File ā/usr/local/lib/python3.11/dist-packages/emhass/web_server.pyā, line 305, in
url_from_options = options[āhass_urlā]
~~~~~~~^^^^^^^^^^^^
KeyError: āhass_urlā
s6-supervise emhass: warning: unable to spawn ./finish: Permission denied
my addon is not starting, can someone help?
Itās only the day ahead plan so only once a day. However, you can run it as many times as you like. But there may be one period in the day that makes the most sense. When Iām using this method I run it before the first call to solcast so that itās using the solcast data from the day before. So experiment with when to run it. Once you are happy with it publish_data every 5 minutes.
Thereās a lot of volatility in tariffs in my area so I use the MPC method which I run every 60 second so the plan keeps up with the changes.
But get the dayahead working first.
Did you fill in a url for your home assistant instance?
If you run the add on on ha os you can leave this empty
Ok, thats odd. Can you turn on debug on the addon and share the log?
just started looking at this add-in and have the same āhass-urlā error as above. Running ha on vmm in synology with HAOS.
Hi David,
I changed the forecast method to naive and that worked.
Changed it back to mlforecaster and that is now working too again.
But now itās splitting loads again. It worked before, after you did the update.
Most of these latest issues should be solved with the latest version from today.
@davidusb very big release today with a whole bunch of additional functionality, which is great to see the project moving forward.
However the upgrade hasnāt been smooth for me, so make sure you take a backup before attempting the upgrade.
I havenāt gotten to the bottom of this issue, but wanted to get this out early to the community.
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
services-up: info: copying legacy longrun emhass (no readiness notification)
s6-rc: info: service legacy-services successfully started
waitress INFO Serving on http://0.0.0.0:5000
2024-01-30 08:29:01,560 - web_server - ERROR - Exception on /action/naive-mpc-optim [POST]
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 1463, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 872, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 870, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 855, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/emhass/web_server.py", line 50, in action_call
input_data_dict = set_input_data_dict(config_path, str(data_path), costfun,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/emhass/command_line.py", line 112, in set_input_data_dict
rh.prepare_data(retrieve_hass_conf['var_load'], load_negative = retrieve_hass_conf['load_negative'],
File "/usr/local/lib/python3.11/dist-packages/emhass/retrieve_hass.py", line 208, in prepare_data
self.df_final[new_var_replace_zero] = self.df_final[new_var_replace_zero].fillna(0.0)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pandas/core/frame.py", line 3767, in __getitem__
indexer = self.columns._get_indexer_strict(key, "columns")[1]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pandas/core/indexes/base.py", line 5877, in _get_indexer_strict
self._raise_if_missing(keyarr, indexer, axis_name)
File "/usr/local/lib/python3.11/dist-packages/pandas/core/indexes/base.py", line 5938, in _raise_if_missing
raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [Index(['s', 'e', 'n', 's', 'o', 'r', '.', 'a', 'p', 'f', '_', 'g', 'e', 'n',\n 'e', 'r', 'a', 't', 'i', 'o', 'n', '_', 'e', 'n', 't', 'i', 't', 'y'],\n dtype='object')] are in the [columns]"
configuration.yaml
costfun: profit
logging_level: WARNING
set_total_pv_sell: false
set_nocharge_from_grid: false
set_nodischarge_to_grid: false
sensor_power_photovoltaics: sensor.apf_generation_entity
sensor_power_load_no_var_loads: sensor.power_load_no_var_loads
number_of_deferrable_loads: 6
list_nominal_power_of_deferrable_loads:
- nominal_power_of_deferrable_loads: 1340
- nominal_power_of_deferrable_loads: 5000
- nominal_power_of_deferrable_loads: 11500
- nominal_power_of_deferrable_loads: 4000
- nominal_power_of_deferrable_loads: 600
- nominal_power_of_deferrable_loads: 11500
list_operating_hours_of_each_deferrable_load:
- operating_hours_of_each_deferrable_load: 4
- operating_hours_of_each_deferrable_load: 2
- operating_hours_of_each_deferrable_load: 0
- operating_hours_of_each_deferrable_load: 0
- operating_hours_of_each_deferrable_load: 3
- operating_hours_of_each_deferrable_load: 0
list_start_timesteps_of_each_deferrable_load:
- start_timesteps_of_each_deferrable_load: 0
- start_timesteps_of_each_deferrable_load: 0
list_end_timesteps_of_each_deferrable_load:
- end_timesteps_of_each_deferrable_load: 0
- end_timesteps_of_each_deferrable_load: 0
list_peak_hours_periods_start_hours:
- peak_hours_periods_start_hours: "02:54"
- peak_hours_periods_start_hours: "17:24"
list_peak_hours_periods_end_hours:
- peak_hours_periods_end_hours: "15:24"
- peak_hours_periods_end_hours: "20:24"
list_treat_deferrable_load_as_semi_cont:
- treat_deferrable_load_as_semi_cont: true
- treat_deferrable_load_as_semi_cont: true
- treat_deferrable_load_as_semi_cont: false
- treat_deferrable_load_as_semi_cont: false
- treat_deferrable_load_as_semi_cont: true
- treat_deferrable_load_as_semi_cont: false
list_set_deferrable_load_single_constant:
- set_deferrable_load_single_constant: false
- set_deferrable_load_single_constant: false
load_peak_hours_cost: 0.31
load_offpeak_hours_cost: 0.09
photovoltaic_production_sell_price: 0.23
maximum_power_from_grid: 20000
list_pv_module_model:
- pv_module_model: Advance_Power_API_M370
- pv_module_model: Advance_Power_API_M370
list_pv_inverter_model:
- pv_inverter_model: SolarEdge_Technologies_Ltd___SE7600A_US__208V_
- pv_inverter_model: SolarEdge_Technologies_Ltd___SE7600A_US__208V_
list_surface_tilt:
- surface_tilt: 18
- surface_tilt: 10
list_surface_azimuth:
- surface_azimuth: 90
- surface_azimuth: 270
list_modules_per_string:
- modules_per_string: 29
- modules_per_string: 21
list_strings_per_inverter:
- strings_per_inverter: 1
- strings_per_inverter: 1
set_use_battery: true
battery_nominal_energy_capacity: 43519
hass_url: empty
long_lived_token: empty
optimization_time_step: 30
historic_days_to_retrieve: 2
method_ts_round: first
lp_solver: COIN_CMD
lp_solver_path: /usr/bin/cbc
set_battery_dynamic: true
battery_dynamic_max: 0.5
battery_dynamic_min: -0.5
weight_battery_discharge: 0.1
weight_battery_charge: 0
load_forecast_method: naive
battery_discharge_power_max: 16336
battery_charge_power_max: 11000
battery_discharge_efficiency: 0.95
battery_charge_efficiency: 0.95
battery_minimum_state_of_charge: 0
battery_maximum_state_of_charge: 1
battery_target_state_of_charge: 0.1
web_ui_url: 0.0.0.0
nominal_power_of_deferrable_loads: 5500,1500,7000,3000
operating_hours_of_each_deferrable_load: 10,16,3,1
peak_hours_periods_start_hours: 02:54,17:24
peak_hours_periods_end_hours: 15:24,20:24
pv_module_model: Advance_Power_API_M370,Advance_Power_API_M370
pv_inverter_model: >-
SolarEdge_Technologies_Ltd___SE7600A_US__208V_,SolarEdge_Technologies_Ltd___SE7600A_US__208V_
surface_tilt: 10,10
surface_azimuth: 90,270
modules_per_string: 29,21
strings_per_inverter: 1,1
delta_forecast: 3
Iām also experiencing the same error using mpc, EMHASS add-on v.0.6.0
Rolling back to v0.5.4 for now.
Greetings all (just made an account on here).
I have actually seen that error while testing. (Although I believe it was a once off)
If your using EMHASS as an add-on:
Could you let me know if:
- uninstalling the add-on.
- Restarting HA
- pressing the ācheck for updatesā button a few times (in the add-on on store page)
- re installing add-on
still presents issues?
Iām finding the add-on install sometimes has issues, but this could be irrelevant.
For @markpurcell, I will test it here locally to see if I can replicate the issue gain and find out why
@markpurcell looking at your config, have you tried something like this:
costfun: profit
logging_level: "WARNING"
set_total_pv_sell: false
set_nocharge_from_grid: false
set_nodischarge_to_grid: false
sensor_power_photovoltaics: "sensor.apf_generation_entity"
sensor_power_load_no_var_loads: "sensor.power_load_no_var_loads"
number_of_deferrable_loads: 6
list_nominal_power_of_deferrable_loads:
- nominal_power_of_deferrable_loads: 1340
- nominal_power_of_deferrable_loads: 5000
- nominal_power_of_deferrable_loads: 11500
- nominal_power_of_deferrable_loads: 4000
- nominal_power_of_deferrable_loads: 600
- nominal_power_of_deferrable_loads: 11500
list_operating_hours_of_each_deferrable_load:
- operating_hours_of_each_deferrable_load: 4
- operating_hours_of_each_deferrable_load: 2
- operating_hours_of_each_deferrable_load: 0
- operating_hours_of_each_deferrable_load: 0
- operating_hours_of_each_deferrable_load: 3
- operating_hours_of_each_deferrable_load: 0
list_start_timesteps_of_each_deferrable_load:
- start_timesteps_of_each_deferrable_load: 0
- start_timesteps_of_each_deferrable_load: 0
list_end_timesteps_of_each_deferrable_load:
- end_timesteps_of_each_deferrable_load: 0
- end_timesteps_of_each_deferrable_load: 0
list_peak_hours_periods_start_hours:
- peak_hours_periods_start_hours: "02:54"
- peak_hours_periods_start_hours: "17:24"
list_peak_hours_periods_end_hours:
- peak_hours_periods_end_hours: "15:24"
- peak_hours_periods_end_hours: "20:24"
list_treat_deferrable_load_as_semi_cont:
- treat_deferrable_load_as_semi_cont: true
- treat_deferrable_load_as_semi_cont: true
- treat_deferrable_load_as_semi_cont: false
- treat_deferrable_load_as_semi_cont: false
- treat_deferrable_load_as_semi_cont: true
- treat_deferrable_load_as_semi_cont: false
list_set_deferrable_load_single_constant:
- set_deferrable_load_single_constant: false
- set_deferrable_load_single_constant: false
load_peak_hours_cost: 0.31
load_offpeak_hours_cost: 0.09
photovoltaic_production_sell_price: 0.23
maximum_power_from_grid: 20000
list_pv_module_model:
- pv_module_model: Advance_Power_API_M370
- pv_module_model: Advance_Power_API_M370
list_pv_inverter_model:
- pv_inverter_model: SolarEdge_Technologies_Ltd___SE7600A_US__208V_
- pv_inverter_model: SolarEdge_Technologies_Ltd___SE7600A_US__208V_
list_surface_tilt:
- surface_tilt: 18
- surface_tilt: 10
list_surface_azimuth:
- surface_azimuth: 90
- surface_azimuth: 270
list_modules_per_string:
- modules_per_string: 29
- modules_per_string: 21
list_strings_per_inverter:
- strings_per_inverter: 1
- strings_per_inverter: 1
set_use_battery: true
battery_nominal_energy_capacity: 43519
optimization_time_step: 30
historic_days_to_retrieve: 2
method_ts_round: "first"
lp_solver: "COIN_CMD"
lp_solver_path: /usr/bin/cbc
set_battery_dynamic: true
battery_dynamic_max: 0.5
battery_dynamic_min: -0.5
weight_battery_discharge: 0.1
weight_battery_charge: 0
load_forecast_method: "naive"
battery_discharge_power_max: 16336
battery_charge_power_max: 11000
battery_discharge_efficiency: 0.95
battery_charge_efficiency: 0.95
battery_minimum_state_of_charge: 0
battery_maximum_state_of_charge: 1
battery_target_state_of_charge: 0.1
web_ui_url: 0.0.0.0
list_nominal_power_of_deferrable_loads:
- nominal_power_of_deferrable_loads: 5500
- nominal_power_of_deferrable_loads: 1500
- nominal_power_of_deferrable_loads: 7000
- nominal_power_of_deferrable_loads: 3000
list_operating_hours_of_each_deferrable_load:
- operating_hours_of_each_deferrable_load: 10
- operating_hours_of_each_deferrable_load: 16
- operating_hours_of_each_deferrable_load: 3
- operating_hours_of_each_deferrable_load: 1
list_peak_hours_periods_start_hours:
- peak_hours_periods_start_hours: "02:54"
- peak_hours_periods_start_hours: "17:24"
list_peak_hours_periods_end_hours:
- peak_hours_periods_end_hours: "15:24"
- peak_hours_periods_end_hours: "20:24"
list_pv_module_model:
- pv_inverter_model: Advance_Power_API_M370
- pv_inverter_model: Advance_Power_API_M370
list_pv_inverter_model:
- pv_inverter_model: SolarEdge_Technologies_Ltd___SE7600A_US__208V_
- pv_inverter_model: SolarEdge_Technologies_Ltd___SE7600A_US__208V_
list_surface_tilt:
- surface_tilt: 10
- surface_tilt: 10
list_surface_azimuth:
- surface_azimuth: 90
- surface_azimuth: 270
list_modules_per_string:
- modules_per_string: 29
- modules_per_string: 21
list_strings_per_inverter:
- strings_per_inverter: 1
- strings_per_inverter: 1
delta_forecast_daily: 3
I have uninstalled and rolled back and reinstalled and the same issue presents itself.
Quoting the sensor names doesnāt seem to help the issue.
2024-01-30 16:39:48,676 - web_server - ERROR - Variable "sensor.power_load_no_var_loads" was not found. This is typically because no data could be retrieved from Home Assistant
2024-01-30 16:39:48,680 - web_server - ERROR - Exception on /action/naive-mpc-optim [POST]
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 1463, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 872, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 870, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/flask/app.py", line 855, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/emhass/web_server.py", line 50, in action_call
input_data_dict = set_input_data_dict(config_path, str(data_path), costfun,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/emhass/command_line.py", line 112, in set_input_data_dict
rh.prepare_data(retrieve_hass_conf['var_load'], load_negative = retrieve_hass_conf['load_negative'],
File "/usr/local/lib/python3.11/dist-packages/emhass/retrieve_hass.py", line 208, in prepare_data
self.df_final[new_var_replace_zero] = self.df_final[new_var_replace_zero].fillna(0.0)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pandas/core/frame.py", line 3767, in __getitem__
indexer = self.columns._get_indexer_strict(key, "columns")[1]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/pandas/core/indexes/base.py", line 5877, in _get_indexer_strict
self._raise_if_missing(keyarr, indexer, axis_name)
File "/usr/local/lib/python3.11/dist-packages/pandas/core/indexes/base.py", line 5938, in _raise_if_missing
raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: 'None of [Index([\'"\', \'s\', \'e\', \'n\', \'s\', \'o\', \'r\', \'.\', \'a\', \'p\', \'f\', \'_\', \'g\', \'e\',\n \'n\', \'e\', \'r\', \'a\', \'t\', \'i\', \'o\', \'n\', \'_\', \'e\', \'n\', \'t\', \'i\', \'t\',\n \'y\', \'"\'],\n dtype=\'object\')] are in the [columns]'
Hi Mark,
Nothing to do with the error messages, but thereās a correction to be made in your configuration:
You have 5 or 6 deferrable loads, so you need an equivalent amount of items in the section about start and end timesteps (where currently I only see 2 items each time)
something like this may help:
costfun: profit
logging_level: WARNING
set_total_pv_sell: false
set_nocharge_from_grid: false
set_nodischarge_to_grid: false
sensor_power_photovoltaics: sensor.apf_generation_entity
sensor_power_load_no_var_loads: sensor.power_load_no_var_loads
number_of_deferrable_loads: 6
list_nominal_power_of_deferrable_loads:
- nominal_power_of_deferrable_loads: 1340
- nominal_power_of_deferrable_loads: 5000
- nominal_power_of_deferrable_loads: 11500
- nominal_power_of_deferrable_loads: 4000
- nominal_power_of_deferrable_loads: 600
- nominal_power_of_deferrable_loads: 11500
list_operating_hours_of_each_deferrable_load:
- operating_hours_of_each_deferrable_load: 4
- operating_hours_of_each_deferrable_load: 2
- operating_hours_of_each_deferrable_load: 0
- operating_hours_of_each_deferrable_load: 0
- operating_hours_of_each_deferrable_load: 3
- operating_hours_of_each_deferrable_load: 0
list_start_timesteps_of_each_deferrable_load:
- start_timesteps_of_each_deferrable_load: 0
- start_timesteps_of_each_deferrable_load: 0
- start_timesteps_of_each_deferrable_load: 0
- start_timesteps_of_each_deferrable_load: 0
- start_timesteps_of_each_deferrable_load: 0
- start_timesteps_of_each_deferrable_load: 0
list_end_timesteps_of_each_deferrable_load:
- end_timesteps_of_each_deferrable_load: 0
- end_timesteps_of_each_deferrable_load: 0
- end_timesteps_of_each_deferrable_load: 0
- end_timesteps_of_each_deferrable_load: 0
- end_timesteps_of_each_deferrable_load: 0
- end_timesteps_of_each_deferrable_load: 0
list_peak_hours_periods_start_hours:
- peak_hours_periods_start_hours: "02:54"
- peak_hours_periods_start_hours: "17:24"
list_peak_hours_periods_end_hours:
- peak_hours_periods_end_hours: "15:24"
- peak_hours_periods_end_hours: "20:24"
list_treat_deferrable_load_as_semi_cont:
- treat_deferrable_load_as_semi_cont: true
- treat_deferrable_load_as_semi_cont: true
- treat_deferrable_load_as_semi_cont: false
- treat_deferrable_load_as_semi_cont: false
- treat_deferrable_load_as_semi_cont: true
- treat_deferrable_load_as_semi_cont: false
list_set_deferrable_load_single_constant:
- set_deferrable_load_single_constant: false
- set_deferrable_load_single_constant: false
- set_deferrable_load_single_constant: false
- set_deferrable_load_single_constant: false
- set_deferrable_load_single_constant: false
- set_deferrable_load_single_constant: false
load_peak_hours_cost: 0.31
load_offpeak_hours_cost: 0.09
photovoltaic_production_sell_price: 0.23
maximum_power_from_grid: 20000
list_pv_module_model:
- pv_module_model: Advance_Power_API_M370
- pv_module_model: Advance_Power_API_M370
list_pv_inverter_model:
- pv_inverter_model: SolarEdge_Technologies_Ltd___SE7600A_US__208V_
- pv_inverter_model: SolarEdge_Technologies_Ltd___SE7600A_US__208V_
list_surface_tilt:
- surface_tilt: 18
- surface_tilt: 10
list_surface_azimuth:
- surface_azimuth: 90
- surface_azimuth: 270
list_modules_per_string:
- modules_per_string: 29
- modules_per_string: 21
list_strings_per_inverter:
- strings_per_inverter: 1
- strings_per_inverter: 1
set_use_battery: true
battery_nominal_energy_capacity: 43519
optimization_time_step: 30
historic_days_to_retrieve: 2
method_ts_round: first
lp_solver: COIN_CMD
lp_solver_path: /usr/bin/cbc
set_battery_dynamic: true
battery_dynamic_max: 0.5
battery_dynamic_min: -0.5
weight_battery_discharge: 0.1
weight_battery_charge: 0
load_forecast_method: naive
battery_discharge_power_max: 16336
battery_charge_power_max: 11000
battery_discharge_efficiency: 0.95
battery_charge_efficiency: 0.95
battery_minimum_state_of_charge: 0
battery_maximum_state_of_charge: 1
battery_target_state_of_charge: 0.1
delta_forecast_daily: 3
Going to troubleshoot tonight after I have eaten and my brain works