Skip to main content

A Blink camera Python library running on Python 3.

Project description

blinkpy Build Status Coverage Status Docs PyPi Version Python Version

A Python library for the Blink Camera system Only compatible with Python 3+

Disclaimer:

Published under the MIT license - See LICENSE file for more details.

“Blink Wire-Free HS Home Monitoring & Alert Systems” is a trademark owned by Immedia Inc., see www.blinkforhome.com for more information. I am in no way affiliated with Blink, nor Immedia Inc.

Original protocol hacking by MattTW : https://github.com/MattTW/BlinkMonitorProtocol

API calls faster than 60 seconds is not recommended as it can overwhelm Blink’s servers. Please use this module responsibly.

Installation

pip3 install blinkpy

Installing Development Version

To install the current development version, perform the following steps. Note that the following will create a blinkpy directory in your home area:

$ cd ~
$ git clone https://github.com/fronzbot/blinkpy.git
$ cd blinkpy
$ rm -rf build dist
$ python3 setup.py bdist_wheel
$ pip3 install --upgrade dist/*.whl

Purpose

This library was built with the intention of allowing easy communication with Blink camera systems, specifically so I can add a module into homeassistant https://home-assistant.io

Usage

The simplest way to use this package from a terminal is to call Blink.start() which will prompt for your Blink username and password and then log you in. Alternatively, you can instantiate the Blink class with a username and password, and call Blink.start() to login and setup without prompt, as shown below. In addition, http requests are throttled internally via use of the Blink.refresh_rate variable, which can be set at initialization and defaults to 30 seconds.

from blinkpy import blinkpy
blink = blinkpy.Blink(username='YOUR USER NAME', password='YOUR PASSWORD', refresh_rate=30)
blink.start()

If you would like to log in without setting up the cameras or system, you can simply call the Blink.login() function which will prompt for a username and password and then authenticate with the server. This is useful if you want to avoid use of the start() function which simply acts as a wrapper for more targeted API methods.

Cameras are instantiated as individual BlinkCamera classes within a BlinkSyncModule instance. Note: currently the API only supports one sync module, but multiple sync modules are planned to be supported in the future.

The below code will display cameras and their available attributes:

from blinkpy import blinkpy

blink = blinkpy.Blink(username='YOUR USER NAME', password='YOUR PASSWORD')
blink.start()

for name, camera in blink.sync.cameras.items():
    print(name)                   # Name of the camera
    print(camera.attributes)      # Print available attributes of camera

The most recent images and videos can be accessed as a bytes-object via internal variables. These can be updated with calls to Blink.refresh() but will only make a request if motion has been detected or other changes have been found. This can be overridden with the force_cache flag, but this should be used for debugging only since it overrides the internal request throttling.

camera = blink.sync.camera['SOME CAMERA NAME']
blink.refresh(force_cache=True)  # force a cache update USE WITH CAUTION
camera.image_from_cache.raw  # bytes-like image object (jpg)
camera.video_from_cache.raw  # bytes-like video object (mp4)

The blinkpy api also allows for saving images and videos to a file and snapping a new picture from the camera remotely:

camera = blink.sync.camera['SOME CAMERA NAME']
camera.snap_picture()       # Take a new picture with the camera
blink.refresh()             # Get new information from server
camera.image_to_file('/local/path/for/image.jpg')
camera.video_to_file('/local/path/for/video.mp4')

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
blinkpy-0.10.2-py3-none-any.whl (14.1 kB) Copy SHA256 hash SHA256 Wheel py3

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page