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:
parent
480066ba63
commit
7554c8d6c5
15 changed files with 84 additions and 27 deletions
|
@ -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,
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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]],
|
||||
]
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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),
|
||||
]
|
||||
)
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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}",
|
||||
}
|
||||
|
|
|
@ -26,7 +26,6 @@ ATTR_UDP_PORT = "udp_port"
|
|||
|
||||
# Units of measurement
|
||||
CURRENT_MA = "mA"
|
||||
SIGNAL_DBM = "dBm"
|
||||
|
||||
# Services
|
||||
SERVICE_EFFECT = "effect"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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,
|
||||
),
|
||||
|
|
|
@ -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."""
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue