diff --git a/src/devices/adeo.ts b/src/devices/adeo.ts index 654590c420736..f4de94d9f900e 100644 --- a/src/devices/adeo.ts +++ b/src/devices/adeo.ts @@ -276,7 +276,7 @@ const definitions: Definition[] = [ toZigbee: [tz.warning], exposes: [e.warning(), e.battery(), e.battery_low(), e.tamper()], configure: async (device, coordinatorEndpoint, logger) => { - device.defaultSendRequestWhen = 'immediate'; + device.pendingRequestTimeout = 0; device.save(); await device.getEndpoint(1).unbind('genPollCtrl', coordinatorEndpoint); }, diff --git a/src/devices/bosch.ts b/src/devices/bosch.ts index 3a073d8642472..d050d9579102c 100644 --- a/src/devices/bosch.ts +++ b/src/devices/bosch.ts @@ -850,7 +850,7 @@ const definitions: Definition[] = [ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'ssIasZone', 'ssIasWd', 'genBasic']); await reporting.batteryVoltage(endpoint); await endpoint.read(0x0502, [0xa000, 0xa001, 0xa002, 0xa003, 0xa004, 0xa005], manufacturerOptions); - device.defaultSendRequestWhen = 'immediate'; + device.pendingRequestTimeout = 0; device.save(); await endpoint.unbind('genPollCtrl', coordinatorEndpoint); }, diff --git a/src/devices/xiaomi.ts b/src/devices/xiaomi.ts index 236f813562983..f1f07e921e9c3 100644 --- a/src/devices/xiaomi.ts +++ b/src/devices/xiaomi.ts @@ -9,7 +9,7 @@ import extend from '../lib/extend'; import { light, numeric, binary, enumLookup, forceDeviceType, temperature, humidity, forcePowerSource, quirkAddEndpointCluster, - quirkSendWhenActive, + quirkPendingRequestTimeout, } from '../lib/modernExtend'; const e = exposes.presets; const ea = exposes.access; @@ -3121,7 +3121,7 @@ const definitions: Definition[] = [ meta: {battery: {voltageToPercentage: '3V_2850_3000'}}, exposes: [e.device_temperature(), e.battery(), e.battery_voltage()], extend: [ - quirkSendWhenActive(), + quirkPendingRequestTimeout('1_HOUR'), quirkAddEndpointCluster({ endpointID: 1, inputClusters: [ diff --git a/src/lib/modernExtend.ts b/src/lib/modernExtend.ts index a1bc0080c8574..ef51c2e41ecce 100644 --- a/src/lib/modernExtend.ts +++ b/src/lib/modernExtend.ts @@ -21,22 +21,22 @@ function getEndpointsWithInputCluster(device: Zh.Device, cluster: string | numbe return endpoints; } -const reportingConfigTimeLookup = { +const timeLookup = { '1_HOUR': 3600, 'MAX': 65000, '30_MINUTES': 1800, '10_SECONDS': 10, }; -type ReportingConfigTime = number | keyof typeof reportingConfigTimeLookup; +type ReportingConfigTime = number | keyof typeof timeLookup; type ReportingConfigAttribute = string | number | {ID: number, type: number}; type ReportingConfig = {min: ReportingConfigTime, max: ReportingConfigTime, change: number | [number, number], attribute: ReportingConfigAttribute} export type ReportingConfigWithoutAttribute = Omit; function convertReportingConfigTime(time: ReportingConfigTime): number { if (isString(time)) { - if (!(time in reportingConfigTimeLookup)) throw new Error(`Reporting time '${time}' is unknown`); - return reportingConfigTimeLookup[time]; + if (!(time in timeLookup)) throw new Error(`Reporting time '${time}' is unknown`); + return timeLookup[time]; } else { return time; } @@ -569,9 +569,10 @@ export function quirkAddEndpointCluster(args: QuirkAddEndpointClusterArgs): Mode return {configure, isModernExtend: true}; } -export function quirkSendWhenActive(): ModernExtend { +export function quirkPendingRequestTimeout(timeout: keyof typeof timeLookup): ModernExtend { + const timeoutMs = timeLookup[timeout] * 1000; const configure: Configure = async (device, coordinatorEndpoint, logger) => { - device.defaultSendRequestWhen = 'active'; + device.pendingRequestTimeout = timeoutMs; device.save(); };