@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
TypeScript
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;
}