matter-history
Version:
Matterbridge history module
224 lines (223 loc) • 7.13 kB
TypeScript
import { AnsiLogger } from 'node-ansi-logger';
export interface OptionalHistoryParams {
enableDebug?: boolean;
enableAutopilot?: boolean;
enableConfigData?: boolean;
historySize?: number;
fileName?: string;
filePath?: string;
timerMinutes?: number;
edge?: boolean;
}
export interface HistoryParams {
enableDebug: boolean;
enableAutopilot: boolean;
enableConfigData: boolean;
historySize: number;
fileName: string;
filePath: string;
timerMinutes: number;
}
export interface Entry extends ImmediateEntry, AveragedEntry {
time: number;
setRefTime?: number;
immediate?: number;
}
export interface ImmediateEntry {
time: number;
status?: number;
motion?: number;
contact?: number;
leak?: number;
smoke?: number;
action?: number;
currentposition?: number;
targetposition?: number;
positionstate?: number;
obstructiondetected?: number;
}
export interface AveragedEntry {
time: number;
consumption?: number;
power?: number;
voltage?: number;
current?: number;
temperature?: number;
lux?: number;
humidity?: number;
pressure?: number;
airquality?: number;
voc?: number;
co?: number;
co2?: number;
formaldehyd?: number;
pm10?: number;
pm25?: number;
lqi?: number;
}
export interface HistoryLog {
firstEntry: number;
lastEntry: number;
memorySize: number;
initialTime: number;
timeOffset: number;
resetTotal: number;
lastEvent: number;
timesOpened: number;
fileVersion: string;
historyVersion: string;
lastValues: Entry;
history: Entry[];
extra: any;
}
export interface Signature {
tag: number;
length: number;
factor: number;
precision: number;
bitmask: number;
entryName: keyof Entry;
}
export interface Tag {
tag: number;
length: number;
factor: number;
precision: number;
entryName: keyof Entry;
}
export declare const enum WeatherTrend {
BLANK = 0,
SUN = 1,
CLOUDS_SUN = 3,
RAIN = 5,
RAIN_WIND = 12
}
export declare const enum Sensitivity {
HIGH = 0,
MEDIUM = 4,
LOW = 7
}
export declare const enum TemperatureDisplayUnits {
CELSIUS = 0,
FAHRENHEIT = 1
}
export interface TlvConfigData {
field: number;
length: number;
name: string;
data: Buffer;
updated: boolean;
value: boolean | number | string;
}
export interface TlvConfigDataField {
field: number;
type: number;
name: string;
}
export declare class History {
protected log: AnsiLogger;
protected name: string;
protected optionalParams?: OptionalHistoryParams | undefined;
protected params: HistoryParams;
protected eveEpoch: number;
protected initialTime: number;
protected timeOffset: number;
protected memorySize: number;
protected firstEntry: number;
protected currentEntry: number;
protected lastEntry: number;
protected fileVersion: string;
protected historyVersion: string;
protected resetTotal: number;
protected lastEvent: number;
protected timesOpened: number;
protected configData: Buffer;
protected tlvConfigDataGet: TlvConfigData[];
protected tlvConfigDataSet: TlvConfigData[];
protected firmwareData: Buffer<ArrayBuffer>;
protected historyLoaded: boolean;
protected historyDebug: boolean;
protected historyError: boolean;
protected historyClosed: boolean;
protected setRefTime: boolean;
protected historyWriting: boolean;
protected forceReloadHistoryStatus: boolean;
protected forceReloadHistoryRequest: boolean;
protected deviceOnline: boolean;
protected addResetTotal: boolean;
protected addLastEvent: boolean;
protected addTimesOpened: boolean;
protected addStatusFault: boolean;
protected statusFault: number;
protected addStatusActive: boolean;
protected statusActive: boolean;
protected addFakeSwitch: boolean;
protected signature: Buffer;
protected sigTable: Signature[];
protected tags: Tag[];
protected tagsMap: Map<number, Tag>;
protected entryNameMap: Map<keyof Entry, Tag>;
protected historyLog: HistoryLog;
protected writingTimeout: NodeJS.Timeout | undefined;
protected historyFile: string;
protected queueTimeout: NodeJS.Timeout | undefined;
protected queuedEntries: Entry[];
protected toAverageEntries: AveragedEntry[];
protected lastValuesEntry: Entry;
protected immediateKeys: Array<keyof Entry>;
protected averagedKeys: Array<keyof Entry>;
protected lastValueKeys: Array<keyof Entry>;
protected averageTimer: NodeJS.Timeout | null;
constructor(log: AnsiLogger, name: string, optionalParams?: OptionalHistoryParams | undefined);
close(): Promise<void>;
getInitialTime(): number;
getTimeOffset(): number;
getFirstEntry(): number;
getLastEntry(): number;
setDeviceOnline(online: boolean): void;
getLastEvent(): number;
setLastEvent(): void;
getTimesOpened(): number;
addToTimesOpened(): number;
protected getEntryAddress(entryNumber: number): number;
protected getEntry(entryNumber: number): Entry;
protected setEntry(entryNumber: number, entry: Entry): void;
private tlvConfigDataFields;
private tlvDataToValue;
encodeConfigData(tlvConfigData: TlvConfigData[]): Buffer;
decodeConfigData(buffer: Buffer, tlvConfigData?: TlvConfigData[]): string;
configDataToString(tlvConfigData: TlvConfigData[]): string;
setMaxMinTemperature(maxTemperature: number, minTemperature: number): void;
decodeHistoryStatus(buffer: Buffer): string;
encodeHistoryStatus(): Buffer;
historyStatusToString(buffer: Buffer): string;
decodeHistoryEntry(buffer: Buffer): string;
encodeHistoryEntry(entryNumber: number): Buffer;
historyEntryToString(buffer: Buffer): string;
historyEntriesToString(buffer: Buffer): string;
decodeHistorySetTime(buffer: Buffer): string;
encodeHistorySetTime(seconds?: number): Buffer;
historySetTimeToString(buffer: Buffer): string;
decodeHistoryRequest(buffer: Buffer): string;
encodeHistoryRequest(entryNumber: number): Buffer;
historyRequestToString(buffer: Buffer): string;
signatureToString(): string;
addEntry(entry: Entry): void;
protected addAveragedEntry(entry: Entry): void;
protected addImmediateEntry(entry: Entry): void;
private averageTimerStart;
private averageTimerCallback;
logHistory(logEntries?: boolean): void;
readHistoryFile(callback?: (success: boolean) => void): void;
writeHistoryFile(): void;
protected entryStringify(entry: object): string;
diffToString(seconds: number): string;
secsToDateString(seconds: number): string;
secsToDateStringSinceEveEpoch(secondsSinceEpoch: number): string;
now(): number;
clamp(number: number, min: number, max: number): number;
round(number: number, precision: number): number;
getFakeLevel(minLevel: number, maxLevel: number, round?: number): number;
private secondsSinceMidnight;
private secondsSinceNoon;
}