JavaScript client library for the Arduino IoT Cloud REST API enabling programmatic management of devices, things, properties, and time-series data
LoRa device management and frequency plan configuration for Low Power Wide Area Network (LPWAN) IoT deployments. Arduino IoT Cloud provides specialized APIs for managing LoRaWAN devices and their frequency plans.
Create and manage LoRaWAN devices with specialized configuration parameters.
class LoraDevicesV1Api {
/**
* Create a new LoRa device with LoRaWAN-specific configuration
* @param createLoraDevicesV1Payload - LoRa device creation parameters including device EUI and keys
* @param opts - Optional parameters including organization ID
* @returns Promise<ArduinoLoradevicev1> - Created LoRa device object
*/
loraDevicesV1Create(createLoraDevicesV1Payload: CreateLoraDevicesV1Payload, opts?: any): Promise<ArduinoLoradevicev1>;
}Manage available LoRa frequency plans for different regions and regulatory requirements.
class LoraFreqPlanV1Api {
/**
* List all available LoRa frequency plans for device configuration
* @param opts - Optional parameters including organization ID and region filtering
* @returns Promise<ArduinoLorafreqplansv1> - Collection of available frequency plans
*/
loraFreqPlanV1List(opts?: any): Promise<ArduinoLorafreqplansv1>;
}interface ArduinoLoradevicev1 {
applicationEui?: string;
applicationKey?: string;
createdAt?: Date;
deviceEui?: string;
deviceId?: string;
frequencyPlan?: string;
href?: string;
id?: string;
name?: string;
organizationId?: string;
type?: string;
updatedAt?: Date;
userId?: string;
}
interface CreateLoraDevicesV1Payload {
applicationEui?: string;
applicationKey?: string;
deviceEui: string;
frequencyPlan: string;
name: string;
type?: string;
}
interface ArduinoLorafreqplansv1 {
freqPlans?: ArduinoLorafreqplanv1[];
}
interface ArduinoLorafreqplanv1 {
id?: string;
name?: string;
region?: string;
}LoRa Device Management Examples:
import ArduinoIotClient from '@arduino/arduino-iot-client';
const loraDevicesApi = new ArduinoIotClient.LoraDevicesV1Api();
const loraFreqPlanApi = new ArduinoIotClient.LoraFreqPlanV1Api();
// List available frequency plans
async function listFrequencyPlans() {
try {
const freqPlans = await loraFreqPlanApi.loraFreqPlanV1List();
console.log('Available LoRa Frequency Plans:');
freqPlans.freqPlans?.forEach(plan => {
console.log(`- ${plan.name} (${plan.region}): ${plan.id}`);
});
return freqPlans.freqPlans || [];
} catch (error) {
console.error('Failed to list frequency plans:', error);
throw error;
}
}
// Create a LoRa device
async function createLoRaDevice() {
try {
// First, get available frequency plans
const freqPlans = await listFrequencyPlans();
// Select appropriate frequency plan (e.g., EU868 for Europe)
const euFreqPlan = freqPlans.find(plan => plan.region === 'EU');
if (!euFreqPlan) {
throw new Error('EU frequency plan not available');
}
// Create LoRa device
const loraDevice = await loraDevicesApi.loraDevicesV1Create({
name: "Environmental Sensor LoRa Node",
deviceEui: "70B3D57ED005B4C8", // 8-byte device EUI in hex
applicationEui: "70B3D57ED005B4C0", // 8-byte application EUI in hex
applicationKey: "A665A45920422F9D417E4867EFDC4FB8B04A1F3FFF1FA07E998E86F7F7A27AE3", // 32-byte key
frequencyPlan: euFreqPlan.id,
type: "MKRWAN1310"
});
console.log(`Created LoRa device: ${loraDevice.id}`);
console.log(`Device EUI: ${loraDevice.deviceEui}`);
console.log(`Application EUI: ${loraDevice.applicationEui}`);
console.log(`Frequency Plan: ${loraDevice.frequencyPlan}`);
return loraDevice;
} catch (error) {
console.error('Failed to create LoRa device:', error);
throw error;
}
}
// Complete LoRa setup workflow
async function setupLoRaDeviceWorkflow() {
try {
console.log('Setting up LoRa device workflow...');
// 1. List available frequency plans for user selection
const freqPlans = await listFrequencyPlans();
console.log(`Found ${freqPlans.length} frequency plans`);
// 2. Create LoRa device with appropriate configuration
const device = await createLoRaDevice();
// 3. Device is now ready for LoRaWAN network joining
console.log('LoRa device setup completed successfully');
console.log('Next steps:');
console.log('1. Configure the physical device with the provided keys');
console.log('2. Power on the device to join the LoRaWAN network');
console.log('3. Monitor device connectivity in the Arduino IoT Cloud');
return device;
} catch (error) {
if (error.status === 400) {
console.error('Bad request - check device configuration parameters');
} else if (error.status === 409) {
console.error('Conflict - device EUI may already be registered');
} else {
console.error('LoRa setup error:', error.detail || error.message);
}
}
}
// Regional frequency plan selection helper
async function selectFrequencyPlanByRegion(region) {
try {
const freqPlans = await loraFreqPlanApi.loraFreqPlanV1List();
const regionalPlans = freqPlans.freqPlans?.filter(plan =>
plan.region?.toUpperCase() === region.toUpperCase()
) || [];
if (regionalPlans.length === 0) {
console.warn(`No frequency plans available for region: ${region}`);
return null;
}
console.log(`Available plans for ${region}:`);
regionalPlans.forEach(plan => {
console.log(`- ${plan.name}: ${plan.id}`);
});
return regionalPlans[0]; // Return first available plan for the region
} catch (error) {
console.error('Failed to select frequency plan:', error);
return null;
}
}
// Bulk LoRa device creation for fleet deployment
async function createLoRaDeviceFleet(deviceConfigs) {
try {
const createdDevices = [];
for (const config of deviceConfigs) {
try {
const device = await loraDevicesApi.loraDevicesV1Create({
name: config.name,
deviceEui: config.deviceEui,
applicationEui: config.applicationEui,
applicationKey: config.applicationKey,
frequencyPlan: config.frequencyPlan,
type: config.type || "MKRWAN1310"
});
createdDevices.push(device);
console.log(`✅ Created device: ${config.name} (${device.id})`);
} catch (error) {
console.error(`❌ Failed to create device: ${config.name} - ${error.message}`);
}
}
console.log(`Successfully created ${createdDevices.length}/${deviceConfigs.length} LoRa devices`);
return createdDevices;
} catch (error) {
console.error('Bulk LoRa device creation failed:', error);
throw error;
}
}Install with Tessl CLI
npx tessl i tessl/npm-arduino--arduino-iot-client