A list of changes between each release
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) (#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 (#233)
- Update python-slugify requirement from ~=3.0.2 to ~=4.0.0 (#234)
- Update python-dateutil requirement from ~=2.8.0 to ~=2.8.1 (#230)
- Bump requests from 2.22.0 to 2.23.0 (#231)
- Refactor login logic in preparation for 2FA (#241)
- Add 2FA Support (#242) (fixes (#210))
- Re-set key_required and available variables after setup (#245)
- Perform system refresh after setup (#245)
- Fix typos (#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 <https://github.com/fronzbot/blinkpy/pull/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