nature-remo
Version:
Nature Remo API client
181 lines (177 loc) • 5.32 kB
TypeScript
declare type ApplianceType = 'AC' | 'TV' | 'LIGHT';
interface User {
id: string;
nickname: string;
}
interface DetectedAirconModel {
model: Model;
params: AirconSettings;
}
interface SensorValue {
temperature: number;
humidity: number | undefined;
illumination: number | undefined;
}
interface Device {
id: string;
name: string;
temperature_offset: number;
humidity_offset: number;
created_at: Date;
updated_at: Date;
firmware_version: string;
mac_address: string;
serial_number: string;
}
declare type DeviceEventType = 'te' | 'hu' | 'il';
interface DeviceWithEvents extends Device {
newest_events: {
[key in DeviceEventType]: EventValue;
};
}
interface EventValue {
val: number;
created_at: Date;
}
interface Model {
id: string;
manufacturer: string;
remote_name: string;
name: string;
image: string;
}
declare type TemperatureUnit = 'c' | 'f';
interface AirconSettings {
temp: string;
temp_unit: TemperatureUnit;
mode: AirconModeType;
vol: string;
dir: string;
dirh: string;
button: string;
}
interface UpdateAirconSettingsOptions {
temperature: string;
operation_mode: string;
air_volume: string;
air_direction: string;
button: string;
}
interface AirconSettingsWithTimestamp extends AirconSettings {
updated_at: Date;
}
declare type AirconModeType = 'cool' | 'warm' | 'dry' | 'blow' | 'auto';
interface AirconModeValue {
temp: string[];
dir: string[];
vol: string[];
}
interface AirconRange {
modes: {
[key in AirconModeType]: AirconModeValue;
};
fixedButtons: string[];
}
interface Aircon {
range: AirconRange;
tempUnit: 'c' | 'f';
}
interface Button {
name: string;
image: string;
label: string;
}
interface LightState {
brightness: string;
power: 'on' | 'off';
last_button: string;
}
interface Light {
state: LightState;
buttons: Button[];
}
interface TVState {
input: 't' | 'bs' | 'cs';
}
interface TV {
state: TVState;
buttons: Button[];
}
interface Appliance {
id: string;
device: Device;
nickname: string;
image: string;
type: string;
signals: Signal[];
aircon?: Aircon;
settings?: AirconSettingsWithTimestamp;
model?: Model;
tv?: TV;
light?: Light;
smart_meter?: SmartMeter;
}
interface SmartMeter {
echonetlite_properties: EchonetliteProperties[];
}
interface EchonetliteProperties {
name: string;
epc: number;
val: string;
updated_at: Date;
}
interface Signal {
id: string;
name: string;
image: string;
}
interface Signal {
id: string;
name: string;
image: string;
}
interface SignalMessage {
freq: number;
data: number[];
format: 'us';
}
declare class Cloud {
private readonly token;
private readonly instance;
constructor(token: string);
getUser(): Promise<User>;
updateUser(nickname: string): Promise<User>;
getDevices(): Promise<DeviceWithEvents[]>;
detectAppliance(message: SignalMessage): Promise<DetectedAirconModel>;
getSensorValue(): Promise<SensorValue>;
getAppliances(type?: ApplianceType): Promise<Appliance[]>;
createAppliance(nickname: string, device: string, image: string, model?: string): Promise<Appliance[]>;
updateAppliancesOrder(appliances: string[]): Promise<unknown>;
deleteAppliance(applianceId: string): Promise<unknown>;
updateAppliance(applianceId: string, nickname: string, imageId: string): Promise<Appliance>;
listAircon(): Promise<Appliance[]>;
updateAirconSettings(applianceId: string, settings: Partial<UpdateAirconSettingsOptions>): Promise<AirconSettingsWithTimestamp>;
listTV(): Promise<Appliance[]>;
updateTV(applianceId: string, button: string): Promise<TVState>;
listLight(): Promise<Appliance[]>;
updateLight(applianceId: string, button: string): Promise<LightState>;
getApplianceSignals(applianceId: string): Promise<Signal[]>;
createApplianceSignal(applianceId: string, name: string, message: SignalMessage, imageId: string): Promise<Signal>;
updateSignalOrders(applianceId: string, signalIds: string[]): Promise<unknown>;
updateSignal(signalId: string, name: string, imageId: string): Promise<unknown>;
deleteSignal(signalId: string): Promise<unknown>;
sendSignal(signalId: string): Promise<unknown>;
updateDevice(deviceId: string, name: string): Promise<unknown>;
deleteDevice(deviceId: string): Promise<unknown>;
updateTemperatureOffset(deviceId: string, offset: number): Promise<unknown>;
updateHumidityOffset(deviceId: string, offset: number): Promise<unknown>;
private _post;
private _get;
}
declare class Local {
private readonly instance;
constructor(address: string);
fetchReceivedSignal(): Promise<SignalMessage>;
sendSignal(signal: SignalMessage): Promise<any>;
}
export { Aircon, AirconModeType, AirconModeValue, AirconRange, AirconSettings, AirconSettingsWithTimestamp, Appliance, ApplianceType, Button, Cloud, DetectedAirconModel, Device, DeviceEventType, DeviceWithEvents, EchonetliteProperties, EventValue, Light, LightState, Local, Model, SensorValue, Signal, SignalMessage, SmartMeter, TV, TVState, TemperatureUnit, UpdateAirconSettingsOptions, User };