Node.js SDK se integra perfectamente con el servidor de red Lorawan (LNS) de las cosas, lo que permite a los desarrolladores conectar y administrar fácilmente los dispositivos IoT. Con un amplio soporte de API, este paquete simplifica la interacción de la aplicación con el ecosistema Lorawan de TTN, habilitando el aprovisionamiento del dispositivo, la transmisión de datos y el monitoreo del estado del dispositivo. Utilice el Node.js SDK fácil de usar para aumentar la conectividad y la gestión de datos dentro de la infraestructura Lorawan de las cosas.
Este SDK también funciona con "The Things Industries" y se alojó en privado "The Things Stack Instance".
¿Listo para comenzar a usar SDK? ¡Comencemos!
Documentación : ttn-node-sdk.fuota.io
GitHub : the-things-network-nodejs-sdk
Para métodos relacionados con los dispositivos finales: Enddevice
Para los métodos relacionados con la aplicación: la aplicación
Para métodos relacionados con la puerta de enlace: Gateway
Para métodos relacionados con el usuario: usuario
Para los métodos relacionados con la organización: organización
Para instalar la última versión en NPM localmente y guárdela en el archivo Packle.json de su paquete:
NPM Instale la red de things --save
Para instalar una versión en particular:
NPM Instale The-Things-Network@Version--Save
Supongamos que desea crear una aplicación, se puede crear tanto para el usuario como para la organización ...
Para obtener más información, consulte esto: Cree una aplicación para el usuario
import { User } from 'the-things-network';
//just an example of config
const config = {
IDENTITY_SERVER: 'eu1.cloud.thethings.network',
NETWORK_SERVER: 'nam1.cloud.thethings.network',
APPLICATION_SERVER: 'nam1.cloud.thethings.network',
JOIN_SERVER: 'nam1.cloud.thethings.network',
API_KEY: 'xxxxxapi_keyxxxxxx',
};
//just an example of payload
const payload = {
application_id: 'test',
name: 'demo',
description: 'for testing',
};
const user = User('userId', config);
const result = async () => {
try {
const resp = await user.createApplication(payload);
console.log(resp);
} catch (err) {
console.log(err);
}
}
result();
Para obtener más información, consulte esto: Crear aplicación para la organización
import { Organization } from 'the-things-network';
//just an example of config
const config = {
IDENTITY_SERVER: 'eu1.cloud.thethings.network',
NETWORK_SERVER: 'nam1.cloud.thethings.network',
APPLICATION_SERVER: 'nam1.cloud.thethings.network',
JOIN_SERVER: 'nam1.cloud.thethings.network',
API_KEY: 'xxxxxapi_keyxxxxxx',
};
//just an example of payload
const payload = {
application_id: 'test',
name: 'demo',
description: 'for testing',
};
const org = new Organization('organizationId', config);
const result = async () => {
try {
const resp = await org.createApplication(payload);
console.log(resp);
} catch (err) {
console.log(err);
}
}
result();
import { Application } from 'the-things-network';
//just an example of config
const config = {
IDENTITY_SERVER: 'eu1.cloud.thethings.network',
NETWORK_SERVER: 'nam1.cloud.thethings.network',
APPLICATION_SERVER: 'nam1.cloud.thethings.network',
JOIN_SERVER: 'nam1.cloud.thethings.network',
API_KEY: 'xxxxxapi_keyxxxxxx',
};
const app = new Application('', config);
const result = async () => {
try {
const resp = await app.getApplicationList();
console.log(resp);
} catch (err) {
console.log(err);
}
}
result();
import { EndDevice } from 'the-things-network';
//just an example of config
const config = {
IDENTITY_SERVER: 'eu1.cloud.thethings.network',
NETWORK_SERVER: 'nam1.cloud.thethings.network',
APPLICATION_SERVER: 'nam1.cloud.thethings.network',
JOIN_SERVER: 'nam1.cloud.thethings.network',
API_KEY: 'xxxxxapi_keyxxxxxx',
};
//just an example of payload
const payload = {
end_device: {
ids: {
join_eui: 'DDFFDDFDFFDFDFDF',
dev_eui: '70B3D57ED005B59E',
device_id: 'eui-70b3d57ed005b59e',
application_ids: {
application_id: 'appId',
},
},
version_ids: {
brand_id: 'moko',
model_id: 'lw003',
hardware_version: '2.1',
firmware_version: '2.0',
band_id: 'AS_923',
},
network_server_address: 'nam1.cloud.thethings.network',
application_server_address: 'nam1.cloud.thethings.network',
join_server_address: 'nam1.cloud.thethings.network',
},
};
const device = new EndDevice('appId', config);
const result = async () => {
try {
const resp = await device.createEndDeviceIS(payload);
console.log(resp);
} catch (err) {
console.log(err);
}
}
result();
import { User } from 'the-things-network';
//just an example of config
const config = {
IDENTITY_SERVER: 'eu1.cloud.thethings.network',
NETWORK_SERVER: 'nam1.cloud.thethings.network',
APPLICATION_SERVER: 'nam1.cloud.thethings.network',
JOIN_SERVER: 'nam1.cloud.thethings.network',
API_KEY: 'xxxxxapi_keyxxxxxx',
};
//just an example of payload
const payload = {
gateway: {
ids: { gateway_id: 'eui-ee34634e6ada3425', eui: 'EE34634E6ADA3425' },
name: 'gateway',
description: 'testing',
gateway_server_address: 'nam1.cloud.thethings.network',
frequency_plan_id: 'US_902_928_FSB_3',
status_public: true,
location_public: true,
enforce_duty_cycle: true,
schedule_anytime_delay: '0.530s',
require_authenticated_connection: true,
},
};
const gateway = new User('userId', config);
const result = async () => {
try {
const resp = await gateway.createGateway(payload);
console.log(resp);
} catch (err) {
console.log(err);
}
}
result();
import { EndDevice } from 'the-things-network';
//just an example of config
const config = {
IDENTITY_SERVER: 'eu1.cloud.thethings.network',
NETWORK_SERVER: 'nam1.cloud.thethings.network',
APPLICATION_SERVER: 'nam1.cloud.thethings.network',
JOIN_SERVER: 'nam1.cloud.thethings.network',
API_KEY: 'xxxxxapi_keyxxxxxx',
TENANT_ID: 'xxxxxxxxxx',
};
//just an example of payload
const payload = {
device_id: 'deviceId',
down_type: '#',
host: 'nam1.cloud.thethings.industries',
port: 1883,
username: 'user@tenant',
callback_uplink_event: (data) => {
console.log('upEvent', data.toString('utf8'));
},
callback_subscribe_error: (data) => {
console.log('upEvent', data.toString('utf8'));
},
callback_subscribe_disconnect: (data) => {
console.log('upEvent', data.toString('utf8'));
}
};
const device = new EndDevice('appId', config);
const result = async () => {
try {
const resp = await device.subscribeUpLinkEvent(payload);
console.log(resp);
} catch (err) {
console.log(err);
}
}
result();
import { EndDevice } from 'the-things-network';
//just an example of config
const config = {
IDENTITY_SERVER: 'eu1.cloud.thethings.network',
NETWORK_SERVER: 'nam1.cloud.thethings.network',
APPLICATION_SERVER: 'nam1.cloud.thethings.network',
JOIN_SERVER: 'nam1.cloud.thethings.network',
API_KEY: 'xxxxxapi_keyxxxxxx',
TENANT_ID: 'xxxxxxxxxx',
};
//just an example of payload
const payload = {
device_id: 'deviceId',
down_type: '#',
host: 'nam1.cloud.thethings.industries',
port: 1883,
username: 'user@example',
callback_uplink_event: (data) => {
console.log('upEvent', data.toString('utf8'));
},
callback_subscribe_error: (data) => {
console.log('upEvent', data.toString('utf8'));
},
callback_subscribe_disconnect: (data) => {
console.log('upEvent', data.toString('utf8'));
}
};
const device = new EndDevice('appId', config);
const result = async () => {
try {
const upevent = await device.subscribeUpLinkEvent(payload);
console.log(upevent);
const resp = await device.unsubscribeEvent(upevent.client, upevent.topic);
console.log(resp);
} catch (err) {
console.log(err);
}
}
result();
Una vez que crea la instancia de clase específica y establece los parámetros requeridos, puede explorar todos los métodos que pertenecen a esa clase, es tan fácil ...
import { Application } from 'the-things-network';
//just an example of config
const config = {
IDENTITY_SERVER: 'eu1.cloud.thethings.network',
NETWORK_SERVER: 'nam1.cloud.thethings.network',
APPLICATION_SERVER: 'nam1.cloud.thethings.network',
JOIN_SERVER: 'nam1.cloud.thethings.network',
API_KEY: 'xxxxxapi_keyxxxxxx',
};
//just an example of payload
const payload = {
name: 'test',
description: 'For testing',
attributes: { 'key1': 'value1', 'key2': 'value2' },
};
const app = new Application('appId', config);
const result = async () => {
try {
const resp1 = await app.getApplicationList();
console.log(resp1);
const resp2 = await app.updateApplication(payload);
console.log(resp2);
const resp3 = await app.deleteApplication();
console.log(resp3);
const resp4 = await app.restoreApplication();
console.log(resp4);
} catch (err) {
console.log(err);
}
}
result();
¡Agradecemos las contribuciones a la red de things ! Si está interesado en contribuir a este paquete, hay muchas maneras de contener a la red de things:
Problemas de informe: si encuentra algún error, error o mejoras, no dude en abrir un problema en GitHub.
Envíe solicitudes de extracción: si puede solucionar un problema usted mismo o desea agregar una nueva característica, nos alegraría revisar su solicitud de extracción.
Mejore la documentación: ya sea que haya encontrado un error tipográfico, una documentación poco clara o tenga una idea para mejorar nuestra documentación, ¡nos encantaría saber de usted!
Compartir comentarios: cualquier comentario sobre su experiencia con nuestro paquete sería muy apreciado. Su entrada nos ayuda a mejorar este paquete para todos.
Tenga en cuenta que este proyecto se publica con un código de conducta de contribuyentes. Al participar en este proyecto, usted acepta cumplir con sus términos.
¡Esperamos colaborar contigo!
Fuota.io
Este SDK está siendo mantenido por Team @Fuota.io
Fuota.io es su plataforma todo en uno para actualizaciones de firmware sin esfuerzo y administración integral de dispositivos para dispositivos Lorawan con la red Things y muchos otros servidores de red de Lorawan.
En el panorama en rápida evolución de los dispositivos conectados, mantener sus dispositivos actualizados con el último firmware es un factor crítico para un rendimiento óptimo, seguridad mejorada y funcionalidad rica en características. Entonces, si está buscando una solución lista para la solución de implementación de actualizaciones de firmware. Únase a nosotros en Fuota.io y desbloquee todo el potencial de sus dispositivos Lorawan conectados, manteniéndolos actualizados, seguros e integrados sin problemas.
Visítanos : Fuota.io
MIT