timeline-state-resolver
Version:
Have timeline, control stuff
305 lines • 10.1 kB
TypeScript
/// <reference types="node" />
import { EventEmitter } from 'events';
/**
* Note: This work is derived from
* https://dl.pharoscontrols.com/documentation/manuals/Pharos%20Designer%202%20User%20Manual%20-%20A4.pdf
*/
type Primitives = string | number | boolean | null | undefined;
export interface Options {
host: string;
ssl?: boolean;
}
export interface SystemInfo {
bootloader_version: string;
channel_capacity: number;
default_gateway: string;
firmware_version: string;
hardware_type: string;
ip_address: string;
last_boot_time: string;
memory_free: string;
memory_total: string;
memory_used: string;
reset_reason: string;
serial_number: string;
storage_size: string;
subnet_mask: string;
}
export interface ProjectInfo {
author: string;
filename: string;
name: string;
unique_id: string;
upload_date: string;
}
export interface CurrentTime {
datetime: string;
local_time: number;
uptime: number;
}
export interface TimelineInfo {
timelines: Array<{
audio_band: number;
audio_channel: 'left' | 'right' | 'combined';
audio_peak: boolean;
group: 'A' | 'B' | 'C' | 'D' | '';
length: number;
name: string;
num: number;
onstage: boolean;
position: number;
priority: 'high' | 'above_normal' | 'normal' | 'below_normal' | 'low';
source_bus: 'internal' | 'timecode_1' | 'timecode_2' | 'timecode_3' | 'timecode_4' | 'timecode_5' | 'timecode_6' | 'audio_1' | 'audio_2' | 'audio_3' | 'audio_4';
state: 'none' | 'running' | 'paused' | 'holding_at_end' | 'released';
time_offset: number;
timecode_format: string;
}>;
}
export interface SceneInfo {
scenes: Array<{
name: string;
num: number;
state: 'none' | 'started';
onstage: boolean;
}>;
}
export interface GroupInfo {
groups: Array<{
level: number;
name: string;
num: number;
}>;
}
export type ContentTargetInfo = unknown;
export interface ControllerInfo {
controllers: Array<{
ip_address: string;
name: string;
num: number;
online: boolean;
serial: string;
type: string;
}>;
}
export interface RemoteDeviceInfo {
remote_devices: Array<{
num: number;
type: string;
serial: Array<string>;
outputs: Array<{
output: number;
value: boolean;
}>;
inputs: Array<{
input: number;
type: string;
value: boolean;
}>;
online: boolean;
}>;
}
export interface Temperature {
temp: {
sys_temp: number;
core1_temp: number;
core2_temp: number;
ambient_temp: number;
cc_temp: number;
gpu_temp: number;
};
}
export interface FanSpeed {
fan_speed: boolean | any;
}
export interface TextSlot {
text_slots: Array<{
name: string;
value: string;
}>;
}
export interface Protocols {
outputs: Array<{
disabled: boolean;
name: string;
type: number;
universes: Array<{
name: string;
key: {
index?: number;
kinet_port?: number;
kinet_power_supply_num?: number;
};
}>;
dmx_proxy?: Array<{
name: string;
ip_address: string;
}>;
}>;
}
export interface Output {
channels: Array<number>;
disabled: boolean;
proxied_tpc_name?: string;
}
export interface LuaVariables {
[key: string]: any;
}
export interface Triggers {
triggers: Array<{
actions: Array<{
text: string;
}>;
conditions: Array<{
text: string;
}>;
name: string;
num: number;
trigger_text: string;
type: string;
}>;
}
export declare enum Protocol {
DMX = "dmx",
PATHPORT = "pathport",
ARTNET = "art-net",
KINET = "kinet",
SACN = "sacn",
DVI = "dvi",
RIODMX = "rio-dmx"
}
export interface RGBOptions {
intensity?: number;
red?: number;
green?: number;
blue?: number;
temperature?: number;
fade?: number;
path?: 'Default' | 'Linear' | 'Start' | 'End' | 'Braked' | 'Accelerated' | 'Damped' | 'Overshoot';
}
/**
* Implementation of the Pharos V2 http API
*/
export declare class Pharos extends EventEmitter {
private _socket;
private _keepAlive;
private _replyReceived;
private _queryString;
private _serverSessionKey;
private _reconnectAttempts;
private _isConnecting;
private _isReconnecting;
private _aboutToReconnect;
private _pendingMessages;
private _requestPromises;
private _broadcastCallbacks;
/** Setup in connect */
private _options;
private _connected;
private _webSocketKeepAliveTimeout;
connect(options: Options): Promise<void>;
get connected(): boolean;
dispose(): Promise<void>;
getSystemInfo(): Promise<SystemInfo>;
getProjectInfo(): Promise<ProjectInfo>;
getCurrentTime(): Promise<CurrentTime>;
/**
* @param params Example: { num: '1,2,5-9' }
*/
getTimelineInfo(num?: string | number): Promise<TimelineInfo>;
/**
* @param params Example: { num: '1,2,5-9' }
*/
getSceneInfo(num?: string | number): Promise<SceneInfo>;
/**
* @param params Example: { num: '1,2,5-9' }
*/
getGroupInfo(num?: string | number): Promise<GroupInfo>;
private getThingInfo;
getContentTargetInfo(): Promise<ContentTargetInfo>;
getControllerInfo(): Promise<ControllerInfo>;
getRemoteDeviceInfo(): Promise<RemoteDeviceInfo>;
getTemperature(): Promise<Temperature>;
getFanSpeed(): Promise<FanSpeed>;
getTextSlot(names?: string | Array<string>): Promise<TextSlot>;
getProtocols(): Promise<Protocols>;
/**
* @param key {universe?: universeKey} Example: "dmx:1", "rio-dmx:rio44:1" // DMX, Pathport, sACN and Art-Net, protocol:kinetPowerSupplyNum:kinetPort for KiNET and protocol:remoteDeviceType:remoteDeviceNum for RIO DMX
*/
getOutput(universe?: string): Promise<Output>;
getLuaVariables(vars?: string | Array<string>): Promise<LuaVariables>;
getTriggers(): Promise<Triggers>;
subscribeTimelineStatus(callback: any): Promise<void>;
subscribeSceneStatus(callback: any): Promise<void>;
subscribeGroupStatus(callback: any): Promise<void>;
subscribeContentTargetStatus(callback: any): Promise<void>;
subscribeRemoteDeviceStatus(callback: any): Promise<void>;
subscribeBeacon(callback: any): Promise<void>;
subscribeLua(callback: any): Promise<void>;
startTimeline(timelineNum: number): Promise<unknown>;
startScene(sceneNum: number): Promise<unknown>;
releaseTimeline(timelineNum: number, fade?: number): Promise<unknown>;
releaseScene(sceneNum: number, fade?: number): Promise<unknown>;
toggleTimeline(timelineNum: number, fade?: number): Promise<unknown>;
toggleScene(sceneNum: number, fade?: number): Promise<unknown>;
pauseTimeline(timelineNum: number): Promise<unknown>;
resumeTimeline(timelineNum: number): Promise<unknown>;
pauseAll(): Promise<unknown>;
resumeAll(): Promise<unknown>;
releaseAllTimelines(group?: string | null, fade?: number): Promise<unknown>;
releaseAllScenes(group?: string, fade?: number): Promise<unknown>;
releaseAll(group?: string, fade?: number): Promise<unknown>;
setTimelineRate(timelineNum: number, rate: number): Promise<unknown>;
setTimelinePosition(timelineNum: number, position: number): Promise<unknown>;
fireTrigger(triggerNum: number, vars?: Array<any>, testConditions?: boolean): Promise<unknown>;
runCommand(input: string): Promise<unknown>;
/**
* Master the intensity of a group (applied as a multiplier to output levels)
* @param groupNum
* @param level integer
* @param fade float
* @param delay float
*/
masterIntensity(groupNum: number, level: number, fade?: number, delay?: number): Promise<unknown>;
/**
* VLC/VLC +: Master the intensity of a content target (applied as a multiplier to output levels)
* @param type type - of content target, 'primary', 'secondary', 'overlay_1', 'overlay_2'...
* @param level integer
* @param fade float
* @param delay float
*/
masterContentTargetIntensity(type: string, level: number, fade?: number, delay?: number): Promise<unknown>;
setGroupOverride(groupNum: number, options: RGBOptions): Promise<unknown>;
setFixtureOverride(fixtureNum: number, options: RGBOptions): Promise<unknown>;
clearGroupOverrides(groupNum?: number, fade?: number): Promise<unknown>;
clearFixtureOverrides(fixtureNum?: number, fade?: number): Promise<unknown>;
clearAllOverrides(fade?: number): Promise<unknown>;
enableOutput(protocol: Protocol): Promise<unknown>;
disableOutput(protocol: Protocol): Promise<unknown>;
setTextSlot(slot: string, value: string): Promise<unknown>;
flashBeacon(): Promise<unknown>;
parkChannel(universeKey: string, channelList: Array<number | string>, level: number): Promise<unknown>;
unparkChannel(universeKey: string, channelList: Array<number | string>): Promise<unknown>;
getLog(): Promise<unknown>;
clearLog(): Promise<unknown>;
/**
* power reboot
*/
resetHardware(): Promise<unknown>;
setInternalPage(isInternal: any): void;
request(id: string, params?: {
[name: string]: any;
}): Promise<any>;
subscribe(id: string, callback: Function): Promise<void>;
command(method: 'GET' | 'POST' | 'DELETE' | 'PUT', url0: string, data0?: {
[key: string]: Primitives;
}): Promise<unknown>;
private _connectSocket;
private _sendMessage;
private _webSocketKeepAlive;
private _reconnect;
private _onReceiveMessage;
private _handleWebsocketReconnection;
private _connectionChanged;
}
export {};
//# sourceMappingURL=connection.d.ts.map