* Add zigpy-zigate support
* update requirements
* fix
* update
* fix flake8
* update requirements
* fix
* update
* add test to make codecov happy
* fix flake8
* Try to add test
* add test
* remove unneeded test
* exclude registries.py from coverage
exclude homeassistant/components/zha/core/registries.py since untestable
* Fix merge: black formatting and flake8.
* Added Plugwise component
* pylint fixes
* Additional pylints (local tox not noticing these)
* Changes according to review
* CI flake8 correction
* Applying Black
* Review changes, without exception and schema
* Review changes, exception improvement
* Review changes, exception correctio and schema cleanup
* Further cleaning as per review
* Removed blank line
* Add debugging to API init
* Add debugging to API init without dot
* Convert sensor setup to async
* Improve sensor unique ids
* Save some indent levels, use f-string formatting
* Require getmac in tests
* Fix RouterData init in tests
* Make discovery_info optional in async_setup_platform signature
* Fix Ecobee HVAC action + available presets
* Update python-ecobee-api to 0.0.21
* Include proper operation list.
* Allows pass on preset to set_climate_hold
* Remove aux heat as a preset
* Fix test
* pylutron PyPI update
We've been working with the original maintainer of pylutron, and they've published an update to PyPI to support a couple different things: homeowner keypads, main repeater keypads
* added requirements
* Support multiple Elk instances
* Allow more than one Elk M1 alarm system to be integrated into a single hass instance.
* Introduces new "devices" schema at the top level, each of which has
the prior configuration schema.
* Requires new version of elkm1, 0.7.14, that gwww and I just updated (thanks Glen!)
QUESTION: Should the "devices" section be optional to avoid breaking
old configuration files? I chose not to do that for simplicity and
because I was following the doorbird code which requires the "devices"
section for all configurations even with only one device.
* Fixed a bunch of hound-raised issues
Fixed issues raised by hound -- there was clearly
a tool I was supposed to run to get those warnings
before submitting the PR. Sorry!
Updated REQUIREMENTS.
* Fixed whitespace and line-length mistakes
Also fixed unused prefix local variable lint warning.
* Fixed missing blank line
* Fixed more lint warnings.
Not sure if I missed these on the first pass or if the linter stopped
after a certain number of warnings or something else.
Switched logging to use %d and %s instead of string concatenation (per
lint request and because I imagine it migth be better performing
in some (oldish, I presume) implementations of python.
* Fixed typo in last commit.
* Eliminate devices subsection in config schema
This eliminates the breaking change for configurations wanting a
singleton elk m1 instance (the majority of users, no doubt). I did
not do it like this before because I was following the lead of the
doorbird component which introduced a devices: section when moving
to support multiple doorbells. But Rohan Kapoor kindly pointed me
at the zoneminder component which sets the other (IMO) preferable
precedent. Will update the docs change shortly.
* Call async_add_entities once for all the elk controllers.
Just move async_add_entities() outside of the loops across the elk m1
controllers, so it's called once for each platform.
* Call async_add_entities only once per platform.
Move it to after the loop, so it's called only once
per platform even when there are multiple elk m1 controllers.
* Various improvements to be more idiomatic python + bug fixes
Thanks to Martin Hjelmare for the careful review and suggestions.
(All mistaken improvements and new bugs are my own.)
* Removed semicolon that lint caught.
* Idiomatic python improvements
Use dict.values() (instead of making it easier to add local looping variable
on the keys by using _, bar = ...items())
Use [] when the key is known to exist.
* Support multiple Elk instances
* Allow more than one Elk M1 alarm system to be integrated into a single hass instance.
* Introduces new "devices" schema at the top level, each of which has
the prior configuration schema.
* Requires new version of elkm1, 0.7.14, that gwww and I just updated (thanks Glen!)
QUESTION: Should the "devices" section be optional to avoid breaking
old configuration files? I chose not to do that for simplicity and
because I was following the doorbird code which requires the "devices"
section for all configurations even with only one device.
* Fixed a bunch of hound-raised issues
Fixed issues raised by hound -- there was clearly
a tool I was supposed to run to get those warnings
before submitting the PR. Sorry!
Updated REQUIREMENTS.
* Fixed whitespace and line-length mistakes
Also fixed unused prefix local variable lint warning.
* Fixed missing blank line
* Fixed more lint warnings.
Not sure if I missed these on the first pass or if the linter stopped
after a certain number of warnings or something else.
Switched logging to use %d and %s instead of string concatenation (per
lint request and because I imagine it migth be better performing
in some (oldish, I presume) implementations of python.
* Fixed typo in last commit.
* Eliminate devices subsection in config schema
This eliminates the breaking change for configurations wanting a
singleton elk m1 instance (the majority of users, no doubt). I did
not do it like this before because I was following the lead of the
doorbird component which introduced a devices: section when moving
to support multiple doorbells. But Rohan Kapoor kindly pointed me
at the zoneminder component which sets the other (IMO) preferable
precedent. Will update the docs change shortly.
* Call async_add_entities once for all the elk controllers.
Just move async_add_entities() outside of the loops across the elk m1
controllers, so it's called once for each platform.
* Call async_add_entities only once per platform.
Move it to after the loop, so it's called only once
per platform even when there are multiple elk m1 controllers.
* Various improvements to be more idiomatic python + bug fixes
Thanks to Martin Hjelmare for the careful review and suggestions.
(All mistaken improvements and new bugs are my own.)
* Removed semicolon that lint caught.
* Idiomatic python improvements
Use dict.values() (instead of making it easier to add local looping variable
on the keys by using _, bar = ...items())
Use [] when the key is known to exist.
* Use dict[key] instead of .get (incl. fixing typo). Use .values() instead of .items() when ignoring keys.
* Gotta use devices.get(prefix) since we use no prefix for the singleton elk instance
* fix requirement to use newer elkm1 that supports my changes for multiple elk devices
* Removed spurious + between a string broken between two lines for formatting; was failing a lint check about logging needing to use %s
* Remove REQUIREMENTS and DEPENDENCIES since those are now taken care of by the manifest.json file.
* Add configuration check that the prefixes are all unique
* Use new dependency 'getmac' to get mac address of Elk M1 controllers and use that for uniqueid if possible, else use None. Also removed some procedural checking of unique prefix since that's now handled at schema check time.
* Whitespace changes to make style checker happy and code more consistent
* Removed unused variable, added blank line
* Make getmac a requirement not dependency
I should've RTFM.
* ws only change; I really need to get Emacs to understand these style guidelines
* Ran script/gen_requirements_all.py; script/setup needed to be run so that was failing.
* More style check fixes and one bug fix.
* Incomplete set of changes from last push
* More conform-to-hass-style changes: use caps to start log message (and do not use function name even for debug message. And do not use string concatenation; prefer new-style .format.
* Style fixes.
* Switch back to using the prefix config field for setting the unique_id since the mac address approach has numerous shortcomings including: 1) new dependency; 2) lack of reliability; 3) doesn't work for serial connections; 4) breaks when a layer 4+ networking entity intermediates the elk m1 connection.
* Reran to update (removing getmac dependency)
* Skipped trailing ','; keep forgetting which languages are forgiving about this practical nicety of allowing trailing commas without changing the semantics.
* Validate uniqueness on lowercase versions of the prefix since we're gonna use .lower() on creating the entity id that has to be unique; do the _has_all_unique_prefixes check last so we get errors from the device schema before complaining about the uniqueness problem, if any
* Use vol.Lower to convert to lowercase instead of the map. Also fixed a pair of bugs for the alarm control panel display message service -- since data templates always generate strings, the values subject to range/set restrictions need to be coerced to their proper type before the check
* Fix some flake8 warnings.
* Fixed typo; it's Coerce not coerce.
* Use elkm1m_ string to start unique_id when and only when there is a non-empty prefix given; this enables backward compatibility to avoid a breaking change by letting the elkm1_ start to unique_id keep working exactly as it used to.
* minor comment tweak to force automation tests to run again since they failed for unrelated reasons last time
* There's actually been a 0.7.15 release which was meta-information and tidying only so we might as well depend on it
* Forgot to update this with gen_requirements_all.py
* Initial commit of De Lijn (Flemish Public Transport) component
* Code corrections as per HA dev's requests
* changes to variable naming, setting attribution and states, plus some smaller optimizations
* Overlooked some linting issues, these are now fixed
* Updated pydelijn version requirement to 0.5.1 so UTC timestamps can be used instead of relative/local times.
Removed unused definition
* Updated pydelijn version requirement to 0.5.1 in requirements_all.txt
* Update the self._attributes dict directly instead of replacing it
Assign ATTRIBUTION while creating the _attributes dict
Remove the ATTRIBUTION assignment in device_state_attributes as it's updated in the async_update now.
* Linting issue (lenght of 2 lines) solved
* Removed a relative time attribute
Updated a linting issue in the LOGGER (used % instead of the format)
* fix preset documentation
* Use pydaikin set holiday method
* update temperature readings, code simplification
* more temperature cleanup
* cleanup HVAC_MODE
* remove get() method and move code to respectivly place
* remove string constant in code
* remove get() method and move code to respectivly place
* isort results
* fixes in state method
* Add suez water sensor
* flake8 test
* pylint test
* edition to fix flake8 and pylint issues
* edition to be okay with the musts
* Added a blank line to __init.py__ for flake8
* added blank line for flake8
* changer scan interval from 10 to 720 minutes
* use of pysuez
* bug fix and isort
* use of pysuez
* fixed flake8 and pylint errors
* update requirements_all.txt
* added a method to test login/password befire adding device
* flake8 edition
* update requirements_all.txt
* add of .coveragerc file with untested files
* update of .coveragerc
* Update homeassistant/components/suez_water/__init__.py
Co-Authored-By: Fabian Affolter <mail@fabian-affolter.ch>
* Update homeassistant/components/suez_water/sensor.py
Co-Authored-By: Fabian Affolter <mail@fabian-affolter.ch>
* Update homeassistant/components/suez_water/sensor.py
Co-Authored-By: Fabian Affolter <mail@fabian-affolter.ch>
* Update homeassistant/components/suez_water/sensor.py
Co-Authored-By: Fabian Affolter <mail@fabian-affolter.ch>
* Update homeassistant/components/suez_water/sensor.py
Co-Authored-By: Fabian Affolter <mail@fabian-affolter.ch>
* Update homeassistant/components/suez_water/sensor.py
Co-Authored-By: Fabian Affolter <mail@fabian-affolter.ch>
* bug fix in check credentials
* flake8 and pylint fixes
* fix codeowner
* update requirements_all.txt
* Sorted suez_water line
* edition to answer comments from @MartinHjelmare on #23844
* Attribute keys formatting to lowercase snakecase, name and icon constants returned directly, and remove of attribute. Update of .
* pylint edition
* correction wrong keys in client attributes
* remove of unnedeed return and move add_entities
* Vallox: Increase robustness on startup
Experiments showed that timing of websocket requests to the Vallox firmware is
critical when fetching new metrics. Tests on different Raspberry Pis and x86
machines showed that those machines with little processing power tend to fail
the timing requirments during the busy startup phase of Home Assistant,
resulting in the Vallox integration failing to set itself up.
This patch catches Websocket's InvalidMessage, which is a symptom of failing the
timing requirements. Experiments again showed that on the Raspberry's, this
exception is catched once at startup, but the integration is running fine
afterwards.
* Update __init__.py
* Bump to new 2.1.0 version of api.
* Bump to api 2.2.0
* Update Python-HPILO to 4.3
Update of Python-HPILO requirement to 4.3 to resolve outstanding SSL connections for older HP servers (ILO 3)
* Update requirements_all.txt
Update HPILO to 4.3
* Add support for Rainforest Eagle-200
* Removed direct access selector to monitored conditions
* Refactored code to use throttle on the update function
* Fixed issue in new code to use only one EagleReader instance
* Resolve comments
* Resolved comments
* Resolved comments and added Debug statement
* Added return statements
* Fixed typo
* Resolved comments and added debug statements
* Moved get_status method into Data object and decorated it with @staticmethod
* Resolved comments
* Bump simplisafe-python to 4.0.0 + add additional SimpliSafe attributes
* Fixed incorrect attr assignment
* Member comments
* Add system ID as a state attribute
Using port on bridge initialization
Service: check_connection
Attribute: available
Updated requeriments_all.txt
Change unlatch service for open service
Removed extra info
nuki_lock_n_go renamed to lock_n_go
nuki_check_connection renamed to check_connection
* Add Fortigate integration
* added feedback changes
* removed the only case
* fixed a description
* removed the CONFIG_PLATFORM
* deleted README
* added return from setup
* added return from setup
* fixed reviews
* Link updated
* Rename var and a couple of other minor changes
* Typos
* Move totalconnect component toward being a multi-platform integration. Bump total_connect_client to 0.28.
* add missing total-connect alarm state mappings
* Made recommended changes of MartinHjelmare at
https://github.com/home-assistant/home-assistant/pull/24427
* Update __init__.py
* Updates per MartinHjelmare comments
* flake8/pydocstyle fixes
* removed . at end of log message
* added blank line between logging and voluptuous
* more fixes
* Add support for French
* Move labels to env_canada
* Bump env_canada to 0.0.17, change update frequency to 1 minute
* Update requirements_all.txt
* Set entity IDs separate from labels
* Flake error
* Remove monitored conditions
* Use next hourly forecast for missing conditions
* Switch sensors to unique_id
* Flake error
* Requested changes
* Simplify setting location parameters
* update component for xknx 0.11.0
- expose sensor state is not casted to float anymore
- climate mode operation list has no more None values
- light supports white_value (rgbw)
- sensor expects `group_address_state` now instead of `group_address`
- sensor forwards device_class if available
* update manifest to use xknx 0.11.0
* update requirements_all for xknx 0.11.0
* update for xknx 0.11.1
- require xknx 0.11.1
- use 'state_address' instead of 'address' in sensor and binary_sensor configuration
- optional 'sync_state' for sensors and binary_sensors
* remove questionable `del kwargs`
* Add support for World Wide Lightning Location Network
* Updated .coveragerc
* Added test
* Updated requirements
* Fixed tests
* Use local time for nearest strike
* Base geo location in place
* Finished geolocation work
* Fixed tests
* Cleanup
* Removed no-longer-needed method
* Updated requirements
* Add support for window and attrs
* Add strike ID to entity name
* Member comments
* Add arcam_fmj support
* Just use use state in player avoid direct client access
* Avoid leaking exceptions on invalid data
* Fix return value for volume in case of 0
* Mark component as having no coverage
* Add new requirement
* Add myself as maintainer
* Correct linting errors
* Use async_create_task instead of async_add_job
* Use new style string format instead of concat
* Don't call init of base class without init
* Annotate callbacks with @callback
Otherwise they won't be called in loop
* Reduce log level to debug
* Use async_timeout instead of wait_for
* Bump to version of arcam_fmj supporting 3.5
* Fix extra spaces
* Drop somewhat flaky unique_id
* Un-blackify ident to satisy pylint
* Un-blackify ident to satisy pylint
* Move default name calculation to config validation
* Add test folder
* Drop unused code
* Add tests for config flow import
* bump envoy_reader version to 0.4
* bump dependency envoy_reader to 0.4
* Enphase envoy get individual inverter production
* Add period in function description
* Fix dumb typo
* Define _attributes in __init__
* Better error messages, make update async
* Fix format error
* Fix pylint errors
* set unknown state to None
* Bump envoy_reader version to 0.8
* Change attributes to separate sensors
* Fix dumb thing
* Improve platform_setup for inverters
* Remove unneeded self._attributes, refactor platform setup
* Refactor platform setup
* Add support for aurora ABB Powerone solar photovoltaic inverter
* Add support for aurora ABB Powerone solar photovoltaic inverter
* Update stale docstring
* Fixed whitespace lint errors
* Remove test code
* Delete README.md
Website documentation contains setup instructions. README not needed here.
* Only close the serial line once.
* Correct newlines between imports
* Change add_devices to add_entites and remove unnecessary logging.
* Use new style string formatting instead of concatenation
* Directly access variables rather than via config.get
* Update sensor.py
* Update sleepyq to 0.7
Fixes crash when working with a single sleeper.
* sleepiq: Handle null side definitions
These happen if no sleeper is defined for a side of the bed. Don't
create sensors for null sides; they'll crash every time we try to use
them.
* sleepiq: Fix urls mocked to match sleepyq 0.7
* sleepi: Fix test_sensor.TestSleepIQSensorSetup
Sleepyq 0.7 throws on empty strings, so we have to specify them.
* sleepiq: Test for ValueError thrown by sleepyq 0.7
* sleepiq: Drop no longer used HTTPError import
* sleepiq: Add tests for single sleeper case
* sleepiq: Shorten comments to not overflow line length
* sleepiq: Use formatted string literals for adding suffixes to test files
* sleepiq: Use str.format() for test suffixing
* Added ability to send attachments in pushover notifications
* Added full name for exception to satisfy static check
* Fixed hanging indent lint problem
* Added path checking, removed import re, changed url check method to use
startswith.
* Removed argument from logging statement.
* Changed IOError to OSError, fixed logging, added logging statement.
PR #22457 added some code that used new methods in `sisyphus-control` 2.2.
Unfortunately, because of the move to manifests it was merged still depending
on 2.1.
Fixes#24834
* Option to change sensor names
* Python 3.5 compatibility
* Oops
* Get serial number at start
* Remove config opportunity
* Oops comma
* Changes from review
* Check yourself before you commit.
* Added Trafikverket train component
* Updated manifest with proper name and codeowner
* Updated requirements and manifest
* Updated CODEOWNERS
* Corrected requirements
* Added trafikverket_train/sensor.py to .coveragerc
* Added error handling and log if API call fails
* Corrected styles, removed dev log, improved validation
* Method calls to async_update(), improved error handling
* Minor cleanup/reorg for effeciency
* Added station cache and corrected to fit standards
* Simplified trainstop id and cleaned up dict.get
* Corrected mistake after change from dict to array
* Change device class to timestamp
* Vlc telnet first commit
First functional version, remains to add more functionality.
* New functions added and bugfixes
* Compliance with dev checklist
* Compliance with dev checklist
* Compliance with pydocstyle
* Removed unused import
* Fixed wrong reference for exception
* Module renamed
* Fixed module rename in other
* Fixed wrong reference for exception
Module renamed
Fixed module rename in other
* Update homeassistant/components/vlc_telnet/media_player.py
Accepted suggestion by @OttoWinter
Co-Authored-By: Otto Winter <otto@otto-winter.com>
* Update homeassistant/components/vlc_telnet/media_player.py
Accepted suggestion by @OttoWinter
Co-Authored-By: Otto Winter <otto@otto-winter.com>
* Update homeassistant/components/vlc_telnet/media_player.py
Accepted suggestion by @OttoWinter
Co-Authored-By: Otto Winter <otto@otto-winter.com>
* Update homeassistant/components/vlc_telnet/media_player.py
Accepted suggestion by @OttoWinter
Co-Authored-By: Otto Winter <otto@otto-winter.com>
* Suggestions by @OttoWinter
+Manage error when the VLC dissapears to show status unavailable.
* Removed error log, instead set unavailable state
* Changes suggested by @pvizeli
-Import location
-Use of constants
* Implemented available method
* Improved available method
* Quick & Dirty weather alert integration
* Add attributes in weather alert sensor.
* MeteoFranceUpdate returns dept to init the alert watcher
* add rain forecast to weather attribute
* Add checks when no weather alert data are available
* Improve date and state when online source is unreachable
* update to take into account new API of vigilancemeteo 3.0.0
* Clean local patchs and put requirements in manfiest.json
* Use only one proxy for weather alerts to avoid too much HTTP requests
* linting and comments style corrections
* Add error catching and debug logging
* Correction following PR checklist
* Add code owners
* Update requirements_all.txt
* Comment style
* Update CODEOWNERS after rebaseline with dev branch
* update requirements_all.txt
* initial version of qfes bushfire geolocation platform
* removed all occurrences of legally protected names; using new georss library
* regenerated codeowners
* fixed pylint
* added one more valid category
* moved library import to top and ran isort
* Update aioswitcher requirement to 2019.4.26.
* Removed unnecessary legacy function call.
* Fixed log message capital first letter.
* Replaced None argument with empty dict.
* Replaced guard.
* Added ServiceCallType.
* Added set_auto_off and update_device_name services to the component.
* Added test cases for service calls.
* Conditioned the component services registry with the platform discovery.
* Update homeassistant/components/switcher_kis/__init__.py
Co-Authored-By: TomerFi <tomer.figenblat@gmail.com>
* Update homeassistant/components/switcher_kis/__init__.py
Co-Authored-By: TomerFi <tomer.figenblat@gmail.com>
* Resolved change requests.
* Added ContextType.
* Addes permission verification for service calls.
* Added test cases for permision verification and more.
* Replaced POLICY_CONTROL with the more suited POLICY_EDIT.
* More appropriate function name.
* Added domain and entity_id validation for calling services.
* Removed service for setting the vendor's device name.
* Support ZLO device types
Support the device types that are added in https://github.com/zigpy/zigpy/pull/176
so newer Zigbee devices can be supported.
* Remove BINARY_SENSOR mappings
* Add back ON_OFF_LIGHT_SWITCH, DIMMER_SWITCH and COLOR_DIMMABLE_LIGHT
Since they are target devices I've added them as switch and lights,
which matches the Zigbee documentation.
* Upgrade to zigpy-homeassistant v0.5.0
To be able to use the new DeviceTypes
* Add APRS device tracker component
This component keeps open a connection to the APRS-IS infrastructure so
messages generated by filtered callsigns can be immediately acted upon.
Any messages with certain values for the 'format' key are position
reports and are parsed into device tracker entities.
* Log errors and return if startup failure
* Fix unit tests
* CREATE Somfy component
* CREATE cover Somfy platform
* USE somfy id as unique id
* UPDATE all the devices in one call to limit the number of call
* FIX Don't load devices if not yet configured
* IMP Replace configurator by a simple notification
* ADD log in case state does not match
* IMP wording
* REMOVE debug stuf
* ADD support for tilt position
* UPDATE requirements
* FIX Use code instead of authorization response
- Will allow to setup Somfy without https
* HANDLE stateless devices (Somfy RTS)
* FIX import locally 3rd party library
* UPDATE pymfy to 0.4.3
* ADD missing docstring
* FIX For Somfy 100 means closed and 0 opened
* FIX position can be None
* ENHANCE error management when error 500 occurs at setup
* FIX indent
* ROLLBACK tilt modification
- See https://community.home-assistant.io/t/somfy-tahoma-official-api/61448/90?u=tetienne
* FIX Look for capability instead of state
* DON'T use exception to test if a feature is available
* UPDATE dependency
* ADD device_info property
* AVOID object creation in each method
* REMOVE unused constants
* ADD missing doc
* IMP Only make one call to add_entities
* USE dict[key] instead of get method
* IMP Don't pass hass object to the entities
* FIX Don't end logging messages with period
* USE config entries instead of a cache file
* IMPLEMENT async_unload_entry
* CONSOLIDATE package
- see home-assistant/architecture#124
* UPDATE to pymfy 0.5.1
* SIMPLIFY config flow
* ADD French translation
* FIX 80 vs 79 max length
* ABORT flow asap
* FIX A tupple was returned
* MIGRATE to manifest.json
* ADD a placeholder async_setup_platform coroutine
- It's currently required and expected by the platform helper.
* FIX codeowner
* ADD missing translations file
* USE new external step
* UPGRADE pymfy version
* Close Somfy tab automatically
* ADD manufacturer
- Somfy only for the moment.
* HANDLE missing code or state in Somfy request
* REMOVE unused strings
* DECLARE somfy component to use config_flow
* APPLY static check remarks
* FIX async method cannot be called from sync context
* FIX only unload what has been loaded during entry setup
* DON't catch them all
* DON'T log full stacktrace
* ABORT conflig flow if configuration missing
* OMIT Somfy files for coverage
* ADD tests about Somfy config flow
* ADD pymfy to the test dependencies
* Improve amcrest error handling and bump amcrest package to 1.5.3
amcrest package update fixes command retry, especially with Digest Authentication, and allows sending snapshot command without channel parameter.
Get rid of persistent_notification.
Errors at startup, other than login errors, are no longer fatal.
Display debug messages about how many times an error has occurred in a row.
Remove initial communications test. If camera is off line at startup this just delays the component setup.
Handle urllib3 errors when getting data from commands that were sent with stream=True.
If errors occur during camera update, try repeating until it works or the camera is determined to be off line.
Drop channel parameter in snapshot command which allows camera to use its default channel, which is different in different camera models and firmware versions.
Make entities unavailable if too many errors occur in a row.
Add new configuration variables to control how many errors in a row should be interpreted as camera being offline, and how frequently to "ping" camera to see when it becomes available again.
Add online binary_sensor option to indicate if camera is available (i.e., responding to commands.)
* Update per review comments
Remove max_errors and recheck_interval configuration variables and used fixed values instead.
Move definition of AmcrestChecker class to module level.
Change should_poll in camera.py to return a fixed value of True and move logic to update method.