signalk-weatherflow
Version:
SignalK plugin for WeatherFlow weather station data ingestion
318 lines • 8.35 kB
TypeScript
export interface SignalKApp {
debug: (msg: string) => void;
error: (msg: string) => void;
handleMessage: (pluginId: string, delta: SignalKDelta) => void;
savePluginOptions: (options: any, callback: (err?: any) => void) => void;
setProviderStatus: (msg: string) => void;
getDataDirPath: () => string;
subscriptionmanager: {
subscribe: (subscription: SubscriptionRequest, unsubscribes: Array<() => void>, subscriptionError: (err: unknown) => void, dataCallback: (delta: SignalKDelta) => void) => void;
};
registerPutHandler: (context: string, path: string, handler: (context: string, path: string, value: any, callback?: (result: {
state: string;
statusCode?: number;
}) => void) => {
state: string;
statusCode?: number;
}, source?: string) => void;
}
export interface SignalKPlugin {
id: string;
name: string;
description: string;
schema: any;
start: (options: Partial<PluginConfig>, restartPlugin?: () => void) => void;
stop: () => void;
config?: PluginConfig;
}
export interface PluginConfig {
stationId: number;
vesselName?: string;
apiToken: string;
udpPort: number;
enableWebSocket: boolean;
enableForecast: boolean;
forecastInterval: number;
enableWindCalculations: boolean;
deviceId: number;
enablePutControl: boolean;
webSocketControlPath: string;
forecastControlPath: string;
windCalculationsControlPath: string;
}
export type PutHandler = (context: string, path: string, value: any, callback?: (result: {
state: string;
statusCode?: number;
}) => void) => {
state: string;
statusCode?: number;
};
export interface PluginState {
udpServer: any;
wsConnection: any;
forecastInterval: NodeJS.Timeout | null;
windyInterval: NodeJS.Timeout | null;
windCalculations: any;
navigationSubscriptions: Array<() => void>;
currentConfig?: PluginConfig;
webSocketEnabled: boolean;
forecastEnabled: boolean;
windCalculationsEnabled: boolean;
putHandlers: Map<string, PutHandler>;
}
export interface WeatherFlowMessage {
type: string;
serial_number?: string;
hub_sn?: string;
ob?: number[];
obs?: number[][];
evt?: number[];
device_id?: number;
source?: string;
}
export interface RapidWindData {
type: 'rapid_wind';
serial_number: string;
hub_sn: string;
ob: [number, number, number];
device_id: number;
source: string;
}
export interface TempestObservationData {
type: 'obs_st';
serial_number: string;
hub_sn: string;
obs: number[][];
firmware_revision: number;
device_id: number;
source: string;
}
export interface AirObservationData {
type: 'obs_air';
serial_number: string;
hub_sn: string;
obs: number[][];
firmware_revision: number;
device_id: number;
source: string;
}
export interface RainEventData {
type: 'evt_precip';
serial_number: string;
hub_sn: string;
evt: [number];
device_id: number;
source: string;
}
export interface LightningEventData {
type: 'evt_strike';
serial_number: string;
hub_sn: string;
evt: [number, number, number];
device_id: number;
source: string;
}
export interface ProcessedWindData {
timeEpoch: number;
windSpeed: number;
windDirection: number;
utcDate: string;
}
export interface ProcessedTempestData {
timeEpoch: number;
windLull: number;
windAvg: number;
windGust: number;
windDirection: number;
windSampleInterval: number;
stationPressure: number;
airTemperature: number;
relativeHumidity: number;
illuminance: number;
uvIndex: number;
solarRadiation: number;
rainAccumulated: number;
precipitationType: number;
lightningStrikeAvgDistance: number;
lightningStrikeCount: number;
battery: number;
reportInterval: number;
localDailyRainAccumulation: number;
rainAccumulatedFinal: number;
localDailyRainAccumulationFinal: number;
precipitationAnalysisType: number;
utcDate: string;
}
export interface ProcessedAirData {
timeEpoch: number;
stationPressure: number;
airTemperature: number;
relativeHumidity: number;
lightningStrikeCount: number;
lightningStrikeAvgDistance: number;
battery: number;
reportInterval: number;
utcDate: string;
}
export interface ProcessedRainData {
timeEpoch: number;
utcDate: string;
}
export interface ProcessedLightningData {
timeEpoch: number;
lightningStrikeAvgDistance: number;
energy: number;
utcDate: string;
}
export interface WebSocketMessage {
type?: string;
device_id?: number;
id?: string;
summary?: any;
status?: any;
obs?: number[][];
utcDate?: string;
}
export interface ForecastData {
current_conditions?: CurrentConditions;
forecast?: {
hourly?: HourlyForecast[];
daily?: DailyForecast[];
};
}
export interface CurrentConditions {
time?: number;
conditions?: string;
icon?: string;
air_temperature?: number;
feels_like?: number;
relative_humidity?: number;
wind_avg?: number;
wind_direction?: number;
wind_gust?: number;
uv?: number;
brightness?: number;
solar_radiation?: number;
lightning_strike_count_last_1hr?: number;
lightning_strike_count_last_3hr?: number;
lightning_strike_last_distance?: number;
lightning_strike_last_epoch?: number;
precip_accum_local_yesterday?: number;
precip_accum_local_yesterday_final?: number;
precip_analysis_type_yesterday?: number;
pressure_trend?: string;
station_pressure?: number;
sea_level_pressure?: number;
}
export interface HourlyForecast {
time?: number;
conditions?: string;
icon?: string;
air_temperature?: number;
feels_like?: number;
relative_humidity?: number;
wind_avg?: number;
wind_direction?: number;
wind_gust?: number;
precip?: number;
precip_probability?: number;
precip_type?: string;
uv?: number;
sea_level_pressure?: number;
station_pressure?: number;
datetime?: string;
}
export interface DailyForecast {
day_start_local?: number;
day_num?: number;
month_num?: number;
conditions?: string;
icon?: string;
sunrise?: number;
sunset?: number;
air_temp_high?: number;
air_temp_low?: number;
precip_probability?: number;
precip_icon?: string;
precip_type?: string;
wind_avg?: number;
wind_direction?: number;
day_start_local_iso?: string;
sunrise_iso?: string;
sunset_iso?: string;
}
export interface WindInput {
windSpeed: number;
windDirection: number;
airTemperature?: number;
}
export interface ApparentWindData {
windSpeed: number;
windAngleRelative: number;
windAngleRelativeRad: number;
apparentTrueDeg: number;
apparentMagneticDeg: number;
apparentTrueRad: number;
apparentMagneticRad: number;
airTemperature: number;
}
export interface DerivedWindValues {
speedApparent: number;
angleApparent: number;
angleTrueGround: number;
angleTrueWater: number;
directionTrue: number;
directionMagnetic: number;
speedTrue: number;
windChill: number | null;
heatIndex: number | null;
feelsLike: number;
timestamp: string;
source: string;
}
export interface ConvertedValue {
value: any;
units: string | null;
}
export interface SignalKDelta {
context: string;
updates: SignalKUpdate[];
}
export interface SignalKUpdate {
$source?: string;
source?: {
label: string;
type?: string;
};
timestamp: string;
values: SignalKValue[];
meta?: SignalKMeta[];
}
export interface SignalKValue {
path: string;
value: any;
}
export interface SignalKMeta {
path: string;
value: {
units?: string;
description?: string;
};
}
export interface SubscriptionRequest {
context: string;
subscribe: SubscriptionItem[];
}
export interface SubscriptionItem {
path: string;
policy: 'fixed' | 'ideal' | 'instant';
period?: number;
format: 'delta' | 'full';
}
export interface SubscriptionValue {
path: string;
value: any;
timestamp: string;
$source?: string;
}
//# sourceMappingURL=types.d.ts.map