Node.js SDKは、NetworkのLorawan Network Server(LNS)とシームレスに統合され、開発者がIoTデバイスを簡単に接続および管理できるようにします。広範なAPIサポートにより、このパッケージは、TTNのLorawanエコシステムとのアプリケーションの相互作用を簡素化し、デバイスのプロビジョニング、データ送信、およびデバイスステータス監視を可能にします。ユーザーフレンドリーなnode.js SDKを利用して、Things NetworkのLorawanインフラストラクチャ内で接続とデータ管理を高めます。
このSDKは、「The Things Industries」とも連携し、「The Things Stackインスタンス」を個人的にホストしました。
SDKの使用を開始する準備はできましたか?始めましょう!
ドキュメント: ttn-node-sdk.fuota.io
Github : the-things-network-nodejs-sdk
エンドデバイス関連方法の場合:EndDevice
アプリケーション関連の方法:アプリケーション
ゲートウェイ関連の方法:ゲートウェイ
ユーザー関連の方法:ユーザー
組織関連の方法:組織
NPMにローカルに最新バージョンをインストールし、PackageのPackage.jsonファイルに保存するには:
npmインストールthings-network - save
特定のバージョンをインストールするには:
npmインストールthe-things-network@version - save
アプリケーションを作成したいとしましょう。ユーザーと組織の両方で作成できます...
詳細については、これを参照してください。ユーザーのアプリケーションを作成してください
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();
詳細については、これを参照してください。組織のアプリケーションを作成してください
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();
特定のクラスのインスタンスを作成して、必要なパラメーターを設定したら、そのクラスに属するすべての方法を探索できます。それは簡単です...
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();
The-Things-Networkへの貢献を歓迎します!このパッケージに貢献することに興味があるなら、The-Things-Networkに伝える方法はたくさんあります。
報告の問題:バグ、エラー、または機能強化が見つかった場合は、GitHubで問題を自由に開いてください。
プルリクエストを送信:自分で問題を修正できる場合、または新しい機能を追加したい場合は、プルリクエストを確認できます。
ドキュメントの改善:タイプミス、不明確なドキュメントを見つけた場合でも、ドキュメントを改善するためのアイデアがある場合でも、ご連絡をお待ちしております。
フィードバックを共有:パッケージでの経験に関するフィードバックは大歓迎です。あなたの入力は、私たちがこのパッケージをすべての人にとってより良くするのに役立ちます。
このプロジェクトは、貢献者行動規範でリリースされていることに注意してください。このプロジェクトに参加することにより、お客様はその条件を順守することに同意します。
私たちはあなたと協力することを楽しみにしています!
fuota.io
このSDKは、Team @fuota.ioによって維持されています
Fuota.ioは、Things Networkや他の多くの人気のあるLorawan Network Serverを使用したLorawanデバイス向けの簡単なファームウェアの更新と包括的なデバイス管理のためのオールインワンプラットフォームです。
接続されたデバイスの急速に進化する状況では、最新のファームウェアを最新の状態に保つことは、最適なパフォーマンス、セキュリティの強化、機能が豊富な機能の重要な要素です。したがって、ファームウェアアップデートデプロイメントソリューションの準備が整ったソリューションを探している場合。 fuota.ioにご参加ください。接続されたLorawanデバイスの可能性を最大限に引き出して、更新、安全、シームレスに統合してください。
私たちをご覧ください: fuota.io
mit