matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
33 lines • 1.54 kB
JavaScript
import { connectDevice } from '../connection.js';
import { parseDeviceStatusPush, parseMapInfoPush, resolveActiveMapId } from '../mapListHelpers.js';
import { waitForPush } from '../waitForPush.js';
export async function cmdMapInfo(duid, session, logger, local = false) {
const { clientRouter, dispatcher } = await connectDevice(duid, session, logger, local);
try {
const mapInfoPromise = waitForPush(clientRouter, duid, parseMapInfoPush);
const statusPromise = waitForPush(clientRouter, duid, parseDeviceStatusPush);
await dispatcher.getMapInfo(duid);
await dispatcher.getDeviceStatus(duid);
console.log('Waiting for map info response...');
const [mapResult, statusResult] = await Promise.all([mapInfoPromise, statusPromise]);
if (!mapResult) {
console.log('No response received within timeout.');
return;
}
const activeMapId = resolveActiveMapId(statusResult);
const maps = mapResult.map_info ?? [];
console.log('\nMaps:');
for (const map of maps) {
const id = map.mapFlag ?? '?';
const name = map.name ?? '(unnamed)';
const active = activeMapId !== undefined && map.mapFlag === activeMapId ? ' [ACTIVE]' : '';
console.log(` ${id} ${name}${active}`);
}
console.log('\nRaw response:');
console.log(JSON.stringify(mapResult, null, 2));
}
finally {
await clientRouter.disconnect();
}
}
//# sourceMappingURL=mapInfo.js.map