diff --git a/src/lib/modernExtend.ts b/src/lib/modernExtend.ts index 5c3f68452e270..de0142187c843 100644 --- a/src/lib/modernExtend.ts +++ b/src/lib/modernExtend.ts @@ -804,15 +804,19 @@ export function customTimeResponse(start: "1970_UTC" | "2000_LOCAL"): ModernExte // #region Measurement and Sensing -export function illuminance(args: Partial> = {}): ModernExtend { - const luxScale: ScaleFunction = (value: number, type: "from" | "to") => { - let result = value; - if (type === "from") { - result = 10 ** ((result - 1) / 10000); - } - return result; - }; +const luxScale: ScaleFunction = (value: number, type: "from" | "to") => { + let result = value; + if (type === "from") { + if (result === 0x0000) return 0; + if (Number.isNaN(result)) return undefined; + + result = 10 ** ((result - 1) / 10000); + } + return result; +}; + +export function illuminance(args: Partial> = {}): ModernExtend { const result = numeric({ name: "illuminance", cluster: "msIlluminanceMeasurement", @@ -2679,7 +2683,7 @@ export function enumLookup number; +export type ScaleFunction = (value: number, type: "from" | "to") => number | undefined; export interface NumericArgs extends ClusterWithAttribute {