diff --git a/apps/cubes/cube.py b/apps/cubes/cube.py index 843309e..63ed6db 100644 --- a/apps/cubes/cube.py +++ b/apps/cubes/cube.py @@ -1,6 +1,6 @@ import json +import logging import sys -from copy import deepcopy from pathlib import Path from appdaemon.plugins.hass.hassapi import Hass @@ -8,39 +8,45 @@ from appdaemon.plugins.mqtt.mqttapi import Mqtt rc_path = (Path(__file__).resolve().parents[1] / 'room_control').as_posix() sys.path.insert(0, rc_path) - -from console import console, init_logging, deinit_logging +from console import console, setup_component_logging class AqaraCube(Hass, Mqtt): def initialize(self): - if (level := self.args.get('rich', False)): - init_logging(self, level) + setup_component_logging(self) + self.logger.setLevel(logging.DEBUG) + # self.logger = logging.getLogger() + + # if (level := self.args.get('rich', False)): + # init_logging(self, level) + + # for name, logger in logging.Logger.manager.loggerDict.items(): + # logger = logging.getLogger(name) + # if logger.hasHandlers(): + # self.log(f'[yellow]{name.ljust(25)}[/]{type(logger).__name__}', ) + # for handler in logger.handlers: + # self.log(f' {type(handler).__name__}: {type(handler.formatter).__name__}') topic = f'zigbee2mqtt/{self.args["cube"]}' self.mqtt_subscribe(topic, namespace='mqtt') self.listen_event(self.handle_event, 'MQTT_MESSAGE', topic=topic, namespace='mqtt') - self.log(f'Listening for cube events on: {topic}') + self.log(f'Listening for cube events on: [topic]{topic}[/]') self.app = self.get_app(self.args['app']) - self.log(f'Connected to other app: {self.app.name}') + self.log(f'Connected to AD app: [room]{self.app.name}[/]') def terminate(self): self.log('[bold red]Terminating[/]', level='DEBUG') - deinit_logging(self) - self.log('Success', level='DEBUG') def handle_event(self, event_name, data, cb_args): - topic_prefix, cube_name = data['topic'].split('/') - self.log(f'{event_name} on [bright_black]{topic_prefix}/[/][blue]{cube_name}[/]', data, level='DEBUG') - payload = json.loads(data['payload']) action = payload['action'] if action == '' or action == 'wakeup': return else: - self.log(json.dumps(payload, indent=2), level='DEBUG') + log_msg = f'{event_name} on [topic]{data["topic"]}[/], Action: "[yellow]{str(action)}[/]"\n' + self.log(log_msg + json.dumps(payload, indent=2), level='DEBUG') if (arg := self.args.get(action, False)): self.action_handler(action=action, description=arg) elif handler := getattr(self, f'handle_{action}', None): diff --git a/apps/cubes/cube1.yaml b/apps/cubes/cube1.yaml index edc3493..1a65fcc 100644 --- a/apps/cubes/cube1.yaml +++ b/apps/cubes/cube1.yaml @@ -1,7 +1,7 @@ cube1: module: cube class: AqaraCube - rich: INFO + rich: DEBUG cube: Cube 1 app: bedroom flip90: toggle diff --git a/apps/room_control b/apps/room_control index d8a9d3d..541475d 160000 --- a/apps/room_control +++ b/apps/room_control @@ -1 +1 @@ -Subproject commit d8a9d3d83af6510429b55d4f525e5de1c42483d4 +Subproject commit 541475d68bf071fafe797473d32191cdb16710f7 diff --git a/apps/rooms/bathroom.yaml b/apps/rooms/bathroom.yaml index 00137ff..9809029 100644 --- a/apps/rooms/bathroom.yaml +++ b/apps/rooms/bathroom.yaml @@ -1,6 +1,7 @@ bathroom: module: room_control class: RoomController + # rich: DEBUG off_duration: '00:05:00' states: - time: '05:00:00' @@ -34,6 +35,7 @@ bathroom: bathroom_button: module: button class: Button + # rich: DEBUG app: bathroom button: Bathroom Button ref_entity: light.bathroom @@ -41,6 +43,7 @@ bathroom_button: bathroom_motion: module: motion class: Motion + # rich: DEBUG app: bathroom sensor: binary_sensor.bathroom_motion_occupancy ref_entity: light.bathroom \ No newline at end of file diff --git a/apps/rooms/bedroom.yaml b/apps/rooms/bedroom.yaml index 1f85954..897e254 100644 --- a/apps/rooms/bedroom.yaml +++ b/apps/rooms/bedroom.yaml @@ -1,6 +1,7 @@ bedroom: module: room_control class: RoomController + # rich: DEBUG off_duration: '00:05:00' states: - time: 'sunrise - 03:00:00' @@ -76,6 +77,7 @@ bedroom: bedroom_buttons: module: button class: Button + # rich: DEBUG app: bedroom ref_entity: light.bedroom button: @@ -84,7 +86,8 @@ bedroom_buttons: bedroom_motion: module: motion - class: Motion + class: Motion + # rich: DEBUG app: bedroom sensor: binary_sensor.bedroom_motion_occupancy off_duration: '00:05:00' diff --git a/apps/rooms/closet.yaml b/apps/rooms/closet.yaml index b9ac54a..6087c32 100644 --- a/apps/rooms/closet.yaml +++ b/apps/rooms/closet.yaml @@ -1,6 +1,7 @@ closet: module: room_control class: RoomController + # rich: DEBUG off_duration: '00:02:00' states: - time: 'sunrise - 03:00:00' @@ -26,7 +27,8 @@ closet: closet_motion: module: motion - class: Motion + class: Motion + # rich: DEBUG app: closet sensor: binary_sensor.closet_motion_occupancy ref_entity: light.closet diff --git a/apps/rooms/kitchen.yaml b/apps/rooms/kitchen.yaml index e7bc239..6c50287 100755 --- a/apps/rooms/kitchen.yaml +++ b/apps/rooms/kitchen.yaml @@ -1,6 +1,7 @@ kitchen: module: room_control class: RoomController + # rich: DEBUG off_duration: '00:10:00' # ha_button: input_button.activate_kitchen sleep: input_boolean.sleeping @@ -39,13 +40,15 @@ kitchen: kitchen_button: module: button class: Button + # rich: DEBUG app: kitchen button: Kitchen Button ref_entity: light.kitchen kitchen_motion: module: motion - class: Motion + class: Motion + # rich: DEBUG app: kitchen sensor: binary_sensor.kitchen_motion_occupancy ref_entity: light.kitchen \ No newline at end of file diff --git a/apps/rooms/laundry.yaml b/apps/rooms/laundry.yaml new file mode 100644 index 0000000..8f7aa4b --- /dev/null +++ b/apps/rooms/laundry.yaml @@ -0,0 +1,35 @@ +laundry: + module: room_control + class: RoomController + # rich: DEBUG + off_duration: '00:02:00' + states: + - time: 'sunrise - 03:00:00' + scene: + light.laundry: + brightness: 25 + color_temp: 200 + - time: 'sunrise' + scene: + light.laundry: + brightness: 75 + color_temp: 200 + - time: '12:00:00' + scene: + light.laundry: + brightness: 175 + color_temp: 300 + - time: sunset + scene: + light.laundry: + brightness: 100 + color_temp: 400 + +laundry_motion: + module: motion + class: Motion + # rich: DEBUG + rich: DEBUG + app: laundry + sensor: binary_sensor.laundry_motion_occupancy + ref_entity: light.laundry diff --git a/apps/rooms/living_room.yaml b/apps/rooms/living_room.yaml index da15c4b..a2e24ea 100644 --- a/apps/rooms/living_room.yaml +++ b/apps/rooms/living_room.yaml @@ -1,6 +1,7 @@ living_room: module: room_control class: RoomController + # rich: DEBUG off_duration: 00:30:00 states: - time: sunrise @@ -68,19 +69,22 @@ living_room: front_door: module: door class: Door + # rich: DEBUG app: living_room door: binary_sensor.front_contact living_room_button: module: button class: Button + # rich: DEBUG app: living_room button: Living Room Button ref_entity: light.living_room living_room_motion: module: motion - class: Motion + class: Motion + # rich: DEBUG app: living_room sensor: binary_sensor.living_room_motion_occupancy ref_entity: light.living_room diff --git a/requirements.txt b/requirements.txt index d750304..2888ace 100755 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,5 @@ # pvlib --only-binary=:pvlib: # matplotlib --only-binary=:matplotlib: # jupyterlab --only-binary=:jupyterlab: -rich \ No newline at end of file +rich +pydantic \ No newline at end of file