millheat-js
Version:
Javascript client to ease the use of the Mill Open API V2
143 lines (131 loc) • 3.49 kB
TypeScript
import { Agent } from 'https';
declare class Authenticator {
private credentials;
private apiURL;
private agent?;
private status;
constructor(credentials: MillCredential, apiURL: string, agent?: Agent | undefined);
authenticate(): Promise<string[][]>;
private retrieveAccessToken;
private refresh;
}
type House = {
id: string;
name: string;
postalCode: string;
timezone: string;
ownerId: string;
mode: string;
vacationStartDate: number;
vacationEndDate: number;
vacationTemperature: number;
vacationModeType: string;
isVacationModeActive: boolean;
overrideModeType: string;
overrideEndDate: number;
createdAt: string;
};
type Permissions = {
maxTemperature: number;
changeTemperature: boolean;
renameDevices: boolean;
renameHouse: boolean;
updateHousePostalCode: boolean;
updateHouseTimezone: boolean;
renameRooms: boolean;
managePrograms: boolean;
manageVacationMode: boolean;
overrideWeeklyProgram: boolean;
deleteHouse: boolean;
deleteRoom: boolean;
createRoom: boolean;
addDevices: boolean;
deleteDevices: boolean;
moveDevices: boolean;
};
type SharedHouse = {
house: House;
permissions: Permissions;
}
type HouseResponse = {
ownHouses: House[];
sharedHouses: SharedHouse[];
}
type Metric = {
deviceId: string;
time: number;
temperature: number;
humidity: number;
temperatureAmbient: number;
currentPower: number;
controlSignal: number;
currentOperationMode: number;
energyUsage: number;
timeSinceHeaterStartup: number;
openWindowsStatus: number;
currentTemperatureTypeInWeeklyProgram: number;
heaterFlag: number;
powerStatus: number;
}
type Device = {
deviceId: string;
macAddress: string;
deviceType: {
childType: {
id: string;
name: string;
},
parentType: {
id: string;
name: string;
}
};
isConnected: boolean;
customName: string;
houseId: string;
roomId: string;
isArchived: boolean;
isEnabled: boolean;
controlSource: string;
createdAt: string;
deviceSettings: unknown;
lastMetrics: Metric,
energyUsageForCurrentDay: number;
sensorRooms: unknown[];
houseName: string;
permissions: {
maxTemperature: number;
changeTemperature: boolean;
},
nearestTimer: unknown;
airPurifierDefaultSettings: unknown;
airSensorAdditionalItems: unknown;
socketTemperatureSensor: boolean;
}
type IndependentDevicesForHouseResponse = {
items: Device[];
}
type DevicesForHouseResponse = {
roomId: string;
roomName: string;
devices: Device[];
}
declare type MillCredential = {
username: string;
password: string;
};
declare type Options = {
timeout: number;
};
declare class MillheatAPI {
authenticator: Authenticator;
credential: MillCredential;
options: Options;
agent: Agent;
constructor(credential: MillCredential, options?: Partial<Options>);
private api;
getHouses(): Promise<HouseResponse>;
getDevicesForHouse(houseId: string): Promise<DevicesForHouseResponse[]>;
getIndependentDevicesForHouse(houseId: string): Promise<IndependentDevicesForHouseResponse>;
}
export { MillheatAPI as Client, House, Metric };