Hvordan IBM's Node-RED hacker sammen tingenes internet

At hacke verden omkring dig for at bøje den til din vilje bliver lettere og lettere.

Uanset om det er at indstille en lampe, der blinker, når nogen genindlæser dig eller et system til at sms'e dig, når vasken er færdig, arbejder der på at gøre det enklere for maskinen at tale med maskinen.

Tilslutning af rigdom af computere, sensorer og onlinetjenester i den moderne verden kan føre til underlige og vidunderlige kreationer, for eksempel denne fløjtestyrede drone.

Men den pittige gnave ved at arbejde med dette internet af ting er en smule gentagende. For at fjerne nogle af de dumfagiske forskere hos IBM ramte ideen om at bygge en værktøjskasse med genanvendelig kode, som folk kunne bruge til lettere at sammenkoble software og enheder til nyttige systemer.

IBM-forskere ledte efter en måde at forenkle processen med at tilslutte systemer og sensorer, når de bygger proof-of-concept-teknologier til kunderne.

"Vi chatte, og Nick sagde 'Der må være en lettere måde at gøre dette på, " sagde Dave Conway-Jones, senior opfinder hos IBM.

Conway-Jones henviser til Nick O'Leary, nye teknologispecialist hos IBM, der på det tidspunkt havde eksperimenteret med at bruge træk-og-slip-grafiske værktøjer til at opbygge den nødvendige kode for at lade webservices, software og hardware kommunikere. Det er disse værktøjer, der ville udvikle sig til Node-RED.

Node-RED er en begivenhedsbehandlingsmotor, der dybest set forhindrer hardware- og softwarehacker i at kontinuerligt skulle genopfinde hjulet. O'Leary bruger eksemplet med at skulle skrive kode for at sende data til en enhed via dens serielle port, hver gang de startede et nyt projekt.

"Dave og jeg ved, hvordan man skriver kode for at tale med en seriel port, men det kan tage lidt tid at huske, hvordan man gør det og få det skrevet."

"For at tale med en seriel port ved hjælp af Node-RED er det bare et tilfælde af at trække på en knude og give den serielle portoplysninger, og du er færdig. Det giver os denne smidighed til hurtig prototype."

Node-RED fjerner ikke behovet for at skrive kode helt, men det reducerer den dog, og i processen sænker både den tekniske bjælke og giver folk mulighed for at fokusere på at skabe snarere end på at gøre.

"Ligesom et regneark giver dig mulighed for at lege med tal, er Node-RED et værktøj, der er godt til at lege med begivenheder, " sagde Conway-Jones.

"Folk, der ikke er programmører, kan begynde at tænke 'Jeg har Twitter her, og jeg vil analysere, hvad der bliver sagt, og offentliggøre det i et dokument herovre, hvordan kan jeg gøre det?'. For eksempel kunne du have et Twitter-feed når du kommer ind, lav en smule følelsesanalyse på tweets og send alle de gode til en e-mail-adresse.

"Folk, der arbejder på næsten forretningsniveaufunktioner, ikke helt, men når det niveau, kunne gøre dette. Det er det niveau, vi ønsker at komme til."

Hvad er Node-RED?

Ved første øjekast kan grænsefladen til Node-RED muligvis minde brugerne om Scratch, det MIT-udviklede grafiske værktøj, der giver børn mulighed for at kode enkle programmer ved at trække og droppe softwarekommandoer.

Ligesom Scratch giver Node-RED en GUI, hvor brugerne trækker og slipper blokke, der repræsenterer komponenter i et større system, i Node-RED's tilfælde normalt enheder, softwareplatforme og webservices, der skal tilsluttes. Yderligere blokke kan placeres i mellem disse komponenter for at repræsentere softwarefunktioner, der krøller og transformerer dataene i transit.

Den bedste måde at forstå, hvad Node-RED er, er måske at se det. Nedenfor er Node-REDs repræsentation af et "Hello World" -program, der ofte bruges til at introducere nogen til en ny teknologi eller programmeringssprog. For dem, der ikke er bekendt, er dette program normalt en meget enkel rutine, der udskriver meddelelsen 'Hello World' på skærmen.

Hello World-rutinen i Node-RED Image: IBM

Her kan du se Node-REDs grafiske brugergrænseflade, og hvordan platformen nedbryder systemer i deres bestanddele.

Hver af de afrundede blokke, som du kan se på skærmen, er en knude, som er en visuel repræsentation af en blok JavaScript-kode, der er designet til at udføre en bestemt opgave.

For at bygge "Hello World" -programmet trækker brugeren ind i det centrale vindue en "injicere node", en knude designet til at udsende en meddelelse til andre noder.

Denne injektionsnode redigeres for at udsende strengen 'Hello'.

Derefter trækkes en funktionsnode og redigeres for at definere en JavaScript-funktion, der tilføjer strengen 'Verden' til enhver meddelelse, den modtager.

Disse to noder forbindes derefter sammen. De fleste noder har en grå cirkel i deres venstre kant, som repræsenterer deres inputport og på deres højre kant, som repræsenterer deres output port. Venstreklikk og træk outputporten fra 'Hello' noden til inputporten i 'World' noden forbinder de to sammen.

Den sidste fase er at tilføje en Debug-knude, der udskriver den meddelelse, den modtager, i Debug-vinduet. Denne fejlfindingsnode forbindes derefter til output fra 'Verden' -knuden.

Processen er nu klar til at køre, og når den først er implementeret, viser strengen 'Hello World' i fejlfindingsboksen, der vises til højre på skærmen.

Dette færdige program er et eksempel på, hvad der kaldes en flow i Node-RED.

Det, der er interessant ved Node-RED, er, at det kan gøre meget mere end at spytte ud en simpel besked, det kan også lime sammen webservices og hardware, og det er her, det begynder at blive kraftigt.

Brug denne brug af Node-RED af fotografen og IBM-medarbejderen Dom Bramley, der fanger billeder af nattehimlen. Det udstyr, han er afhængig af, er ikke vandtæt, men skal efterlades natten over for at fotografere stjernerne.

Han brugte Node-RED til at bygge et personligt vejrvarslingssystem, der fungerer ved at kontrollere lysene i hans hjem. Bramley opbyggede en strøm, der blev forbundet til prognosen.io vejr API hvert tredje minut for at kontrollere lokale regnvejrudsigter. En anden knude tog svaret fra prognose.io og brugte det til at beregne, hvor mange minutter, indtil nedbør ankom til hans hjem. En omgivende lampe i hans stue skiftede derefter farve baseret på antallet af minutter, indtil der kom regn, mens en nattelampe tændtes, hvis nedbøren var tæt nok til at blive betragtet som usikker.

To strømme kontrollerede lysene i huset, den ene skabte en RGB-værdi, der ændrede farven på et omgivende lys baseret på regnets nærhed. Den anden sendte et signal til en MQTT-tilsluttet Arduino, der kontrollerede en 433 MHz stikkontakt, som tændte en natlampe, hvis en usikker tilstand blev udløst.

Node-RED var limet, der holdt vejrvarslingssystemet sammen, så Bramley kunne suge data fra prognosen.io API, for at udtrække en nyttig indsigt herfra og bruge denne information til at manipulere automatiserede systemer i hans hjem.

Node-RED-strømmen til vejrvarslingssystemet. DLB

Opbygning af tingenes internet

Bramleys vejrvarslingsstrøm demonstrerer, hvordan Node-RED lader skabere bygge videre på andres arbejde.

For eksempel at hente data fra prognose.io Bramley importerede en eksisterende knude, der sender HTTP GET-anmodninger. Alt, hvad han måtte gøre, var at redigere den URL, som anmodningen er fremsat til, og tilføje en streng, der angav hans forespørgsel.

Til gengæld er Bramleys vejrvarslingssystem tilgængeligt for andre at importere til Node-RED, så de kan bruge og misbruge det, som de finder passende. Selv hvis de ikke ønskede hele strømmen, kunne de bare cannibalisere det for dele, måske bare installere noden til at ændre farven på det omgivende belysningssystem.

"I Node-RED kan du indpakke enhver funktionalitet, indkapse den funktion som en knude i vores palet, " sagde O'Leary - der viser moduler til en MQTT-klient og taler med serielle porte på hardware som eksempler på funktionalitet inkorporeret i noder .

"Denne palet med noder er ikke hardkodet, så du kan bare indtaste nye noder, og når du starter, har du ny funktionalitet.

”Det er det økosystem af noder, der gør Node-RED til en platform, som folk kan bidrage til.

"Det betyder, at vi ikke behøver at bruge tid på at bekymre os om, hvordan vi håndterer specifikke tekniske udfordringer. Vi kan fokusere på, hvad ønsker vi, at denne applikation skal gøre. Du får fokus på hvad, snarere end hvordan."

Nye knudepunkter til interaktion med hardware, software og webservices tilføjes hele tiden. De seneste tilføjelser inkluderer noder til styring af Belkin WeMo fjernstyrede stikkontakter og Philips farvetone belysning. Der kan også skrives noder for at drage fordel af softwareplatforme, med noder til at sende SMS-beskeder via Twilio og meddelelser via Twitter.

Den tekniske bjælke til skrivning af en node er ikke særlig høj, da en node simpelthen er en indkapsling af nogle JavaScript-koder, der kører i node.js-miljøet.

Der er allerede et aktivt samfund, der regelmæssigt producerer nye knudepunkter, og Node-RED-platformen er et open source-projekt, der er vært på GitHub, så alle kan bidrage.

Node-RED-strømme er repræsenteret i JavaScript Object Notation eller JSON og kan let eksporteres til udklipsholderen, der skal importeres til Node-RED eller deles online.

IBM overvejer også at gøre det enklere at bygge videre på andres arbejde i Node-RED ved at introducere delstrømme. Delstrømme ville give brugere mulighed for at kollapse strømme af flere sammenkoblede noder i en enkelt knude, hvilket giver mulighed for at abstraheres mere kompleks logik til en enkelt knude.

Node-REDs mange ansigter

"Alle kommer til det med en helt anden opfattelse af, hvad Node-RED er, eller hvad det kunne være, " sagde O'Leary og henviste til, hvordan platformens fleksibilitet har ført til, at folk ser muligheder, der ikke oprindeligt var forestillet sig.

”Det er klart, det er en platform, der har mange forskellige applikationer, forskellige sektorer ser forskellige ting i det.

"Vi bygger en platform, som alle kan bidrage med knudepunkter til, så det løser et problem for dem og derefter bidrage med disse knudepunkter tilbage i."

For eksempel var uddannelse ikke i fokus for IBM, når man designede Node-RED, men enkelheden med at trække og slippe ved at bygge programmer i Node-RED har ført til, at nogle skoler har undersøgt at bruge det som en platform til at lære børn om kodning og hardware hacking.

Og O'Leary sagde, at med tiden kan der tilføjes flere noder, der abstraherer mere af kodningen for at gøre Node-RED mindre skræmmende for folk uden viden om programmering.

”Der er bestemt plads til abstraktion på mere niveau, ” sagde han.

Sænkning af den tekniske søjle gøres enklere ved, hvor let Node-RED kan udvides, for eksempel ved at tilføje noder til at udføre almindelige programmeringskonstruktioner, såsom en For-loop.

O'Leary talte også om muligheden for, at nogen skaber Node-RED-strømme for at legemliggøre lektioner til undervisning af børn om elektronik og computing, så en lærer kunne skifte en Raspberry Pi, der er tilsluttet sensorer, til at blive kørt i "lektion nummer én" -tilstand.

Node-RED er i øjeblikket populær til at køre hjemmeautomatisering, ifølge O'Leary, idet han citerer tilfælde, hvor det har fejet til side "rodet fra Perl- og Python-scripts", der tidligere har holdt disse systemer sammen, sagde han.

Hvor nøjagtigt Node-RED er til hjemmeautomation bliver tydeligt, når du træder ind i IBMs Emerging Technologies-laboratorium i Hursley, England. Forskere har brugt Node-RED for at tillade, at den samme trådløse switch kan tænde en ventilator, ændre skærmen på et LED-tegn eller knap en lampe til og fra. Ændring af, hvad skifteren gør, kræver ikke andet end at klikke på Node-RED-strømmen og skifte ledninger mellem knudepunkter, en opgave, det tager sekunder at udføre.

Der er fundet endnu mere eksotiske anvendelser til Node-RED på Hursley. Der er skrevet en strøm for at kontrollere en drone ved at fløjte, en stigende tone får drone-start og faldende tone får den til at lande.

Node-RED hjælper allerede IBM med at lime sammen bevis på konceptdemonstrationer for kunder. Virksomheden kørte for nylig Node-RED-strømme på Raspberry Pi-plader for at forbinde Arduino-plader til webcams og temperatur-, tryk- og fugtighedsfølere, der overvåger en fabriks produktionslinje.

"Selvfølgelig kunne vi have skrevet kode for at fange alt dette, men det ville have været meget mindre fleksibelt, for når du tilføjer nye sensorer, skal du gå ind og finde ud af, hvor man kan tilføje nye kodestykker, " sagde O'Leary.

Da det samme firma havde et problem med bygherrer, der frakoblede serveren, der indsamlede disse data - så de kunne tilslutte deres el-værktøjer, kunne IBM "i løbet af cirka fem minutter" bruge Node-RED til at sammenkoble et system, der automatisk e-mailet nøgelpersonale, hvis serveren gik ned.

"For os er fleksibiliteten værdien, " sagde O'Leary, "men andre mennesker ser forskellig værdi."

For virksomheder kan denne værdi sortere data tæt på, hvor de er samlet på kanten af ​​netværket, filtrere ud støj og kun sende relevante oplysninger tilbage.

"Hvad vi har her, er noget, der giver dig mulighed for at skubbe logik og forretningskontrol til kanten af ​​netværket, helt ned til en Raspberry Pi eller en lille indlejret Linux-boks, " sagde O'Leary.

"Det er et interessant område. Det er velegnet til at køre i udkanten af ​​netværket på grund af dets lette fodaftryk. Det kan overvåge begivenheder lokalt og kun sende noget op til virksomheden, når du har brug for det, snarere end at skulle sende alle dine data op til din centralt datavirksomhedshub og behandle det der. "

Begrænsninger af Node-RED

Node-RED er en applikation, der er baseret på node.js, en JavaScript-platform til serversiden, der bruger en hændelsesdrevet, ikke-blokerende I / O-model, der er egnet til at oprette datakrævende realtidsapplikationer, der kører på distribuerede enheder.

For at en enhed eller en tjeneste skal fungere med Node-RED, skal der være et node.js-bibliotek eller -modul, der er i stand til at tale med dem.

Men antallet af kompatible tjenester og enheder er omfattende, delvis takket være en tendens for mange moderne platforme til at afsløre deres data og funktionelle via åbne API'er, der accepterer HTTP-anmodninger.

Og fordi Node-RED kører på node.js, kan det også med glæde køre på en række mindre magtfulde enheder, såsom $ 35 Raspberry Pi.

Hvad er det næste til Node-RED?

IBM åbnede Node-RED-platformen i september, og O'Leary sagde, at IBM har "en tavle fuld af planer, ideer og funktioner til langsomt at arbejde vores vej gennem".

Node-RED er en udviklende platform, som O'Leary forventer at vil finde nye målgrupper, når samfundet bygger nye værktøjer ovenpå.

"Dette er stadig ikke noget, som min mor ville bruge, men der er bestemt masser af mennesker, som dette gør det muligt for mere end de troede, de kunne."

© Copyright 2020 | mobilegn.com