În acest articol, vom discuta de ce și cum puteți utiliza Node.js pentru partea serverului dispozitivelor dvs. Internet of Things (IoT).

Înțelegeți oportunitatea de afaceri

În 2019, venitul pe piață al IoT a ajuns la 212 miliarde de dolari. Există aproximativ 26,66 miliarde de dispozitive IoT conectate în întreaga lume, iar acest număr va ajunge la 75,44 miliarde până în 2025.

ONU estimează că, în februarie 2020, populația lumii are în prezent 7,7 miliarde de oameni. Matematica simplă ne spune că o persoană obișnuită deține aproximativ 3 până la 4 dispozitive IoT. Ai una? Poate un ceas inteligent? Un televizor inteligent? Sau o mașină inteligentă?

Mergând mai departe, se așteaptă ca populația să ajungă la 8,1 miliarde de oameni în 2025. Același calcul matematic ne arată că, în 2025, o persoană medie va avea între 9 și 10 dispozitive inteligente în posesia sa.

Vezi unde merg cu asta? Doriți să vă alăturați acestei nișe de piață profitabile și să vă faceți dispozitivul IoT unul dintre aceste 9-10?

Statistici preluate de la Statista și Națiunile Unite.
Statistici preluate de la Statista și Națiunile Unite.

Alegeți cadrul potrivit

Partea client a unui dispozitiv IoT este reprezentată de hardware-ul în sine. Este programat cu C, C ++ sau Lua – limbaje de programare de nivel scăzut și dificil. Dar nu puteți face prea multe din acest motiv din cauza limitărilor hardware.

Împreună cu performanțe ridicate, utilizatorii dispozitivelor IoT acordă prioritate costurilor reduse și eficienței energetice. Astfel, cel puțin pentru moment, ar trebui să continuați să lucrați cu limbaje de nivel scăzut.

Pe de altă parte, partea serverului aplicațiilor IoT vă oferă mai multă libertate de alegere. Aici nu sunteți limitat de hardware, deci puteți alege orice limbaj de codare și cadru preferați.

Cred că cea potrivită este Node.js. Iată de ce.

Node.js este rapid și performant

În primul rând, orice dispozitiv IoT funcționează constant cu date care se schimbă dinamic. Aceasta înseamnă că aveți nevoie de un cadru care să poată gestiona aplicații în timp real și fluxuri mari de date.

Node.js este construit pe motorul Google V8 JS, care este extrem de eficient și perfect scalabil. Datorită acestei funcții, Node.js este cadrul numărul unu care trebuie utilizat cu aplicații și platforme în timp real. Nici schimbarea constantă a datelor nu este o provocare pentru aceasta.

Node.js este ușor de integrat cu protocoalele IoT

Aplicațiile IoT utilizează în mod activ un protocol de mesagerie bazat pe publicare-abonare, MQTT. La rândul său, pentru transport și încapsulare, acest protocol folosește WebSockets. Atât MQTT, cât și WebSockets sunt bine suportate și ușor de integrat cu Node.js.

Modulele Node.js facilitează dezvoltarea IoT

Node.js este mărit cu npm, Node Package Manager, care oferă o mulțime de module IoT utile. Există aproximativ 80 de pachete pentru Intel IoT Edison, Arduino sau Raspberry Pi. De asemenea, are peste 30 de pachete pentru diferiți senzori, balize și alte instrumente.

De-aceea Dezvoltarea Internetului obiectelor este mai simplu și mai rapid cu modulele IoT Node.js.

Node.js este eficient din punct de vedere al resurselor și scalabil

În general, dezvoltatorii preferă să lucreze cu Node.js deoarece nu necesită multe resurse. CPU și RAM nu sunt supraîncărcate.

De asemenea, Node.js este foarte scalabil, ceea ce este absolut necesar pentru majoritatea companiilor moderne.

Feriți-vă de provocări

Intrarea în nișa IoT vă poate duce pe o cale către succes. Nu este de mirare, deci, că există o mulțime de provocări și capcane care vă așteaptă pe drum – succesul nu este niciodată ușor de realizat. Și prima și cea mai importantă provocare de care ar trebui să fii conștient este securitatea.

Securitatea este una dintre problemele de top din sfera IoT și una dintre primele capcane pe care te vei împiedica. Deci, ce ar trebui să faci?

Autentificare sigură

Să începem cu autentificarea. Există o mulțime de instrumente pentru autentificare în Node.js: jetoane, jetoane web JSON, Auth0 și așa mai departe. Fiecare are avantajele și dezavantajele sale. Pentru început, ar trebui să le priviți din perspectiva IoT.

Pe de o parte, jetoanele sunt eficiente, dar nu sunt 100% sigure. Acestea sunt o modalitate interesantă de a configura autentificarea, deoarece vă permit să identificați un anumit utilizator și să decideți dacă îi acordați sau refuzați accesul. Un token poate fi criptat cu orice algoritm.

Cu toate acestea, hardware-ul (scanere, senzori, hub-uri sau alte lucruri IoT) ar trebui să stocheze acest jeton sau datele de autentificare / parolă în firmware. Aceasta înseamnă că atacatorii pot fura simbolul dacă au acces fizic la hardware. Aceeași poveste este valabilă și pentru JWT sau Auth0.

Pe de altă parte, putem folosi orice instrumente de autentificare din partea serverului. Puteți integra cu ușurință orice instrument de autentificare pe platforma Node.js.

Există o mulțime de pachete npm care vă permit să faceți acest lucru manual: Auth0, Passport și JWT. Există, de asemenea, pachete pentru integrare cu serviciile IoT cloud: @ azure-iot / authentication, aws-iot-device-sdk și așa mai departe.

Cereri HTTP sigure

Apoi, aveți grijă cu solicitările HTTP de pe dispozitivele dvs. IoT. Ar trebui să verificați dacă primiți o cerere de la un dispozitiv IoT adecvat.

În primul rând, ar trebui să implementați HTTPS cu dispozitivele dvs. IoT. Hardware-ul nu este un browser și ar trebui să implementați HTTPS manual pe acesta. Pentru partea de server, o puteți face manual sau puteți utiliza găzduirea cu configurație HTTPS și certificate.

În Node.js, este destul de ușor de implementat:

const express = require('express');
const https = require('https');
const http = require('http');
const fs = require('fs');
const options = {
  key: fs.readFileSync('path/to/your/key.pem'),
  cert: fs.readFileSync(path/to/your/certificate.cert')
};
const app = express();
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);

HTTPS utilizează protocoale SSL sau TLS pentru criptarea datelor. Cu toate acestea, pentru a vă asigura că ați primit o cerere de la serverul sau clientul necesar, utilizați criptarea datelor suplimentare. De exemplu, acesta este modul în care puteți utiliza o semnătură:

const fetch = require('node-fetch');
const verifier = crypto.createVerify('RSA-SHA1')
const SIGNATURE_FORMAT = 'base64';
//check if it trusted url for your certificate
const trustedUrl = ‘https://trustedUrl/’
const isTrustedUrl = trustedUrl.match(url);
If (isTrustedUrl) {
verifier.update(req.body, 'utf8')
	fetch(isTrustedUrl)
    .then(certificate => {
	// check signature
const isValidSignature = verifier.verify(certificate, reg.header.signature, SIGNATURE_FORMAT);
   })
    .catch(err => console.log(err));
}

Pentru a încheia această parte:

  1. Mai întâi, trebuie să verificați adresa URL de încredere a certificatului dvs.
  2. Apoi, semnați un corp de solicitare cu cheia publică din certificatul dvs.
  3. În cele din urmă, comparați corpul semnat cu semnătura din anteturi.

Este extrem de important să știți că primiți cereri de pe dispozitivele adecvate și că nu vă confruntați cu un atac de mijloc.

Consultați aceste exemple

Asama – urmărirea mișcării angajaților dvs.

asama

Asama este un sistem de micro-locație, care folosește ceasuri inteligente și balize Bluetooth pentru a urmări mișcarea și activitatea angajaților. Balizele transmit un semnal regulat.

Conform acestor semnale, ceasul inteligent definește locația unui angajat. Ceasul inteligent analizează, de asemenea, dacă persoana potrivită îl poartă și dacă angajatul doarme sau lucrează.

Baliza Asama
tracker asama

Datele sunt apoi transmise către aplicația mobilă, care este instalată și configurată pe telefonul angajatorului. Sistemul este alimentat de Node.js în IoT.

În acest fel, managerii își pot urmări angajații în timp real, pot găsi imediat persoana de care au nevoie și pot optimiza spațiul de lucru. De asemenea, la sfârșitul săptămânii angajatorul primește un raport amplu despre activitatea angajaților. Toate acestea contribuie la creșterea performanței și productivității companiei.

Este posibil ca această soluție să nu se potrivească unei afaceri cu un birou mic și un program flexibil. Cu toate acestea, funcționează perfect pentru uzine industriale, șantiere, fabrici, depozite, centre comerciale, supermarketuri, hoteluri, agenții de securitate, restaurante sau magazine.

Este bine adaptat oriunde trebuie ca angajator să știe dacă angajații vin prea târziu sau pleacă prea devreme, sunt absenți la locul de muncă, nu lucrează activ pe tot parcursul zilei sau nu respectă rutele și programele.

clienții asama

PREE – găsirea bunurilor tale

PREE este un sistem de balize BLE și software mobil care ajută oamenii să nu mai piardă lucrurile. Este un instrument de salvare pentru cei care își uită adesea telefonul, geanta, cheile, portofelul sau orice alte lucruri valoroase.

Utilizatorul poate vedea locația articolului său în timp real și îl poate partaja cu contacte de încredere. Odată ce elementul este în afara razei de acțiune, vor primi o notificare, la fel și prietenii sau membrii familiei. Nu îi trimite pe alții spam cu notificări atunci când nu sunt necesare – de exemplu, când este acasă, utilizatorul le poate dezactiva pentru o anumită zonă.

Acest sistem IoT Internet of Things este construit cu Node.js, Expres, și Mongo pe backend și ionic cu Cordova pentru frontend. Combinația acestor cadre asigură cea mai bună experiență a utilizatorului.

PREE

Validați-vă ideea

Odată ce ai o idee pentru un produs IoT, începe cu validarea acestuia. Puteți face acest lucru în două moduri:

  • Angajați o echipă de validare a ideilor, care vă va ajuta să testați viabilitatea produsului dvs. înainte de a investi în dezvoltare sau
  • Angajați o echipă de proiectare și dezvoltare software, care va lansa o extinsă descoperirea produsului proces.

Postscript

Aș dori să-i trimit o mulțumire imensă lui Volodya Andrushchak, guru-ul IoT de la KeenEthics, pentru contribuția și practic respirația la acest articol.

Dacă v-a plăcut articolul, ar trebui să citiți cu siguranță mai multe despre Node.js: Care sunt avantajele Node.JS? sau NodeJS vs Python: Cum să alegeți cea mai bună tehnologie pentru a dezvolta back-end-ul aplicației dvs. web.

Articolul original postat pe blogul KeenEthics poate fi găsit aici: IoT și Node.JS: Cum să prind oportunitatea?