🆕 Advanced Snapshot

Hello everyone! :wave:

I’d like to introduce you to my new HACS integration, Advanced Snapshot. :camera_flash: This integration allows you to automatically create snapshots from cameras, add personalized text (e.g., the value of an entity), and even crop the snapshot before saving. It offers enhanced flexibility for using camera images in Home Assistant.

:sparkles: Features:

• :camera: Capture snapshots from any camera in Home Assistant.

• :memo: Add custom text (aligned left, center, or right).

• :art: Customizable overlay bar (position, color, height, etc.).

• :scissors: Crop snapshots before saving.

• :floppy_disk: Save snapshots to a desired location, including a backup option.

:gear: Installation & Configuration

This integration is not yet an official HACS integration.

However, you can install it manually via HACS or access it directly via the following link:

:link: Phil7989/advanced_snapshot: Advanced Snapshot for Home Assistant

After installation, you can add the integration under Settings → Integrations by searching for Advanced Snapshot.

More details on the available parameters can be found in the GitHub ReadMe.

:bulb: Feedback & Contributions

I’d love to hear your feedback! :speech_balloon: If you have feature requests or bug reports, feel free to open an issue on GitHub or submit a pull request.

:pray: Thank you, and enjoy using Advanced Snapshot!

Best regards,

Philipp :rocket:

10 Likes

Hey thanks for creating this integration. I was looking for something like this. Can I use this to capture a snapshot from my doorway camera every time the doorbell is pressed and then display the snapshot image in the home assistant dashboard as a persistent notification inside a card?

1 Like

I use it on all my outdoor cameras. Great integration! Recommended.

Yes, this should work. You can create an automation in Home Assistant to capture a snapshot when the doorbell is pressed and display it in the dashboard.

I’m not sure if the image will display in a persistent notification, but I use it successfully in iOS notifications.

1 Like

Suggestion for the documentation:
Current: Go to Configuration → Integrations and click on “add integration”. Then search for “advanced_snapshot”.
Suggested change: Go to Settings → Devices and Services and click on “+ ADD INTEGRATION”. Then search for “advanced_snapshot”.

Now I still have to figure out of to get full quality snapshots from Ubiquiti cameras. camera_entity_id: camera.[cameraname]_high_resolution_channel unfortunately have the full resolution but are compressed to the point of being useless for the small area I’m cropping.

Thanks for the heads-up about the documentation! I’ll update it.

Regarding the Ubiquiti cameras:

I was able to change my camera’s resolution from the default to 3840x2160 (so full 4K). When you trigger a snapshot via Developer Tools, you can check the actual resolution of the image being returned. That’s super helpful because if the snapshot is already downsampled or heavily compressed, cropping it will just make the quality even worse.

Thank you!

Is it possible to change the backup location to the media directory? Either I’m doing something wrong or it doesn’t work.

I think you can only save on the Home Assistant. Where do you want to save?

after installation I only have the record_video action, but missing the take_snapshot one.

Also I notice on the addons page it tells “Failed to unload”

Can you set the logger level to debug in your configuration.yaml?

This helps to get more detailed logs from the custom components.

Please add the following lines (if not already present):

logger:
default: warning
logs:
custom_components.advanced_snapshot: debug

After restarting Home Assistant, please check the logs and share any relevant entries here.

Logger: homeassistant.config_entries
Source: config_entries.py:965
First occurred: 14:58:05 (1 occurrences)
Last logged: 14:58:05

Error unloading entry advanced_snapshot for advanced_snapshot
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 965, in async_unload
    result = await component.async_unload_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/advanced_snapshot/__init__.py", line 95, in async_unload_entry
    hass.services.asnyc_remove(DOMAIN, "handle_record_video")
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'ServiceRegistry' object has no attribute 'asnyc_remove'. Did you mean: 'async_remove'?

I noticed it might happen if i click on Configure to verify the path for the snapshots

Check out 2025.4b and post more logs if it doesn’t work.

Just updated, I will let you know as soon as i have tested a bit. Thank you!

for example, in the Media Sources

You can add www/snapshot to Media sources.
So i think thats your solution

Very cool! I just found this searching for a solution to create timlapses. I haven’t played with this yet, but imagine I could make an automation that makes a snap a couple times a day. Goal being to timelapse our baby chickens grow up.

Would it make sense to be able to set a schedule within this integration (potential feature), or better to handle that manually?

Cheers. :call_me_hand:t3:

Yes, that’s definitely possible using automations! You can set up a automation to take snapshots a couple of times per day. Just keep in mind that this can generate a lot of data over time.

Cheers

1 Like

Thanks. I’m kicking myself for returning an extra camera I’d ordered. I’ll have to rig something up. They grow so fast!

Is it possible to save the snapshot to image entity rather than a file?
Thanks
BTW Great work

Currently, the advanced_snapshot integration supports saving snapshots to a file, but not directly to an image entity. Home Assistant’s image entities (like those from MQTT or generic camera integrations) typically manage their own data sources and can’t be directly written to from scripts or automations.

However, there are some workarounds:
1. Save the snapshot to a file as usual.
2. Use an MQTT image entity, and publish the image via MQTT either as a base64-encoded payload or as a URL if the image is accessible over HTTP.
3. Alternatively, use the local_file camera integration, which always displays the most recently updated image at a given file path.

In the web interface, I’m using the custom:gallery-card to display the snapshots, so saving them as files works well with that setup.

Let me know if you’d like help configuring one of these options — and thanks again for the great work on the integration!