mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 04:07:08 +00:00
Added support to HTTPS URLs on SynologyDSM (#15270)
* Added support to HTTPS URLs on SynologyDSM * Bumped python-synology to 0.1.1 * Makes lint happy * Added attribution to Synology and fixed 3rd library version * Fixed requirements_all.txt * Makes SynologyDSM defaults to 5001 using SSL
This commit is contained in:
parent
5f7ac09a74
commit
a6e9dc81aa
@ -12,18 +12,20 @@ import voluptuous as vol
|
|||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_HOST, CONF_USERNAME, CONF_PASSWORD, CONF_PORT, TEMP_CELSIUS,
|
CONF_HOST, CONF_USERNAME, CONF_PASSWORD, CONF_PORT, CONF_SSL,
|
||||||
CONF_MONITORED_CONDITIONS, EVENT_HOMEASSISTANT_START, CONF_DISKS)
|
ATTR_ATTRIBUTION, TEMP_CELSIUS, CONF_MONITORED_CONDITIONS,
|
||||||
|
EVENT_HOMEASSISTANT_START, CONF_DISKS)
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
from homeassistant.util import Throttle
|
from homeassistant.util import Throttle
|
||||||
|
|
||||||
REQUIREMENTS = ['python-synology==0.1.0']
|
REQUIREMENTS = ['python-synology==0.2.0']
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
CONF_ATTRIBUTION = 'Data provided by Synology'
|
||||||
CONF_VOLUMES = 'volumes'
|
CONF_VOLUMES = 'volumes'
|
||||||
DEFAULT_NAME = 'Synology DSM'
|
DEFAULT_NAME = 'Synology DSM'
|
||||||
DEFAULT_PORT = 5000
|
DEFAULT_PORT = 5001
|
||||||
|
|
||||||
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=15)
|
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=15)
|
||||||
|
|
||||||
@ -74,6 +76,7 @@ _MONITORED_CONDITIONS = list(_UTILISATION_MON_COND.keys()) + \
|
|||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_HOST): cv.string,
|
vol.Required(CONF_HOST): cv.string,
|
||||||
vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
|
vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
|
||||||
|
vol.Optional(CONF_SSL, default=True): cv.boolean,
|
||||||
vol.Required(CONF_USERNAME): cv.string,
|
vol.Required(CONF_USERNAME): cv.string,
|
||||||
vol.Required(CONF_PASSWORD): cv.string,
|
vol.Required(CONF_PASSWORD): cv.string,
|
||||||
vol.Optional(CONF_MONITORED_CONDITIONS):
|
vol.Optional(CONF_MONITORED_CONDITIONS):
|
||||||
@ -95,10 +98,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
port = config.get(CONF_PORT)
|
port = config.get(CONF_PORT)
|
||||||
username = config.get(CONF_USERNAME)
|
username = config.get(CONF_USERNAME)
|
||||||
password = config.get(CONF_PASSWORD)
|
password = config.get(CONF_PASSWORD)
|
||||||
|
use_ssl = config.get(CONF_SSL)
|
||||||
unit = hass.config.units.temperature_unit
|
unit = hass.config.units.temperature_unit
|
||||||
monitored_conditions = config.get(CONF_MONITORED_CONDITIONS)
|
monitored_conditions = config.get(CONF_MONITORED_CONDITIONS)
|
||||||
|
|
||||||
api = SynoApi(host, port, username, password, unit)
|
api = SynoApi(host, port, username, password, unit, use_ssl)
|
||||||
|
|
||||||
sensors = [SynoNasUtilSensor(
|
sensors = [SynoNasUtilSensor(
|
||||||
api, variable, _UTILISATION_MON_COND[variable])
|
api, variable, _UTILISATION_MON_COND[variable])
|
||||||
@ -128,13 +132,14 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
class SynoApi(object):
|
class SynoApi(object):
|
||||||
"""Class to interface with Synology DSM API."""
|
"""Class to interface with Synology DSM API."""
|
||||||
|
|
||||||
def __init__(self, host, port, username, password, temp_unit):
|
def __init__(self, host, port, username, password, temp_unit, use_ssl):
|
||||||
"""Initialize the API wrapper class."""
|
"""Initialize the API wrapper class."""
|
||||||
from SynologyDSM import SynologyDSM
|
from SynologyDSM import SynologyDSM
|
||||||
self.temp_unit = temp_unit
|
self.temp_unit = temp_unit
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._api = SynologyDSM(host, port, username, password)
|
self._api = SynologyDSM(host, port, username, password,
|
||||||
|
use_https=use_ssl)
|
||||||
except: # noqa: E722 # pylint: disable=bare-except
|
except: # noqa: E722 # pylint: disable=bare-except
|
||||||
_LOGGER.error("Error setting up Synology DSM")
|
_LOGGER.error("Error setting up Synology DSM")
|
||||||
|
|
||||||
@ -185,6 +190,13 @@ class SynoNasSensor(Entity):
|
|||||||
if self._api is not None:
|
if self._api is not None:
|
||||||
self._api.update()
|
self._api.update()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_state_attributes(self):
|
||||||
|
"""Return the state attributes."""
|
||||||
|
return {
|
||||||
|
ATTR_ATTRIBUTION: CONF_ATTRIBUTION,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class SynoNasUtilSensor(SynoNasSensor):
|
class SynoNasUtilSensor(SynoNasSensor):
|
||||||
"""Representation a Synology Utilisation Sensor."""
|
"""Representation a Synology Utilisation Sensor."""
|
||||||
|
@ -1080,7 +1080,7 @@ python-sochain-api==0.0.2
|
|||||||
python-songpal==0.0.7
|
python-songpal==0.0.7
|
||||||
|
|
||||||
# homeassistant.components.sensor.synologydsm
|
# homeassistant.components.sensor.synologydsm
|
||||||
python-synology==0.1.0
|
python-synology==0.2.0
|
||||||
|
|
||||||
# homeassistant.components.tado
|
# homeassistant.components.tado
|
||||||
python-tado==0.2.3
|
python-tado==0.2.3
|
||||||
|
Loading…
x
Reference in New Issue
Block a user