overwrite window added
This commit is contained in:
@ -10,6 +10,7 @@ data:
|
|||||||
MQTT_BOX_TOPIC_PREFIXES: |
|
MQTT_BOX_TOPIC_PREFIXES: |
|
||||||
{
|
{
|
||||||
"high_temp": "heating/config/high_temp/",
|
"high_temp": "heating/config/high_temp/",
|
||||||
|
"overwrite_window": "heating/overwrite_window",
|
||||||
"cmd": "heating/command/"
|
"cmd": "heating/command/"
|
||||||
}
|
}
|
||||||
MQTT_CENTRAL_TOPICS: |
|
MQTT_CENTRAL_TOPICS: |
|
||||||
|
@ -66,7 +66,7 @@ try:
|
|||||||
box_topic_prefixes = json.loads(BOX_TOPIC_PREFIXES_CONFIG)
|
box_topic_prefixes = json.loads(BOX_TOPIC_PREFIXES_CONFIG)
|
||||||
|
|
||||||
# Validation: Check if the required keys are present
|
# Validation: Check if the required keys are present
|
||||||
required_keys = {'high_temp', 'cmd'}
|
required_keys = {'high_temp', 'cmd', 'overwrite_window'}
|
||||||
missing_keys = required_keys - box_topic_prefixes.keys()
|
missing_keys = required_keys - box_topic_prefixes.keys()
|
||||||
|
|
||||||
if missing_keys:
|
if missing_keys:
|
||||||
|
@ -20,6 +20,7 @@ def prepare_context(box_name, context):
|
|||||||
|
|
||||||
local_context['general_off'] = False
|
local_context['general_off'] = False
|
||||||
local_context['maintenance_mode'] = False
|
local_context['maintenance_mode'] = False
|
||||||
|
local_context['overwrite_window'] = False
|
||||||
|
|
||||||
local_context['window_state'] = {}
|
local_context['window_state'] = {}
|
||||||
for w in context['boxes'][box_name]['windows']:
|
for w in context['boxes'][box_name]['windows']:
|
||||||
@ -45,6 +46,8 @@ def process_message(box_name, topic_key, payload, context):
|
|||||||
result = process_high_temp(box_name, context, local_context, payload)
|
result = process_high_temp(box_name, context, local_context, payload)
|
||||||
case [ primary_key ] if primary_key == 'cmd':
|
case [ primary_key ] if primary_key == 'cmd':
|
||||||
result = process_cmd(box_name, context, local_context, payload)
|
result = process_cmd(box_name, context, local_context, payload)
|
||||||
|
case [ primary_key ] if primary_key == 'overwrite_window':
|
||||||
|
result = process_overwrite_window(box_name, context, local_context, payload)
|
||||||
case [ primary_key ] if primary_key == 'general_off':
|
case [ primary_key ] if primary_key == 'general_off':
|
||||||
result = process_general_off(box_name, context, local_context, payload)
|
result = process_general_off(box_name, context, local_context, payload)
|
||||||
case [ primary_key ] if primary_key == 'maintenance_mode':
|
case [ primary_key ] if primary_key == 'maintenance_mode':
|
||||||
@ -74,6 +77,7 @@ def _calculate_output_temperature(local_context):
|
|||||||
local_context['output_temperature'] = local_context['off_temperature']
|
local_context['output_temperature'] = local_context['off_temperature']
|
||||||
return
|
return
|
||||||
# an open window shuts off the heating
|
# an open window shuts off the heating
|
||||||
|
if not local_context['overwrite_window']:
|
||||||
for w in local_context['window_state'].values():
|
for w in local_context['window_state'].values():
|
||||||
if w == 'open':
|
if w == 'open':
|
||||||
local_context['output_temperature'] = local_context['off_temperature']
|
local_context['output_temperature'] = local_context['off_temperature']
|
||||||
@ -113,6 +117,11 @@ def process_cmd(box_name, context, local_context, payload):
|
|||||||
logger.error(f"Invalid cmd for {box_name} received: {payload}")
|
logger.error(f"Invalid cmd for {box_name} received: {payload}")
|
||||||
return (local_context['output_temperature'], False)
|
return (local_context['output_temperature'], False)
|
||||||
|
|
||||||
|
def process_overwrite_window(box_name, context, local_context, payload):
|
||||||
|
local_context['overwrite_window'] = (payload.lower() in ('true'))
|
||||||
|
_calculate_output_temperature(local_context)
|
||||||
|
return (local_context['output_temperature'], False)
|
||||||
|
|
||||||
def process_high_temp(box_name, context, local_context, payload):
|
def process_high_temp(box_name, context, local_context, payload):
|
||||||
local_context['high_temperature'] = payload
|
local_context['high_temperature'] = payload
|
||||||
_calculate_output_temperature(local_context)
|
_calculate_output_temperature(local_context)
|
||||||
|
Reference in New Issue
Block a user