Add support for reading unit history data

unit.getHistoryData(fromTime, toTime) will request data about sensor and circuit changes over time, then `getHistoryData` will be emitted when the data is ready to be handled.

Fixes #59
This commit is contained in:
2022-04-15 16:38:24 -05:00
parent 4de8a63140
commit 485b494ea8
4 changed files with 125 additions and 0 deletions

View File

@ -319,6 +319,11 @@ class UnitConnection extends EventEmitter {
this.client.write(new messages.SLSetSystemTime(null, date, shouldAdjustForDST, senderId).toBuffer());
}
getHistoryData(fromTime, toTime, senderId) {
debugUnit('[%d] requesting history data from `%s` to `%s`', senderId || 0, fromTime || new Date(), toTime || new Date());
this.client.write(new messages.SLGetHistoryData(null, fromTime, toTime, senderId).toBuffer());
}
onClientMessage(msg) {
debugUnit('received message of length %d', msg.length);
if (msg.length < 4) {
@ -432,6 +437,14 @@ class UnitConnection extends EventEmitter {
debugUnit(" it's a set system time ack");
this.emit('setSystemTime', new messages.SLSetSystemTime(msg));
break;
case messages.SLGetHistoryData.getResponseId():
debugUnit(" it's a history data query ack");
this.emit('getHistoryDataPending');
break;
case messages.SLGetHistoryData.getPayloadId():
debugUnit(" it's a history data payload");
this.emit('getHistoryData', new messages.SLGetHistoryData(msg));
break;
case 12501:
debugUnit(" it's a schedule changed notification");
this.emit('scheduleChanged');