Skip to content

Commit

Permalink
Added support to HTTPS URLs on SynologyDSM (home-assistant#15270)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
tchellomello authored and pvizeli committed Jul 4, 2018
1 parent 5f7ac09 commit a6e9dc8
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 8 deletions.
26 changes: 19 additions & 7 deletions homeassistant/components/sensor/synologydsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,20 @@
import homeassistant.helpers.config_validation as cv
from homeassistant.components.sensor import PLATFORM_SCHEMA
from homeassistant.const import (
CONF_HOST, CONF_USERNAME, CONF_PASSWORD, CONF_PORT, TEMP_CELSIUS,
CONF_MONITORED_CONDITIONS, EVENT_HOMEASSISTANT_START, CONF_DISKS)
CONF_HOST, CONF_USERNAME, CONF_PASSWORD, CONF_PORT, CONF_SSL,
ATTR_ATTRIBUTION, TEMP_CELSIUS, CONF_MONITORED_CONDITIONS,
EVENT_HOMEASSISTANT_START, CONF_DISKS)
from homeassistant.helpers.entity import Entity
from homeassistant.util import Throttle

REQUIREMENTS = ['python-synology==0.1.0']
REQUIREMENTS = ['python-synology==0.2.0']

_LOGGER = logging.getLogger(__name__)

CONF_ATTRIBUTION = 'Data provided by Synology'
CONF_VOLUMES = 'volumes'
DEFAULT_NAME = 'Synology DSM'
DEFAULT_PORT = 5000
DEFAULT_PORT = 5001

MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=15)

Expand Down Expand Up @@ -74,6 +76,7 @@
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_HOST): cv.string,
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_PASSWORD): cv.string,
vol.Optional(CONF_MONITORED_CONDITIONS):
Expand All @@ -95,10 +98,11 @@ def run_setup(event):
port = config.get(CONF_PORT)
username = config.get(CONF_USERNAME)
password = config.get(CONF_PASSWORD)
use_ssl = config.get(CONF_SSL)
unit = hass.config.units.temperature_unit
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(
api, variable, _UTILISATION_MON_COND[variable])
Expand Down Expand Up @@ -128,13 +132,14 @@ def run_setup(event):
class SynoApi(object):
"""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."""
from SynologyDSM import SynologyDSM
self.temp_unit = temp_unit

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
_LOGGER.error("Error setting up Synology DSM")

Expand Down Expand Up @@ -185,6 +190,13 @@ def update(self):
if self._api is not None:
self._api.update()

@property
def device_state_attributes(self):
"""Return the state attributes."""
return {
ATTR_ATTRIBUTION: CONF_ATTRIBUTION,
}


class SynoNasUtilSensor(SynoNasSensor):
"""Representation a Synology Utilisation Sensor."""
Expand Down
2 changes: 1 addition & 1 deletion requirements_all.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1080,7 +1080,7 @@ python-sochain-api==0.0.2
python-songpal==0.0.7

# homeassistant.components.sensor.synologydsm
python-synology==0.1.0
python-synology==0.2.0

# homeassistant.components.tado
python-tado==0.2.3
Expand Down

0 comments on commit a6e9dc8

Please sign in to comment.