GithubHelp home page GithubHelp logo

vivier / blinkpy Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fronzbot/blinkpy

0.0 1.0 0.0 1.89 MB

A Python library for the Blink Camera system

License: MIT License

Python 98.95% Dockerfile 0.27% Shell 0.78%

blinkpy's Introduction

blinkpy Build Status Coverage Status Docs PyPi Version Python Version

A Python library for the Blink Camera system

Like the library? Consider buying me a cup of coffee!

Donate

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

If you'd like to contribute to this library, please read the contributing instructions.

For more information on how to use this library, please read the docs.

Purpose

This library was built with the intention of allowing easy communication with Blink camera systems, specifically to support the Blink component in homeassistant.

Quick Start

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. All of your sync modules are stored within the Blink.sync dictionary and can be accessed using the name of the sync module as the key (this is the name of your sync module in the Blink App).

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.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.cameras['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.cameras['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')

You can also use this library to download all videos from the server. In order to do this, you must specify a path. You may also specifiy a how far back in time to go to retrieve videos via the since= variable (a simple string such as "2017/09/21" is sufficient), as well as how many pages to traverse via the page= variable. Note that by default, the library will search the first ten pages which is sufficient in most use cases. Additionally, you can specidy one or more cameras via the camera= property. This can be a single string indicating the name of the camera, or a list of camera names. By default, it is set to the string 'all' to grab videos from all cameras.

Example usage, which downloads all videos recorded since July 4th, 2018 at 9:34am to the /home/blink directory:

blink = blinkpy.Blink(username="YOUR USER NAME", password="YOUR PASSWORD")
blink.start()
blink.download_videos('/home/blink', since='2018/07/04 09:34')

blinkpy's People

Contributors

3ch01c avatar b10m avatar fronzbot avatar md-reddevil avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.