import { Transformer } from './interface'; type ITimerData = { /** * 使能 0 关闭 1开启 */ power?: boolean; /** * 定时编号 */ id?: number; /** * 周循环 */ weeks?: number[]; /** * 定时时刻 HH:mm */ time?: number; /** * 1:开/关 2:白光模式 3:场景 4:彩光模式 */ mode?: number; /** * 分钟 */ minute?: string; /** * 小时 */ hour?: string; /** * 灯光开关 */ lampPower?: boolean; /** * 亮度 */ brightness?: number; /** * 色温 */ temperature?: number; /** * 当前时间 */ now?: { day?: number; hour?: number; minute?: number; seconds?: number; }; }; /** * 灯带本地定时协议转换器,用于定时任务数据与 DP 十六进制协议的双向转换 * * @public * @since @ray-js/panel-sdk 1.0.0 * @remarks * 适用于灯带类产品的本地定时 DP(如 `strip_local_timer`),支持开关、白光模式、场景、彩光模式 * 四种定时控制类型。协议通过位运算编码定时 ID、使能状态、周循环、定时时刻及灯光参数等。 * 格式化时会附带当前时间信息(星期、时分秒)用于设备校时。 * * @example * ```ts * import { StripLocalTimerTransformer } from '@ray-js/panel-sdk'; * * const transformer = new StripLocalTimerTransformer(); * // 解析定时 DP 字符串 * const timer = transformer.parser('1001e0021c0164006e'); * * // 格式化为 DP 字符串 * const dpStr = transformer.formatter({ * id: 0, * power: true, * weeks: [1, 1, 1, 1, 1, 0, 0, 0], * time: 480, * mode: 2, * lampPower: true, * brightness: 1000, * temperature: 500, * }); * ``` */ declare class StripLocalTimerTransformer implements Transformer { /** * @internal */ defaultValue: ITimerData; /** * @internal */ uuid: string; /** * 创建灯带本地定时转换器实例 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param uuid - DP 标识符,默认为 `'strip_local_timer'` * @param defaultValue - 默认定时数据,当解析失败时返回此值 */ constructor(uuid?: string, defaultValue?: ITimerData); /** * 比较两个 DP 字符串值是否相等 * * @internal * @param source - 源字符串 * @param target - 目标字符串 * @returns 是否相等 */ equal(source: string, target: string): boolean; /** * 将 DP 十六进制字符串解析为定时任务数据对象 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param value - 十六进制 DP 字符串 * @returns 定时任务数据对象,包含 id、power、weeks、time、mode、lampPower 及模式相关参数;解析失败时返回默认值 * * @example * ```ts * const timer = transformer.parser('1001e0021c0164006e'); * // => { id: 0, power: true, weeks: [...], time: 480, mode: 2, lampPower: true, brightness: 1000, temperature: 1100 } * ``` */ parser(value: string): ITimerData | { id: number; power: boolean; weeks: number[]; time: any; mode: number; lampPower: boolean; brightness?: undefined; temperature?: undefined; sceneId?: undefined; hue?: undefined; saturation?: undefined; value?: undefined; } | { id: number; power: boolean; weeks: number[]; time: any; mode: number; lampPower: boolean; brightness: number; temperature: number; sceneId?: undefined; hue?: undefined; saturation?: undefined; value?: undefined; } | { id: number; power: boolean; weeks: number[]; time: any; mode: number; lampPower: boolean; sceneId: any; brightness?: undefined; temperature?: undefined; hue?: undefined; saturation?: undefined; value?: undefined; } | { id: number; power: boolean; weeks: number[]; time: any; mode: number; lampPower: boolean; hue: number; saturation: number; value: number; brightness?: undefined; temperature?: undefined; sceneId?: undefined; }; /** * 将十进制数值转为指定长度的十六进制字符串 * * @internal * @param value - 十进制数值 * @param length - 目标十六进制字符串长度,默认 2 * @returns 补零后的十六进制字符串 */ to16(value: number, length?: number): string; /** * 将二进制字符串转为指定长度的十六进制字符串 * * @internal * @param bin - 二进制字符串 * @param len - 目标十六进制字符串长度,默认 2 * @returns 补零后的十六进制字符串 */ binTo16(bin: string, len?: number): string; /** * 将定时任务数据对象格式化为 DP 十六进制字符串 * * @public * @since @ray-js/panel-sdk 1.0.0 * @param data - 定时任务数据对象,包含 id、power、weeks、time、mode、lampPower 等 * @returns 十六进制 DP 字符串,包含版本号、当前时间校准信息及定时配置 * * @example * ```ts * const dpStr = transformer.formatter({ * id: 0, * power: true, * weeks: [1, 1, 1, 1, 1, 0, 0, 0], * time: 480, * mode: 2, * lampPower: true, * brightness: 1000, * temperature: 500, * }); * ``` */ formatter(data: ITimerData): string; } export default StripLocalTimerTransformer;