From dd63eca540c5bfb6ccc94bd05252d642e0c22f41 Mon Sep 17 00:00:00 2001 From: abearxiong Date: Tue, 23 Dec 2025 23:08:25 +0800 Subject: [PATCH] upate --- src/core.ts | 4 +++- test/common.ts | 4 ++-- test/light.ts | 18 +++++++++++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/core.ts b/src/core.ts index d5eb832..de2b1c4 100644 --- a/src/core.ts +++ b/src/core.ts @@ -3,6 +3,7 @@ import { LRUStorage } from './cache.ts'; export type HACoreOptions = { token: string; homeassistantURL?: string; + ttl?: number; } /** * https://developers.home-assistant.io/docs/api/rest/ @@ -11,10 +12,11 @@ export class HACore { token: string; homeassistantURL?: string; static serviceName = ''; - cache = new LRUStorage({ max: 200, ttl: 1000 * 60 * 5 }); // 5分钟缓存 + cache: LRUStorage; constructor(options: HACoreOptions) { this.token = options?.token; this.homeassistantURL = options?.homeassistantURL || 'http://localhost:8123'; + this.cache = new LRUStorage({ max: 200, ttl: options?.ttl || 1000 * 60 * 30 }); // 30分钟缓存 } async get(opts: { url: string, params?: Record }): Promise { const _u = new URL(opts.url, this.homeassistantURL); diff --git a/test/common.ts b/test/common.ts index da3940c..39ac6ae 100644 --- a/test/common.ts +++ b/test/common.ts @@ -122,6 +122,6 @@ export const button = new ButtonHA({ token: process.env.HAAS_TOKEN || '', homeas // console.log(showMore(entityType)); -const yinxiang = await hacore.getEntities((item) => item.attributes?.friendly_name?.includes?.('音箱')); +// const yinxiang = await hacore.getEntities((item) => item.attributes?.friendly_name?.includes?.('音箱')); -console.log(showMore(yinxiang)); \ No newline at end of file +// console.log(showMore(yinxiang)); \ No newline at end of file diff --git a/test/light.ts b/test/light.ts index 13e0162..ab86e8c 100644 --- a/test/light.ts +++ b/test/light.ts @@ -1,8 +1,10 @@ import { hacore, showMore } from "./common.ts"; import Fuse from 'fuse.js'; +const beginTime = Date.now(); const devices = await hacore.getInfoList(); -console.log(showMore(devices)); +console.log('getInfo', Date.now() - beginTime, 'ms'); +// console.log(showMore(devices)); const fuse = new Fuse(devices, { keys: ['name'], // 搜索字段 threshold: 0.4, // 匹配宽松度:0~1,越小越严格 @@ -14,7 +16,17 @@ const fuse = new Fuse(devices, { // const searchKeyword = '晾衣机的 灯'; const searchKeyword = ' 阳台 灯'; const result = fuse.search(searchKeyword); - +console.log('fuse search', Date.now() - beginTime, 'ms'); // 输出搜索结果 console.log(`搜索关键词: "${searchKeyword}"`); -console.log(showMore(result.map(r => r.item))); \ No newline at end of file +console.log(showMore(result.map(r => r.item))); + +const toggleDevice = await hacore.runService({ + entity_id: result[0].item.entity_id, + service: 'toggle', +}); +console.log('toggleDevice', Date.now() - beginTime, 'ms'); +// devices 2 +const devices2 = await hacore.getInfoList(); +console.log('getInfo 2', Date.now() - beginTime, 'ms'); +