Add missing unit for signal strength (#40436)

* Added missing unit for signal strength

* Added one more unit

* Replaced string with variable

* Fixed wrong import

* Fix import

* Replaced string with variable

* Fixed wrong import

* Apply suggestions from code review

* Black

* Again a fix :-(

* iSort

* iSort after merge

Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
This commit is contained in:
Simone Chemelli 2020-10-01 16:14:29 +02:00 committed by GitHub
parent 480066ba63
commit 7554c8d6c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 84 additions and 27 deletions

View File

@ -4,6 +4,7 @@ import logging
from homeassistant.const import (
DEVICE_CLASS_SIGNAL_STRENGTH,
DEVICE_CLASS_TEMPERATURE,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
TEMP_FAHRENHEIT,
)
from homeassistant.helpers.entity import Entity
@ -14,7 +15,11 @@ _LOGGER = logging.getLogger(__name__)
SENSORS = {
TYPE_TEMPERATURE: ["Temperature", TEMP_FAHRENHEIT, DEVICE_CLASS_TEMPERATURE],
TYPE_WIFI_STRENGTH: ["Wifi Signal", "dBm", DEVICE_CLASS_SIGNAL_STRENGTH],
TYPE_WIFI_STRENGTH: [
"Wifi Signal",
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
DEVICE_CLASS_SIGNAL_STRENGTH,
],
}

View File

@ -10,6 +10,7 @@ from homeassistant.const import (
DEVICE_CLASS_SIGNAL_STRENGTH,
DEVICE_CLASS_TEMPERATURE,
PERCENTAGE,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
TEMP_CELSIUS,
)
from homeassistant.helpers.entity import Entity
@ -35,7 +36,13 @@ SENSOR_TYPES = [
["temperature", TEMP_CELSIUS, None, DEVICE_CLASS_TEMPERATURE, [CANARY_PRO]],
["humidity", PERCENTAGE, None, DEVICE_CLASS_HUMIDITY, [CANARY_PRO]],
["air_quality", None, "mdi:weather-windy", None, [CANARY_PRO]],
["wifi", "dBm", None, DEVICE_CLASS_SIGNAL_STRENGTH, [CANARY_FLEX]],
[
"wifi",
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
None,
DEVICE_CLASS_SIGNAL_STRENGTH,
[CANARY_FLEX],
],
["battery", PERCENTAGE, None, DEVICE_CLASS_BATTERY, [CANARY_FLEX]],
]

View File

@ -1,7 +1,11 @@
"""Define possible sensor types."""
from homeassistant.components.binary_sensor import DEVICE_CLASS_CONNECTIVITY
from homeassistant.const import DATA_MEBIBYTES, PERCENTAGE
from homeassistant.const import (
DATA_MEBIBYTES,
PERCENTAGE,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
)
SENSOR_SMS = "sms"
SENSOR_SMS_TOTAL = "sms_total"
@ -12,8 +16,8 @@ SENSOR_UNITS = {
SENSOR_SMS_TOTAL: "messages",
SENSOR_USAGE: DATA_MEBIBYTES,
"radio_quality": PERCENTAGE,
"rx_level": "dBm",
"tx_level": "dBm",
"rx_level": SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
"tx_level": SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
"upstream": None,
"connection_text": None,
"connection_type": None,

View File

@ -27,6 +27,7 @@ from homeassistant.const import (
PERCENTAGE,
POWER_WATT,
PRESSURE_HPA,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
SPEED_METERS_PER_SECOND,
TEMP_CELSIUS,
TIME_HOURS,
@ -86,7 +87,7 @@ DATA_TYPES = OrderedDict(
("Voltage", VOLT),
("Current", ELECTRICAL_CURRENT_AMPERE),
("Battery numeric", PERCENTAGE),
("Rssi numeric", "dBm"),
("Rssi numeric", SIGNAL_STRENGTH_DECIBELS_MILLIWATT),
]
)

View File

@ -1,7 +1,7 @@
"""This component provides HA sensor support for Ring Door Bell/Chimes."""
import logging
from homeassistant.const import PERCENTAGE
from homeassistant.const import PERCENTAGE, SIGNAL_STRENGTH_DECIBELS_MILLIWATT
from homeassistant.core import callback
from homeassistant.helpers.entity import Entity
from homeassistant.helpers.icon import icon_for_battery_level
@ -256,7 +256,7 @@ SENSOR_TYPES = {
"wifi_signal_strength": [
"WiFi Signal Strength",
["chimes", "doorbots", "authorized_doorbots", "stickup_cams"],
"dBm",
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
"wifi",
None,
"signal_strength",

View File

@ -3,7 +3,7 @@ import logging
import gammu # pylint: disable=import-error, no-member
from homeassistant.const import DEVICE_CLASS_SIGNAL_STRENGTH
from homeassistant.const import DEVICE_CLASS_SIGNAL_STRENGTH, SIGNAL_STRENGTH_DECIBELS
from homeassistant.helpers.entity import Entity
from .const import DOMAIN, SMS_GATEWAY
@ -50,7 +50,7 @@ class GSMSignalSensor(Entity):
@property
def unit_of_measurement(self):
"""Return the unit the value is expressed in."""
return "dB"
return SIGNAL_STRENGTH_DECIBELS
@property
def device_class(self):

View File

@ -12,6 +12,7 @@ from homeassistant.const import (
CONF_PASSWORD,
CONF_USERNAME,
PERCENTAGE,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
VOLT,
)
import homeassistant.helpers.config_validation as cv
@ -281,7 +282,7 @@ class WirelessTagBaseSensor(Entity):
return {
ATTR_BATTERY_LEVEL: int(self._tag.battery_remaining * 100),
ATTR_VOLTAGE: f"{self._tag.battery_volts:.2f}{VOLT}",
ATTR_TAG_SIGNAL_STRENGTH: f"{self._tag.signal_strength}dBm",
ATTR_TAG_SIGNAL_STRENGTH: f"{self._tag.signal_strength}{SIGNAL_STRENGTH_DECIBELS_MILLIWATT}",
ATTR_TAG_OUT_OF_RANGE: not self._tag.is_in_range,
ATTR_TAG_POWER_CONSUMPTION: f"{self._tag.power_consumption:.2f}{PERCENTAGE}",
}

View File

@ -26,7 +26,6 @@ ATTR_UDP_PORT = "udp_port"
# Units of measurement
CURRENT_MA = "mA"
SIGNAL_DBM = "dBm"
# Services
SERVICE_EFFECT = "effect"

View File

@ -10,13 +10,14 @@ from homeassistant.const import (
DEVICE_CLASS_SIGNAL_STRENGTH,
DEVICE_CLASS_TIMESTAMP,
PERCENTAGE,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
)
from homeassistant.helpers.entity import Entity
from homeassistant.helpers.typing import HomeAssistantType
from homeassistant.util.dt import utcnow
from . import WLEDDataUpdateCoordinator, WLEDDeviceEntity
from .const import ATTR_LED_COUNT, ATTR_MAX_POWER, CURRENT_MA, DOMAIN, SIGNAL_DBM
from .const import ATTR_LED_COUNT, ATTR_MAX_POWER, CURRENT_MA, DOMAIN
_LOGGER = logging.getLogger(__name__)
@ -192,7 +193,7 @@ class WLEDWifiRSSISensor(WLEDSensor):
icon="mdi:wifi",
key="wifi_rssi",
name=f"{coordinator.data.info.name} Wi-Fi RSSI",
unit_of_measurement=SIGNAL_DBM,
unit_of_measurement=SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
)
@property

View File

@ -472,6 +472,10 @@ SPEED_METERS_PER_SECOND = f"{LENGTH_METERS}/{TIME_SECONDS}"
SPEED_KILOMETERS_PER_HOUR = f"{LENGTH_KILOMETERS}/{TIME_HOURS}"
SPEED_MILES_PER_HOUR = "mph"
# Signal_strength units
SIGNAL_STRENGTH_DECIBELS = "dB"
SIGNAL_STRENGTH_DECIBELS_MILLIWATT = "dBm"
# Data units
DATA_BITS = "bit"
DATA_KILOBITS = "kbit"

View File

@ -15,6 +15,7 @@ from homeassistant.const import (
DEVICE_CLASS_SIGNAL_STRENGTH,
DEVICE_CLASS_TEMPERATURE,
PERCENTAGE,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
TEMP_CELSIUS,
)
from homeassistant.setup import async_setup_component
@ -187,7 +188,7 @@ async def test_sensors_flex(hass, canary) -> None:
"home_dining_room_wifi": (
"20_wifi",
"-57.0",
"dBm",
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
DEVICE_CLASS_SIGNAL_STRENGTH,
None,
),

View File

@ -3,11 +3,19 @@
import pytest
from homeassistant.components.huawei_lte import sensor
from homeassistant.const import (
SIGNAL_STRENGTH_DECIBELS,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
)
@pytest.mark.parametrize(
("value", "expected"),
(("-71 dBm", (-71, "dBm")), ("15dB", (15, "dB")), (">=-51dBm", (-51, "dBm"))),
(
("-71 dBm", (-71, SIGNAL_STRENGTH_DECIBELS_MILLIWATT)),
("15dB", (15, SIGNAL_STRENGTH_DECIBELS)),
(">=-51dBm", (-51, SIGNAL_STRENGTH_DECIBELS_MILLIWATT)),
),
)
def test_format_default(value, expected):
"""Test that default formatter copes with expected values."""

View File

@ -3,7 +3,12 @@ import pytest
from homeassistant.components.rfxtrx import DOMAIN
from homeassistant.components.rfxtrx.const import ATTR_EVENT
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, PERCENTAGE, TEMP_CELSIUS
from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
PERCENTAGE,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
TEMP_CELSIUS,
)
from homeassistant.core import State
from tests.common import MockConfigEntry, mock_restore_cache
@ -100,7 +105,10 @@ async def test_one_sensor_no_datatype(hass, rfxtrx):
assert state
assert state.state == "unknown"
assert state.attributes.get("friendly_name") == f"{base_name} Rssi numeric"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== SIGNAL_STRENGTH_DECIBELS_MILLIWATT
)
state = hass.states.get(f"{base_id}_battery_numeric")
assert state
@ -174,7 +182,10 @@ async def test_discover_sensor(hass, rfxtrx_automatic):
state = hass.states.get(f"{base_id}_rssi_numeric")
assert state
assert state.state == "-64"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== SIGNAL_STRENGTH_DECIBELS_MILLIWATT
)
state = hass.states.get(f"{base_id}_temperature")
assert state
@ -203,7 +214,10 @@ async def test_discover_sensor(hass, rfxtrx_automatic):
state = hass.states.get(f"{base_id}_rssi_numeric")
assert state
assert state.state == "-64"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== SIGNAL_STRENGTH_DECIBELS_MILLIWATT
)
state = hass.states.get(f"{base_id}_temperature")
assert state
@ -232,7 +246,10 @@ async def test_discover_sensor(hass, rfxtrx_automatic):
state = hass.states.get(f"{base_id}_rssi_numeric")
assert state
assert state.state == "-64"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== SIGNAL_STRENGTH_DECIBELS_MILLIWATT
)
state = hass.states.get(f"{base_id}_temperature")
assert state
@ -315,13 +332,19 @@ async def test_rssi_sensor(hass, rfxtrx):
assert state
assert state.state == "unknown"
assert state.attributes.get("friendly_name") == "PT2262 22670e Rssi numeric"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== SIGNAL_STRENGTH_DECIBELS_MILLIWATT
)
state = hass.states.get("sensor.ac_213c7f2_48_rssi_numeric")
assert state
assert state.state == "unknown"
assert state.attributes.get("friendly_name") == "AC 213c7f2:48 Rssi numeric"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== SIGNAL_STRENGTH_DECIBELS_MILLIWATT
)
await rfxtrx.signal("0913000022670e013b70")
await rfxtrx.signal("0b1100cd0213c7f230010f71")

View File

@ -12,7 +12,6 @@ from homeassistant.components.wled.const import (
ATTR_MAX_POWER,
CURRENT_MA,
DOMAIN,
SIGNAL_DBM,
)
from homeassistant.const import (
ATTR_DEVICE_CLASS,
@ -20,6 +19,7 @@ from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
DATA_BYTES,
PERCENTAGE,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
)
from homeassistant.core import HomeAssistant
from homeassistant.util import dt as dt_util
@ -138,7 +138,10 @@ async def test_sensors(
state = hass.states.get("sensor.wled_rgb_light_wifi_rssi")
assert state
assert state.attributes.get(ATTR_ICON) == "mdi:wifi"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == SIGNAL_DBM
assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== SIGNAL_STRENGTH_DECIBELS_MILLIWATT
)
assert state.state == "-62"
entry = registry.async_get("sensor.wled_rgb_light_wifi_rssi")

View File

@ -4,7 +4,7 @@ Provide a mock sensor platform.
Call init before using it in your tests to ensure clean test data.
"""
import homeassistant.components.sensor as sensor
from homeassistant.const import PERCENTAGE, PRESSURE_HPA
from homeassistant.const import PERCENTAGE, PRESSURE_HPA, SIGNAL_STRENGTH_DECIBELS
from tests.common import MockEntity
@ -15,7 +15,7 @@ UNITS_OF_MEASUREMENT = {
sensor.DEVICE_CLASS_BATTERY: PERCENTAGE, # % of battery that is left
sensor.DEVICE_CLASS_HUMIDITY: PERCENTAGE, # % of humidity in the air
sensor.DEVICE_CLASS_ILLUMINANCE: "lm", # current light level (lx/lm)
sensor.DEVICE_CLASS_SIGNAL_STRENGTH: "dB", # signal strength (dB/dBm)
sensor.DEVICE_CLASS_SIGNAL_STRENGTH: SIGNAL_STRENGTH_DECIBELS, # signal strength (dB/dBm)
sensor.DEVICE_CLASS_TEMPERATURE: "C", # temperature (C/F)
sensor.DEVICE_CLASS_TIMESTAMP: "hh:mm:ss", # timestamp (ISO8601)
sensor.DEVICE_CLASS_PRESSURE: PRESSURE_HPA, # pressure (hPa/mbar)