UNPKG

matter-history

Version:
224 lines (223 loc) 7.13 kB
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; }