Powermon Logic¶
--- config: theme: base themeVariables: lineColor: '#FFFFFF' secondaryColor: '#006100' --- classDiagram direction LR Device "1" --o "1" Port Device "1" --o "1" MqttBroker Device "1" --o "*" Command class Device{ name device_id model manufacturer commands: list[Command] port: Port mqtt_broker: MqttBroker add_command(Command) run() } class Port{ protocol: Protocol run_command(Command) send_and_receive(Command) "called from run_command" } class Protocol{ protocol_id: str command_definitions: dict[int, CommandDefinition] add_command_definitions(command_definitions_config, result_type) get_command_definition(command: str) -> CommandDefinition get_full_command(command: str) -> bytes } Port "1" --o "1" Protocol class Command{ code: str type: str override: dict outputs: list[Output] trigger: Trigger command_definition: CommandDefinition is_due() -> bool build_result(raw_response: bytes, protocol: Protocol) -> Result } Command "1" --o "*" Output Command "1" --o "1" Trigger Command "1" --o "1" CommandDefinition Command "1" --o "1" Result class CommandDefinition{ code description help_text: str result_type: ResultType reading_definitions: list[ReadingDefinition] test_responses: list regex: str get_reading_definition(lookup: str|int) -> ReadingDefinition } CommandDefinition"1" --o "*" ReadingDefinition class ReadingDefinition{ index response_type: ResponseType description: str device_class: str state_class: str icon: str unit: str options: list | dict default: int | str format_template: str reading_from_raw_response(raw_value) -> list[Reading] translate_raw_response(raw_value) "calls reading_from_raw_response" } class Result{ result_type: ResultType command_definition: CommandDefinition raw_response: bytes readings: list[Reading] decode_responses(self, responses) -> list[Reading] readings_from_response(response, reading_definition: ReadingDefinition) -> list[Reading] } class Output{ name: str process(Command, Result, mqtt_broker, device_info) multiple_from_config() -> list[Output] }
Notes: