Kako i zašto trebate graditi uređaje za Internet stvari pomoću Node.js

U ovom ćemo članku razgovarati o tome zašto i kako možete koristiti Node.js za poslužiteljsku opremu svojih Internet of Things (IoT) uređaja.

Shvatite poslovnu priliku

U 2019. tržišni prihod IoT-a dosegao je 212 milijardi dolara. U svijetu postoji oko 26,66 milijardi povezanih IoT uređaja, a taj bi broj trebao doseći 75,44 milijarde do 2025. godine.  

UN procjenjuje da u veljači 2020. svjetska populacija trenutno broji 7,7 milijardi ljudi. Jednostavna matematika govori nam da prosječna osoba posjeduje oko 3 do 4 IoT uređaja. Da li imaš jedan? Možda pametni sat? Pametan televizor? Ili pametan automobil?

Krećući se dalje, očekuje se da će populacija doseći 8,1 milijardu ljudi 2025. Isti matematički izračun pokazuje nam da će 2025. prosječna osoba imati od 9 do 10 pametnih uređaja.

Vidiš li kuda idem s ovim? Želite li se pridružiti ovoj unosnoj tržišnoj niši i svoj IoT uređaj učiniti jednim od ovih 9 do 10?

Statistika je preuzeta od Statiste i Ujedinjenih naroda.

Odaberite pravi okvir

Klijentsku stranu IoT uređaja predstavlja sam hardver. Programiran je s C, C ++ ili Lua - niskim nivoima i teškim programskim jezicima. Ali tu ne možete puno učiniti zbog hardverskih ograničenja.

Uz visoke performanse, korisnici IoT uređaja daju prednost niskim troškovima i energetskoj učinkovitosti. Stoga biste, barem za sada, trebali nastaviti raditi s jezicima niske razine.

S druge strane, serverska strana IoT aplikacija nudi vam veću slobodu izbora. Ovdje vas hardver ne ograničava, pa možete odabrati bilo koji jezik kodiranja i okvir koji želite.

Vjerujem da je onaj pravi Node.js. Evo zašto.

Node.js je brz i izvedljiv

Prije svega, bilo koji IoT uređaj neprestano radi s podacima koji se dinamički mijenjaju. To znači da vam je potreban okvir koji može rukovati aplikacijama u stvarnom vremenu i velikim protocima podataka.

Node.js je izgrađen na Googleovom V8 JS mehanizmu, koji je vrlo učinkovit i savršeno skalabilan. Zahvaljujući ovoj značajci, Node.js je okvir broj jedan koji se koristi s aplikacijama i platformama u stvarnom vremenu. Ni stalna promjena podataka za nju nije izazov.

Node.js je jednostavno integrirati s IoT protokolima

IoT aplikacije aktivno koriste protokol za razmjenu poruka temeljen na objavljivanju i pretplati, MQTT. Zauzvrat, za transport i inkapsulaciju ovaj protokol koristi WebSockets. I MQTT i WebSockets dobro su podržani i lako se integriraju s Node.js.

Node.js moduli olakšavaju razvoj IoT-a

Node.js proširen je s npm, upraviteljem paketa Node, koji sadrži puno korisnih IoT modula. Postoji oko 80 paketa za Intel IoT Edison, Arduino ili Raspberry Pi. Također sadrži preko 30 paketa za različite senzore, svjetionike i druge alate.

Zbog toga je razvoj Interneta stvari jednostavniji i brži s Node.js IoT modulima.

Node.js je učinkovit i skalabilan

Općenito, programeri preferiraju rad s Node.js-om jer ne zahtijeva puno resursa. CPU i RAM nisu preopterećeni.

Također, Node.js je vrlo skalabilan, što je apsolutno neophodno za većinu modernih tvrtki.

Čuvajte se izazova

Ulazak u IoT nišu može vas odvesti do puta do uspjeha. Stoga ne čudi što vas na putu čeka puno izazova i zamki - uspjeh nikada nije lako postići. I prvi i najvažniji izazov kojeg biste trebali biti svjesni je sigurnost.

Sigurnost je jedan od glavnih problema u IoT sferi i jedna od prvih zamki na koje ćete naletjeti. Pa što biste trebali učiniti?

Sigurna provjera autentičnosti

Krenimo s provjerom autentičnosti. U Node.js postoji puno alata za provjeru autentičnosti: žetoni, JSON web žetoni, Auth0 i tako dalje. Svaka ima svoje prednosti i nedostatke. Za početak biste ih trebali gledati iz perspektive IoT-a.

S jedne strane, tokeni su učinkoviti, ali nisu 100 posto sigurni . Oni su cool način za postavljanje provjere autentičnosti jer vam omogućavaju da identificirate određenog korisnika i odlučite hoćete li mu odobriti ili odbiti pristup. Token se može šifrirati bilo kojim algoritmom.

Međutim, hardver (skeneri, senzori, čvorišta ili druge IoT stvari) trebao bi pohraniti ovaj token ili podatke za prijavu / lozinku u firmware. To znači da napadači mogu ukrasti token ako imaju fizički pristup hardveru. Ista priča vrijedi i za JWT ili Auth0.

S druge strane, možemo koristiti bilo koji alat za autentifikaciju na strani poslužitelja. Možete lako integrirati bilo koji alat za provjeru autentičnosti na platformi Node.js.

Postoji puno npm paketa koji vam omogućavaju da to učinite ručno: Auth0, Passport i JWT. Postoje i paketi za integraciju s IoT uslugama u oblaku: @ azure-iot / provjera autentičnosti, aws-iot-device-sdk itd.

Sigurni HTTP zahtjevi

Dalje, budite oprezni s HTTP zahtjevima s vaših IoT uređaja.Trebali biste provjeriti dobivate li zahtjev od odgovarajućeg IoT uređaja.

Prvo, trebali biste implementirati HTTPS sa svojim IoT uređajima. Hardver nije preglednik i na njemu biste trebali ručno implementirati HTTPS. Na strani poslužitelja to možete učiniti ručno ili koristiti hosting s HTTPS konfiguracijom i certifikatima.

U Node.js je prilično jednostavno implementirati:

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 koristi SSL ili TLS protokole za šifriranje podataka. Međutim, da biste bili sigurni da ste dobili zahtjev od potrebnog poslužitelja ili klijenta, upotrijebite dodatnu enkripciju podataka. Na primjer, ovako možete koristiti potpis:

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 = ‘//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)); }

Da biste zaključili ovaj dio:

  1. Prvo morate provjeriti pouzdani URL svog certifikata.
  2. Zatim potpisujete tijelo zahtjeva javnim ključem iz svoje potvrde.
  3. Na kraju, uspoređujete potpisano tijelo s potpisom iz zaglavlja.

Izuzetno je važno znati da primate zahtjeve od odgovarajućih uređaja i da se ne suočavate sa srednjim napadom.

Pogledajte ove primjere

Asama - praćenje kretanja vaših zaposlenika

asama

Asama je sustav za mikrolokaciju koji koristi pametne satove i Bluetooth svjetionike za praćenje kretanja i aktivnosti zaposlenika. Svjetionici odašilju redoviti signal.

Prema tim signalima, pametni sat definira mjesto zaposlenika. Pametni sat također analizira nosi li ga prava osoba i spava li zaposlenik ili radi.

Asama svjetionik asama tracker

Podaci se zatim prenose u mobilnu aplikaciju koja se instalira i konfigurira na telefon poslodavca. Sustav pokreće Node.js u IoT-u.

Na taj način menadžeri mogu pratiti svoje zaposlenike u stvarnom vremenu, odmah pronaći potrebnu osobu i optimizirati radni prostor. Također, na kraju tjedna poslodavac dobiva opsežno izvješće o aktivnostima zaposlenika. Sve ovo pomaže povećanju performansi i produktivnosti tvrtke.

This solution might not suit a business with a small office and flexible hours. Yet, it works perfectly for industrial plants, construction sites, factories, warehouses, shopping centers, supermarkets, hotels, security agencies, restaurants, or stores.

It's well-suited anywhere you as an employer need to know if employees are coming too late or leaving too early, being absent at the working place, not working actively throughout the day, or not following routes and schedules.

asama klijenti

PREE – finding your belongings

PREE  is a system of BLE beacons and mobile software which helps people stop losing their stuff. It is a lifesaver for those who often forget their phone, bag, keys, wallet, or any other valuable belongings.

The user can see the location of their item in real time and share it with trusted contacts. Once the item is out of range, they will get a notification, and so will their friends or family members. It doesn't spam others with notifications when they are not needed – for example, when at home, the user can mute them for a certain area.

This Internet of Things IoT system is built with Node.js, Express, and Mongo on the backend and Ionic with Cordova for the frontend. The combination of these frameworks ensures the best user experience.

PREE

Validate your idea

Once you have an idea for an IoT product, start with validating  it. You can do this in two ways:

  • Hire an idea validation team, who will help you test the viability of your product before you invest in development, or
  • Angažirajte tim za dizajn i razvoj softvera koji će pokrenuti opsežni postupak otkrivanja proizvoda.

Postskriptum

Želio bih uputiti veliko hvala Volodyi Andrushchaku, IoT guruu iz KeenEthics-a, što je doprinio i u osnovi udahnuo život ovom članku.

Ako ste uživali u članku, svakako biste trebali pročitati nešto više o Node.js: Koje su prednosti Node.JS? ili NodeJS vs Python: Kako odabrati najbolju tehnologiju za razvoj pozadine vaše web aplikacije.

Izvorni članak objavljen na blogu KeenEthics možete pronaći ovdje: IoT i Node.JS: Kako uhvatiti priliku?