يتكامل Node.js SDK بسلاسة مع خادم LoRawan Network لشبكة Things (LNS) ، مما يسمح للمطورين بتوصيل وإدارة أجهزة إنترنت الأشياء بسهولة. بدعم واسع API ، تبسط هذه الحزمة تفاعل التطبيق مع نظام LoRawan من TTN ، وتمكين توفير الأجهزة ، ونقل البيانات ، ومراقبة حالة الجهاز. استخدم Node.js SDK سهلة الاستخدام لزيادة الاتصال وإدارة البيانات في البنية التحتية لشبكة LoRawan.
يعمل هذا SDK أيضًا مع "The Things Industries" واستضافته خاصة "مثيل Stack Stack".
جاهز للبدء في استخدام SDK؟ لنبدأ!
الوثائق : ttn-rome-sdk.fuota.io
Github : The-things-network-nodejs-sdk
للطرق المتعلقة بالجهد النهائي: endDevice
للطرق المتعلقة بالتطبيق: التطبيق
للطرق المتعلقة بالبوابة: بوابة
للطرق المتعلقة بالمستخدم: المستخدم
للطرق المتعلقة بالمنظمة: المنظمة
لتثبيت أحدث إصدار على NPM محليًا وحفظه في ملف Package.json الخاص بك:
NPM تثبيت the-things-network-save
لتثبيت نسخة معينة:
NPM تثبيت the-things-network@الإصدار-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();
نرحب بالمساهمات في things-network ! إذا كنت مهتمًا بالمساهمة في هذه الحزمة ، فهناك العديد من الطرق لتنظيمها في الشبكة:
مشكلات التقرير: إذا وجدت أي أخطاء أو أخطاء أو تحسينات ، فلا تتردد في فتح مشكلة على Github.
إرسال طلبات السحب: إذا كنت قادرًا على حل مشكلة بنفسك أو ترغب في إضافة ميزة جديدة ، فسيكون سعداء بمراجعة طلب السحب الخاص بك.
تحسين الوثائق: سواء كنت قد عثرت على خطأ مطبعي أو وثائق غير واضحة ، أو لديك فكرة لتحسين وثائقنا ، نود أن نسمع منك!
شارك التعليقات: أي ردود فعل حول تجربتك مع حزمة لدينا ستكون موضع تقدير كبير. تساعدنا مدخلاتك على جعل هذه الحزمة أفضل للجميع.
يرجى ملاحظة أن هذا المشروع يتم إصداره باستخدام مدونة سلوك المساهم. من خلال المشاركة في هذا المشروع ، فإنك توافق على الالتزام بشروطه.
نتطلع إلى التعاون معك!
Fuota.io
يتم الحفاظ على هذا SDK بواسطة Team @fuota.io
Fuota.io هي منصة الكل في واحد لتحديثات البرامج الثابتة دون عناء وإدارة الأجهزة الشاملة لأجهزة Lorawan مع شبكة Things والعديد من خادم LoRawan Network الشهير.
في المشهد المتطور السريع للأجهزة المتصلة ، يعد الحفاظ على أجهزتك محدّثة بأحدث البرامج الثابتة عاملاً حاسماً للأداء الأمثل والأمان والوظائف الغنية بالميزات. لذلك ، إذا كنت تبحث عن حل جاهز لحل نشر تحديث البرامج الثابتة. انضم إلينا في Fuota.io وقفل الإمكانات الكاملة لأجهزة LoRawan المتصلة الخاصة بك ، مما يجعلها محدثة وآمنة ومدمجة بسلاسة.
زيارتنا : fuota.io
معهد ماساتشوستس للتكنولوجيا