From f857cea3bcd726dc6dfff9b33f598acf6bb56336 Mon Sep 17 00:00:00 2001 From: Evan Bruhn Date: Fri, 21 Sep 2018 20:00:41 +1000 Subject: [PATCH] Add Logi Circle component, camera and sensor platform documentation (#6249) * Added documentation for the Logi component, camera platform and sensor platform. * Updated Logi Circle camera and sensor platforms based on feature changes. * Renamed `logi` component domain to `logi_circle`. * Bumped HA release version to 0.79. Renamed logi brand image to logi_circle. * Fixed typo. Removed redundant definition of last_activity_time sensor. --- .../_components/camera.logi_circle.markdown | 69 ++++++++++++++++++ source/_components/logi_circle.markdown | 40 ++++++++++ .../_components/sensor.logi_circle.markdown | 43 +++++++++++ .../images/supported_brands/logi_circle.png | Bin 0 -> 10629 bytes 4 files changed, 152 insertions(+) create mode 100644 source/_components/camera.logi_circle.markdown create mode 100644 source/_components/logi_circle.markdown create mode 100644 source/_components/sensor.logi_circle.markdown create mode 100644 source/images/supported_brands/logi_circle.png diff --git a/source/_components/camera.logi_circle.markdown b/source/_components/camera.logi_circle.markdown new file mode 100644 index 00000000000..1b525400700 --- /dev/null +++ b/source/_components/camera.logi_circle.markdown @@ -0,0 +1,69 @@ +--- +layout: page +title: "Logi Circle Camera" +description: "Instructions on how to integrate your Logi Circle cameras within Home Assistant." +date: 2018-09-08 11:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: logi_circle.png +ha_category: Camera +ha_release: 0.79 +ha_iot_class: "Cloud Polling" +--- + +The `logi_circle` camera platform allows you to watch the still frames of your [Logi Circle](https://circle.logi.com/) camera's live stream in Home Assistant. + +

+You must have the [Logi Circle component](/components/logi_circle/) configured to use this camera platform. +

+ +Logi Circle cameras support the `camera.turn_on` and `camera.turn_off` services. This will set the streaming mode property of your camera accordingly, controlling whether the live stream is available and activity recordings are captured. + +## {% linkable_title Configuration %} + +Once you have enabled the [Logi Circle component](/components/logi_circle), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: logi_circle +``` + +Configuration variables: + +- **scan_interval**: (*Optional*): How frequently to query for new camera stills. Defaults to 60 seconds. + +### {% linkable_title Service `camera.logi_circle_livestream_record` %} + +Initiates a recording of the camera's live stream. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Name(s) of entities to initiate a recording for, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | +| `filename ` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}.mp4`{% endraw %}. | +| `duration` | no | Duration of recording, in seconds. + +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. + +### {% linkable_title Service `camera.logi_circle_livestream_snapshot` %} + +Take a snapshot from a camera's live stream. This differs from the generic [snapshot](/components/camera/#service-snapshot) service in that it sources the snapshot from the camera's live stream. For battery powered devices, this will wake your camera from sleep to perform this action. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Name(s) of entities to create a live stream snapshot from, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | +| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}.jpg`{% 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. + +### {% linkable_title Service `camera.logi_circle_set_config` %} + +Sets an configuration property for your camera. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Name(s) of entities to set the operation mode for, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | +| `mode` | no | Configuration property to set. Allowed values: `BATTERY_SAVING`, `LED`, `PRIVACY_MODE` | +| `value` | no | Mode value. Allowed values: `true`, `false` | \ No newline at end of file diff --git a/source/_components/logi_circle.markdown b/source/_components/logi_circle.markdown new file mode 100644 index 00000000000..5b891755da2 --- /dev/null +++ b/source/_components/logi_circle.markdown @@ -0,0 +1,40 @@ +--- +layout: page +title: "Logi Circle" +description: "Instructions on how to integrate your Logi Circle cameras within Home Assistant." +date: 2018-09-08 11:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: logi_circle.png +ha_category: Camera +ha_release: 0.79 +ha_iot_class: "Cloud Polling" +--- + +The `logi_circle` implementation allows you to integrate your [Logi Circle](https://circle.logi.com/) cameras in Home Assistant. + +## {% linkable_title Configuration %} + +To integrate cameras linked with your [Logi Circle](https://circle.logi.com/) account, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +logi_circle: + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +username: + description: The username for accessing your Logi Circle account. + required: true + type: string +password: + description: The password for accessing your Logi Circle account. + required: true + type: string +{% endconfiguration %} + +Finish its configuration by visiting the [Logi Circle camera](/components/camera.logi_circle/) or [Logi Circle sensor](/components/sensor.logi_circle/) documentation. diff --git a/source/_components/sensor.logi_circle.markdown b/source/_components/sensor.logi_circle.markdown new file mode 100644 index 00000000000..aa42c0218c8 --- /dev/null +++ b/source/_components/sensor.logi_circle.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Logi Circle Sensor" +description: "Instructions on how to integrate your Logi Circle cameras within Home Assistant." +date: 2018-09-08 11:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: logi_circle.png +ha_category: Camera +ha_release: 0.79 +ha_iot_class: "Cloud Polling" +--- + +The `logi_circle` sensor platform lets you monitor sensors connected to your [Logi Circle](https://circle.logi.com) cameras in Home Assistant. + +

+You must have the [Logi Circle component](/components/logi_circle/) configured to use this sensor platform. +

+ +## {% linkable_title Configuration %} + +Once you have enabled the [Logi Circle component](/components/logi_circle), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: logi_circle +``` + +Configuration variables: + +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. The following conditions can be monitored. If not specified, all conditions supported by your camera will be enabled. + - **battery_level**: Return the battery level percentage from the camera. + - **last_activity_time**: Return the timestamp from the last time the Logi Circle camera detected any activity. + - **privacy_mode**: Return the privacy mode status from the camera. + - **signal_strength_category**: Return the WiFi signal level from the camera. + - **signal_strength_percentage**: Return the WiFi signal percentage from the camera. + - **speaker_volume**: Return the relative speaker volume from the camera (0-100%). + - **streaming_mode**: Return the streaming mode status from the camera. + +Currently it supports all 1st and 2nd generation cameras. Cameras without an internal battery will not expose a `battery_level` sensor. \ No newline at end of file diff --git a/source/images/supported_brands/logi_circle.png b/source/images/supported_brands/logi_circle.png new file mode 100644 index 0000000000000000000000000000000000000000..61a8c72dc501ca238d62136d4798dbf44eff46b0 GIT binary patch literal 10629 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 Xxp!xM(@PF$uLSAq8Y649(NX^kK7-~u literal 0 HcmV?d00001