Set device_class on temperature sensors R-Z (#52920)
This commit is contained in:
parent
ad0ccc1b70
commit
1a74fd7a14
11 changed files with 123 additions and 36 deletions
|
@ -5,7 +5,11 @@ from regenmaschine.controller import Controller
|
||||||
|
|
||||||
from homeassistant.components.sensor import SensorEntity
|
from homeassistant.components.sensor import SensorEntity
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import TEMP_CELSIUS, VOLUME_CUBIC_METERS
|
from homeassistant.const import (
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
|
TEMP_CELSIUS,
|
||||||
|
VOLUME_CUBIC_METERS,
|
||||||
|
)
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
||||||
|
@ -62,7 +66,7 @@ SENSORS = {
|
||||||
"Freeze Protect Temperature",
|
"Freeze Protect Temperature",
|
||||||
"mdi:thermometer",
|
"mdi:thermometer",
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
"temperature",
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
True,
|
True,
|
||||||
DATA_RESTRICTIONS_UNIVERSAL,
|
DATA_RESTRICTIONS_UNIVERSAL,
|
||||||
),
|
),
|
||||||
|
|
|
@ -12,6 +12,7 @@ from homeassistant.const import (
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_PORT,
|
CONF_PORT,
|
||||||
CONF_SENSORS,
|
CONF_SENSORS,
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
)
|
)
|
||||||
|
@ -110,23 +111,31 @@ def has_all_unique_names(value):
|
||||||
|
|
||||||
SENSOR_TYPES = {
|
SENSOR_TYPES = {
|
||||||
# Type, Unit, Icon, post
|
# Type, Unit, Icon, post
|
||||||
"bed_temperature": ["temperature", TEMP_CELSIUS, "mdi:thermometer", "_bed_"],
|
"bed_temperature": [
|
||||||
|
"temperature",
|
||||||
|
TEMP_CELSIUS,
|
||||||
|
None,
|
||||||
|
"_bed_",
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
|
],
|
||||||
"extruder_temperature": [
|
"extruder_temperature": [
|
||||||
"temperature",
|
"temperature",
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
"mdi:thermometer",
|
None,
|
||||||
"_extruder_",
|
"_extruder_",
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
],
|
],
|
||||||
"chamber_temperature": [
|
"chamber_temperature": [
|
||||||
"temperature",
|
"temperature",
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
"mdi:thermometer",
|
None,
|
||||||
"_chamber_",
|
"_chamber_",
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
],
|
],
|
||||||
"current_state": ["state", None, "mdi:printer-3d", ""],
|
"current_state": ["state", None, "mdi:printer-3d", "", None],
|
||||||
"current_job": ["progress", PERCENTAGE, "mdi:file-percent", "_current_job"],
|
"current_job": ["progress", PERCENTAGE, "mdi:file-percent", "_current_job", None],
|
||||||
"job_end": ["progress", None, "mdi:clock-end", "_job_end"],
|
"job_end": ["progress", None, "mdi:clock-end", "_job_end", None],
|
||||||
"job_start": ["progress", None, "mdi:clock-start", "_job_start"],
|
"job_start": ["progress", None, "mdi:clock-start", "_job_start", None],
|
||||||
}
|
}
|
||||||
|
|
||||||
SENSOR_SCHEMA = vol.Schema(
|
SENSOR_SCHEMA = vol.Schema(
|
||||||
|
|
|
@ -59,6 +59,7 @@ class RepetierSensor(SensorEntity):
|
||||||
self._printer_id = printer_id
|
self._printer_id = printer_id
|
||||||
self._sensor_type = sensor_type
|
self._sensor_type = sensor_type
|
||||||
self._state = None
|
self._state = None
|
||||||
|
self._attr_device_class = SENSOR_TYPES[self._sensor_type][4]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def available(self) -> bool:
|
def available(self) -> bool:
|
||||||
|
|
|
@ -10,6 +10,7 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_DISPLAY_OPTIONS,
|
CONF_DISPLAY_OPTIONS,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
)
|
)
|
||||||
|
@ -24,9 +25,9 @@ CONF_IS_HAT_ATTACHED = "is_hat_attached"
|
||||||
MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60)
|
MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60)
|
||||||
|
|
||||||
SENSOR_TYPES = {
|
SENSOR_TYPES = {
|
||||||
"temperature": ["temperature", TEMP_CELSIUS],
|
"temperature": ["temperature", TEMP_CELSIUS, DEVICE_CLASS_TEMPERATURE],
|
||||||
"humidity": ["humidity", PERCENTAGE],
|
"humidity": ["humidity", PERCENTAGE, None],
|
||||||
"pressure": ["pressure", "mb"],
|
"pressure": ["pressure", "mb", None],
|
||||||
}
|
}
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||||
|
@ -77,6 +78,7 @@ class SenseHatSensor(SensorEntity):
|
||||||
self._unit_of_measurement = SENSOR_TYPES[sensor_types][1]
|
self._unit_of_measurement = SENSOR_TYPES[sensor_types][1]
|
||||||
self.type = sensor_types
|
self.type = sensor_types
|
||||||
self._state = None
|
self._state = None
|
||||||
|
self._attr_device_class = SENSOR_TYPES[sensor_types][2]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
|
|
@ -11,6 +11,7 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_MONITORED_CONDITIONS,
|
CONF_MONITORED_CONDITIONS,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
PRECISION_TENTHS,
|
PRECISION_TENTHS,
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
|
@ -119,6 +120,8 @@ class SHTSensor(SensorEntity):
|
||||||
class SHTSensorTemperature(SHTSensor):
|
class SHTSensorTemperature(SHTSensor):
|
||||||
"""Representation of a temperature sensor."""
|
"""Representation of a temperature sensor."""
|
||||||
|
|
||||||
|
_attr_device_class = DEVICE_CLASS_TEMPERATURE
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def unit_of_measurement(self):
|
def unit_of_measurement(self):
|
||||||
"""Return the unit of measurement."""
|
"""Return the unit of measurement."""
|
||||||
|
|
|
@ -12,6 +12,7 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_MAC,
|
CONF_MAC,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
EVENT_HOMEASSISTANT_STOP,
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
STATE_UNKNOWN,
|
STATE_UNKNOWN,
|
||||||
|
@ -90,6 +91,7 @@ class SkybeaconHumid(SensorEntity):
|
||||||
class SkybeaconTemp(SensorEntity):
|
class SkybeaconTemp(SensorEntity):
|
||||||
"""Representation of a Skybeacon temperature sensor."""
|
"""Representation of a Skybeacon temperature sensor."""
|
||||||
|
|
||||||
|
_attr_device_class = DEVICE_CLASS_TEMPERATURE
|
||||||
_attr_unit_of_measurement = TEMP_CELSIUS
|
_attr_unit_of_measurement = TEMP_CELSIUS
|
||||||
|
|
||||||
def __init__(self, name, mon):
|
def __init__(self, name, mon):
|
||||||
|
|
|
@ -13,6 +13,7 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_IP_ADDRESS,
|
CONF_IP_ADDRESS,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
ELECTRICAL_CURRENT_AMPERE,
|
ELECTRICAL_CURRENT_AMPERE,
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
FREQUENCY_HERTZ,
|
FREQUENCY_HERTZ,
|
||||||
|
@ -51,6 +52,7 @@ SENSOR_TYPES = {
|
||||||
FREQUENCY_HERTZ,
|
FREQUENCY_HERTZ,
|
||||||
"mdi:current-ac",
|
"mdi:current-ac",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
],
|
],
|
||||||
"current_power": [
|
"current_power": [
|
||||||
"currentPower",
|
"currentPower",
|
||||||
|
@ -58,6 +60,7 @@ SENSOR_TYPES = {
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
"mdi:solar-power",
|
"mdi:solar-power",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
],
|
],
|
||||||
"energy_this_month": [
|
"energy_this_month": [
|
||||||
"energyThisMonth",
|
"energyThisMonth",
|
||||||
|
@ -65,6 +68,7 @@ SENSOR_TYPES = {
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
"mdi:solar-power",
|
"mdi:solar-power",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
],
|
],
|
||||||
"energy_this_year": [
|
"energy_this_year": [
|
||||||
"energyThisYear",
|
"energyThisYear",
|
||||||
|
@ -72,6 +76,7 @@ SENSOR_TYPES = {
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
"mdi:solar-power",
|
"mdi:solar-power",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
],
|
],
|
||||||
"energy_today": [
|
"energy_today": [
|
||||||
"energyToday",
|
"energyToday",
|
||||||
|
@ -79,13 +84,15 @@ SENSOR_TYPES = {
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
"mdi:solar-power",
|
"mdi:solar-power",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
],
|
],
|
||||||
"inverter_temperature": [
|
"inverter_temperature": [
|
||||||
"invertertemperature",
|
"invertertemperature",
|
||||||
"Inverter Temperature",
|
"Inverter Temperature",
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
"mdi:thermometer",
|
None,
|
||||||
"operating_mode",
|
"operating_mode",
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
],
|
],
|
||||||
"lifetime_energy": [
|
"lifetime_energy": [
|
||||||
"energyTotal",
|
"energyTotal",
|
||||||
|
@ -93,6 +100,7 @@ SENSOR_TYPES = {
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
"mdi:solar-power",
|
"mdi:solar-power",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
],
|
],
|
||||||
"optimizer_connected": [
|
"optimizer_connected": [
|
||||||
"optimizers",
|
"optimizers",
|
||||||
|
@ -100,6 +108,7 @@ SENSOR_TYPES = {
|
||||||
"optimizers",
|
"optimizers",
|
||||||
"mdi:solar-panel",
|
"mdi:solar-panel",
|
||||||
"optimizers_connected",
|
"optimizers_connected",
|
||||||
|
None,
|
||||||
],
|
],
|
||||||
"optimizer_current": [
|
"optimizer_current": [
|
||||||
"optimizercurrent",
|
"optimizercurrent",
|
||||||
|
@ -107,6 +116,7 @@ SENSOR_TYPES = {
|
||||||
ELECTRICAL_CURRENT_AMPERE,
|
ELECTRICAL_CURRENT_AMPERE,
|
||||||
"mdi:solar-panel",
|
"mdi:solar-panel",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
],
|
],
|
||||||
"optimizer_power": [
|
"optimizer_power": [
|
||||||
"optimizerpower",
|
"optimizerpower",
|
||||||
|
@ -114,6 +124,7 @@ SENSOR_TYPES = {
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
"mdi:solar-panel",
|
"mdi:solar-panel",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
],
|
],
|
||||||
"optimizer_temperature": [
|
"optimizer_temperature": [
|
||||||
"optimizertemperature",
|
"optimizertemperature",
|
||||||
|
@ -121,6 +132,7 @@ SENSOR_TYPES = {
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
"mdi:solar-panel",
|
"mdi:solar-panel",
|
||||||
None,
|
None,
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
],
|
],
|
||||||
"optimizer_voltage": [
|
"optimizer_voltage": [
|
||||||
"optimizervoltage",
|
"optimizervoltage",
|
||||||
|
@ -128,6 +140,7 @@ SENSOR_TYPES = {
|
||||||
VOLT,
|
VOLT,
|
||||||
"mdi:solar-panel",
|
"mdi:solar-panel",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,7 +183,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
TEMP_FAHRENHEIT,
|
TEMP_FAHRENHEIT,
|
||||||
"mdi:thermometer",
|
"mdi:thermometer",
|
||||||
"operating_mode",
|
"operating_mode",
|
||||||
None,
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
]
|
]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -181,6 +194,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
"mdi:arrow-collapse-down",
|
"mdi:arrow-collapse-down",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
]
|
]
|
||||||
sensors["import_meter_reading"] = [
|
sensors["import_meter_reading"] = [
|
||||||
"totalEnergyimport",
|
"totalEnergyimport",
|
||||||
|
@ -188,6 +202,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
"mdi:counter",
|
"mdi:counter",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
]
|
]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
_LOGGER.debug("Import meter sensors are not created")
|
_LOGGER.debug("Import meter sensors are not created")
|
||||||
|
@ -200,6 +215,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
"mdi:arrow-expand-up",
|
"mdi:arrow-expand-up",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
]
|
]
|
||||||
sensors["export_meter_reading"] = [
|
sensors["export_meter_reading"] = [
|
||||||
"totalEnergyexport",
|
"totalEnergyexport",
|
||||||
|
@ -207,6 +223,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
"mdi:counter",
|
"mdi:counter",
|
||||||
None,
|
None,
|
||||||
|
None,
|
||||||
]
|
]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
_LOGGER.debug("Export meter sensors are not created")
|
_LOGGER.debug("Export meter sensors are not created")
|
||||||
|
@ -225,6 +242,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
sensor_info[2],
|
sensor_info[2],
|
||||||
sensor_info[3],
|
sensor_info[3],
|
||||||
sensor_info[4],
|
sensor_info[4],
|
||||||
|
sensor_info[5],
|
||||||
)
|
)
|
||||||
entities.append(sensor)
|
entities.append(sensor)
|
||||||
|
|
||||||
|
@ -234,7 +252,9 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
class SolarEdgeSensor(SensorEntity):
|
class SolarEdgeSensor(SensorEntity):
|
||||||
"""Representation of an SolarEdge Monitoring API sensor."""
|
"""Representation of an SolarEdge Monitoring API sensor."""
|
||||||
|
|
||||||
def __init__(self, platform_name, data, json_key, name, unit, icon, attr):
|
def __init__(
|
||||||
|
self, platform_name, data, json_key, name, unit, icon, attr, device_class
|
||||||
|
):
|
||||||
"""Initialize the sensor."""
|
"""Initialize the sensor."""
|
||||||
self._platform_name = platform_name
|
self._platform_name = platform_name
|
||||||
self._data = data
|
self._data = data
|
||||||
|
@ -245,6 +265,7 @@ class SolarEdgeSensor(SensorEntity):
|
||||||
self._unit_of_measurement = unit
|
self._unit_of_measurement = unit
|
||||||
self._icon = icon
|
self._icon = icon
|
||||||
self._attr = attr
|
self._attr = attr
|
||||||
|
self._attr_device_class = device_class
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
|
|
@ -11,6 +11,8 @@ from homeassistant.const import (
|
||||||
CONF_ID,
|
CONF_ID,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_PROTOCOL,
|
CONF_PROTOCOL,
|
||||||
|
DEVICE_CLASS_HUMIDITY,
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
)
|
)
|
||||||
|
@ -18,7 +20,9 @@ import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
DatatypeDescription = namedtuple("DatatypeDescription", ["name", "unit"])
|
DatatypeDescription = namedtuple(
|
||||||
|
"DatatypeDescription", ["name", "unit", "device_class"]
|
||||||
|
)
|
||||||
|
|
||||||
CONF_DATATYPE_MASK = "datatype_mask"
|
CONF_DATATYPE_MASK = "datatype_mask"
|
||||||
CONF_ONLY_NAMED = "only_named"
|
CONF_ONLY_NAMED = "only_named"
|
||||||
|
@ -58,20 +62,28 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
|
|
||||||
sensor_value_descriptions = {
|
sensor_value_descriptions = {
|
||||||
tellcore_constants.TELLSTICK_TEMPERATURE: DatatypeDescription(
|
tellcore_constants.TELLSTICK_TEMPERATURE: DatatypeDescription(
|
||||||
"temperature", config.get(CONF_TEMPERATURE_SCALE)
|
"temperature", config.get(CONF_TEMPERATURE_SCALE), DEVICE_CLASS_TEMPERATURE
|
||||||
),
|
),
|
||||||
tellcore_constants.TELLSTICK_HUMIDITY: DatatypeDescription(
|
tellcore_constants.TELLSTICK_HUMIDITY: DatatypeDescription(
|
||||||
"humidity", PERCENTAGE
|
"humidity",
|
||||||
|
PERCENTAGE,
|
||||||
|
DEVICE_CLASS_HUMIDITY,
|
||||||
|
),
|
||||||
|
tellcore_constants.TELLSTICK_RAINRATE: DatatypeDescription(
|
||||||
|
"rain rate", "", None
|
||||||
|
),
|
||||||
|
tellcore_constants.TELLSTICK_RAINTOTAL: DatatypeDescription(
|
||||||
|
"rain total", "", None
|
||||||
),
|
),
|
||||||
tellcore_constants.TELLSTICK_RAINRATE: DatatypeDescription("rain rate", ""),
|
|
||||||
tellcore_constants.TELLSTICK_RAINTOTAL: DatatypeDescription("rain total", ""),
|
|
||||||
tellcore_constants.TELLSTICK_WINDDIRECTION: DatatypeDescription(
|
tellcore_constants.TELLSTICK_WINDDIRECTION: DatatypeDescription(
|
||||||
"wind direction", ""
|
"wind direction", "", None
|
||||||
),
|
),
|
||||||
tellcore_constants.TELLSTICK_WINDAVERAGE: DatatypeDescription(
|
tellcore_constants.TELLSTICK_WINDAVERAGE: DatatypeDescription(
|
||||||
"wind average", ""
|
"wind average", "", None
|
||||||
|
),
|
||||||
|
tellcore_constants.TELLSTICK_WINDGUST: DatatypeDescription(
|
||||||
|
"wind gust", "", None
|
||||||
),
|
),
|
||||||
tellcore_constants.TELLSTICK_WINDGUST: DatatypeDescription("wind gust", ""),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -6,7 +6,7 @@ import voluptuous as vol
|
||||||
from xbee_helper.exceptions import ZigBeeException, ZigBeeTxFailure
|
from xbee_helper.exceptions import ZigBeeException, ZigBeeTxFailure
|
||||||
|
|
||||||
from homeassistant.components.sensor import SensorEntity
|
from homeassistant.components.sensor import SensorEntity
|
||||||
from homeassistant.const import CONF_TYPE, TEMP_CELSIUS
|
from homeassistant.const import CONF_TYPE, DEVICE_CLASS_TEMPERATURE, TEMP_CELSIUS
|
||||||
|
|
||||||
from . import DOMAIN, PLATFORM_SCHEMA, XBeeAnalogIn, XBeeAnalogInConfig, XBeeConfig
|
from . import DOMAIN, PLATFORM_SCHEMA, XBeeAnalogIn, XBeeAnalogInConfig, XBeeConfig
|
||||||
|
|
||||||
|
@ -46,6 +46,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
class XBeeTemperatureSensor(SensorEntity):
|
class XBeeTemperatureSensor(SensorEntity):
|
||||||
"""Representation of XBee Pro temperature sensor."""
|
"""Representation of XBee Pro temperature sensor."""
|
||||||
|
|
||||||
|
_attr_device_class = DEVICE_CLASS_TEMPERATURE
|
||||||
_attr_unit_of_measurement = TEMP_CELSIUS
|
_attr_unit_of_measurement = TEMP_CELSIUS
|
||||||
|
|
||||||
def __init__(self, config, device):
|
def __init__(self, config, device):
|
||||||
|
|
|
@ -19,6 +19,7 @@ from homeassistant.const import (
|
||||||
CONF_MONITORED_CONDITIONS,
|
CONF_MONITORED_CONDITIONS,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
DEGREE,
|
DEGREE,
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
LENGTH_METERS,
|
LENGTH_METERS,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
PRESSURE_HPA,
|
PRESSURE_HPA,
|
||||||
|
@ -43,43 +44,65 @@ MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=10)
|
||||||
VIENNA_TIME_ZONE = dt_util.get_time_zone("Europe/Vienna")
|
VIENNA_TIME_ZONE = dt_util.get_time_zone("Europe/Vienna")
|
||||||
|
|
||||||
SENSOR_TYPES = {
|
SENSOR_TYPES = {
|
||||||
"pressure": ("Pressure", PRESSURE_HPA, "LDstat hPa", float),
|
"pressure": ("Pressure", PRESSURE_HPA, None, "LDstat hPa", float),
|
||||||
"pressure_sealevel": ("Pressure at Sea Level", PRESSURE_HPA, "LDred hPa", float),
|
"pressure_sealevel": (
|
||||||
"humidity": ("Humidity", PERCENTAGE, "RF %", int),
|
"Pressure at Sea Level",
|
||||||
|
PRESSURE_HPA,
|
||||||
|
None,
|
||||||
|
"LDred hPa",
|
||||||
|
float,
|
||||||
|
),
|
||||||
|
"humidity": ("Humidity", PERCENTAGE, None, "RF %", int),
|
||||||
"wind_speed": (
|
"wind_speed": (
|
||||||
"Wind Speed",
|
"Wind Speed",
|
||||||
SPEED_KILOMETERS_PER_HOUR,
|
SPEED_KILOMETERS_PER_HOUR,
|
||||||
|
None,
|
||||||
f"WG {SPEED_KILOMETERS_PER_HOUR}",
|
f"WG {SPEED_KILOMETERS_PER_HOUR}",
|
||||||
float,
|
float,
|
||||||
),
|
),
|
||||||
"wind_bearing": ("Wind Bearing", DEGREE, f"WR {DEGREE}", int),
|
"wind_bearing": ("Wind Bearing", DEGREE, None, f"WR {DEGREE}", int),
|
||||||
"wind_max_speed": (
|
"wind_max_speed": (
|
||||||
"Top Wind Speed",
|
"Top Wind Speed",
|
||||||
|
None,
|
||||||
SPEED_KILOMETERS_PER_HOUR,
|
SPEED_KILOMETERS_PER_HOUR,
|
||||||
f"WSG {SPEED_KILOMETERS_PER_HOUR}",
|
f"WSG {SPEED_KILOMETERS_PER_HOUR}",
|
||||||
float,
|
float,
|
||||||
),
|
),
|
||||||
"wind_max_bearing": ("Top Wind Bearing", DEGREE, f"WSR {DEGREE}", int),
|
"wind_max_bearing": ("Top Wind Bearing", DEGREE, None, f"WSR {DEGREE}", int),
|
||||||
"sun_last_hour": ("Sun Last Hour", PERCENTAGE, f"SO {PERCENTAGE}", int),
|
"sun_last_hour": ("Sun Last Hour", PERCENTAGE, None, f"SO {PERCENTAGE}", int),
|
||||||
"temperature": ("Temperature", TEMP_CELSIUS, f"T {TEMP_CELSIUS}", float),
|
"temperature": (
|
||||||
|
"Temperature",
|
||||||
|
TEMP_CELSIUS,
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
|
f"T {TEMP_CELSIUS}",
|
||||||
|
float,
|
||||||
|
),
|
||||||
"precipitation": (
|
"precipitation": (
|
||||||
"Precipitation",
|
"Precipitation",
|
||||||
|
None,
|
||||||
f"l/{AREA_SQUARE_METERS}",
|
f"l/{AREA_SQUARE_METERS}",
|
||||||
f"N l/{AREA_SQUARE_METERS}",
|
f"N l/{AREA_SQUARE_METERS}",
|
||||||
float,
|
float,
|
||||||
),
|
),
|
||||||
"dewpoint": ("Dew Point", TEMP_CELSIUS, f"TP {TEMP_CELSIUS}", float),
|
"dewpoint": (
|
||||||
|
"Dew Point",
|
||||||
|
TEMP_CELSIUS,
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
|
f"TP {TEMP_CELSIUS}",
|
||||||
|
float,
|
||||||
|
),
|
||||||
# The following probably not useful for general consumption,
|
# The following probably not useful for general consumption,
|
||||||
# but we need them to fill in internal attributes
|
# but we need them to fill in internal attributes
|
||||||
"station_name": ("Station Name", None, "Name", str),
|
"station_name": ("Station Name", None, None, "Name", str),
|
||||||
"station_elevation": (
|
"station_elevation": (
|
||||||
"Station Elevation",
|
"Station Elevation",
|
||||||
LENGTH_METERS,
|
LENGTH_METERS,
|
||||||
|
None,
|
||||||
f"Höhe {LENGTH_METERS}",
|
f"Höhe {LENGTH_METERS}",
|
||||||
int,
|
int,
|
||||||
),
|
),
|
||||||
"update_date": ("Update Date", None, "Datum", str),
|
"update_date": ("Update Date", None, None, "Datum", str),
|
||||||
"update_time": ("Update Time", None, "Zeit", str),
|
"update_time": ("Update Time", None, None, "Zeit", str),
|
||||||
}
|
}
|
||||||
|
|
||||||
PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend(
|
PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend(
|
||||||
|
@ -140,6 +163,7 @@ class ZamgSensor(SensorEntity):
|
||||||
self.probe = probe
|
self.probe = probe
|
||||||
self.client_name = name
|
self.client_name = name
|
||||||
self.variable = variable
|
self.variable = variable
|
||||||
|
self._attr_device_class = SENSOR_TYPES[variable][2]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
@ -217,6 +241,7 @@ class ZamgData:
|
||||||
api_fields = {
|
api_fields = {
|
||||||
col_heading: (standard_name, dtype)
|
col_heading: (standard_name, dtype)
|
||||||
for standard_name, (
|
for standard_name, (
|
||||||
|
_,
|
||||||
_,
|
_,
|
||||||
_,
|
_,
|
||||||
col_heading,
|
col_heading,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"""Support for Z-Wave sensors."""
|
"""Support for Z-Wave sensors."""
|
||||||
from homeassistant.components.sensor import DEVICE_CLASS_BATTERY, DOMAIN, SensorEntity
|
from homeassistant.components.sensor import DEVICE_CLASS_BATTERY, DOMAIN, SensorEntity
|
||||||
from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT
|
from homeassistant.const import DEVICE_CLASS_TEMPERATURE, TEMP_CELSIUS, TEMP_FAHRENHEIT
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
|
|
||||||
|
@ -79,6 +79,13 @@ class ZWaveMultilevelSensor(ZWaveSensor):
|
||||||
|
|
||||||
return self._state
|
return self._state
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_class(self):
|
||||||
|
"""Return the class of this device."""
|
||||||
|
if self._units in ["C", "F"]:
|
||||||
|
return DEVICE_CLASS_TEMPERATURE
|
||||||
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def unit_of_measurement(self):
|
def unit_of_measurement(self):
|
||||||
"""Return the unit the value is expressed in."""
|
"""Return the unit the value is expressed in."""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue