Le SDK Node.js s'intègre de manière transparente au Lorawan Network Server (LNS) du réseau Things Network, permettant aux développeurs de se connecter facilement et de gérer les appareils IoT. Avec une prise en charge approfondie de l'API, ce package simplifie l'interaction d'application avec l'écosystème Lorawan de TTN, l'activation de l'appareil, la transmission des données et la surveillance de l'état des périphériques. Utilisez le SDK Node.js convivial.
Ce SDK travaille également avec "The Things Industries" et hébergé par "The Things Stack Instance".
Prêt à commencer à utiliser SDK? Commençons!
Documentation : ttn-node-sdk.fuota.io
Github : the-things-network-nodejs-sdk
Pour les méthodes liées aux appareils d'extrémité: EndDevice
Pour les méthodes liées à l'application: Application
Pour les méthodes liées à la passerelle: passerelle
Pour les méthodes liées à l'utilisateur: utilisateur
Pour les méthodes liées à l'organisation: Organisation
Pour installer la dernière version sur NPM localement et enregistrer dans le fichier package.json de votre package:
NPM Installer le réseau de Things-Things - Save
Pour installer une version particulière:
NPM Installer The-Things-Network @ Version - Save
Disons que vous souhaitez créer une application, elle peut être créée pour l'utilisateur et l'organisation ...
Pour plus d'informations, voir ceci: Créer une application pour l'utilisateur
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();
Pour plus d'informations, voir ceci: Créer une application pour l'organisation
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();
Une fois que vous avez créé l'instance de classe spécifique et défini les paramètres requis, vous pouvez explorer toutes les méthodes appartenant à cette classe, c'est aussi simple que ...
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();
Nous accueillons des contributions au réseau de Things ! Si vous êtes intéressé à contribuer à ce package, il existe de nombreuses façons de contribuer au réseau de choses:
Problèmes de rapport: si vous trouvez des bogues, des erreurs ou des améliorations, n'hésitez pas à ouvrir un problème sur GitHub.
Soumettre les demandes de traction: si vous êtes en mesure de résoudre un problème vous-même ou que vous souhaitez ajouter une nouvelle fonctionnalité, nous serions heureux de revoir votre demande de traction.
Améliorer la documentation: que vous ayez trouvé une faute de frappe, une documentation peu claire ou que vous ayez une idée pour améliorer notre documentation, nous serions ravis de vous entendre!
Partagez les commentaires: tous les commentaires sur votre expérience avec notre package seraient grandement appréciés. Votre contribution nous aide à améliorer ce package pour tout le monde.
Veuillez noter que ce projet est publié avec un code de conduite de contributeur. En participant à ce projet, vous acceptez de respecter ses conditions.
Nous sommes impatients de collaborer avec vous!
Fuota.io
Ce SDK est maintenu par l'équipe @ fuota.io
Fuota.io est votre plate-forme tout-en-un pour les mises à jour du micrologiciel sans effort et la gestion complète des périphériques pour les appareils Lorawan avec le réseau Things et de nombreux autres serveur réseau Lorawan populaire.
Dans le paysage en évolution rapide des appareils connectés, garder vos appareils à jour avec le dernier firmware est un facteur critique pour des performances optimales, une sécurité améliorée et des fonctionnalités riches en fonctionnalités. Donc, si vous recherchez une solution prête pour la solution de déploiement de mise à jour du micrologiciel. Rejoignez-nous à Fuota.io et déverrouillez le plein potentiel de vos appareils Lorawan connectés, en les gardant à jour, sécurisé et intégré de manière transparente.
Visitez-nous : fuota.io
Mit