ring-client-api
Version:
Unofficial API for Ring doorbells, cameras, security alarm system and smart lighting
90 lines (89 loc) • 4.95 kB
TypeScript
import type { Observable } from 'rxjs';
import { WebSocket } from 'undici';
import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
import type { AccountMonitoringStatus, AlarmMode, AssetSession, MessageDataType, MessageType, RingDeviceData, SocketIoMessage, TicketAsset, UserLocation, CameraEventResponse, CameraEventOptions, HistoryOptions, RingDeviceHistoryEvent, LocationModeResponse, LocationModeSettings, LocationMode, LocationModeSharing, LocationModeSettingsResponse, LocationModeInput } from './ring-types.ts';
import type { RingRestClient } from './rest-client.ts';
import type { RingCamera } from './ring-camera.ts';
import type { RingChime } from './ring-chime.ts';
import { RingDevice } from './ring-device.ts';
import type { RingIntercom } from './ring-intercom.ts';
import { Subscribed } from './subscribed.ts';
export declare class Location extends Subscribed {
private seq;
onMessage: Subject<SocketIoMessage>;
onDataUpdate: Subject<SocketIoMessage>;
onDeviceDataUpdate: Observable<RingDeviceData>;
onDeviceList: Observable<SocketIoMessage>;
onDevices: Observable<RingDevice[]>;
onSessionInfo: Observable<AssetSession[]>;
onConnected: BehaviorSubject<boolean>;
onLocationMode: ReplaySubject<LocationMode>;
private onLocationModeRequested;
reconnecting: boolean;
private disconnected;
connectionPromise?: Promise<WebSocket>;
securityPanel?: RingDevice;
assets?: TicketAsset[];
receivedAssetDeviceLists: string[];
offlineAssets: string[];
hasHubs: boolean;
hasAlarmBaseStation: boolean;
readonly locationDetails: UserLocation;
readonly cameras: RingCamera[];
readonly chimes: RingChime[];
readonly intercoms: RingIntercom[];
readonly options: {
hasHubs: boolean;
hasAlarmBaseStation: boolean;
locationModePollingSeconds?: number;
};
private restClient;
constructor(locationDetails: UserLocation, cameras: RingCamera[], chimes: RingChime[], intercoms: RingIntercom[], options: {
hasHubs: boolean;
hasAlarmBaseStation: boolean;
locationModePollingSeconds?: number;
}, restClient: RingRestClient);
get id(): string;
get locationId(): string;
get name(): string;
createConnection(): Promise<WebSocket>;
getConnection(): Promise<WebSocket>;
sendMessage(message: {
msg: MessageType;
datatype?: MessageDataType;
dst: string;
body?: any;
seq?: number;
}): Promise<void>;
sendCommandToSecurityPanel(commandType: string, data?: Record<string, unknown>): Promise<void>;
setAlarmMode(alarmMode: AlarmMode, bypassSensorZids?: string[]): Promise<void>;
getAlarmMode(): Promise<AlarmMode>;
soundSiren(): Promise<void>;
silenceSiren(): Promise<void>;
setLightGroup(groupId: string, on: boolean, durationSeconds?: number): Promise<any>;
getNextMessageOfType(type: MessageType, src: string): Promise<any[]>;
requestList(listType: MessageType, assetId: string): Promise<void>;
getList(listType: MessageType, assetId: string): Promise<any[]>;
getDevices(): Promise<RingDevice[]>;
getRoomList(assetId: string): Promise<any[]>;
getSecurityPanel(): Promise<RingDevice>;
disarm(): Promise<void>;
armHome(bypassSensorZids?: string[]): Promise<void>;
armAway(bypassSensorZids?: string[]): Promise<void>;
getHistory(options?: HistoryOptions): Promise<RingDeviceHistoryEvent[] & import("./rest-client.ts").ExtendedResponse>;
getCameraEvents(options?: CameraEventOptions): Promise<CameraEventResponse & import("./rest-client.ts").ExtendedResponse>;
getAccountMonitoringStatus(): Promise<AccountMonitoringStatus & import("./rest-client.ts").ExtendedResponse>;
private triggerAlarm;
triggerBurglarAlarm(): Promise<AccountMonitoringStatus & import("./rest-client.ts").ExtendedResponse>;
triggerFireAlarm(): Promise<AccountMonitoringStatus & import("./rest-client.ts").ExtendedResponse>;
getLocationMode(): Promise<LocationModeResponse & import("./rest-client.ts").ExtendedResponse>;
setLocationMode(mode: LocationModeInput): Promise<LocationModeResponse & import("./rest-client.ts").ExtendedResponse>;
disableLocationModes(): Promise<void>;
enableLocationModes(): Promise<LocationModeSettingsResponse & import("./rest-client.ts").ExtendedResponse>;
getLocationModeSettings(): Promise<LocationModeSettingsResponse & import("./rest-client.ts").ExtendedResponse>;
setLocationModeSettings(settings: LocationModeSettings): Promise<LocationModeSettingsResponse & import("./rest-client.ts").ExtendedResponse>;
getLocationModeSharing(): Promise<LocationModeSharing & import("./rest-client.ts").ExtendedResponse>;
setLocationModeSharing(sharedUsersEnabled: boolean): Promise<LocationModeSharing & import("./rest-client.ts").ExtendedResponse>;
supportsLocationModeSwitching(): Promise<boolean>;
disconnect(): void;
}