How about using a picture card?
type: picture-entity
entity: camera.tapo_hd
camera_image: camera.tapo_hd
camera_view: live
tap_action:
action: call-service
service: camera.snapshot
service_data:
entity_id: camera.tapo_hd
filename: '/media/cameratapohdsnapshot{{ now().strftime("%Y-%m-%d-%H%M%S") }}.jpg'
name: Click For Snapshot
The above works for me. You get a live feed as the picture and clicking will take a snapshot. All I’ve done thats different from my working code is change the camera name to your cameras name so this should work.
I cant get it to work with a button either.