Hvordan og hvorfor du skal oprette Internet of Things-enheder med Node.js

I denne artikel vil vi diskutere, hvorfor og hvordan du kan bruge Node.js til serversiden af ​​dine Internet of Things (IoT) -enheder.

Forstå forretningsmuligheden

I 2019 nåede markedsindtægterne på IoT $ 212 mia. Der er omkring 26,66 mia. Tilsluttede IoT-enheder over hele verden, og dette antal forventes at nå 75,44 mia. Inden 2025.  

FN estimerer, at verdens befolkning i februar 2020 i øjeblikket er 7,7 milliarder mennesker. Enkel matematik fortæller os, at den gennemsnitlige person ejer omkring 3 til 4 IoT-enheder. Har du en? Måske et smartwatch? Et smart tv? Eller en smart bil?

Når vi bevæger os videre, forventes befolkningen at nå op på 8,1 milliarder mennesker i 2025. Den samme matematiske beregning viser os, at en gennemsnitlig person i 2025 vil have fra 9 til 10 smarte enheder i deres besiddelse.

Ser du, hvor jeg skal hen med dette? Ønsker du at deltage i denne lukrative markedsniche og gøre din IoT-enhed til en af ​​disse 9 til 10?

Statistik hentet fra Statista og De Forenede Nationer.

Vælg den rigtige ramme

Klientsiden af ​​en IoT-enhed er repræsenteret af selve hardwaren. Det er programmeret med C, C ++ eller Lua - svære programmeringssprog på lavt niveau. Men der er ikke meget, du kan gøre ved det på grund af hardwarebegrænsninger.

Ud over høj ydeevne prioriterer brugere af IoT-enheder lave omkostninger og energieffektivitet. Således skal du i det mindste indtil videre fortsætte med at arbejde med sprog på lavt niveau.

På den anden side giver serversiden af ​​IoT-applikationer dig mere valgfrihed. Her er du ikke begrænset af hardwaren, så du kan vælge ethvert kodningssprog og -ramme, du foretrækker.

Jeg tror, ​​at den rigtige er Node.js. Her er hvorfor.

Node.js er hurtig og effektiv

Først og fremmest arbejder enhver IoT-enhed konstant med dynamisk skiftende data. Dette betyder, at du har brug for en ramme, der kan håndtere realtidsapplikationer og tunge datastrømme.

Node.js er bygget på Googles V8 JS-motor, som er meget effektiv og perfekt skalerbar. Takket være denne funktion er Node.js den førende ramme, der skal bruges med apps og platforme i realtid. Konstant ændring af data er heller ikke en udfordring for det.

Node.js er let at integrere med IoT-protokoller

IoT-applikationer bruger aktivt en publicerings-abonnementsbaseret messaging-protokol, MQTT. Til gengæld til transport og indkapsling bruger denne protokol WebSockets. Både MQTT og WebSockets er godt understøttet og integreres let med Node.js.

Node.js-moduler letter IoT-udvikling

Node.js suppleres med npm, Node Package Manager, som indeholder mange nyttige IoT-moduler. Der er omkring 80 pakker til Intel IoT Edison, Arduino eller Raspberry Pi. Det indeholder også over 30 pakker til forskellige sensorer, fyrtårne ​​og andre værktøjer.

Dette er grunden til, at Internet of Things-udviklingen er enklere og hurtigere med Node.js IoT-moduler.

Node.js er ressourceeffektiv og skalerbar

Generelt foretrækker udviklere at arbejde med Node.js, fordi det ikke kræver mange ressourcer. CPU og RAM er ikke overbelastet.

Node.js er også meget skalerbart, hvilket er absolut nødvendigt for de fleste moderne virksomheder.

Pas på udfordringerne

Indtastning af IoT-niche kan føre dig ned ad en vej til succes. Det er derfor ikke underligt, at der venter mange udfordringer og fælder på din vej - succes er aldrig let at opnå. Og den første og vigtigste udfordring, du skal være opmærksom på, er sikkerhed.

Sikkerhed er et af de største problemer i IoT-sfære, og en af ​​de første faldgruber, du vil snuble over. Så hvad skal du gøre?

Sikker godkendelse

Lad os starte med godkendelse. Der er mange værktøjer til godkendelse i Node.js: tokens, JSON web-tokens, Auth0 osv. Hver har sine fordele og ulemper. For at starte skal du se på dem fra IoT's perspektiv.

På den ene side er tokens effektive, men ikke 100 procent sikre . De er en sej måde at oprette godkendelse på, da de giver dig mulighed for at identificere en bestemt bruger og beslutte, om du vil give eller nægte dem adgang. Et token kan krypteres med en hvilken som helst algoritme.

Imidlertid skal hardware (scannere, sensorer, hubber eller andre IoT-ting) gemme dette token- eller login- / adgangskodedata i firmware. Dette betyder, at angribere kan stjæle tokenet, hvis de har fysisk adgang til hardwaren. Den samme historie gælder for JWT eller Auth0.

På den anden side kan vi bruge ethvert værktøj til godkendelse på serversiden. Du kan nemt integrere ethvert godkendelsesværktøj på Node.js-platformen.

Der er mange npm-pakker, som giver dig mulighed for at gøre dette manuelt: Auth0, Pass og JWT. Der er også pakker til integration med cloud IoT-tjenester: @ azure-iot / godkendelse, aws-iot-device-sdk osv.

Sikker HTTP-anmodninger

Dernæst skal du være forsigtig med HTTP-anmodninger fra dine IoT-enheder.Du skal kontrollere, om du får en anmodning fra en ordentlig IoT-enhed.

For det første skal du implementere HTTPS med dine IoT-enheder. Hardware er ikke en browser, og du skal implementere HTTPS manuelt på den. På serversiden kan du enten gøre det manuelt eller bruge hosting med HTTPS-konfiguration og certifikater.

I Node.js er det ret nemt at implementere:

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 bruger SSL- eller TLS-protokoller til datakryptering. For at være sikker på, at du har fået en anmodning fra den nødvendige server eller klient, skal du dog bruge yderligere datakryptering. For eksempel er det sådan, du kan bruge en signatur:

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)); }

For at afslutte denne del:

  1. Først skal du kontrollere den betroede URL til dit certifikat.
  2. Derefter underskriver du et anmodningsorgan med den offentlige nøgle fra dit certifikat.
  3. Endelig sammenligner du det underskrevne organ med signaturen fra overskrifter.

Det er ekstremt vigtigt at vide, at du modtager anmodninger fra de rigtige enheder, og at du ikke står over for et mellemangreb.

Tjek disse eksempler

Asama - spore dine medarbejderes bevægelse

asama

Asama er et mikrolokationssystem, der bruger smartwatches og Bluetooth-beacons til at spore medarbejderes bevægelse og aktivitet. Beacons sender et regelmæssigt signal.

According to these signals, the smartwatch defines the location of an employee. The smartwatch also analyzes whether the right person is wearing it and if the employee is sleeping or working.

Asama fyr asama tracker

The data is then transmitted to the mobile app, which is installed and configured on the employer’s phone. The system is powered by Node.js in IoT.

This way, managers can track their employees in real time, find the person they need right away, and optimize the workspace. Also, at the end of the week the employer receives an extensive report on employee activity. All this helps to boost the company's performance and productivity.

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 klienter

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
  • Ansæt et softwaredesign- og udviklingsteam, der vil starte en omfattende produktopdagelsesproces.

Efterskrift

Jeg vil gerne sende en stor tak til Volodya Andrushchak, IoT-guruen hos KeenEthics, for at bidrage og dybest set puste liv ind i denne artikel.

Hvis du har nydt artiklen, bør du bestemt læse mere om Node.js: Hvad er fordelene ved Node.JS? eller NodeJS vs Python: Sådan vælger du den bedste teknologi til at udvikle din webapps backend.

Den originale artikel, der blev offentliggjort på KeenEthics-bloggen, kan findes her: IoT og Node.JS: Hvordan man fanger muligheden?