Hive R3 update (#13357)
* Rebase * Update version number to 0.2.14 * Remove Blank Line * Added period to docstring * Update Tox Fix * Removed Lines
This commit is contained in:
parent
595600dea5
commit
e0c5b44994
7 changed files with 72 additions and 7 deletions
|
@ -32,6 +32,7 @@ class HiveBinarySensorEntity(BinarySensorDevice):
|
||||||
self.device_type = hivedevice["HA_DeviceType"]
|
self.device_type = hivedevice["HA_DeviceType"]
|
||||||
self.node_device_type = hivedevice["Hive_DeviceType"]
|
self.node_device_type = hivedevice["Hive_DeviceType"]
|
||||||
self.session = hivesession
|
self.session = hivesession
|
||||||
|
self.attributes = {}
|
||||||
self.data_updatesource = '{}.{}'.format(self.device_type,
|
self.data_updatesource = '{}.{}'.format(self.device_type,
|
||||||
self.node_id)
|
self.node_id)
|
||||||
|
|
||||||
|
@ -52,6 +53,11 @@ class HiveBinarySensorEntity(BinarySensorDevice):
|
||||||
"""Return the name of the binary sensor."""
|
"""Return the name of the binary sensor."""
|
||||||
return self.node_name
|
return self.node_name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_state_attributes(self):
|
||||||
|
"""Show Device Attributes."""
|
||||||
|
return self.attributes
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_on(self):
|
def is_on(self):
|
||||||
"""Return true if the binary sensor is on."""
|
"""Return true if the binary sensor is on."""
|
||||||
|
@ -61,3 +67,5 @@ class HiveBinarySensorEntity(BinarySensorDevice):
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Update all Node data from Hive."""
|
"""Update all Node data from Hive."""
|
||||||
self.session.core.update_data(self.node_id)
|
self.session.core.update_data(self.node_id)
|
||||||
|
self.attributes = self.session.attributes.state_attributes(
|
||||||
|
self.node_id)
|
||||||
|
|
|
@ -38,7 +38,10 @@ class HiveClimateEntity(ClimateDevice):
|
||||||
self.node_id = hivedevice["Hive_NodeID"]
|
self.node_id = hivedevice["Hive_NodeID"]
|
||||||
self.node_name = hivedevice["Hive_NodeName"]
|
self.node_name = hivedevice["Hive_NodeName"]
|
||||||
self.device_type = hivedevice["HA_DeviceType"]
|
self.device_type = hivedevice["HA_DeviceType"]
|
||||||
|
if self.device_type == "Heating":
|
||||||
|
self.thermostat_node_id = hivedevice["Thermostat_NodeID"]
|
||||||
self.session = hivesession
|
self.session = hivesession
|
||||||
|
self.attributes = {}
|
||||||
self.data_updatesource = '{}.{}'.format(self.device_type,
|
self.data_updatesource = '{}.{}'.format(self.device_type,
|
||||||
self.node_id)
|
self.node_id)
|
||||||
|
|
||||||
|
@ -71,6 +74,11 @@ class HiveClimateEntity(ClimateDevice):
|
||||||
friendly_name = "Hot Water"
|
friendly_name = "Hot Water"
|
||||||
return friendly_name
|
return friendly_name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_state_attributes(self):
|
||||||
|
"""Show Device Attributes."""
|
||||||
|
return self.attributes
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def temperature_unit(self):
|
def temperature_unit(self):
|
||||||
"""Return the unit of measurement."""
|
"""Return the unit of measurement."""
|
||||||
|
@ -175,4 +183,9 @@ class HiveClimateEntity(ClimateDevice):
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Update all Node data from Hive."""
|
"""Update all Node data from Hive."""
|
||||||
|
node = self.node_id
|
||||||
|
if self.device_type == "Heating":
|
||||||
|
node = self.thermostat_node_id
|
||||||
|
|
||||||
self.session.core.update_data(self.node_id)
|
self.session.core.update_data(self.node_id)
|
||||||
|
self.attributes = self.session.attributes.state_attributes(node)
|
||||||
|
|
|
@ -12,7 +12,7 @@ from homeassistant.const import (CONF_PASSWORD, CONF_SCAN_INTERVAL,
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.discovery import load_platform
|
from homeassistant.helpers.discovery import load_platform
|
||||||
|
|
||||||
REQUIREMENTS = ['pyhiveapi==0.2.11']
|
REQUIREMENTS = ['pyhiveapi==0.2.14']
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
DOMAIN = 'hive'
|
DOMAIN = 'hive'
|
||||||
|
@ -44,6 +44,8 @@ class HiveSession:
|
||||||
light = None
|
light = None
|
||||||
sensor = None
|
sensor = None
|
||||||
switch = None
|
switch = None
|
||||||
|
weather = None
|
||||||
|
attributes = None
|
||||||
|
|
||||||
|
|
||||||
def setup(hass, config):
|
def setup(hass, config):
|
||||||
|
@ -70,6 +72,8 @@ def setup(hass, config):
|
||||||
session.hotwater = Pyhiveapi.Hotwater()
|
session.hotwater = Pyhiveapi.Hotwater()
|
||||||
session.light = Pyhiveapi.Light()
|
session.light = Pyhiveapi.Light()
|
||||||
session.switch = Pyhiveapi.Switch()
|
session.switch = Pyhiveapi.Switch()
|
||||||
|
session.weather = Pyhiveapi.Weather()
|
||||||
|
session.attributes = Pyhiveapi.Attributes()
|
||||||
hass.data[DATA_HIVE] = session
|
hass.data[DATA_HIVE] = session
|
||||||
|
|
||||||
for ha_type, hive_type in DEVICETYPES.items():
|
for ha_type, hive_type in DEVICETYPES.items():
|
||||||
|
|
|
@ -34,6 +34,7 @@ class HiveDeviceLight(Light):
|
||||||
self.device_type = hivedevice["HA_DeviceType"]
|
self.device_type = hivedevice["HA_DeviceType"]
|
||||||
self.light_device_type = hivedevice["Hive_Light_DeviceType"]
|
self.light_device_type = hivedevice["Hive_Light_DeviceType"]
|
||||||
self.session = hivesession
|
self.session = hivesession
|
||||||
|
self.attributes = {}
|
||||||
self.data_updatesource = '{}.{}'.format(self.device_type,
|
self.data_updatesource = '{}.{}'.format(self.device_type,
|
||||||
self.node_id)
|
self.node_id)
|
||||||
self.session.entities.append(self)
|
self.session.entities.append(self)
|
||||||
|
@ -48,6 +49,11 @@ class HiveDeviceLight(Light):
|
||||||
"""Return the display name of this light."""
|
"""Return the display name of this light."""
|
||||||
return self.node_name
|
return self.node_name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_state_attributes(self):
|
||||||
|
"""Show Device Attributes."""
|
||||||
|
return self.attributes
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def brightness(self):
|
def brightness(self):
|
||||||
"""Brightness of the light (an integer in the range 1-255)."""
|
"""Brightness of the light (an integer in the range 1-255)."""
|
||||||
|
@ -136,3 +142,5 @@ class HiveDeviceLight(Light):
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Update all Node data from Hive."""
|
"""Update all Node data from Hive."""
|
||||||
self.session.core.update_data(self.node_id)
|
self.session.core.update_data(self.node_id)
|
||||||
|
self.attributes = self.session.attributes.state_attributes(
|
||||||
|
self.node_id)
|
||||||
|
|
|
@ -4,11 +4,17 @@ Support for the Hive devices.
|
||||||
For more details about this platform, please refer to the documentation at
|
For more details about this platform, please refer to the documentation at
|
||||||
https://home-assistant.io/components/sensor.hive/
|
https://home-assistant.io/components/sensor.hive/
|
||||||
"""
|
"""
|
||||||
|
from homeassistant.const import TEMP_CELSIUS
|
||||||
from homeassistant.components.hive import DATA_HIVE
|
from homeassistant.components.hive import DATA_HIVE
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
|
|
||||||
DEPENDENCIES = ['hive']
|
DEPENDENCIES = ['hive']
|
||||||
|
|
||||||
|
FRIENDLY_NAMES = {'Hub_OnlineStatus': 'Hub Status',
|
||||||
|
'Hive_OutsideTemperature': 'Outside Temperature'}
|
||||||
|
DEVICETYPE_ICONS = {'Hub_OnlineStatus': 'mdi:switch',
|
||||||
|
'Hive_OutsideTemperature': 'mdi:thermometer'}
|
||||||
|
|
||||||
|
|
||||||
def setup_platform(hass, config, add_devices, discovery_info=None):
|
def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
"""Set up Hive sensor devices."""
|
"""Set up Hive sensor devices."""
|
||||||
|
@ -16,7 +22,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
return
|
return
|
||||||
session = hass.data.get(DATA_HIVE)
|
session = hass.data.get(DATA_HIVE)
|
||||||
|
|
||||||
if discovery_info["HA_DeviceType"] == "Hub_OnlineStatus":
|
if (discovery_info["HA_DeviceType"] == "Hub_OnlineStatus" or
|
||||||
|
discovery_info["HA_DeviceType"] == "Hive_OutsideTemperature"):
|
||||||
add_devices([HiveSensorEntity(session, discovery_info)])
|
add_devices([HiveSensorEntity(session, discovery_info)])
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,6 +34,7 @@ class HiveSensorEntity(Entity):
|
||||||
"""Initialize the sensor."""
|
"""Initialize the sensor."""
|
||||||
self.node_id = hivedevice["Hive_NodeID"]
|
self.node_id = hivedevice["Hive_NodeID"]
|
||||||
self.device_type = hivedevice["HA_DeviceType"]
|
self.device_type = hivedevice["HA_DeviceType"]
|
||||||
|
self.node_device_type = hivedevice["Hive_DeviceType"]
|
||||||
self.session = hivesession
|
self.session = hivesession
|
||||||
self.data_updatesource = '{}.{}'.format(self.device_type,
|
self.data_updatesource = '{}.{}'.format(self.device_type,
|
||||||
self.node_id)
|
self.node_id)
|
||||||
|
@ -40,13 +48,29 @@ class HiveSensorEntity(Entity):
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
"""Return the name of the sensor."""
|
"""Return the name of the sensor."""
|
||||||
return "Hive hub status"
|
return FRIENDLY_NAMES.get(self.device_type)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self):
|
||||||
"""Return the state of the sensor."""
|
"""Return the state of the sensor."""
|
||||||
return self.session.sensor.hub_online_status(self.node_id)
|
if self.device_type == "Hub_OnlineStatus":
|
||||||
|
return self.session.sensor.hub_online_status(self.node_id)
|
||||||
|
elif self.device_type == "Hive_OutsideTemperature":
|
||||||
|
return self.session.weather.temperature()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def unit_of_measurement(self):
|
||||||
|
"""Return the unit of measurement."""
|
||||||
|
if self.device_type == "Hive_OutsideTemperature":
|
||||||
|
return TEMP_CELSIUS
|
||||||
|
|
||||||
|
@property
|
||||||
|
def icon(self):
|
||||||
|
"""Return the icon to use."""
|
||||||
|
return DEVICETYPE_ICONS.get(self.device_type)
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Update all Node data from Hive."""
|
"""Update all Node data frome Hive."""
|
||||||
self.session.core.update_data(self.node_id)
|
if self.session.core.update_data(self.node_id):
|
||||||
|
for entity in self.session.entities:
|
||||||
|
entity.handle_update(self.data_updatesource)
|
||||||
|
|
|
@ -28,6 +28,7 @@ class HiveDevicePlug(SwitchDevice):
|
||||||
self.node_name = hivedevice["Hive_NodeName"]
|
self.node_name = hivedevice["Hive_NodeName"]
|
||||||
self.device_type = hivedevice["HA_DeviceType"]
|
self.device_type = hivedevice["HA_DeviceType"]
|
||||||
self.session = hivesession
|
self.session = hivesession
|
||||||
|
self.attributes = {}
|
||||||
self.data_updatesource = '{}.{}'.format(self.device_type,
|
self.data_updatesource = '{}.{}'.format(self.device_type,
|
||||||
self.node_id)
|
self.node_id)
|
||||||
self.session.entities.append(self)
|
self.session.entities.append(self)
|
||||||
|
@ -42,6 +43,11 @@ class HiveDevicePlug(SwitchDevice):
|
||||||
"""Return the name of this Switch device if any."""
|
"""Return the name of this Switch device if any."""
|
||||||
return self.node_name
|
return self.node_name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_state_attributes(self):
|
||||||
|
"""Show Device Attributes."""
|
||||||
|
return self.attributes
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def current_power_w(self):
|
def current_power_w(self):
|
||||||
"""Return the current power usage in W."""
|
"""Return the current power usage in W."""
|
||||||
|
@ -67,3 +73,5 @@ class HiveDevicePlug(SwitchDevice):
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Update all Node data from Hive."""
|
"""Update all Node data from Hive."""
|
||||||
self.session.core.update_data(self.node_id)
|
self.session.core.update_data(self.node_id)
|
||||||
|
self.attributes = self.session.attributes.state_attributes(
|
||||||
|
self.node_id)
|
||||||
|
|
|
@ -777,7 +777,7 @@ pyharmony==1.0.20
|
||||||
pyhik==0.1.8
|
pyhik==0.1.8
|
||||||
|
|
||||||
# homeassistant.components.hive
|
# homeassistant.components.hive
|
||||||
pyhiveapi==0.2.11
|
pyhiveapi==0.2.14
|
||||||
|
|
||||||
# homeassistant.components.homematic
|
# homeassistant.components.homematic
|
||||||
pyhomematic==0.1.41
|
pyhomematic==0.1.41
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue