Blink


The blink component lets you view camera images and motion events from Blink camera and security systems.

Setup

You will need your Blink login information (username, which is usually your email address, and password) to use this module.

Configuration

To enable devices linked in your Blink account, add the following to your configuration.yaml file:

# Example configuration.yaml entry
blink:
  username: YOUR_USERNAME
  password: YOUR_PASSWORD

Configuration Variables

username

(string)(Required)The username for accessing your Blink account.

password

(string)(Required)The password for accessing your Blink account.

scan_interval

(integer)(Optional)How frequently to query for new data. Defaults to 300 seconds (5 minutes).

binary_sensors

(map)(Optional)Binary sensor configuration options.

monitored_conditions

(list)(Optional)The conditions to create sensors from.

Default value: all (motion_enabled, motion_detected)

sensors

(map)(Optional)Sensor configuration options.

monitored_conditions

(list)(Optional)The conditions to create sensors from.

Default value: all (battery, temperature, wifi_strength)

Once Home Assistant starts, the blink component will create the following platforms:

  • An alarm_control_panel to arm/disarm the whole blink system (note, alarm_arm_home is not implemented and will not actually do anything, despite it being an option in the GUI).
  • A camera for each camera linked to your Blink sync module.
  • A sensor per camera for every item listed in monitored_conditions (if no items specified in your configuration.yaml, all of them will be added by default).
  • A binary_sensor for each item listed in monitored_conditions (if no items specified in your configuration.yaml, all of them will be added by default).

Since the cameras are battery operated, setting the scan_interval must be done with care so as to not drain the battery too quickly, or hammer Blink’s servers with too many API requests. The cameras can be manually updated via the trigger_camera service which will ignore the throttling caused by scan_interval. As a note, all of the camera-specific sensors are only polled when a new image is requested from the camera. This means that relying on any of these sensors to provide timely and accurate data is not recommended.

Please note that each camera reports two different states: one as sensor.blink_<camera_name>_status and the other as binary_sensor.blink_<camera_name>_motion_enabled. The motion_enabled property reports if the camera is ready to detect motion *regardless if the system is actually armed**.

Below is an example showing every possible entry:

# Example configuration.yaml entry
blink:
  username: YOUR_USERNAME
  password: YOUR_PASSWORD
  scan_interval: 300
  binary_sensors:
    monitored_conditions:
      - motion_enabled
      - motion_detected
  sensors:
    monitored_conditions:
      - battery
      - temperature
      - wifi_strength

Services

Any sequential calls to services relating to blink should have a minimum of a 5 second delay in between them to prevent the calls fro being throttled and ignored.

blink.blink_update

Force a refresh of the Blink system.

blink.trigger_camera

Trigger a camera to take a new still image.

Service Data Attribute Optional Description
name no Name of camera to take new image with.

blink.save_video

Save the last recorded video of a camera to a local file. Note that in most cases, Home Assistant will need to know that the directory is writable via the whitelist_external_dirs in your configuration.yaml file (see example below).

Service Data Attribute Optional Description
name no Name of camera containing video to save.
filename no Location of save file.
homeassistant:
    ...
    whitelist_external_dirs:
        - '/tmp'
        - '/path/to/whitelist'

Other Services

In addition to the services mentioned above, there are generic camera and alarm_control_panel services available for use as well. The camera.enable_motion_detection and camera.disable_motion_detection services allow for individual cameras to be enabled and disabled, respectively, within the Blink system. The alarm_control_panel.alarm_arm_away and alarm_control_panel.alarm_disarm services allow for the whole system to be armed and disarmed, respectively.

Examples

The following are some examples showing how to correctly make service calls using Blink:

Snap Picture and Save Locally

This example script shows how to take a picture with your camera, named My Camera in your Blink app (this is not necessarily the friendly name in home-assistant). After snapping a picture, the image will then be saved to a local directory called /tmp/my_image.jpg. Note that this example makes use of services found in the camera component

alias: Blink Snap Picture
sequence:
    - service: blink.trigger_camera
      data:
          name: "My Camera"
    - delay: 00:00:05  
    - service: blink.blink_update
    - service: camera.snapshot
      data:
          entity_id: camera.blink_my_camera
          filename: /tmp/my_image.jpg

Arm Blink When Away

This example automation will arm your blink sync module to detect motion on any of your blink cameras that have motion detection enabled. By default, Blink enables motion detection on all cameras so, unless you’ve changed anything in your app, you’re all set. If you want to manually enable motion detection for individual cameras, you can utilize the appropriate camera service but pelase note that motion will only be captured if the sync module is armed.

Here, this example assumes your blink module is named My Sync Module and that you have device trackers set up for presence detection.

- id: arm_blink_when_away
  alias: Arm Blink When Away
  trigger:
      platform: state
      entity_id: group.all_devices
      to: 'not_home'
  action:
      service: alarm_control_panel.alarm_arm_away
      entity_id: alarm_control_panel.blink_my_sync_module 

Disarm Blink When Home

Similar to the previous example, this automation will disarm blink when arriving home.

- id: disarm_blink_when_home
  alias: Disarm Blink When Home
  trigger:
      platform: state
      entity_id: group.all_devices
      to: 'home'
  action:
      service: alarm_control_panel.alarm_disarm
      entity_id: alarm_control_panel.blink_my_sync_module 

Save Video Locally When Motion Detected

When motion is detected, you can use the Blink Home-Assistant integration to save the last recorded video locally, rather than relying on Blink’s servers to save your data.

Again, this example assumes your camera’s name (in the blink app) is My Camera and your sync module name is My Sync Module. The file will be saved to /tmp/videos/blink_video_{YYYMMDD_HHmmSS}.mp4 where {YYYYMMDD_HHmmSS} will be a timestamp create via the use of templating.

- id: save_blink_video_on_motion
  alias: Save Blink Video on Motion
  trigger:
      platform: state
      entity_id: binary_sensor.blink_my_camera_motion_detected
      to: 'on'
  action:
      service: blink.save_video
      data:
          name: "My Camera"
          filename: "/tmp/videos/blink_video_{{ now().strftime('%Y%m%d_%H%M%S') }}.mp4"