--- layout: page title: "Camera" description: "Instructions on how to integrate cameras within Home Assistant." date: 2015-11-09 08:36 sidebar: true comments: false sharing: true footer: true --- The camera component allows you to use IP cameras with Home Assistant. With a little additional work you could use [USB cameras](/blog/2016/06/23/usb-webcams-and-home-assistant/) as well. ### {% linkable_title Services %} Once loaded, the `camera` platform will expose services that can be called to perform various actions. Available services: `turn_on`, `turn_off`, `enable_motion_detection`, `disable_motion_detection`, and `snapshot`. #### {% linkable_title Service `turn_on` %} Turn on camera. Not all camera models support this service, please consult individual camera page. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | Name(s) of entities to turn on, e.g., `camera.living_room_camera`. | #### {% linkable_title Service `turn_off` %} Turn off camera. Not all camera models support this service, please consult individual camera page. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | Name(s) of entities to turn off, e.g., `camera.living_room_camera`. | #### {% linkable_title Service `enable_motion_detection` %} Enable the motion detection in a camera. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | Name(s) of entities to enable motion detection, e.g., `camera.living_room_camera`. | #### {% linkable_title Service `disable_motion_detection` %} Disable the motion detection in a camera. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | Name(s) of entities to disable motion detection, e.g., `camera.living_room_camera`. | #### {% linkable_title Service `snapshot` %} Take a snapshot from a camera. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `camera.living_room_camera`. | | `filename ` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}`{% endraw %}. | The path part of `filename` must be an entry in the `whitelist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file. For example, the following action in an automation would take a snapshot from "yourcamera" and save it to /tmp with a timestamped filename. {% raw %} ```yaml action: service: camera.snapshot data: entity_id: camera.yourcamera filename: '/tmp/yourcamera_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg' ``` {% endraw %} ### {% linkable_title Test if it works %} A simple way to test if you have set up your `camera` platform correctly, is to use service developer tool icon **Services** from the **Developer Tools**. Choose your service from the dropdown menu **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**. ```json { "entity_id": "camera.living_room_camera" } ```