* Use new trusted_proxies setting for X-Forwarded-For whitelist
* Only use the last IP in the header
Per Wikipedia (https://en.wikipedia.org/wiki/X-Forwarded-For#Format):
> The last IP address is always the IP address that connects to the last proxy,
> which means it is the most reliable source of information.
* Add two additional tests
* Ignore nonsense header values instead of failing
There's one particular QNAP model which sometimes return empty/null temperatures
for certain disks. This commit ensures that this model can be integrated with HASS
without causing KeyErrors or other exceptions - if this edge case is hit, the
sensor will simply show `0` instead.
* Add @colinodell to CODEOWNERS for qnap sensor
* Bump qnapstats library to 0.2.5
This release adds better error handling for sharenames with no folder
* Manual alarm with MQTT control
* Duplicate manual control panel code instead of extending it
* Duplicate manual alarm test as well; modify for manual_mqtt
* Add MQTT-specific tests for manual_mqtt alarm
* Allow configurable conditions for Pi-Hole sensor
* Include all three conditions by default
* Share Pi-Hole API data across all sensors; eliminate redundant API calls
* Don't initialize components which have already been discovered (fixes#5588)
* Don't log that we've found a service unless we know it's not a duplicate
* Encode discovery data hash with JSON
This also solves the issue of trying to hash non-hashable objects like dicts
* Add test for duplicate device discovery
* Don't initialize components which have already been discovered (fixes#5588)
* Don't log that we've found a service unless we know it's not a duplicate
* Encode discovery data hash with JSON
This also solves the issue of trying to hash non-hashable objects like dicts
* Add test for duplicate device discovery
* Bump qnapstats library to 0.2.3
* Expose the new timeout setting
* Show persistent notification if QNAP fails to set up
This sitaution will usually occur if the server configuration is wrong or the
timeout is set too low. In both cases `api.update()` will fail, which is a
problem because we cannot initialize many of the sensors without having this
data.
* Add new system_temp condition to QNAP sensor
* Add support for direct MJPEG streams from Amcrest cameras
The previous implementation relied on using snapshots from the camera. However,
some Amcrest models cannot keep up with the large number of requests and
instead timeout, resulting in no video stream. These cameras do provide MJPEG
streams though, so this commit adds the option to use these instead of creating
one from snapshots.
Unfortunately, some cameras on newer firmwares do not support MJPEG streams at
high resolution - only at low resolution.
By providing users with both a `resolution` and `stream_source` option, we can
allow them to choose whichever combination works for their particular model
and firmware version.
* Close the stream instead of releasing it
* Close stream without creating a task
* Handle client aborts
* fix lint