From d097009a2c75ccd4e989e3fb2b4faffb3136df02 Mon Sep 17 00:00:00 2001 From: slugzero <2014249+slugzero@users.noreply.github.com> Date: Mon, 8 Jan 2024 21:24:27 +0100 Subject: [PATCH 1/6] replace defaultSendRequestWhen with pendingRequestTimeout --- src/devices/adeo.ts | 2 +- src/devices/bosch.ts | 2 +- src/devices/xiaomi.ts | 4 ++-- src/lib/modernExtend.ts | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) 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..8efe119bfa307 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(), quirkAddEndpointCluster({ endpointID: 1, inputClusters: [ diff --git a/src/lib/modernExtend.ts b/src/lib/modernExtend.ts index a1bc0080c8574..b2d07fc6737f6 100644 --- a/src/lib/modernExtend.ts +++ b/src/lib/modernExtend.ts @@ -569,9 +569,9 @@ export function quirkAddEndpointCluster(args: QuirkAddEndpointClusterArgs): Mode return {configure, isModernExtend: true}; } -export function quirkSendWhenActive(): ModernExtend { +export function quirkPendingRequestTimeout(): ModernExtend { const configure: Configure = async (device, coordinatorEndpoint, logger) => { - device.defaultSendRequestWhen = 'active'; + device.pendingRequestTimeout = 3600000; // milliseconds => 1 hour device.save(); }; From 6cc5d9dc8d81334e67b0b94d038e2b083ba3dca3 Mon Sep 17 00:00:00 2001 From: slugzero <2014249+slugzero@users.noreply.github.com> Date: Tue, 9 Jan 2024 07:34:35 +0100 Subject: [PATCH 2/6] Update src/lib/modernExtend.ts Co-authored-by: Jorge Schrauwen --- src/lib/modernExtend.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/modernExtend.ts b/src/lib/modernExtend.ts index b2d07fc6737f6..3ce24e7ba5d06 100644 --- a/src/lib/modernExtend.ts +++ b/src/lib/modernExtend.ts @@ -571,7 +571,7 @@ export function quirkAddEndpointCluster(args: QuirkAddEndpointClusterArgs): Mode export function quirkPendingRequestTimeout(): ModernExtend { const configure: Configure = async (device, coordinatorEndpoint, logger) => { - device.pendingRequestTimeout = 3600000; // milliseconds => 1 hour + device.pendingRequestTimeout = timeoutMs; device.save(); }; From 61daeb2b4f9a10bf88aa52809c49e2c1d1578e8a Mon Sep 17 00:00:00 2001 From: slugzero <2014249+slugzero@users.noreply.github.com> Date: Tue, 9 Jan 2024 07:38:28 +0100 Subject: [PATCH 3/6] Update src/lib/modernExtend.ts Co-authored-by: Jorge Schrauwen --- src/lib/modernExtend.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/modernExtend.ts b/src/lib/modernExtend.ts index 3ce24e7ba5d06..bea2bdb64937d 100644 --- a/src/lib/modernExtend.ts +++ b/src/lib/modernExtend.ts @@ -569,7 +569,8 @@ export function quirkAddEndpointCluster(args: QuirkAddEndpointClusterArgs): Mode return {configure, isModernExtend: true}; } -export function quirkPendingRequestTimeout(): ModernExtend { +// default timeout = 1h +export function quirkPendingRequestTimeout(timeoutMs: number = 3600000): ModernExtend { const configure: Configure = async (device, coordinatorEndpoint, logger) => { device.pendingRequestTimeout = timeoutMs; device.save(); From be1f000684f63539effe488e557136a9c19b4595 Mon Sep 17 00:00:00 2001 From: slugzero <2014249+slugzero@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:37:01 +0100 Subject: [PATCH 4/6] Update modernExtend.ts --- src/lib/modernExtend.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/lib/modernExtend.ts b/src/lib/modernExtend.ts index bea2bdb64937d..3910c2f7f0d48 100644 --- a/src/lib/modernExtend.ts +++ b/src/lib/modernExtend.ts @@ -569,8 +569,7 @@ export function quirkAddEndpointCluster(args: QuirkAddEndpointClusterArgs): Mode return {configure, isModernExtend: true}; } -// default timeout = 1h -export function quirkPendingRequestTimeout(timeoutMs: number = 3600000): ModernExtend { +export function quirkPendingRequestTimeout(timeoutMs: number): ModernExtend { const configure: Configure = async (device, coordinatorEndpoint, logger) => { device.pendingRequestTimeout = timeoutMs; device.save(); From 061b6cbec20b117d950aa480a7b623923e2d6c45 Mon Sep 17 00:00:00 2001 From: slugzero <2014249+slugzero@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:37:55 +0100 Subject: [PATCH 5/6] Update xiaomi.ts --- src/devices/xiaomi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/xiaomi.ts b/src/devices/xiaomi.ts index 8efe119bfa307..6168fd62f8c74 100644 --- a/src/devices/xiaomi.ts +++ b/src/devices/xiaomi.ts @@ -3121,7 +3121,7 @@ const definitions: Definition[] = [ meta: {battery: {voltageToPercentage: '3V_2850_3000'}}, exposes: [e.device_temperature(), e.battery(), e.battery_voltage()], extend: [ - quirkPendingRequestTimeout(), + quirkPendingRequestTimeout(3600000), // 1 hour quirkAddEndpointCluster({ endpointID: 1, inputClusters: [ From 6fd32262686caeedd94b52bb6fac4da284ddfb58 Mon Sep 17 00:00:00 2001 From: koenkk Date: Tue, 9 Jan 2024 20:10:29 +0100 Subject: [PATCH 6/6] use timelookup --- src/devices/xiaomi.ts | 2 +- src/lib/modernExtend.ts | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/devices/xiaomi.ts b/src/devices/xiaomi.ts index 6168fd62f8c74..f1f07e921e9c3 100644 --- a/src/devices/xiaomi.ts +++ b/src/devices/xiaomi.ts @@ -3121,7 +3121,7 @@ const definitions: Definition[] = [ meta: {battery: {voltageToPercentage: '3V_2850_3000'}}, exposes: [e.device_temperature(), e.battery(), e.battery_voltage()], extend: [ - quirkPendingRequestTimeout(3600000), // 1 hour + quirkPendingRequestTimeout('1_HOUR'), quirkAddEndpointCluster({ endpointID: 1, inputClusters: [ diff --git a/src/lib/modernExtend.ts b/src/lib/modernExtend.ts index 3910c2f7f0d48..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,7 +569,8 @@ export function quirkAddEndpointCluster(args: QuirkAddEndpointClusterArgs): Mode return {configure, isModernExtend: true}; } -export function quirkPendingRequestTimeout(timeoutMs: number): ModernExtend { +export function quirkPendingRequestTimeout(timeout: keyof typeof timeLookup): ModernExtend { + const timeoutMs = timeLookup[timeout] * 1000; const configure: Configure = async (device, coordinatorEndpoint, logger) => { device.pendingRequestTimeout = timeoutMs; device.save();