sca075 / mqtt_vacuum_camera

Camera Integration for Home Assistant to export and render all Vacuums connected via MQTT( including Valetudo Hypfer and RE(rand256)) Maps.
Apache License 2.0
106 stars 7 forks source link

Refactoring Modules and Classes #251

Closed sca075 closed 2 months ago

sca075 commented 2 months ago

We need to reduce lines and imports the scope of this PR is to prepare the code to create a package for images handling

Summary by CodeRabbit

coderabbitai[bot] commented 2 months ago

Walkthrough

The changes involve a significant update to the mqtt_vacuum_camera component, transitioning from a Valetudo-based architecture to a more generalized MQTT Camera framework. This includes renaming classes and functions, updating import statements, and modifying configuration parameters to simplify setup. A new coordinator class has been introduced to manage data updates from MQTT topics, enhancing modularity. The version number has been incremented across multiple files to reflect these updates.

Changes

File(s) Change Summary
custom_components/mqtt_vacuum_camera/__init__.py, custom_components/mqtt_vacuum_camera/camera.py Updated version number to 2024.10.0b2, renamed components to reflect MQTT integration, and introduced MQTTVacuumCoordinator.
custom_components/mqtt_vacuum_camera/camera.py Replaced ValetudoCamera with MQTTCamera, streamlining camera handling logic and improving modularity.
custom_components/mqtt_vacuum_camera/camera.py, custom_components/mqtt_vacuum_camera/common.py Renamed functions for clarity, including get_device_info to get_vacuum_device_info, and added get_camera_device_info.
custom_components/mqtt_vacuum_camera/valetudo/MQTT/connector.py, custom_components/mqtt_vacuum_camera/valetudo/hypfer/image_handler.py Removed PNG decoding, streamlined data handling, and introduced a new command topic for vacuum commands.
custom_components/mqtt_vacuum_camera/snapshots/log_files.py, custom_components/mqtt_vacuum_camera/snapshots/snapshot.py, custom_components/mqtt_vacuum_camera/utils/auto_crop.py Simplified import statements to enhance readability and maintainability.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant MQTT Coordinator
    participant MQTTCamera
    participant Data Source

    User->>MQTT Coordinator: Request data update
    MQTT Coordinator->>Data Source: Fetch data from MQTT topics
    Data Source-->>MQTT Coordinator: Return data
    MQTT Coordinator-->>MQTTCamera: Update camera state
    MQTTCamera-->>User: Display updated camera view

Possibly related PRs


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: -- `I pushed a fix in commit , please review it.` -- `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: -- `@coderabbitai generate unit testing code for this file.` -- `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: -- `@coderabbitai generate interesting stats about this repository and render them as a table.` -- `@coderabbitai read src/utils.ts and generate unit testing code.` -- `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` -- `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
sca075 commented 2 months ago

@coderabbitai review

coderabbitai[bot] commented 2 months ago
Actions performed Review triggered. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
coderabbitai[bot] commented 2 months ago

Walkthrough

The pull request introduces several modifications across various files in the mqtt_vacuum_camera component. Key changes include enhancements to documentation through added docstrings for methods, the introduction of a new constant list for color identifiers, and the refactoring of import statements from absolute to relative paths. Additionally, some functions were streamlined for improved readability, and color handling was consolidated into dictionaries for better organization. Overall, the changes focus on improving code structure, readability, and maintainability without altering the core functionality.

Changes

Files Change Summary
custom_components/mqtt_vacuum_camera/camera.py Added docstrings to _start_up_logs and _init_clear_www_folder methods.
custom_components/mqtt_vacuum_camera/const.py Introduced a new constant COLORS with predefined color identifiers.
custom_components/mqtt_vacuum_camera/snapshots/log_files.py Changed import statements from absolute to relative paths.
custom_components/mqtt_vacuum_camera/snapshots/snapshot.py Changed import statements from absolute to relative paths.
custom_components/mqtt_vacuum_camera/utils/auto_crop.py Changed import statements from absolute to relative paths.
custom_components/mqtt_vacuum_camera/utils/colors_man.py Changed import statement to relative path; added comment to color_array.
custom_components/mqtt_vacuum_camera/utils/drawable.py Changed import statements from absolute to relative paths.
custom_components/mqtt_vacuum_camera/utils/files_operations.py Changed import statements from absolute to relative paths.
custom_components/mqtt_vacuum_camera/utils/img_data.py Changed import statements from absolute to relative paths.
custom_components/mqtt_vacuum_camera/utils/status_text.py Changed import statements from absolute to relative paths.
custom_components/mqtt_vacuum_camera/valetudo/MQTT/connector.py Changed import statements from absolute to relative paths.
custom_components/mqtt_vacuum_camera/valetudo/hypfer/image_draw.py Changed import statements from absolute to relative paths.
custom_components/mqtt_vacuum_camera/valetudo/hypfer/image_handler.py Refactored color handling in async_get_image_from_json function; changed import statements to relative paths; simplified async_map_coordinates_offset.
custom_components/mqtt_vacuum_camera/valetudo/rand256/image_handler.py Refactored color handling in get_image_from_rrm function; changed import statements to relative paths; simplified _check_robot_position function.
custom_components/mqtt_vacuum_camera/valetudo/rand256/reimg_draw.py Changed import statements to relative paths; simplified control flow in async_draw_zones function.

[!TIP]

New features Walkthrough comment now includes: - Possibly related PRs: A list of potentially related PRs to help you recall past context. - Suggested labels: CodeRabbit can now suggest labels by learning from your past PRs. You can also provide custom labeling instructions in the UI or configuration file. Notes: - Please share any feedback in the [discussion post](https://discordapp.com/channels/1134356397673414807/1282535539299323995) on our Discord. - Possibly related PRs, automatic label suggestions based on past PRs, learnings, and possibly related issues require data opt-in (enabled by default).

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
sca075 commented 2 months ago

@coderabbitai full review

coderabbitai[bot] commented 2 months ago
Actions performed Full review triggered.
sca075 commented 2 months ago

@coderabbitai review and approve

coderabbitai[bot] commented 2 months ago

@sca075: I will review and approve the changes.

Actions performed Comments resolved. --- Review triggered. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
sca075 commented 2 months ago

@coderabbitai review and approve

coderabbitai[bot] commented 2 months ago

@sca075: I will review and approve the changes.

Actions performed Comments resolved. --- Review triggered. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.