Add Reolink pre-recording entities (#149522)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
starkillerOG 2025-07-28 16:12:53 +02:00 committed by GitHub
parent 8fc8220924
commit 96529ec245
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 84 additions and 1 deletions

View File

@ -300,6 +300,12 @@
}, },
"image_hue": { "image_hue": {
"default": "mdi:image-edit" "default": "mdi:image-edit"
},
"pre_record_time": {
"default": "mdi:history"
},
"pre_record_battery_stop": {
"default": "mdi:history"
} }
}, },
"select": { "select": {
@ -390,6 +396,9 @@
"packing_time": { "packing_time": {
"default": "mdi:record-rec" "default": "mdi:record-rec"
}, },
"pre_record_fps": {
"default": "mdi:history"
},
"post_rec_time": { "post_rec_time": {
"default": "mdi:record-rec" "default": "mdi:record-rec"
} }
@ -470,6 +479,9 @@
"manual_record": { "manual_record": {
"default": "mdi:record-rec" "default": "mdi:record-rec"
}, },
"pre_record": {
"default": "mdi:history"
},
"hub_ringtone_on_event": { "hub_ringtone_on_event": {
"default": "mdi:music-note" "default": "mdi:music-note"
}, },

View File

@ -14,7 +14,7 @@ from homeassistant.components.number import (
NumberEntityDescription, NumberEntityDescription,
NumberMode, NumberMode,
) )
from homeassistant.const import EntityCategory, UnitOfTime from homeassistant.const import PERCENTAGE, EntityCategory, UnitOfTime
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
@ -542,6 +542,38 @@ NUMBER_ENTITIES = (
value=lambda api, ch: api.image_hue(ch), value=lambda api, ch: api.image_hue(ch),
method=lambda api, ch, value: api.set_image(ch, hue=int(value)), method=lambda api, ch, value: api.set_image(ch, hue=int(value)),
), ),
ReolinkNumberEntityDescription(
key="pre_record_time",
cmd_key="594",
translation_key="pre_record_time",
entity_category=EntityCategory.CONFIG,
entity_registry_enabled_default=False,
native_step=1,
native_min_value=2,
native_max_value=10,
native_unit_of_measurement=UnitOfTime.SECONDS,
supported=lambda api, ch: api.supported(ch, "pre_record"),
value=lambda api, ch: api.baichuan.pre_record_time(ch),
method=lambda api, ch, value: api.baichuan.set_pre_recording(
ch, time=int(value)
),
),
ReolinkNumberEntityDescription(
key="pre_record_battery_stop",
cmd_key="594",
translation_key="pre_record_battery_stop",
entity_category=EntityCategory.CONFIG,
entity_registry_enabled_default=False,
native_step=1,
native_min_value=10,
native_max_value=80,
native_unit_of_measurement=PERCENTAGE,
supported=lambda api, ch: api.supported(ch, "pre_record"),
value=lambda api, ch: api.baichuan.pre_record_battery_stop(ch),
method=lambda api, ch, value: api.baichuan.set_pre_recording(
ch, battery_stop=int(value)
),
),
) )
SMART_AI_NUMBER_ENTITIES = ( SMART_AI_NUMBER_ENTITIES = (

View File

@ -250,6 +250,20 @@ SELECT_ENTITIES = (
value=lambda api, ch: str(api.bit_rate(ch, "sub")), value=lambda api, ch: str(api.bit_rate(ch, "sub")),
method=lambda api, ch, value: api.set_bit_rate(ch, int(value), "sub"), method=lambda api, ch, value: api.set_bit_rate(ch, int(value), "sub"),
), ),
ReolinkSelectEntityDescription(
key="pre_record_fps",
cmd_key="594",
translation_key="pre_record_fps",
entity_category=EntityCategory.CONFIG,
entity_registry_enabled_default=False,
unit_of_measurement=UnitOfFrequency.HERTZ,
get_options=["1", "2", "5"],
supported=lambda api, ch: api.supported(ch, "pre_record"),
value=lambda api, ch: str(api.baichuan.pre_record_fps(ch)),
method=lambda api, ch, value: api.baichuan.set_pre_recording(
ch, fps=int(value)
),
),
ReolinkSelectEntityDescription( ReolinkSelectEntityDescription(
key="post_rec_time", key="post_rec_time",
cmd_key="GetRec", cmd_key="GetRec",

View File

@ -654,6 +654,12 @@
}, },
"image_hue": { "image_hue": {
"name": "Image hue" "name": "Image hue"
},
"pre_record_time": {
"name": "Pre-recording time"
},
"pre_record_battery_stop": {
"name": "Pre-recording stop battery level"
} }
}, },
"select": { "select": {
@ -858,6 +864,9 @@
"packing_time": { "packing_time": {
"name": "Recording packing time" "name": "Recording packing time"
}, },
"pre_record_fps": {
"name": "Pre-recording frame rate"
},
"post_rec_time": { "post_rec_time": {
"name": "Post-recording time" "name": "Post-recording time"
} }
@ -946,6 +955,9 @@
"manual_record": { "manual_record": {
"name": "Manual record" "name": "Manual record"
}, },
"pre_record": {
"name": "Pre-recording"
},
"hub_ringtone_on_event": { "hub_ringtone_on_event": {
"name": "Hub ringtone on event" "name": "Hub ringtone on event"
}, },

View File

@ -169,6 +169,15 @@ SWITCH_ENTITIES = (
value=lambda api, ch: api.manual_record_enabled(ch), value=lambda api, ch: api.manual_record_enabled(ch),
method=lambda api, ch, value: api.set_manual_record(ch, value), method=lambda api, ch, value: api.set_manual_record(ch, value),
), ),
ReolinkSwitchEntityDescription(
key="pre_record",
cmd_key="594",
translation_key="pre_record",
entity_category=EntityCategory.CONFIG,
supported=lambda api, ch: api.supported(ch, "pre_record"),
value=lambda api, ch: api.baichuan.pre_record_enabled(ch),
method=lambda api, ch, value: api.baichuan.set_pre_recording(ch, enabled=value),
),
ReolinkSwitchEntityDescription( ReolinkSwitchEntityDescription(
key="buzzer", key="buzzer",
cmd_key="GetBuzzerAlarmV20", cmd_key="GetBuzzerAlarmV20",

View File

@ -77,6 +77,10 @@
'0': 1, '0': 1,
'null': 1, 'null': 1,
}), }),
'594': dict({
'0': 1,
'null': 1,
}),
'DingDongOpt': dict({ 'DingDongOpt': dict({
'0': 2, '0': 2,
'null': 2, 'null': 2,