Add Reolink bitrate and framerate select entities (#131571)

This commit is contained in:
starkillerOG 2024-11-26 10:58:57 +01:00 committed by GitHub
parent 666b908242
commit 5f7c7b323e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 73 additions and 1 deletions

View File

@ -263,6 +263,18 @@
"state": {
"off": "mdi:music-note-off"
}
},
"main_frame_rate": {
"default": "mdi:play-speed"
},
"sub_frame_rate": {
"default": "mdi:play-speed"
},
"main_bit_rate": {
"default": "mdi:play-speed"
},
"sub_bit_rate": {
"default": "mdi:play-speed"
}
},
"sensor": {

View File

@ -21,7 +21,7 @@ from reolink_aio.api import (
from reolink_aio.exceptions import InvalidParameterError, ReolinkError
from homeassistant.components.select import SelectEntity, SelectEntityDescription
from homeassistant.const import EntityCategory
from homeassistant.const import EntityCategory, UnitOfDataRate, UnitOfFrequency
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError, ServiceValidationError
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@ -175,6 +175,54 @@ SELECT_ENTITIES = (
value=lambda api, ch: HDREnum(api.HDR_state(ch)).name,
method=lambda api, ch, name: api.set_HDR(ch, HDREnum[name].value),
),
ReolinkSelectEntityDescription(
key="main_frame_rate",
cmd_key="GetEnc",
translation_key="main_frame_rate",
entity_category=EntityCategory.CONFIG,
entity_registry_enabled_default=False,
unit_of_measurement=UnitOfFrequency.HERTZ,
get_options=lambda api, ch: [str(v) for v in api.frame_rate_list(ch, "main")],
supported=lambda api, ch: api.supported(ch, "frame_rate"),
value=lambda api, ch: str(api.frame_rate(ch, "main")),
method=lambda api, ch, value: api.set_frame_rate(ch, int(value), "main"),
),
ReolinkSelectEntityDescription(
key="sub_frame_rate",
cmd_key="GetEnc",
translation_key="sub_frame_rate",
entity_category=EntityCategory.CONFIG,
entity_registry_enabled_default=False,
unit_of_measurement=UnitOfFrequency.HERTZ,
get_options=lambda api, ch: [str(v) for v in api.frame_rate_list(ch, "sub")],
supported=lambda api, ch: api.supported(ch, "frame_rate"),
value=lambda api, ch: str(api.frame_rate(ch, "sub")),
method=lambda api, ch, value: api.set_frame_rate(ch, int(value), "sub"),
),
ReolinkSelectEntityDescription(
key="main_bit_rate",
cmd_key="GetEnc",
translation_key="main_bit_rate",
entity_category=EntityCategory.CONFIG,
entity_registry_enabled_default=False,
unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND,
get_options=lambda api, ch: [str(v) for v in api.bit_rate_list(ch, "main")],
supported=lambda api, ch: api.supported(ch, "bit_rate"),
value=lambda api, ch: str(api.bit_rate(ch, "main")),
method=lambda api, ch, value: api.set_bit_rate(ch, int(value), "main"),
),
ReolinkSelectEntityDescription(
key="sub_bit_rate",
cmd_key="GetEnc",
translation_key="sub_bit_rate",
entity_category=EntityCategory.CONFIG,
entity_registry_enabled_default=False,
unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND,
get_options=lambda api, ch: [str(v) for v in api.bit_rate_list(ch, "sub")],
supported=lambda api, ch: api.supported(ch, "bit_rate"),
value=lambda api, ch: str(api.bit_rate(ch, "sub")),
method=lambda api, ch, value: api.set_bit_rate(ch, int(value), "sub"),
),
)
CHIME_SELECT_ENTITIES = (

View File

@ -653,6 +653,18 @@
"moonlight": "[%key:component::reolink::entity::select::motion_tone::state::moonlight%]",
"waybackhome": "[%key:component::reolink::entity::select::motion_tone::state::waybackhome%]"
}
},
"main_frame_rate": {
"name": "Clear frame rate"
},
"sub_frame_rate": {
"name": "Fluent frame rate"
},
"main_bit_rate": {
"name": "Clear bit rate"
},
"sub_bit_rate": {
"name": "Fluent bit rate"
}
},
"sensor": {