CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-arduino--arduino-iot-client

JavaScript client library for the Arduino IoT Cloud REST API enabling programmatic management of devices, things, properties, and time-series data

Overview
Eval results
Files

device-management.mddocs/

Device Management

Complete device lifecycle management including creation, configuration, certificate management, and over-the-air updates. The Arduino IoT Client provides four specialized API classes for comprehensive device management.

Capabilities

Core Device Operations

Primary device management functionality for CRUD operations on IoT devices.

class DevicesV2Api {
  /**
   * Create a new IoT device
   * @param createDevicesV2Payload - Device creation parameters
   * @param opts - Optional parameters including organization ID
   * @returns Promise<ArduinoDevicev2> - Created device object
   */
  devicesV2Create(createDevicesV2Payload: CreateDevicesV2Payload, opts?: any): Promise<ArduinoDevicev2>;

  /**
   * List all devices accessible to the authenticated user
   * @param opts - Optional parameters including organization ID and pagination
   * @returns Promise<ArduinoDevicev2[]> - Array of device objects
   */
  devicesV2List(opts?: any): Promise<ArduinoDevicev2[]>;

  /**
   * Get detailed information about a specific device
   * @param id - Device ID
   * @param opts - Optional parameters including organization ID
   * @returns Promise<ArduinoDevicev2> - Device object with full details
   */
  devicesV2Show(id: string, opts?: any): Promise<ArduinoDevicev2>;

  /**
   * Update device configuration and properties
   * @param id - Device ID
   * @param devicev2 - Updated device configuration
   * @param opts - Optional parameters including organization ID
   * @returns Promise<ArduinoDevicev2> - Updated device object
   */
  devicesV2Update(id: string, devicev2: Devicev2, opts?: any): Promise<ArduinoDevicev2>;

  /**
   * Delete a device permanently
   * @param id - Device ID
   * @param opts - Optional parameters including organization ID
   * @returns Promise<void>
   */
  devicesV2Delete(id: string, opts?: any): Promise<void>;

  /**
   * Get device events and status history
   * @param id - Device ID
   * @param opts - Optional parameters including date range and organization ID
   * @returns Promise<ArduinoDevicev2StatusEvents> - Device events
   */
  devicesV2GetEvents(id: string, opts?: any): Promise<ArduinoDevicev2StatusEvents>;

  /**
   * Get current device properties and values
   * @param id - Device ID
   * @param opts - Optional parameters including organization ID
   * @returns Promise<ArduinoDevicev2properties[]> - Device properties
   */
  devicesV2GetProperties(id: string, opts?: any): Promise<ArduinoDevicev2properties[]>;

  /**
   * Get device status events and connection history
   * @param id - Device ID
   * @param opts - Optional parameters including date range and organization ID
   * @returns Promise<ArduinoDevicev2StatusEvents> - Status events
   */
  devicesV2GetStatusEvents(id: string, opts?: any): Promise<ArduinoDevicev2StatusEvents>;

  /**
   * Get time series data for a specific device property
   * @param id - Device ID
   * @param pid - Property ID
   * @param opts - Optional parameters including time range and organization ID
   * @returns Promise<ArduinoSeriesResponse> - Time series data
   */
  devicesV2Timeseries(id: string, pid: string, opts?: any): Promise<ArduinoSeriesResponse>;

  /**
   * Update device property values in bulk
   * @param id - Device ID
   * @param propertiesValues - Property values to update
   * @param opts - Optional parameters including organization ID
   * @returns Promise<void>
   */
  devicesV2UpdateProperties(id: string, propertiesValues: PropertiesValues, opts?: any): Promise<void>;
}

Usage Examples:

import ArduinoIotClient from '@arduino/arduino-iot-client';

const devicesApi = new ArduinoIotClient.DevicesV2Api();

// Create a new device
const newDevice = await devicesApi.devicesV2Create({
  name: "My IoT Sensor",
  fqbn: "arduino:samd:nano_33_iot",
  type: "mkrwifi1010"
});

// List all devices
const allDevices = await devicesApi.devicesV2List();
console.log('Total devices:', allDevices.length);

// Get device details
const deviceDetails = await devicesApi.devicesV2Show(newDevice.id);
console.log('Device status:', deviceDetails.connectionType);

// Update device
const updatedDevice = await devicesApi.devicesV2Update(newDevice.id, {
  name: "Updated Sensor Name",
  webhookActive: true,
  webhookUri: "https://example.com/webhook"
});

Certificate Management

Device certificate management for secure device authentication and communication.

class DevicesV2CertsApi {
  /**
   * Create a new certificate for a device
   * @param id - Device ID
   * @param createDevicesV2CertsPayload - Certificate creation parameters
   * @param opts - Optional parameters including organization ID
   * @returns Promise<ArduinoDevicev2Cert> - Created certificate
   */
  devicesV2CertsCreate(id: string, createDevicesV2CertsPayload: CreateDevicesV2CertsPayload, opts?: any): Promise<ArduinoDevicev2Cert>;

  /**
   * List all certificates for a device
   * @param id - Device ID
   * @param opts - Optional parameters including organization ID
   * @returns Promise<ArduinoDevicev2Cert[]> - Array of certificates
   */
  devicesV2CertsList(id: string, opts?: any): Promise<ArduinoDevicev2Cert[]>;

  /**
   * Get certificate details
   * @param id - Device ID
   * @param cid - Certificate ID
   * @param opts - Optional parameters including organization ID
   * @returns Promise<ArduinoDevicev2Cert> - Certificate details
   */
  devicesV2CertsShow(id: string, cid: string, opts?: any): Promise<ArduinoDevicev2Cert>;

  /**
   * Update certificate configuration
   * @param id - Device ID
   * @param cid - Certificate ID
   * @param devicev2Cert - Updated certificate data
   * @param opts - Optional parameters including organization ID
   * @returns Promise<ArduinoDevicev2Cert> - Updated certificate
   */
  devicesV2CertsUpdate(id: string, cid: string, devicev2Cert: Devicev2Cert, opts?: any): Promise<ArduinoDevicev2Cert>;

  /**
   * Delete a device certificate
   * @param id - Device ID
   * @param cid - Certificate ID
   * @param opts - Optional parameters including organization ID
   * @returns Promise<void>
   */
  devicesV2CertsDelete(id: string, cid: string, opts?: any): Promise<void>;
}

Over-the-Air Updates (OTA)

Firmware update management for remote device updates.

class DevicesV2OtaApi {
  /**
   * Send OTA firmware update via binary URL
   * @param id - Device ID
   * @param devicev2Otabinaryurl - OTA binary URL configuration
   * @param opts - Optional parameters including organization ID
   * @returns Promise<void>
   */
  devicesV2OtaSend(id: string, devicev2Otabinaryurl: Devicev2Otabinaryurl, opts?: any): Promise<void>;

  /**
   * Upload firmware file for OTA update
   * @param id - Device ID
   * @param otaFile - Firmware file to upload
   * @param opts - Optional parameters including organization ID
   * @returns Promise<ArduinoDevicev2Otaupload> - Upload response
   */
  devicesV2OtaUpload(id: string, otaFile: File, opts?: any): Promise<ArduinoDevicev2Otaupload>;

  /**
   * Trigger OTA update using URL payload
   * @param id - Device ID
   * @param devicev2Otaurlpyalod - OTA URL payload
   * @param opts - Optional parameters including organization ID
   * @returns Promise<void>
   */
  devicesV2OtaUrl(id: string, devicev2Otaurlpyalod: Devicev2Otaurlpyalod, opts?: any): Promise<void>;
}

Device Authentication

Device password and authentication management.

class DevicesV2PassApi {
  /**
   * Set device password for authentication
   * @param id - Device ID
   * @param devicev2Pass - Password configuration
   * @param opts - Optional parameters including organization ID
   * @returns Promise<void>
   */
  devicesV2PassSet(id: string, devicev2Pass: Devicev2Pass, opts?: any): Promise<void>;

  /**
   * Get device password information (not the actual password)
   * @param id - Device ID
   * @param opts - Optional parameters including organization ID
   * @returns Promise<ArduinoDevicev2Pass> - Password info
   */
  devicesV2PassGet(id: string, opts?: any): Promise<ArduinoDevicev2Pass>;

  /**
   * Verify device password
   * @param id - Device ID
   * @param checkDevicesV2PassPayload - Password to verify
   * @param opts - Optional parameters including organization ID
   * @returns Promise<void>
   */
  devicesV2PassCheck(id: string, checkDevicesV2PassPayload: CheckDevicesV2PassPayload, opts?: any): Promise<void>;

  /**
   * Delete device password
   * @param id - Device ID
   * @param opts - Optional parameters including organization ID
   * @returns Promise<void>
   */
  devicesV2PassDelete(id: string, opts?: any): Promise<void>;
}

Device Tagging

Device organization and categorization through tags.

class DevicesV2TagsApi {
  /**
   * Create or update a device tag
   * @param id - Device ID
   * @param tag - Tag to create or update
   * @param opts - Optional parameters including organization ID
   * @returns Promise<void>
   */
  devicesV2TagsUpsert(id: string, tag: Tag, opts?: any): Promise<void>;

  /**
   * List all tags for a device
   * @param id - Device ID
   * @param opts - Optional parameters including organization ID
   * @returns Promise<ArduinoTags> - Device tags
   */
  devicesV2TagsList(id: string, opts?: any): Promise<ArduinoTags>;

  /**
   * Delete a specific device tag
   * @param id - Device ID
   * @param key - Tag key to delete
   * @param opts - Optional parameters including organization ID
   * @returns Promise<void>
   */
  devicesV2TagsDelete(id: string, key: string, opts?: any): Promise<void>;
}

Data Models

interface ArduinoDevicev2 {
  connectionType?: string;
  createdAt?: Date;
  deviceId?: string;
  fqbn?: string;
  href?: string;
  id?: string;
  lastActivityAt?: Date;
  name?: string;
  organizationId?: string;
  otaAvailable?: boolean;
  otaCompatible?: boolean;
  requiredWifiCredentials?: boolean;
  serial?: string;
  type?: string;
  updatedAt?: Date;
  userId?: string;
  webhookActive?: boolean;
  webhookUri?: string;
}

interface CreateDevicesV2Payload {
  connectionType?: string;
  fqbn?: string;
  name?: string;
  serial?: string;
  softDeleted?: boolean;
  type?: string;
  userId?: string;
  wifiCredentialsId?: string;
}

interface ArduinoDevicev2Cert {
  ca?: string;
  compressed?: ArduinoCompressedv2;
  createdAt?: Date;
  deviceId?: string;
  enabled?: boolean;
  id?: string;
  updatedAt?: Date;
}

interface ArduinoCompressedv2 {
  ca?: string;
  cert?: string;
  key?: string;
}

interface ArduinoDevicev2StatusEvents {
  events?: ArduinoDevicev2StatusEvent[];
}

interface ArduinoDevicev2StatusEvent {
  deviceId?: string;
  eventType?: string;
  id?: string;
  timestamp?: Date;
}

interface ArduinoDevicev2properties {
  lastValue?: any;
  lastValueUpdatedAt?: Date;
  name?: string;
  permission?: PropertyPermission;
  propertyId?: string;
  type?: string;
  updateParameter?: number;
  updateStrategy?: PropertyUpdateStrategy;
  variableName?: string;
}

interface ArduinoDevicev2Pass {
  password?: string;
}

interface ArduinoTags {
  [key: string]: string;
}

interface Tag {
  key: string;
  value: string;
}

Complete Device Management Example:

import ArduinoIotClient from '@arduino/arduino-iot-client';

// Initialize APIs
const devicesApi = new ArduinoIotClient.DevicesV2Api();
const devicesV2CertsApi = new ArduinoIotClient.DevicesV2CertsApi();
const devicesV2TagsApi = new ArduinoIotClient.DevicesV2TagsApi();
const devicesV2PassApi = new ArduinoIotClient.DevicesV2PassApi();

// Create and configure a complete device setup
async function setupDevice() {
  try {
    // Create device
    const device = await devicesApi.devicesV2Create({
      name: "Production Sensor",
      fqbn: "arduino:samd:nano_33_iot",
      type: "mkrwifi1010",
      connectionType: "wifi"
    });

    console.log('Created device:', device.id);

    // Set device password
    await devicesV2PassApi.devicesV2PassSet(device.id, {
      password: "secure-device-password"
    });

    // Add tags for organization
    await devicesV2TagsApi.devicesV2TagsUpsert(device.id, {
      key: "environment",
      value: "production"
    });

    await devicesV2TagsApi.devicesV2TagsUpsert(device.id, {
      key: "location",
      value: "warehouse-a"
    });

    // Create certificate for secure communication
    const cert = await devicesV2CertsApi.devicesV2CertsCreate(device.id, {
      enabled: true
    });

    console.log('Device setup complete with certificate:', cert.id);

    return device;
  } catch (error) {
    console.error('Device setup failed:', error);
    throw error;
  }
}

Install with Tessl CLI

npx tessl i tessl/npm-arduino--arduino-iot-client

docs

automation-triggers.md

dashboard-management.md

device-management.md

index.md

lora-device-management.md

network-credentials.md

property-management.md

thing-management.md

timeseries-analytics.md

tile.json