UNPKG

@kaaiot/mqtt-client

Version:

Comprehensive MQTT client tailored for the Kaa IoT platform, providing a range of methods to interact with the platform's features.

112 lines (111 loc) 4.47 kB
import * as mqtt from 'mqtt'; import { IClientOptions } from 'mqtt'; import { AppliedConfigurationPayload, CommandResult, CommandsPendingCallback, ConfigurationPendingCallback, DataSample, ErrorCallback, GetConfigurationPayload, MQTTClientOptions, MetadataPayload, PlainDataSample, ReportSoftwareRequestPayload, ResponseCallback, SoftwareResponse, StatusCallback } from './types'; export declare class KaaMqttClient { private clientOptions; private client; private appVersionName; private token; private subscriptions; constructor(clientOptions: MQTTClientOptions, options?: IClientOptions); private handleMessage; private debugLog; private getConnectionUrl; private subscribeToResponseTopics; /** * Publish single or multiple data samples * * @param dataSamples * @param callback * @param errorCallback * @param requestId */ publishDataCollection(dataSamples: DataSample | DataSample[], callback?: StatusCallback<void>, errorCallback?: ErrorCallback, requestId?: string): void; /** * Publish plain data sample with a metric name * * @param metricName * @param dataSample * @param callback * @param errorCallback * @param requestId */ publishPlainDataSample(metricName: string, dataSample: PlainDataSample, callback?: StatusCallback<void>, errorCallback?: ErrorCallback, requestId?: string): void; /** * Get all metadata keys * * @param callback * @param errorCallback * @param requestId */ getAllMetadataKeys(callback?: ResponseCallback<string[]>, errorCallback?: ErrorCallback, requestId?: string): void; /** * Get all metadata values * * @param callback * @param errorCallback * @param requestId */ getMetadata(callback?: StatusCallback<Record<string, any>>, errorCallback?: ErrorCallback, requestId?: string): void; /** * Full metadata update * * @param payload * @param requestId * @param callback * @param errorCallback */ publishMetadata(payload: MetadataPayload, callback?: StatusCallback, errorCallback?: ErrorCallback, requestId?: string): void; /** * Partially update metadata keys * * @param metadata * @param requestId * @param callback * @param errorCallback */ publishMetadataKeys(metadata: MetadataPayload, callback?: StatusCallback, errorCallback?: ErrorCallback, requestId?: string): void; /** * Delete list of metadata keys * * @param keys * @param callback * @param errorCallback * @param requestId */ deleteMetadataKeys(keys: string[], callback?: StatusCallback, errorCallback?: ErrorCallback, requestId?: string): void; /** * Get list of pending commands. * Callback is called with the list of pending commands and a handler to report the results. * Report handler should be called with the results of the command execution. * * @example * ```typescript * client.getPendingCommands('commandType', (commands, topic, reportHandler) => { * // Handle commands * const results = commands.map((command) => { * // Execute command * return { * id: command.id, * statusCode: 200, * payload: 'OK', * }; * }); * ``` * * @param commandType * @param callback * @param errorCallback */ getPendingCommands<T>(commandType: string, callback?: CommandsPendingCallback<T>, errorCallback?: ErrorCallback): void; reportCommandExecutionResult<T>(commandType: string, results: CommandResult<T>[], errorCallback?: ErrorCallback, requestId?: string): void; getConfigurationJson(payload?: GetConfigurationPayload, callback?: ConfigurationPendingCallback, errorCallback?: ErrorCallback, requestId?: string): void; reportAppliedConfiguration(payload: AppliedConfigurationPayload, callback?: ResponseCallback, errorCallback?: ErrorCallback, requestId?: string): void; reportCurrentSoftwareVersion(payload: ReportSoftwareRequestPayload, callback?: ResponseCallback, errorCallback?: ErrorCallback): void; getSoftwareUpdate(callback?: ResponseCallback<SoftwareResponse>, errorCallback?: ErrorCallback, requestId?: string): void; /** * Safely unsubscribe from all subscriptions and clear the subscriptions record. */ disconnect(callback?: mqtt.DoneCallback): void; connect(): void; }