Add support for Shelly Plus Addon sensors (#79954)

This commit is contained in:
Shay Levy 2022-10-15 12:17:53 +03:00 committed by GitHub
parent eaeee96d75
commit e1520a0d14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 25 deletions

View file

@ -158,9 +158,6 @@ KELVIN_MIN_VALUE_COLOR: Final = 3000
UPTIME_DEVIATION: Final = 5
# Max RPC switch/input key instances
MAX_RPC_KEY_INSTANCES = 4
# Time to wait before reloading entry upon device config change
ENTRY_RELOAD_COOLDOWN = 60

View file

@ -348,7 +348,7 @@ RPC_SENSORS: Final = {
"temperature": RpcSensorDescription(
key="switch",
sub_key="temperature",
name="Temperature",
name="Device Temperature",
native_unit_of_measurement=TEMP_CELSIUS,
value=lambda status, _: round(status["tC"], 1),
device_class=SensorDeviceClass.TEMPERATURE,
@ -358,7 +358,7 @@ RPC_SENSORS: Final = {
use_polling_coordinator=True,
),
"temperature_0": RpcSensorDescription(
key="temperature:0",
key="temperature",
sub_key="tC",
name="Temperature",
native_unit_of_measurement=TEMP_CELSIUS,
@ -389,7 +389,7 @@ RPC_SENSORS: Final = {
use_polling_coordinator=True,
),
"humidity_0": RpcSensorDescription(
key="humidity:0",
key="humidity",
sub_key="rh",
name="Humidity",
native_unit_of_measurement=PERCENTAGE,
@ -410,6 +410,26 @@ RPC_SENSORS: Final = {
entity_registry_enabled_default=True,
entity_category=EntityCategory.DIAGNOSTIC,
),
"voltmeter": RpcSensorDescription(
key="voltmeter",
sub_key="voltage",
name="Voltmeter",
native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT,
value=lambda status, _: round(float(status), 2),
device_class=SensorDeviceClass.VOLTAGE,
state_class=SensorStateClass.MEASUREMENT,
entity_registry_enabled_default=True,
available=lambda status: status is not None,
),
"analoginput": RpcSensorDescription(
key="analoginput",
sub_key="percent",
name="Analog Input",
native_unit_of_measurement=PERCENTAGE,
device_class=SensorDeviceClass.BATTERY,
state_class=SensorStateClass.MEASUREMENT,
entity_registry_enabled_default=True,
),
}

View file

@ -21,7 +21,6 @@ from .const import (
DEFAULT_COAP_PORT,
DOMAIN,
LOGGER,
MAX_RPC_KEY_INSTANCES,
RPC_INPUTS_EVENTS_TYPES,
SHBTN_INPUTS_EVENTS_TYPES,
SHBTN_MODELS,
@ -303,28 +302,12 @@ def get_rpc_key_instances(keys_dict: dict[str, Any], key: str) -> list[str]:
if key == "switch" and "cover:0" in keys_dict:
key = "cover"
keys_list: list[str] = []
for i in range(MAX_RPC_KEY_INSTANCES):
key_inst = f"{key}:{i}"
if key_inst not in keys_dict:
return keys_list
keys_list.append(key_inst)
return keys_list
return [k for k in keys_dict if k.startswith(key)]
def get_rpc_key_ids(keys_dict: dict[str, Any], key: str) -> list[int]:
"""Return list of key ids for RPC device from a dict."""
key_ids: list[int] = []
for i in range(MAX_RPC_KEY_INSTANCES):
key_inst = f"{key}:{i}"
if key_inst not in keys_dict:
return key_ids
key_ids.append(i)
return key_ids
return [int(k.split(":")[1]) for k in keys_dict if k.startswith(key)]
def is_rpc_momentary_input(