Hvordan IBMs Node-RED hacker sammen tingenes internett

Å hacke verden rundt deg for å bøye den til din vilje blir enklere og enklere.

Enten det er å sette opp en lampe som skal blinke når noen gjenoppretter deg eller et system for å sende tekst når vaskingen er ferdig, jobber det for å gjøre det enklere for maskinen å snakke med maskinen.

Å koble sammen vell av datamaskiner, sensorer og online tjenester i den moderne verden kan føre til rare og fantastiske kreasjoner, for eksempel denne fløyta-kontrollerte dronen.

Men den pusete klyngen til å jobbe med dette tingenes internett er en smule gjentagende. For å fjerne noen av de dumme forskerne hos IBM slo ideen om å bygge en verktøykasse med gjenbrukbar kode som folk kunne bruke for å enklere koble sammen programvare og enheter til nyttige systemer.

IBM-forskere lette etter en måte å forenkle prosessen med å koble sammen systemer og sensorer når de bygger proof-of-concept-teknologier for kundene.

"Vi snakket og Nick sa 'Det må være en enklere måte å gjøre dette', " sa Dave Conway-Jones, senioroppfinner hos IBM.

Conway-Jones viser til Nick O'Leary, ny teknologispesialist hos IBM, som på det tidspunktet hadde eksperimentert med å bruke dra-og-slipp-grafiske verktøy for å bygge koden som trengs for å la webtjenester, programvare og maskinvare kommunisere. Det er disse verktøyene som ville utvikle seg til Node-RED.

Node-RED er en begivenhetsbehandlingsmotor som i utgangspunktet forhindrer maskinvare- og programvarehackere fra å måtte kontinuerlig gjenoppfinne hjulet. O'Leary bruker eksemplet med å måtte skrive kode for å sende data til en enhet via sin serielle port hver gang de startet et nytt prosjekt.

"Dave og jeg vet hvordan jeg skriver kode for å snakke med en seriell port, men det kan ta litt tid å huske hvordan jeg gjør det og få det skrevet."

"For å snakke med en serieport ved å bruke Node-RED er det bare et tilfelle av å dra på en node og gi den serielle portdetaljene, og du er ferdig. Det gir oss denne smidigheten til å raskt prototype."

Node-RED tar ikke bort behovet for å skrive kode helt, men det reduserer den, og i prosessen senker både den tekniske linjen og lar folk fokusere på å lage, i stedet for å gjøre.

"På samme måte som et regneark lar deg leke med tall, er Node-RED et verktøy som er bra for å leke med hendelser, " sa Conway-Jones.

"Folk som ikke er programmerere, kan begynne å tenke 'Jeg har Twitter her, og jeg vil analysere det som blir sagt og publisere det i et dokument her, hvordan kan jeg gjøre det?'. For eksempel kan du ha en Twitter-feed som kommer inn, gjør litt sentimentanalyse på tweets og send alle de gode til en e-postadresse.

"Folk som jobber på nesten forretningsnivåfunksjoner, ikke helt, men når det nivået, kan gjøre dette. Det er det nivået vi ønsker å komme til."

Hva er Node-RED?

Ved første øyekast kan grensesnittet for Node-RED minne brukerne om Scratch, det MIT-utviklede grafiske verktøyet som lar barn kode enkle programmer ved å dra og slippe programvarekommandoer.

I likhet med Scratch gir Node-RED et GUI der brukere drar og slipper blokker som representerer komponenter i et større system, i Node-REDs tilfelle vanligvis enhetene, programvareplattformene og webtjenester som skal kobles til. Ytterligere blokker kan plasseres mellom disse komponentene for å representere programvarefunksjoner som krangler og transformerer dataene under transport.

Den kanskje beste måten å forstå hva Node-RED er, er å se det. Nedenfor er Node-REDs representasjon av et "Hello World" -program, ofte brukt for å introdusere noen til en ny teknologi eller programmeringsspråk. For de som ikke er kjent er dette programmet vanligvis en veldig enkel rutine som skriver ut meldingen 'Hello World' på skjermen.

Hello World-rutinen i Node-RED Image: IBM

Her kan du se Node-REDs grafiske brukergrensesnitt og hvordan plattformen bryter systemer ned i deres bestanddeler.

Hver av de avrundede blokkene du kan se på skjermen er en node, som er en visuell representasjon av en blokk med JavaScript-kode designet for å utføre en spesifikk oppgave.

For å bygge "Hello World" -programmet drar brukeren inn i det sentrale vinduet en "injiser node", en node designet for å sende ut en melding til andre noder.

Denne injiseringsnoden redigeres for å sende ut strengen 'Hei'.

Deretter dras en funksjonsnode og redigeres for å definere en JavaScript-funksjon som legger strengen 'Verden' til alle meldinger den mottar.

Disse to nodene kobles deretter sammen. De fleste noder har en grå sirkel på venstre kant, som representerer deres inngangsport, og på deres høyre kant, som representerer deres utgangsport. Venstreklikk og dra utporten til 'Hello' noden til inngangsporten til 'World' noden kobler de to sammen.

Det siste trinnet er å legge til en feilsøkingsnode som skriver ut meldingen den mottar i feilsøkingsvinduet. Denne feilsøkingsnoden kobles deretter til utgangen fra 'Verden' -noden.

Prosessen er nå klar til å kjøres og når den er distribuert vil den vise strengen 'Hello World' i feilsøkingsboksen, vist til høyre på skjermen.

Dette ferdige programmet er et eksempel på det som kalles en flyt i Node-RED.

Det som er interessant med Node-RED, er at det kan gjøre mye mer enn å spytte ut en enkel melding, det kan også lime sammen webtjenester og maskinvare, og det er der det begynner å bli kraftig.

Ta denne bruken av Node-RED av fotografen og IBM-ansatt Dom Bramley, som tar bilder av nattehimmelen. Utstyret han er avhengig av er ikke vanntett, men må ligge utenfor natten for å fotografere stjernene.

Han brukte Node-RED for å bygge et personlig værvarslingssystem, som fungerer ved å kontrollere lysene i hjemmet hans. Bramley bygde en flyt som koblet seg til prognosen.io vær-API hvert tredje minutt for å sjekke lokale regnforsvarsutsikter. En annen node tok svaret fra prognos.io og brukte det til å beregne hvor mange minutter før nedbøren skulle ankomme hjemmet hans. En omgivelseslampe i stuen hans skiftet deretter farge basert på antall minutter til nedbøren kom, mens en nattbordslampe ble slått på hvis nedbøren var nær nok til å anses som utrygg.

To strømmer kontrollerte lysene i huset, den ene skapte en RGB-verdi som endret fargen på et omgivelseslys basert på regnets nærhet. Den andre sendte et signal til en MQTT-tilkoblet Arduino som kontrollerte en 433MHz plugguttak, som skrudde på nattbordlampen hvis en utrygg tilstand ble utløst.

Node-RED var limet som holdt værvarslingssystemet sammen, slik at Bramley kunne suge data fra prognosen.io API, for å trekke ut en nyttig innsikt fra det og bruke den informasjonen til å manipulere automatiserte systemer i hjemmet hans.

Node-RED-strømmen for værvarslingssystemet. DLB

Å bygge tingenes internett

Bramleys værvarslingsstrøm demonstrerer hvordan Node-RED lar skapere bygge på andres arbeid.

For eksempel å hente data fra prognose.io Bramley importerte en eksisterende node som sender inn HTTP GET-forespørsler. Alt han måtte gjøre var å redigere nettadressen som forespørselen er laget til, og legge til en streng som satte spørringen.

I sin tur er Bramleys værvarslingssystem tilgjengelig for andre å importere til Node-RED slik at de kan bruke og misbruke det som de synes passer. Selv om de ikke ville ha hele strømmen, kunne de bare cannibalisere den for deler, kanskje bare installere noden for å endre fargen på omgivelsesbelysningssystemet.

"I Node-RED kan du pakke sammen hvilken som helst bit av funksjonalitet, innkapsle den funksjonen som en node i paletten vår, " sa O'Leary - som viser moduler for en MQTT-klient og snakker med serielle porter på maskinvaren som eksempler på funksjonalitet innlemmet i noder .

"Denne paletten med noder er ikke hardkodet, så du kan bare slippe inn nye noder, og når du starter har du ny funksjonalitet.

"Det er det økosystemet av noder som gjør Node-RED til en plattform som folk kan bidra tilbake til.

"Det betyr at vi ikke trenger å bruke tid på å bekymre oss for hvordan vi skal håndtere spesifikke tekniske utfordringer. Vi kan fokusere på hva ønsker vi at denne applikasjonen skal gjøre. Du får fokusere på hva, snarere enn hvordan."

Nye noder for samhandling med maskinvare, programvare og webtjenester blir lagt til hele tiden. Nyere tillegg inkluderer noder for kontroll av Belkin WeMo fjernstyrte stikkontakter og Philips fargetone-belysning. Noder kan også skrives for å dra nytte av programvareplattformer, med noder for å sende SMS-meldinger via Twilio og meldinger via Twitter.

Den tekniske linjen for å skrive en node er ikke spesielt høy, da en node ganske enkelt er en innkapsling av noen JavaScript-kode som kjører i node.js-miljøet.

Det er allerede et aktivt samfunn som jevnlig produserer nye noder, og Node-RED-plattformen er et åpen kildekode-prosjekt som er arrangert på GitHub, slik at alle kan bidra.

Node-RED-strømmer er representert i JavaScript Object Notation eller JSON og kan enkelt eksporteres til utklippstavlen for å importeres til Node-RED eller deles online.

IBM vurderer også å gjøre det enklere å bygge videre på andres arbeid i Node-RED ved å introdusere delstrømmer. Delstrømmer vil tillate brukere å kollapse strømmer av flere koblede noder i en enkelt node, slik at mer kompleks logikk kan abstraheres til en enkelt node.

De mange ansiktene til Node-RED

"Alle kommer på det med en helt annen oppfatning av hva Node-RED er eller hva det kan være, " sa O'Leary og refererte til hvordan fleksibiliteten på plattformen har ført til at folk ser muligheter som ikke opprinnelig ble sett for seg.

"Det er klart det er en plattform som har mange forskjellige applikasjoner, forskjellige sektorer ser forskjellige ting i den.

"Vi bygger en plattform som alle kan bidra med noder til, slik at det løser et problem for dem, og deretter bidrar disse nodene tilbake i."

For eksempel var ikke utdanning fokuset for IBM når vi utformet Node-RED, men enkel og slett å bygge programmer i Node-RED har ført til at noen skoler har sett på å bruke det som en plattform for å lære barn om koding og maskinvarehacking.

Og O'Leary sa at over tid kan det legges til flere noder som abstraherer mer av kodingen, for å gjøre Node-RED mindre skremmende for folk uten kunnskap om programmering.

"Det er definitivt et rom for mer abstraksjon på høyere nivå, " sa han.

Å senke den tekniske linjen gjøres enklere av hvor enkelt Node-RED kan utvides, for eksempel ved å legge til noder for å utføre vanlige programmeringskonstruksjoner, for eksempel en For-loop.

O'Leary snakket også om muligheten for at noen opprettet Node-RED-strømmer for å legemliggjøre leksjoner for å lære barn om elektronikk og databehandling, slik at en lærer kunne bytte en Raspberry Pi koblet til sensorer for å bli kjørt i "leksjon nummer én" -modus.

Node-RED er for tiden populært for å kjøre hjemmeautomatisering, ifølge O'Leary, og siterer tilfeller der det har feid til side "rotet til Perl og Python-skript" som tidligere holdt disse systemene sammen, sa han.

Hvor bra passform Node-RED er for hjemmeautomatisering blir tydelig når du går inn i IBMs Emerging Technologies-laboratorium i Hursley, England. Forskere har brukt Node-RED for å la den samme trådløse bryteren slå på en vifte, endre skjermen på et LED-skilt eller flikke en lampe på og av. Å endre hva bryteren gjør krever ikke mer enn å klikke på Node-RED-strømmen og endre ledningene mellom noder, en oppgave som tar sekunder å utføre.

Enda mer eksotisk bruk er funnet for Node-RED på Hursley. Det er skrevet en flyt for å kontrollere en drone ved å plystre, en stigende tone får dronen til start og synkende tone får den til å lande.

Node-RED hjelper allerede IBM med å lime sammen bevis på konseptdemonstrasjoner for kunder. Firmaet kjørte nylig Node-RED-strømmer på Raspberry Pi-tavler for å koble Arduino-tavler til webkameraer og temperatur-, trykk- og fuktighetssensorer som overvåker en fabrikkproduksjonslinje.

"Selvfølgelig kunne vi ha skrevet kode for å fange opp alt dette, men det hadde vært mye mindre fleksibelt, for når du legger til nye sensorer må du gå inn og finne ut hvor du kan legge til nye kodebiter, " sa O'Leary.

Da det samme firmaet hadde et problem med at byggherrer koblet fra serveren som samlet inn disse dataene - slik at de kunne plugge inn elektroverktøyene sine - kunne IBM "i løpet av omtrent fem minutter" bruke Node-RED for å koble sammen et system som sendte automatisk e-post til nøkkelpersonell hvis serveren gikk ned.

"For oss er fleksibiliteten verdien, " sa O'Leary, "men andre mennesker ser forskjellig verdi."

For bedrifter som kan verdsette sortering av data i nærheten av der de er samlet på kanten av nettverket, filtrere ut støyen og bare sende tilbake relevant informasjon.

"Det vi har her, er noe som lar deg skyve logikk og forretningskontroll til kanten av nettverket, helt ned til en Raspberry Pi eller en liten innebygd Linux-boks, " sa O'Leary.

"Det er et interessant område. Det er egnet til å løpe i utkanten av nettverket på grunn av det lette fotavtrykket. Det kan overvåke hendelser lokalt og bare sende noe opp til bedriften når du trenger det, i stedet for å måtte sende alle dataene dine opp sentrale datafirma-hub og håndtere det der. "

Begrensninger av Node-RED

Node-RED er et program som er basert på node.js, en JavaScript-plattform på serversiden som bruker en hendelsesstyrt, ikke-blokkerende I / O-modell som er egnet til å lage datakrevende, sanntidsapplikasjoner som kjører på distribuerte enheter.

For at en enhet eller en tjeneste skal fungere med Node-RED, må det være et node.js-bibliotek eller en modul som kan snakke med dem.

Men antallet kompatible tjenester og enheter er omfattende, delvis takket være en tendens for mange moderne plattformer til å avsløre dataene sine og funksjonelle via åpne API-er som aksepterer HTTP-forespørsler.

Og fordi Node-RED kjører på node.js, kan den gjerne også kjøres på en rekke mindre kraftige enheter, for eksempel Raspberry Pi på 35 dollar.

Hva er det neste for Node-RED?

IBM åpnet Node-RED-plattformen i september og O'Leary sa at IBM har "et tavle fullt av planer, ideer og funksjoner for sakte å jobbe oss gjennom".

Node-RED er en plattform som utvikler seg som O'Leary forventer å finne nye målgrupper når samfunnet bygger nye verktøy på toppen av det.

"Dette er fremdeles ikke noe som mamma ville bruke, men det er sikkert mange mennesker som dette gjør det mulig å gjøre mer enn de trodde de kunne."

© Copyright 2020 | mobilegn.com