diff --git a/env b/env index be68da3..c61b5fd 100644 --- a/env +++ b/env @@ -19,17 +19,17 @@ export BOXES='{ "box1": { "label": "living_room", "windows": [ - { "topic": "street_side_topic", "label": "street_side" }, - { "topic": "garden_side_topic", "label": "garden_side" } + { "topic": "window/living_room/street_side", "label": "street_side" }, + { "topic": "window/living_room/garden_side", "label": "garden_side" } ], "output_topic": "output/living_room" }, "box2": { "label": "kitchen", "windows": [ - { "topic": "street_side_topic", "label": "street_side" }, - { "topic": "garden_side_topic", "label": "garden_side" }, - { "topic": "garden_door_topic", "label": "garden_door" } + { "topic": "window/kitchen/street_side", "label": "street_side" }, + { "topic": "window/kitchen/garden_side", "label": "garden_side" }, + { "topic": "window/kitchen/garden_door", "label": "garden_door" } ], "output_topic": "output/kitchen" } diff --git a/src/message_processor.py b/src/message_processor.py index fc6535e..1868c8f 100644 --- a/src/message_processor.py +++ b/src/message_processor.py @@ -25,6 +25,8 @@ def prepare_context(box_name, context): for w in context['boxes'][box_name]['windows']: local_context['window_state'][w['label']] = 'closed' + local_context['mode'] = 'high' + local_context['output_temperature'] = local_context['high_temperature'] return local_context @@ -61,20 +63,28 @@ def process_message(box_name, topic_key, payload, context): logger.error(f"[{box_name}] Error processing '{topic_key}': {e}") -def process_general_off(box_name, context, local_context, payload): - return ("general off", False) - -def process_maintenance_mode(box_name, context, local_context, payload): - return ("maintenance mode", False) - def process_status(box_name, context, local_context, payload): return (f"{local_context}", True) +def process_general_off(box_name, context, local_context, payload): + local_context['general_off'] = (payload.lower() in ('true')) + return (local_context['output_temperature'], False) + +def process_maintenance_mode(box_name, context, local_context, payload): + local_context['maintenance_mode'] = (payload.lower() in ('true')) + return (local_context['output_temperature'], False) + def process_cmd(box_name, context, local_context, payload): - return (f"cmd: {payload}", False) + if payload.lower() in ('high', 'low', 'off'): + local_context['mode'] = payload.lower() + else: + logger.error(f"Invalid cmd for {box_name} received: {payload}") + return (local_context['output_temperature'], False) def process_high_temp(box_name, context, local_context, payload): - return (f"high_temp: {payload}", False) + local_context['high_temperature'] = payload + return (local_context['output_temperature'], False) def process_window(box_name, context, local_context, sub_key, payload): - return (f"window: {sub_key}, {payload}", False) + local_context['window_state'][sub_key] = 'closed' if (payload.lower() in ('true', 'close', 'closed')) else 'open' + return (local_context['output_temperature'], False)