UNPKG

matterbridge-roborock-vacuum-plugin

Version:
44 lines 1.68 kB
import { RoborockIoTApi } from '../../roborockCommunication/api/iotClient.js'; function tryParseDeep(value) { if (Array.isArray(value)) return value.map(tryParseDeep); if (typeof value === 'object' && value !== null) { return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, tryParseDeep(v)])); } if (typeof value === 'string') { try { const parsed = JSON.parse(value); return tryParseDeep(parsed); } catch { return value; } } return value; } export async function cmdScenes(duid, session, logger, detail = false) { const device = session.devices.find((d) => d.duid === duid); if (!device) throw new Error(`Device not found: ${duid}`); const iotApi = new RoborockIoTApi(session.userData, logger); const scenes = await iotApi.getScenes(device.rrHomeId); if (!scenes || scenes.length === 0) { console.log('No scenes found.'); return; } console.log(`Scenes for device ${duid}:\n`); scenes.forEach((scene, i) => { console.log(` [${i + 1}] id: ${scene.id}`); console.log(` name: ${scene.name}`); console.log(` type: ${scene.type}`); console.log(` enabled: ${scene.enabled}`); console.log(` extra: ${scene.extra}`); if (detail) { const parsed = tryParseDeep(scene.param); const formatted = parsed !== undefined ? JSON.stringify(parsed) : (scene.param ?? '(none)'); console.log(` param: ${formatted}`); } console.log(''); }); } //# sourceMappingURL=scenes.js.map