A list of changes between each release
See release notes: (0.23.0)
See release notes: (0.22.7)
Bugfixes
- Test for None type in poll_local_storage_manifest (@mkmer #859)
- Update image after snap by (@mkmer #861)
- fix missing ':' before port number in rtsps adress (@Rosi2143 #863)
- New temperature location (@mkmer #867)
Other changes
- Add properties for version information (@mkmer #854)
- Complete header match (@mkmer #856)
- Bump ruff from 0.1.11 to 0.1.13 (@dependabot #858)
- Add option to change agent from Auth() init (@mkmer #860)
- Add notification key to login (@mkmer #862)
- Bump ruff from 0.1.13 to 0.1.14 (@dependabot #868)
Warning: This release removes support for Python 3.8 and adds Python 3.12 support.
Bugfixes
- Add new keys for wifi, lfr, and battery (@mkmer #835)
- Battery level (@mkmer #837)
- Address not awaited warning (@mkmer #838)
- Catch ContentTypeError in 2FA (@mkmer #843)
- Handle empty put response in wait_command (@mkmer #847)
- Change default user agent to fix API calls (@gingerm0nkey #848)
- Android for new user agent (@mkmer #850)
Other changes
- Remove Py3.8, add 3.12 (@fronzbot #839)
- Deprecate py38 (@fronzbot #840)
- Add/extract firmware version (@mkmer #842)
- Additional logging, fix blinksync json (@mkmer #844)
- Log text response (@mkmer #845)
- Add tests for logging (@mkmer #846)
- Bump ruff to 0.1.11
- Bump black to 23.12.1
- Bump coverage to 7.4.0
- Bump pytest to 7.4.4
Bugfixes
- Allow kwargs to throttled functions, await sleep in throttle (@mkmer #823)
- add missing entry in type_key_map (@Rosi2143 #813)
** Other Changes **
- Delete ReadTheDocs
- python formatter
- docstring format changes
- Bump ruff to 0.1.8
- Bump black to 23.12.0
- Bump pygments to 2.17.2
Bugfixes
- Check for none and empty dict (fix of home-assistant/core#103312) (@mkmer #800)
** Other Changes **
- Bump ruff to 0.1.3
- Bump pytest to 7.4.3
- Bump black to 23.10.1
Same as 0.22.1 (pypi upload issue)
Bugfixes
- Fix night vision toggling for older devices (owl) (@cocasema #756)
- Add missing await to blinkapp.py (@mkmer #768)
- Add check command to POST commands (@mkmer #772)
- Fix blinkapp session call (@mkmer #783)
Other Changes
- Cleanup readme, add breaking change warning
- Migrate to puproject.toml + ruff
- Bump ruff to 0.0.292
- Bump black to 23.9.1
- Bump coverage to 7.3.2
- Bump build to 1.0.3
- Bump pytest to 7.4.2
- Bump pytest-timeout to 2.2.0
- Fix 'stale' github action
Bugfixes
-None
New Features
- Asyncio conversion (@mkmer #723)
Other Changes
- Various fixes to codebase to support asyncio
- Upgrade flake8 to 6.1.0
- Upgrade pylint to 2.17.5
- Upgrade pytest to 7.4.0
- Upgrade black to 23.7.0
- Upgrade pytest-cov to 4.1.0
- Upgrade pygments to 2.16.1
- Upgrade coverage to 7.3.0
Bugfixes
- None
New Features
- Add get_videos_metadata function (@rhhayward #685)
- Add night vision toggling support (@jrhunger #717)
- Add doorbell arming functionality (@mkmer #719)
Other Changes
- Upgrade pylint to 2.17.4
- Upgrade coverage to 7.2.5
- Upgrade pygments to 2.15.1
- Upgrade pytest to 7.3.1
- Upgrade pytest-sugar to 0.9.7
- Upgrade black to 23.3.0
Bugfixes
- Misc doorbell fixes (@jeffothy #623)
New Features
- Add support for local storage API (@perdue #650)
Other Changes
- Deprecate py3.7 (@fronzbot #644)
- Upgrade pytest to 7.20
- Upgrade pylint to 2.15.10
- Upgrade pre-commit to 3.0.2
- Upgrade black to 22.12.0
- Upgrade flake8 to 6.0.0
- Upgrade coverage to 7.1.0
- Upgrade pydocstyle to 6.3.0
- Upgrade flake8-docstrings to 1.7.0
- Upgrade pygments to 2.14.0
- Upgrade pytest-sugar to 0.9.6
Bugfixes
- Fix doorbell mapping (@uvjim #599)
- Fix the errors for the Blink doorbell camera (@ruby-dev #603)
Other Changes
- dev version bump (@fronzbot #593)
- Fix typo in README regarding disarm syntax (@dashrb #597)
Bugfixes
- Fix getting doorbell details (@uvjim #584)
- Potential fix for mixed camera usage (@fronzbot #590)
Other Changes
- doc update (@dwaltsch #579)
- Test re-factoring (@fronzbot #591)
- Bump pylint to 2.14.3
- Bump coverage to 6.41
- Bump black to 22.3.0
Bugfixes:
- Debug log in prase download method fix (@tieum #540)
- Fix issue with malformed thumbnails (@fronzbot #550)
- Fully support new thumbnail API (@gdoermann #552)
New Features:
- Support for arm/disarm of Blink Mini cameras (@mstratford #546)
- Add product_type to BlinkCamera class to report type of camera (@fronzbot #553)
- Remove python 3.6 support, add python 3.10 support (@fronzbot #554)
Other:
- Make code that determines need for unique class (Mini + Doorbells) generic (@fronzbot #553)
- Bump pre-commit to 2.17.0
- Bump pytest-timeout to 2.1.0
- Bump pygments to 2.11.2
- Bump black to 22.1.0
- Bump coverage to 6.3.2
- Bump pytest to 7.1.1
- Bump restructuredtext-lint to 1.4.0
Bugfixes:
- None
New Features:
- Support for Blink Doorbell (@magicalyak #526)
Other:
- Bump pytest-cov to 3.0.0
- Bump pre-commit to 2.15.0
- Bump pytest to 6.2.5
- Bump pylint to 2.10.2
- Bump pygments to 2.10.0
- Bump flake8-docstrings to 1.6.0
- Bump pydocstyle to 6.0.0
- Bump coverage to 5.5
- Add delay parameter to Blink.download_videos method in order to throttle API during video retrieval (@fronzbot #437)
- Bump pylint to 2.6.2
Bugfixes:
- Fix video downloading bug (@fronzbot #424)
- Fix repeated authorization email bug (@fronzbot #432 and @fronzbot #428)
New Features:
- Add logout method (@fronzbot #429)
- Add camera record method (@fronzbot #430)
Other:
- Add debug script to main repo to help with general debug
- Upgrade login endpoint from v4 to v5
- Add python 3.9 support
- Bump coverage to 5.4
- Bump pytest to 6.2.2
- Bump pytest-cov to 2.11.1
- Bump pygments to 2.8.0
- Bump pre-commit to 2.10.1
- Bump restructuredtext-lint to 1.3.2
Bugfixes:
- Updated liveview endpoint (@fronzbot #389)
- Fixed mini thumbnail not updating (@fronzbot #388)
- Add exception catch to prevent NoneType error on refresh, added test to check behavior as well (@fronzbot #401) - Unrelated: had to add two force methods to refresh for testing purposes. Should not change normal usage.
- Fix malformed stream url (@fronzbot #395)
All:
- Moved testtools to requirements_test.txt (@fronzbot #387)
- Bumped pytest to 6.1.1
- Bumped flake8 to 3.8.4
- Fixed README spelling (@rohitsud #381)
- Bumped pygments to 2.7.1
- Bumped coverage to 5.3
- Bumped pydocstyle to 5.1.1
- Bumped pre-commit to 2.7.1
- Bumped pylint to 2.6.0
- Bumped pytest-cov to 2.10.1
- Add user-agent to all headers
- Add user-agent to header at login
- Remove extra data parameters at login (not-needed)
- Bump pytest to 6.0.1
- Unpin requirements, set minimum version instead
- Bump coverage to 5.2.1
- Bump pytest to 6.0.0
Breaking Changes:
- Add arm property to camera, deprecate motion enable method (@fronzbot #273)
- Complete refactoring of auth logic (breaks all pre-0.16.0 setups!) (@fronzbot #261)
New Features:
- Add is_errored property to Auth class (@fronzbot #275)
- Add new endpoint to get user infor (@fronzbot #280)
- Add get_liveview command to camera module (@fronzbot #289)
- Add blink Mini Camera support (@fronzbot #290)
- Add option to skip homescreen check (@fronzbot #305)
- Add different timeout for video and image retrieval (@fronzbot #323)
- Modifiy session to use HTTPAdapter and handle retries (@fronzbot #324)
- Add retry option overrides (@fronzbot #339)
All changes:
Please see the change list in the (Release Notes)
- Bugfix: remove "Host" from auth header (@fronzbot #330)
Breaking Changes:
- Removed support for Python 3.5 (3.6 is now the minimum supported version)
- Deprecated
Blink.login()
method. Please only use theBlink.start()
method for logging in.
New Functions
- Add
device_id
override when logging in (for debug and to differentiate applications) (@fronzbot #245)
This can be used by instantiating the Blink class with the device_id
parameter.
All Changes:
- Fix setup.py use of internal pip structure (@fronzbot #233)
- Update python-slugify requirement from ~=3.0.2 to ~=4.0.0 (@fronzbot #234)
- Update python-dateutil requirement from ~=2.8.0 to ~=2.8.1 (@fronzbot #230)
- Bump requests from 2.22.0 to 2.23.0 (@fronzbot #231)
- Refactor login logic in preparation for 2FA (@fronzbot #241)
- Add 2FA Support (@fronzbot #242) (fixes (#210))
- Re-set key_required and available variables after setup (@fronzbot #245)
- Perform system refresh after setup (@fronzbot #245)
- Fix typos (@fronzbot #244)
- Add time check on recorded videos before determining motion
- Fix motion detection variable suck to
True
- Add ability to load credentials from a json file
- Only allow
motion_detected
variable to trigger if system was armed - Log response message from server if not attempting a re-authorization
- Update dependencies
- Dockerize (@3ch01c #198)
- Fix timeout problems blocking blinkpy startup
- Updated login urls using
rest-region
subdomain - Removed deprecated thumbanil recovery from homescreen
Breaking Changes:
BlinkCamera.battery
no longer reports a percentage, instead it returns a string representing the state of the battery.- Previous logic for calculating percentage was incorrect
- raw battery voltage can be accessed via
BlinkCamera.battery_voltage
Bug Fixes:
- Updated video endpoint (fixes broken motion detection)
- Removed throttling from critical api methods which prevented proper operation of multi-sync unit setups
- Slugify downloaded video names to allow for OS interoperability
- Added one minute offset (
Blink.motion_interval
) when checking for recent motion to allow time for events to propagate to server prior to refresh call.
Everything else:
- Changed all urls to use
rest-region
rather thanrest.region
. Ability to revert to old method is enabled by instantiatingBlink()
with thelegacy_subdomain
variable set toTrue
. - Added debug mode to
blinkpy.download_videos
routine to simply print the videos prepped for download, rather than actually saving them. - Use UTC for time conversions, rather than local timezone
- Remove throttle decorator from network status request
Breaking change:
Wifi status reported in dBm again, instead of bars (which is great). Also, the old get_camera_info
method has changed and requires a camera_id
parameter.
- Adds throttle decorator
- Decorate following functions with 4s throttle (call method with
force=True
to override): - request_network_status
- request_syncmodule
- request_system_arm
- request_system_disarm
- request_sync_events
- request_new_image
- request_new_video
- request_video_count
- request_cameras
- request_camera_info
- request_camera_sensors
- request_motion_detection_enable
- request_motion_detection_disable
- Decorate following functions with 4s throttle (call method with
- Use the updated homescreen api endpoint to retrieve camera information. The old method to retrieve all cameras at once seems to not exist, and this was the only solution I could figure out and confirm to work.
- Adds throttle decorator to refresh function to prevent too many frequent calls with
force_cache
flag set toTrue
. This additional throttle can be overridden with theforce=True
argument passed to the refresh function. - Add ability to cycle through login api endpoints to anticipate future endpoint deprecation
- Remove logging improvements since they were incompatible with home-assistant logging
- Fix video api endpoint, re-enables motion detection
- Add improved logging capability
- Add download video method
- Prevent blinkpy from failing at setup due to api error
- Hotfix to prevent platform from stalling due to API change
- Motion detection and video recovery broken until new API endpoint discovered
- Fixed incorrect backup login url
- Added calibrated temperature property for cameras
- Added support for multiple sync modules
- Use networks endpoint rather than homecreen to retrieve arm/disarm status (@md-reddevil)
- Fix incorrect command status endpoint (@md-reddevil)
- Add extra debug logging
- Remove error prior to re-authorization (only log error when re-auth failed)
- Set minimum required version of the requests library to 2.20.0 due to vulnerability in earlier releases.
- When multiple networks detected, changed log level to
warning
fromerror
- Fix re-authorization bug (fixes #101)
- Log an error if saving video that doesn't exist
- Moved all API calls to own module for easier maintainability
- Added network ids to sync module and cameras to allow for multi-network use
- Removed dependency on video existance prior to camera setup (fixes #93)
- Camera wifi_strength now reported in wifi "bars" rather than dBm due to API endpoint change
- Use homescreen thumbnail as fallback in case it's not in the camera endpoint
- Removed "armed" and "status" attributes from camera (status of camera only reported by "motion_enabled" now)
- Added serial number attributes to sync module and cameras
- Check network_id from login response and verify that network is onboarded (fixes #90)
- Check if retrieved clip is "None" prior to storing in cache
- Complete code refactoring to enable future multi-sync module support
- Add image and video caching to the cameras
- Add internal throttling of system refresh
- Use session for http requests
Breaking change:
- Cameras now accessed through sync module Blink.sync.cameras
- Update requirements_test.txt
- Update linter versions
- Fix pylint warnings - Remove object from class declarations - Remove useless returns from functions
- Fix pylint errors - change if comparison to fix (consider-using-in) - Disabled no else-if-return check
- Fix useless-import-alias
- Disable no-else-return
- Fix motion detection - Use an array of recent video clips to determine if motion has been detected. - Reset the value every system refresh
- Added support for battery voltage level (fixes #64)
- Added motion detection per camera
- Added fully accessible camera configuration dict
- Added celcius property to camera (fixes #60)
- Fixed pip 10 import issue during setup (@fronzbot)
- Fixed style errors for bumped pydocstring and pylint versions
- Changed Blink.cameras dictionary to be case-insensitive (fixes #35)
- Changed api endpoint for video extraction (fixes #35 and #41)
- Removed last_motion() function from Blink class
- Refactored code for better organization
- Moved some request calls out of @property methods (enables future CLI support)
- Renamed get_summary() method to summary and changed to @property
- Added ability to download most recent video clip
- Improved camera arm/disarm handling (@b10m)
- Added authentication to
login()
function and deprecatedsetup_system()
in favor ofstart()
- Added
attributes
dictionary to camera object
- Removed redundent properties that only called hidden variables
- Revised request wrapper function to be more intelligent
- Added tests to ensure exceptions are caught and handled (100% coverage!)
- Added auto-reauthorization (token refresh) when a request fails due to an expired token (@tySwift93)
- Added battery level string to reduce confusion with the way Blink reports battery level as integer from 0 to 3
- Fixed packaging mishap, same as 0.5.0 otherwise
- Fixed region handling problem
- Added rest.piri subdomain as a backup if region can't be found
- Improved the file writing function
- Large test coverage increase
- Fixed bug where region id was not being set in the header
- Changed to bdist_wheel release
- Fixed inability to retrieve motion data due to Key Error
- Fixed refresh bug (0.3.1 did not actually fix the problem)
- Image refresh routine added (per camera)
- Dictionary of thumbnails per camera added
- Improved test coverage
- Fixed refresh bug (Key Error)
- Added device id to camera lookup table
- Added image to file method
- Initial release of blinkpy