matterbridge-dyson-robot
Version:
A Matterbridge plugin that connects Dyson robot vacuums and air treatment devices to the Matter smart home ecosystem via their local or cloud MQTT APIs.
28 lines • 1.01 kB
JavaScript
// Matterbridge plugin for Dyson robot vacuum and air treatment devices
// Copyright © 2025-2026 Alexander Thoukydides
import { isDeepStrictEqual } from 'node:util';
// Filter received Dyson MQTT messages for reordering and duplication
export class DysonMqttFilter {
log;
// The most recent message of each type (indexed by msg)
lastMsg = new Map;
// Create a new message filter
constructor(log) {
this.log = log;
}
// Filter a received message
filter(msg) {
const lastMsg = this.lastMsg.get(msg.msg);
if (lastMsg) {
if (msg.time && lastMsg.time && msg.time < lastMsg.time) {
return 'reordered';
}
if ((msg.time || lastMsg.time) && isDeepStrictEqual(msg, lastMsg)) {
// (don't filter messages without timestamps)
return 'duplicate';
}
}
this.lastMsg.set(msg.msg, structuredClone(msg));
}
}
//# sourceMappingURL=dyson-mqtt-filter.js.map