Hoe IBM's Node-RED het internet der dingen samen hackt

Het hacken van de wereld om je heen om het naar je zin te buigen wordt steeds eenvoudiger.

Of het nu gaat om het instellen van een lamp om te knipperen wanneer iemand u retweet of een systeem om u te sms'en wanneer het wassen klaar is, er wordt gewerkt om het voor de machine eenvoudiger te maken om tegen de machine te praten.

Het aansluiten van de rijkdom aan computers, sensoren en online services in de moderne wereld kan leiden tot rare en prachtige creaties, bijvoorbeeld deze fluitgecontroleerde drone.

Maar de kern van het werken met dit internet der dingen is een tikkeltje repetitief. Om enkele van die saaie onderzoekers bij IBM weg te nemen, kwam het idee om een ​​gereedschapskist met herbruikbare code te bouwen die mensen zouden kunnen gebruiken om software en apparaten gemakkelijker in handige systemen samen te voegen.

IBM-onderzoekers zochten naar een manier om het koppelen van systemen en sensoren te vereenvoudigen bij het bouwen van proof-of-concept-technologieën voor klanten.

"We waren aan het chatten en Nick zei:" Er moet een gemakkelijkere manier zijn om dit te doen ", " zei Dave Conway-Jones, senior uitvinder bij IBM.

Conway-Jones verwijst naar Nick O'Leary, opkomende technologiespecialist bij IBM, die op dat moment experimenteerde met het gebruik van grafische tools voor slepen en neerzetten om de code te bouwen die nodig is om webservices, software en hardware te laten communiceren. Het zijn deze tools die zich zouden ontwikkelen tot Node-RED.

Node-RED is een engine voor gebeurtenisverwerking die in feite voorkomt dat hardware- en software-hackers het wiel steeds opnieuw moeten uitvinden. O'Leary gebruikt het voorbeeld van code moeten schrijven om gegevens naar een apparaat te verzenden via de seriële poort telkens wanneer ze een nieuw project zijn gestart.

"Dave en ik weten hoe we code moeten schrijven om met een seriële poort te praten, maar het kan even duren om te onthouden hoe het te doen en het op te schrijven."

"Om met een seriële poort te praten met behulp van Node-RED is het slechts een kwestie van een knoop verslepen en de seriële poortgegevens geven en je bent klaar. Het geeft ons deze flexibiliteit om snel een prototype te maken."

Node-RED neemt niet de noodzaak weg om code helemaal te schrijven, maar het vermindert wel, en in het proces verlaagt zowel de technische balk en stelt mensen in staat zich te concentreren op het creëren in plaats van op het doen.

"Net zoals een spreadsheet je toelaat om met getallen te spelen, is Node-RED een hulpmiddel dat goed is om te spelen met evenementen, " zei Conway-Jones.

"Mensen die geen programmeur zijn, kunnen beginnen te denken:" Ik heb Twitter hier en ik wil analyseren wat er gezegd wordt en het hier in een document publiceren, hoe kan ik dat doen? ". Je zou bijvoorbeeld een Twitter-feed kunnen hebben binnenkomen, doe een beetje sentimentanalyse op de tweets en stuur alle goede naar een e-mailadres.

"Mensen die op bijna zakelijk niveau werken, niet helemaal, maar op dat niveau komen, kunnen dit doen. Dat is het niveau dat we willen bereiken."

Wat is Node-RED?

Op het eerste gezicht kan de interface voor Node-RED gebruikers herinneren aan Scratch, de door MIT ontwikkelde grafische tool waarmee kinderen eenvoudige programma's kunnen coderen door softwareopdrachten te slepen en neer te zetten.

Net als Scratch biedt Node-RED een GUI waar gebruikers blokken slepen en neerzetten die componenten van een groter systeem vertegenwoordigen, in het geval van Node-RED meestal de apparaten, softwareplatforms en webservices die moeten worden verbonden. Verdere blokken kunnen tussen deze componenten worden geplaatst om softwarefuncties weer te geven die de gegevens tijdens het transport verwarren en transformeren.

Misschien is de beste manier om te begrijpen wat Node-RED is om het te zien. Hieronder staat de weergave van Node-RED van een "Hello World" -programma, dat gewoonlijk wordt gebruikt om iemand kennis te laten maken met een nieuwe technologie of programmeertaal. Voor wie niet vertrouwd is, is dit programma meestal een heel eenvoudige routine die het bericht 'Hallo wereld' op het scherm afdrukt.

De Hello World-routine in Node-RED Image: IBM

Hier kunt u de grafische gebruikersinterface van Node-RED zien en hoe het platform systemen opsplitst in hun samenstellende delen.

Elk van de afgeronde blokken die u op het scherm ziet, is een knooppunt, wat een visuele weergave is van een blok JavaScript-code dat is ontworpen om een ​​specifieke taak uit te voeren.

Om het 'Hello World'-programma te bouwen, sleept de gebruiker een' inject node 'in het centrale venster, een node die is ontworpen om een ​​bericht naar andere nodes uit te voeren.

Deze injectieknoop is bewerkt om de tekenreeks 'Hallo' uit te voeren.

Vervolgens wordt een functieknooppunt gesleept en bewerkt om een ​​JavaScript-functie te definiëren die de tekenreeks 'Wereld' toevoegt aan elk ontvangen bericht.

Deze twee knooppunten worden vervolgens met elkaar verbonden. De meeste knooppunten hebben een grijze cirkel aan hun linkerrand, die hun invoerpoort vertegenwoordigt, en aan hun rechterrand, die hun uitvoerpoort vertegenwoordigt. Klik met de linkermuisknop en sleep de uitvoerpoort van de 'Hallo'-knoop naar de invoerpoort van de' Wereld'-knoop verbindt de twee met elkaar.

De laatste fase is het toevoegen van een Debug-knooppunt dat het bericht dat het ontvangt in het Debug-venster afdrukt. Dit Debug-knooppunt wordt vervolgens aangesloten op de uitgang van het knooppunt 'Wereld'.

Het proces is nu klaar om te worden uitgevoerd en zodra het is geïmplementeerd, wordt de tekenreeks 'Hallo wereld' weergegeven in het vak Debug, rechts in het scherm.

Dit voltooide programma is een voorbeeld van wat een stroom in Node-RED wordt genoemd.

Wat interessant is aan Node-RED is dat het veel meer kan dan een eenvoudig bericht uitspugen, het kan ook webservices en hardware aan elkaar lijmen, en dat is waar het krachtig begint te worden.

Neem dit gebruik van Node-RED door fotograaf en IBM-medewerker Dom Bramley, die beelden van de nachtelijke hemel maakt. De apparatuur waarop hij vertrouwt, is niet waterdicht, maar moet 's nachts buiten worden gelaten om de sterren te fotograferen.

Hij gebruikte Node-RED om een ​​persoonlijk weeralarmsysteem te bouwen, dat werkt door de lichten in zijn huis te regelen. Bramley bouwde om de drie minuten een stroom die was verbonden met de weers-API voor weersverwachtingen om de voorspelling van de plaatselijke neerslag te controleren. Een tweede knoop nam het antwoord van forecast.io en gebruikte het om te berekenen hoeveel minuten er regen zou komen bij zijn huis. Een omgevingslamp in zijn woonkamer verschoof vervolgens van kleur op basis van het aantal minuten totdat de regen arriveerde, terwijl een bedlampje aangaat als de regenval dichtbij genoeg was om als onveilig te worden beschouwd.

Twee stromen controleerden de lichten in het huis, één creëerde een RGB-waarde die de kleur van een omgevingslicht veranderde op basis van de nabijheid van de regen. De tweede stuurde een signaal naar een MQTT-aangesloten Arduino die een 433 MHz-stopcontact aanstuurt, die een bedlampje inschakelde als een onveilige situatie werd geactiveerd.

Node-RED was de lijm die het weeralarmsysteem bij elkaar hield, waardoor Bramley gegevens uit de forecast.io API kon zuigen, er nuttig inzicht uit kon halen en die informatie kon gebruiken om geautomatiseerde systemen in zijn huis te manipuleren.

De Node-RED-stroom voor het weeralarmsysteem. DLB

Het internet der dingen bouwen

Bramley's weeralarmstroom laat zien hoe Node-RED videomakers laat werken op het werk van anderen.

Om bijvoorbeeld gegevens uit forecast.io te halen, importeerde Bramley een bestaand knooppunt dat HTTP GET-aanvragen indient. Het enige dat hij hoefde te doen, was de URL bewerken waarnaar het verzoek werd gedaan en een string toevoegen die zijn zoekopdracht instelde.

Op zijn beurt is het weeralarmsysteem van Bramley beschikbaar voor anderen om te importeren in Node-RED, zodat zij het kunnen gebruiken en misbruiken wanneer zij dat nodig achten. Zelfs als ze niet de hele stroom wilden, konden ze het gewoon voor kannibaliseren voor onderdelen, misschien gewoon de knoop installeren om de kleur van het omgevingsverlichtingssysteem te veranderen.

"In Node-RED kunt u alle functionaliteit afsluiten, die functie als een knoop in ons palet inkapselen, " zei O'Leary - lijst van modules voor een MQTT-client en praten met seriële poorten op hardware als voorbeelden van functionaliteit opgenomen in knooppunten .

"Dit palet van knooppunten is niet hardgecodeerd, dus je kunt gewoon nieuwe knooppunten binnenvallen en wanneer je begint, heb je nieuwe functionaliteit.

"Het is dat ecosysteem van knooppunten dat van Node-RED een platform maakt waar mensen aan kunnen bijdragen.

"Het betekent dat we geen tijd hoeven te besteden aan het maken van specifieke technische uitdagingen. We kunnen ons concentreren op wat we deze applicatie willen laten doen. Je moet je concentreren op wat, in plaats van op hoe."

Er worden voortdurend nieuwe knooppunten toegevoegd voor interactie met hardware, software en webservices. Recente toevoegingen zijn onder meer knooppunten voor het bedienen van Belkin WeMo op afstand bedienbare stopcontacten en Philips hue-verlichting. Knooppunten kunnen ook worden geschreven om te profiteren van softwareplatforms, met knooppunten om SMS-berichten te verzenden via Twilio en berichten via Twitter.

De technische balk voor het schrijven van een knooppunt is niet bijzonder hoog, omdat een knooppunt gewoon een inkapseling is van een JavaScript-code die in de omgeving van node.js wordt uitgevoerd.

Er is al een actieve community die regelmatig nieuwe knooppunten produceert en het Node-RED-platform is een open-sourceproject dat wordt gehost op GitHub, zodat iedereen een bijdrage kan leveren.

Node-RED-stromen worden weergegeven in JavaScript Object Notation of JSON en kunnen eenvoudig worden geëxporteerd naar het klembord om te worden geïmporteerd in Node-RED of online te worden gedeeld.

IBM overweegt ook om het eenvoudiger te maken om voort te bouwen op het werk van anderen in Node-RED door substromen te introduceren. Substromen zouden gebruikers in staat stellen om stromen van meerdere gekoppelde knooppunten in een enkel knooppunt samen te vouwen, waardoor complexere logica in een enkel knooppunt kan worden samengevat.

De vele gezichten van Node-RED

"Iedereen komt er met een heel andere perceptie over wat Node-RED is of wat het zou kunnen zijn", zei O'Leary, verwijzend naar hoe de flexibiliteit van het platform ertoe heeft geleid dat mensen mogelijkheden zagen die oorspronkelijk niet waren voorzien.

"Het is duidelijk een platform met veel verschillende applicaties, verschillende sectoren zien er verschillende dingen in.

"We bouwen een platform waaraan iedereen kan bijdragen, zodat het een probleem voor hen oplost en die knooppunten vervolgens weer inbrengen."

Onderwijs was bijvoorbeeld niet de focus van IBM bij het ontwerpen van Node-RED, maar de eenvoud van slepen en neerzetten van het bouwen van programma's in Node-RED heeft ertoe geleid dat sommige scholen het hebben gebruikt als een platform om kinderen te leren coderen en hardware hacken.

En O'Leary zei dat na verloop van tijd meer knooppunten kunnen worden toegevoegd die meer van de codering abstraheren, om Node-RED minder ontmoedigend te maken voor mensen zonder kennis van programmeren.

"Er is absoluut ruimte voor abstractie op een hoger niveau", zei hij.

Het verlagen van de technische balk wordt eenvoudiger gemaakt door hoe gemakkelijk Node-RED kan worden uitgebreid, bijvoorbeeld door knooppunten toe te voegen om algemene programmeerconstructies uit te voeren, zoals een For-lus.

O'Leary sprak ook over de mogelijkheid dat iemand Node-RED-stromen maakt om lessen te belichamen voor het onderwijzen van kinderen over elektronica en computergebruik, zodat een leraar een Raspberry Pi die op sensoren is aangesloten, kan omschakelen in de modus "les nummer één".

Node-RED is momenteel populair voor het uitvoeren van huisautomatisering, volgens O'Leary, waarbij hij gevallen aanhaalde waarin het "de puinhoop van Perl- en Python-scripts" heeft weggevaagd die deze systemen eerder bij elkaar hield, zei hij.

Hoe goed Node-RED geschikt is voor huisautomatisering, wordt duidelijk wanneer u IBM's Emerging Technologies-lab in Hursley, Engeland betreedt. Onderzoekers hebben Node-RED gebruikt om dezelfde draadloze schakelaar een ventilator in te schakelen, het display op een LED-bord te wijzigen of een lamp aan en uit te zetten. Het wijzigen van wat de schakelaar doet, vereist niets meer dan klikken op de Node-RED-stroom en het wijzigen van de bedrading tussen knooppunten, een taak die seconden in beslag neemt.

Nog meer exotisch gebruik is gevonden voor Node-RED in Hursley. Er is een stroom geschreven om een ​​drone te besturen door te fluiten, een stijgende toon laat de drone opstijgen en een dalende toon laat hem landen.

Node-RED helpt IBM al om proof-of-concept-demonstraties voor klanten samen te voegen. Het bedrijf voerde onlangs Node-RED-stromen uit op Raspberry Pi-boards om Arduino-boards aan te sluiten op webcams en temperatuur-, druk- en vochtigheidssensoren die een fabrieksproductielijn bewaken.

"Natuurlijk hadden we code kunnen schrijven om dat allemaal vast te leggen, maar het zou veel minder flexibel zijn geweest, omdat wanneer je nieuwe sensoren toevoegt, je moet gaan zoeken waar je nieuwe stukjes code kunt toevoegen, " zei O'Leary.

Toen hetzelfde bedrijf een probleem had met bouwers die de server ontkoppelden die deze gegevens verzamelde - zodat ze hun elektrisch gereedschap konden aansluiten - was IBM in staat om "in een tijdsbestek van ongeveer vijf minuten" een Node-RED te gebruiken om een ​​systeem samen te voegen dat automatisch gemaild sleutelpersoneel als de server uitvalt.

"Voor ons is flexibiliteit de waarde, " zei O'Leary, "maar andere mensen zien een andere waarde."

Voor bedrijven die waarde hechten aan het sorteren van gegevens in de buurt van waar ze aan de rand van het netwerk worden verzameld, de ruis eruit filteren en alleen relevante informatie terugsturen.

"Wat we hier hebben, is iets waarmee je logica en bedrijfscontrole naar de rand van het netwerk kunt duwen, tot een Raspberry Pi of een kleine embedded Linux-box", zei O'Leary.

"Dat is een interessant gebied. Het is geschikt om aan de rand van het netwerk te werken vanwege zijn lichte voetafdruk. Het kan gebeurtenissen lokaal bewaken en alleen iets naar de onderneming sturen wanneer dat nodig is, in plaats van al je gegevens naar je toe te sturen centrale data enterprise hub en daar omgaan. "

Beperkingen van Node-RED

Node-RED is een toepassing op basis van node.js, een JavaScript-platform aan de serverzijde dat een gebeurtenisgestuurd, niet-blokkerend I / O-model gebruikt dat geschikt is voor het maken van gegevensintensieve, realtime toepassingen die worden uitgevoerd op gedistribueerde apparaten.

Om een ​​apparaat of een service met Node-RED te laten werken, moet er een node.js-bibliotheek of -module zijn die met hen kan praten.

Maar het aantal compatibele services en apparaten is uitgebreid, mede dankzij de neiging van veel moderne platforms om hun gegevens en functioneel beschikbaar te stellen via open API's die HTTP-aanvragen accepteren.

En omdat Node-RED op node.js draait, kan het ook graag op een aantal minder krachtige apparaten draaien, zoals de $ 35 Raspberry Pi.

Wat biedt de toekomst voor Node-RED?

IBM heeft in september het Node-RED-platform open source en O'Leary zei dat IBM "een whiteboard vol plannen, ideeën en functies heeft om langzaam doorheen te werken".

Node-RED is een evoluerend platform waarvan O'Leary verwacht dat het een nieuw publiek zal vinden als de community er nieuwe tools op bouwt.

"Dit is nog steeds niet iets dat mijn moeder zou gebruiken, maar er zijn zeker veel mensen die dit mogelijk maken om meer te doen dan ze dachten dat ze konden."

© Copyright 2020 | mobilegn.com