Wie und warum Sie mit Node.js Geräte für das Internet der Dinge erstellen sollten

In diesem Artikel wird erläutert, warum und wie Sie Node.js für die Serverseite Ihrer IoT-Geräte (Internet of Things) verwenden können.

Verstehen Sie die Geschäftsmöglichkeit

Im Jahr 2019 erreichte der Marktumsatz von IoT 212 Milliarden US-Dollar. Es gibt weltweit etwa 26,66 Milliarden angeschlossene IoT-Geräte, und diese Zahl soll bis 2025 75,44 Milliarden erreichen.  

Die UNO schätzt, dass im Februar 2020 weltweit 7,7 Milliarden Menschen leben. Einfache Mathematik sagt uns, dass die durchschnittliche Person ungefähr 3 bis 4 IoT-Geräte besitzt. Hast du eins? Vielleicht eine Smartwatch? Ein Smart-TV? Oder ein schickes Auto?

In Zukunft wird erwartet, dass die Bevölkerung im Jahr 2025 8,1 Milliarden Menschen erreichen wird. Dieselbe mathematische Berechnung zeigt, dass eine durchschnittliche Person im Jahr 2025 9 bis 10 intelligente Geräte in ihrem Besitz haben wird.

Sehen Sie, wohin ich damit gehe? Möchten Sie dieser lukrativen Marktnische beitreten und Ihr IoT-Gerät zu einem dieser 9 bis 10 Geräte machen?

Statistiken von Statista und den Vereinten Nationen abgerufen.

Wählen Sie das richtige Framework

Die Client-Seite eines IoT-Geräts wird durch die Hardware selbst dargestellt. Es ist mit C, C ++ oder Lua programmiert - einfache und schwierige Programmiersprachen. Aufgrund von Hardwareeinschränkungen können Sie jedoch nicht viel dagegen tun.

Neben der hohen Leistung legen Benutzer von IoT-Geräten Wert auf niedrige Kosten und Energieeffizienz. Daher sollten Sie zumindest vorerst weiterhin mit einfachen Sprachen arbeiten.

Auf der anderen Seite bietet Ihnen die Serverseite von IoT-Anwendungen mehr Wahlfreiheit. Hier sind Sie nicht an die Hardware gebunden, sodass Sie eine beliebige Codierungssprache und ein beliebiges Framework auswählen können.

Ich glaube, dass der richtige Node.js ist. Hier ist warum.

Node.js ist schnell und performant

Erstens arbeitet jedes IoT-Gerät ständig mit sich dynamisch ändernden Daten. Dies bedeutet, dass Sie ein Framework benötigen, das Echtzeitanwendungen und hohe Datenflüsse verarbeiten kann.

Node.js basiert auf der V8 JS-Engine von Google, die sehr effektiv und perfekt skalierbar ist. Dank dieser Funktion ist Node.js das Framework Nummer eins für Echtzeit-Apps und -Plattformen. Ständig wechselnde Daten sind auch für sie keine Herausforderung.

Node.js ist einfach in IoT-Protokolle zu integrieren

IoT-Anwendungen verwenden aktiv das Publish-Subscribe-basierte Messaging-Protokoll MQTT. Für den Transport und die Kapselung verwendet dieses Protokoll wiederum WebSockets. Sowohl MQTT als auch WebSockets werden gut unterstützt und lassen sich problemlos in Node.js integrieren.

Node.js Module erleichtern die IoT-Entwicklung

Node.js wird durch npm, den Node Package Manager, erweitert, der viele nützliche IoT-Module enthält. Es gibt ungefähr 80 Pakete für Intel IoT Edison, Arduino oder Raspberry Pi. Darüber hinaus bietet es über 30 Pakete für verschiedene Sensoren, Beacons und andere Tools.

Aus diesem Grund ist die Entwicklung des Internet der Dinge mit den IoT-Modulen von Node.j einfacher und schneller.

Node.js ist ressourceneffizient und skalierbar

Im Allgemeinen bevorzugen Entwickler die Arbeit mit Node.js, da dafür nicht viele Ressourcen erforderlich sind. Die CPU und der RAM sind nicht überlastet.

Außerdem ist Node.js hoch skalierbar, was für die meisten modernen Unternehmen unbedingt erforderlich ist.

Hüte dich vor den Herausforderungen

Der Eintritt in die IoT-Nische kann Sie auf den Weg zum Erfolg führen. Kein Wunder also, dass auf Ihrem Weg viele Herausforderungen und Fallen auf Sie warten - Erfolg ist nie leicht zu erreichen. Die wichtigste Herausforderung, der Sie sich bewusst sein sollten, ist die Sicherheit.

Sicherheit ist eines der Hauptprobleme im IoT-Bereich und eine der ersten Fallstricke, auf die Sie stoßen werden. Was solltest du also tun?

Sichere Authentifizierung

Beginnen wir mit der Authentifizierung. In Node.js gibt es viele Tools zur Authentifizierung: Token, JSON-Web-Token, Auth0 usw. Jeder hat seine Vor- und Nachteile. Zu Beginn sollten Sie sie aus der Sicht des IoT betrachten.

Einerseits sind Token effektiv, aber nicht zu 100 Prozent sicher . Sie sind eine coole Möglichkeit, die Authentifizierung einzurichten, da Sie einen bestimmten Benutzer identifizieren und entscheiden können, ob Sie ihm Zugriff gewähren oder verweigern möchten. Ein Token kann mit jedem Algorithmus verschlüsselt werden.

Die Hardware (Scanner, Sensoren, Hubs oder andere IoT-Dinge) sollte diese Token- oder Anmelde- / Kennwortdaten jedoch in der Firmware speichern. Dies bedeutet, dass Angreifer das Token stehlen können, wenn sie physischen Zugriff auf die Hardware haben. Die gleiche Geschichte gilt für JWT oder Auth0.

Auf der anderen Seite können wir alle Tools zur Authentifizierung auf der Serverseite verwenden. Sie können jedes Authentifizierungstool problemlos in die Node.js-Plattform integrieren.

Es gibt viele npm-Pakete, mit denen Sie dies manuell tun können: Auth0, Passport und JWT. Es gibt auch Pakete für die Integration mit Cloud-IoT-Diensten: @ azure-iot / authentication, aws-iot-device-sdk usw.

Sichere HTTP-Anforderungen

Seien Sie als Nächstes vorsichtig mit HTTP-Anforderungen von Ihren IoT-Geräten.Sie sollten überprüfen, ob Sie eine Anfrage von einem geeigneten IoT-Gerät erhalten.

Zunächst sollten Sie HTTPS mit Ihren IoT-Geräten implementieren. Hardware ist kein Browser und Sie sollten HTTPS manuell darauf implementieren. Auf der Serverseite können Sie dies entweder manuell tun oder Hosting mit HTTPS-Konfiguration und Zertifikaten verwenden.

In Node.js ist es recht einfach zu implementieren:

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 verwendet SSL- oder TLS-Protokolle zur Datenverschlüsselung. Verwenden Sie jedoch eine zusätzliche Datenverschlüsselung, um sicherzustellen, dass Sie eine Anfrage vom erforderlichen Server oder Client erhalten haben. So können Sie beispielsweise eine Signatur verwenden:

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

So schließen Sie diesen Teil ab:

  1. Zuerst müssen Sie die vertrauenswürdige URL Ihres Zertifikats überprüfen.
  2. Anschließend signieren Sie einen Anforderungshauptteil mit dem öffentlichen Schlüssel aus Ihrem Zertifikat.
  3. Schließlich vergleichen Sie den signierten Text mit der Signatur aus den Kopfzeilen.

Es ist äußerst wichtig zu wissen, dass Sie Anfragen von den richtigen Geräten erhalten und nicht vor einem mittleren Angriff stehen.

Schauen Sie sich diese Beispiele an

Asama - Verfolgung der Bewegung Ihrer Mitarbeiter

asama

Asama ist ein Mikroortungssystem, das Smartwatches und Bluetooth-Beacons verwendet, um Bewegungen und Aktivitäten von Mitarbeitern zu verfolgen. Beacons senden ein reguläres Signal.

Entsprechend diesen Signalen definiert die Smartwatch den Standort eines Mitarbeiters. Die Smartwatch analysiert auch, ob die richtige Person sie trägt und ob der Mitarbeiter schläft oder arbeitet.

Asama LeuchtfeuerAsama Tracker

Die Daten werden dann an die mobile App übertragen, die auf dem Telefon des Arbeitgebers installiert und konfiguriert wird. Das System wird von Node.js im IoT betrieben.

Auf diese Weise können Manager ihre Mitarbeiter in Echtzeit verfolgen, die benötigte Person sofort finden und den Arbeitsbereich optimieren. Außerdem erhält der Arbeitgeber am Ende der Woche einen ausführlichen Bericht über die Tätigkeit der Arbeitnehmer. All dies trägt dazu bei, die Leistung und Produktivität des Unternehmens zu steigern.

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 Kunden

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
  • Stellen Sie ein Software-Design- und Entwicklungsteam ein, das einen umfassenden Produktentdeckungsprozess startet.

Nachtrag

Ich möchte Volodya Andrushchak, dem IoT-Guru bei KeenEthics, ein großes Dankeschön dafür senden, dass sie zu diesem Artikel beigetragen und ihm im Grunde Leben eingehaucht hat.

Wenn Ihnen der Artikel gefallen hat, sollten Sie auf jeden Fall mehr über Node.js lesen: Was sind die Vorteile von Node.JS? oder NodeJS vs Python: So wählen Sie die beste Technologie für die Entwicklung des Backends Ihrer Webanwendung aus.

Der Originalartikel auf dem KeenEthics-Blog ist hier zu finden: IoT und Node.JS: Wie kann ich die Gelegenheit nutzen?