@fabienjuif/node-tado-client
Version:
A Tado client for nodejs in TS
84 lines (83 loc) • 4.78 kB
TypeScript
import { Method } from 'axios';
import { Device, Temperature, Home, Me, MobileDevice, MobileDeviceSettings, State, User, Weather, Zone, ZoneState, ZoneCapabilities, AwayConfiguration, TimeTable, Country, Power, Termination, StatePresence, IQUnit, ZoneOverlay, TimeTables, AirComfort, EnergyIQ, EnergyIQMeterReadings, EnergySavingReport, AirComfortDetailed, AddEnergiIQMeterReadingResponse, ZoneDayReport, FanSpeed, ACMode } from './types';
export * from './types';
export declare class Tado {
private _httpsAgent;
private _accessToken?;
private _username?;
private _password?;
constructor(username?: string, password?: string);
private _login;
private _refreshToken;
login(username: string, password: string): Promise<void>;
apiCall<R, T = any>(url: string, method?: Method, data?: T): Promise<R>;
getMe(): Promise<Me>;
getHome(home_id: number): Promise<Home>;
getWeather(home_id: number): Promise<Weather>;
getDevices(home_id: number): Promise<Device[]>;
getDeviceTemperatureOffset(serial_no: string): Promise<Temperature>;
getInstallations(home_id: number): Promise<any[]>;
getUsers(home_id: number): Promise<User>;
getState(home_id: number): Promise<State>;
getMobileDevices(home_id: number): Promise<MobileDevice[]>;
getMobileDevice(home_id: number, mobile_device_id: number): Promise<MobileDevice>;
getMobileDeviceSettings(home_id: number, mobile_device_id: number): Promise<MobileDeviceSettings>;
setGeoTracking(home_id: number, mobile_device_id: number, geoTrackingEnabled: boolean): Promise<MobileDeviceSettings>;
getZones(home_id: number): Promise<Zone[]>;
getZoneState(home_id: number, zone_id: number): Promise<ZoneState>;
getZoneCapabilities(home_id: number, zone_id: number): Promise<ZoneCapabilities>;
/**
* @returns an empty object if overlay does not exist
*/
getZoneOverlay(home_id: number, zone_id: number): Promise<ZoneOverlay | {}>;
/**
* @param reportDate date with YYYY-MM-DD format (ex: `2022-11-12`)
*/
getZoneDayReport(home_id: number, zone_id: number, reportDate: string): Promise<ZoneDayReport>;
getTimeTables(home_id: number, zone_id: number): Promise<TimeTables>;
getAwayConfiguration(home_id: number, zone_id: number): Promise<AwayConfiguration>;
getTimeTable(home_id: number, zone_id: number, timetable_id: string): Promise<TimeTable>;
clearZoneOverlay(home_id: number, zone_id: number): Promise<void>;
/**
* @param temperature in celcius
* @param termination if number then duration in seconds
*/
setZoneOverlay(home_id: number, zone_id: number, power: Power, temperature: number, termination?: Termination | undefined | number, fan_speed?: FanSpeed, ac_mode?: ACMode): Promise<ZoneOverlay>;
clearZoneOverlays(home_id: number, zone_ids: number[]): Promise<void>;
/**
* @param termination if number then duration in seconds
*/
setZoneOverlays(home_id: number, overlays: {
zone_id: number;
power?: Power;
mode?: any;
temperature?: Temperature;
fanLevel?: any;
verticalSwing?: any;
horizontalSwing?: any;
light?: any;
}[], termination: Termination | undefined | number): Promise<void>;
/**
* @param temperatureOffset in celcius
*/
setDeviceTemperatureOffset(serial_no: number, temperatureOffset: number): Promise<Temperature>;
identifyDevice(serial_no: string): Promise<void>;
setPresence(home_id: number, presence: StatePresence): Promise<void>;
isAnyoneAtHome(home_id: number): Promise<boolean>;
updatePresence(home_id: number): Promise<void | 'already up to date'>;
setWindowDetection(home_id: number, zone_id: number, enabled: true, timeout: number): Promise<void>;
setWindowDetection(home_id: number, zone_id: number, enabled: false): Promise<void>;
setOpenWindowMode(home_id: number, zone_id: number, activate: boolean): Promise<void>;
getAirComfort(home_id: number): Promise<AirComfort>;
getAirComfortDetailed(home_id: number): Promise<AirComfortDetailed>;
getEnergyIQ(home_id: number): Promise<EnergyIQ>;
getEnergyIQTariff(home_id: number): Promise<unknown>;
updateEnergyIQTariff(home_id: number, unit: IQUnit, tariffInCents: number): Promise<unknown>;
getEnergyIQMeterReadings(home_id: number): Promise<EnergyIQMeterReadings>;
/**
* @param date format `YYYY-MM-DD`
*/
addEnergyIQMeterReading(home_id: number, date: string, reading: number): Promise<AddEnergiIQMeterReadingResponse>;
deleteEnergyIQMeterReading(home_id: number, reading_id: number): Promise<void>;
getEnergySavingsReport(home_id: number, year: string, month: string, countryCode: Country): Promise<EnergySavingReport>;
}