Hur IBM: s Node-RED hackar ihop tingenes internet

Att hacka världen runt dig för att böja den till din vilja blir enklare och lättare.

Oavsett om det är att ställa in en lampa som blinkar när någon återvänder dig eller ett system för att sms-er när tvätten är klar, pågår arbete för att göra det enklare för maskinen att prata med maskinen.

Att ansluta en mängd datorer, sensorer och onlinetjänster i den moderna världen kan leda till konstiga och underbara skapelser, till exempel denna visselpipa-styrda drönare.

Men den snåla skitna av att arbeta med detta internet av saker är en smula upprepade. För att ta bort några av de dumma forskarna på IBM träffade idén att bygga en verktygslåda med återanvändbar kod som människor kunde använda för att lättare koppla samman programvara och enheter till användbara system.

IBM-forskare letade efter ett sätt att förenkla processen att koppla samman system och sensorer när de bygger proof-of-concept-teknik för kunderna.

"Vi pratade och Nick sa" Det måste finnas ett enklare sätt att göra detta ", säger Dave Conway-Jones, senior uppfinnare på IBM.

Conway-Jones hänvisar till Nick O'Leary, ny teknikspecialist på IBM, som vid den tiden experimenterade med att dra och släpp grafiska verktyg för att bygga den kod som behövs för att låta webbtjänster, programvara och hårdvara kommunicera. Det är dessa verktyg som skulle utvecklas till Node-RED.

Node-RED är en händelsehanteringsmotor som i princip förhindrar hårdvaru- och programvaruhacker från att kontinuerligt behöva uppfinna hjulet igen. O'Leary använder exemplet med att behöva skriva kod för att skicka data till en enhet via sin seriella port varje gång de startade ett nytt projekt.

"Dave och jag vet hur man skriver kod för att prata med en serieport men det kan ta lite tid att komma ihåg hur man gör det och få det skrivet."

"Att prata med en serieport med Node-RED är det bara att dra på en nod och ge den seriella portinformationen och du är klar. Det ger oss denna smidighet att snabbt prototypa."

Node-RED tar inte bort behovet av att skriva kod helt, men det minskar det, och i processen sänker både den tekniska fältet och låter människor fokusera på att skapa, snarare än på att göra.

"Precis som ett kalkylblad låter dig leka med siffror är Node-RED ett verktyg som är bra för att leka med händelser, " sa Conway-Jones.

"Människor som inte är programmerare kan börja tänka" Jag har Twitter här och jag vill analysera vad som sägs och publicera det i ett dokument här, hur kan jag göra det? ". Till exempel kan du ha ett Twitter-flöde kommer in, gör lite sentimentanalys på tweets och skicka alla goda till en e-postadress.

"Människor som arbetar på nästan affärsnivåfunktioner, inte riktigt utan att komma till den nivån, skulle kunna göra detta. Det är den nivån vi vill komma till."

Vad är Node-RED?

Vid första anblicken kan gränssnittet för Node-RED påminna användare om Scratch, det MIT-utvecklade grafiska verktyget som gör det möjligt för barn att koda enkla program genom att dra och släppa programkommandon.

Liksom Scratch tillhandahåller Node-RED ett GUI där användare drar-och-släpp-block som representerar komponenter i ett större system, i Node-REDs fall vanligtvis enheter, programvaruplattformar och webbtjänster som ska anslutas. Ytterligare block kan placeras mellan dessa komponenter för att representera mjukvarufunktioner som kraschar och transformerar data under transporten.

Kanske är det bästa sättet att förstå vad Node-RED är att se det. Nedan visas Node-REDs representation av ett "Hello World" -program, vanligtvis för att introducera någon till en ny teknik eller programmeringsspråk. För de som är okända är detta program vanligtvis en mycket enkel rutin som skriver ut meddelandet "Hello World" på skärmen.

Hello World-rutinen i Node-RED Image: IBM

Här kan du se Node-REDs grafiska användargränssnitt och hur plattformen delar upp system i deras beståndsdelar.

Var och en av de rundade blocken som du kan se på skärmen är en nod, som är en visuell representation av ett block av JavaScript-kod som är utformat för att utföra en specifik uppgift.

För att bygga "Hello World" -programmet drar användaren in i det centrala fönstret en "injiceringsnod", en nod som är utformad för att mata ut ett meddelande till andra noder.

Denna injektionsnod redigeras för att mata ut strängen "Hej".

Därefter dras en funktionsnod och redigeras för att definiera en JavaScript-funktion som lägger till strängen 'Värld' till alla meddelanden den får.

Dessa två noder kopplas sedan samman. De flesta noder har en grå cirkel på sin vänstra kant, som representerar deras ingångsport och på deras högra kant, som representerar deras utgångsport. Vänsterklicka och dra utgångsporten från "Hello" -noden till ingångsporten för "World" -noden ansluter de två till varandra.

Det sista steget är att lägga till en felsökningsnod som skriver ut meddelandet som den får i felsökningsfönstret. Den här felsökningsnoden kopplas sedan till utgången från "Värld" -noden.

Processen är nu klar att köras och när distribuerad visas strängen "Hello World" i felsökningsrutan, som visas till höger på skärmen.

Detta färdiga program är ett exempel på vad som kallas ett flöde i Node-RED.

Det som är intressant med Node-RED är att det kan göra mycket mer än att skissa ut ett enkelt meddelande, det kan också limma samman webbtjänster och hårdvara, och det är där det börjar bli kraftfullt.

Ta denna användning av Node-RED av fotografen och IBM-anställden Dom Bramley, som tar bilder av natthimlen. Utrustningen han litar på är inte vattentät men måste lämnas utanför över en natt för att fotografera stjärnorna.

Han använde Node-RED för att bygga ett personligt vädervarningssystem som fungerar genom att kontrollera lamporna i hans hem. Bramley byggde ett flöde som anslutits till prognosen.io väder-API var tredje minut för att kontrollera lokala regnprognoser. En andra nod tog svaret från prognos.io och använde det för att beräkna hur många minuter tills regn skulle komma hem. En omgivande lampa i sitt vardagsrum skiftade sedan färg baserat på antalet minuter tills regn kom, medan en nattlampa tändes om nederbörden var tillräckligt nära för att anses osäker.

Två flöden kontrollerade lamporna i huset, en skapade ett RGB-värde som ändrade färgen på ett omgivande ljus baserat på regnens närhet. Den andra skickade en signal till en MQTT-ansluten Arduino som styrde ett 433MHz-stickkontakt, som tände på en nattlampa om ett osäkert tillstånd utlöste.

Node-RED var limet som höll vädervarningssystemet tillsammans, vilket tillät Bramley att suga data från prognosen.io API, för att dra ut en användbar insikt från det och använda den informationen för att manipulera automatiserade system i hans hem.

Node-RED-flödet för vädervarningssystemet. DLB

Bygga tingenes internet

Bramleys vädervarningsflöde visar hur Node-RED låter skapare bygga på andras arbete.

För att till exempel hämta data från prognos.io importerade Bramley en befintlig nod som skickar HTTP GET-förfrågningar. Allt han behövde göra var att redigera URL: en som begäran görs till och lägga till en sträng som ställde hans fråga.

I sin tur är Bramleys vädervarningssystem tillgängligt för andra att importera till Node-RED så att de kan använda och missbruka det som de ser. Även om de inte ville ha hela flödet så kunde de bara kannibalisera det för delar, kanske bara installera noden för att ändra färgen på det omgivande belysningssystemet.

"I Node-RED kan du packa upp vilken funktionalitet som helst, inkapsla den funktionen som en nod i vår palett, " sa O'Leary - listar moduler för en MQTT-klient och pratar med seriella portar på hårdvara som exempel på funktionalitet införlivade i noder .

"Denna palett med noder är inte hårdkodade så du kan bara släppa in nya noder och när du startar har du ny funktionalitet.

"Det är det ekosystemet med noder som gör Node-RED till en plattform som människor kan bidra tillbaka till.

"Det betyder att vi inte behöver spendera tid på att oroa oss för hur vi ska hantera specifika tekniska utmaningar. Vi kan fokusera på vad vi vill att den här applikationen ska göra. Du får fokusera på vad, snarare än hur."

Nya noder för att interagera med hårdvara, mjukvara och webbtjänster läggs till hela tiden. Nya tillägg inkluderar noder för kontroll av Belkin WeMo fjärrstyrda uttag och Philips nyansbelysning. Noder kan också skrivas för att dra fördel av mjukvaruplattformar, med noder för att skicka SMS-meddelanden via Twilio och meddelanden via Twitter.

Den tekniska fältet för att skriva en nod är inte särskilt hög, eftersom en nod helt enkelt är en kapsling av viss JavaScript-kod som körs i node.js-miljön.

Det finns redan ett aktivt samhälle som regelbundet producerar nya noder och Node-RED-plattformen är ett öppen källkodsprojekt på GitHub, så att alla kan bidra.

Node-RED-flöden representeras i JavaScript Object Notation eller JSON och kan enkelt exporteras till Urklipp för att importeras till Node-RED eller delas online.

IBM överväger också att göra det enklare att bygga vidare på andras arbete i Node-RED genom att införa underflöden. Underflöden skulle göra det möjligt för användare att kollapsa flöden av flera länkade noder till en enda nod, vilket gör att mer komplex logik kan abstraheras till en enda nod.

Node-REDs många ansikten

"Alla kommer på det med en helt annan uppfattning om vad Node-RED är eller vad det kan vara, " sade O'Leary och hänvisade till hur plattformens flexibilitet har lett till att människor ser möjligheter som inte ursprungligen föreställdes.

"Det är uppenbart att det är en plattform som har många olika applikationer, olika sektorer ser olika saker i den.

"Vi bygger en plattform som vem som helst kan bidra med noder till så det löser något problem för dem och sedan bidrar med dessa noder igen."

Exempelvis var utbildning inte fokus för IBM när man utformade Node-RED, men enkelhetens drag och släpp för att bygga program i Node-RED har lett till att vissa skolor har undersökt att använda det som en plattform för att lära barn om kodning och hårdvaruhackning.

Och O'Leary sa att det med tiden kan läggas till fler noder som abstraktar mer av kodningen för att göra Node-RED mindre skrämmande för människor utan kunskap om programmering.

"Det finns definitivt ett utrymme för mer abstraktion på högre nivå, " sade han.

Att sänka den tekniska fältet görs enklare genom hur lätt Node-RED kan utökas, till exempel genom att lägga till noder för att utföra vanliga programmeringskonstruktioner, till exempel en For-loop.

O'Leary talade också om möjligheten att någon skapar Node-RED-flöden för att förkroppsliga lektioner för att lära barn om elektronik och datoranvändning, så att en lärare kunde växla en Raspberry Pi ansluten till sensorer för att köras i "lektion nummer ett" -läge.

Node-RED är för närvarande populärt för att köra hemmeautomation, enligt O'Leary och citerar fall där det har sopat åt sidan "röra med Perl- och Python-skript" som tidigare höll dessa system tillsammans, sade han.

Hur bra passform Node-RED är för hemmeautomation blir uppenbart när du går in i IBMs Emerging Technologies-laboratorium i Hursley, England. Forskare har använt Node-RED för att låta samma trådlösa strömbrytare slå på en fläkt, ändra skärmen på en LED-skylt eller slå en lampa på och av. Att ändra vad omkopplaren gör kräver inget annat än att klicka på Node-RED-flödet och ändra ledningarna mellan noder, en uppgift som tar sekunder att utföra.

Även mer exotiska användningar har hittats för Node-RED på Hursley. Ett flöde har skrivits för att kontrollera en drone genom att vissla, en stigande ton gör att drönan startar och den fallande tonen gör att den landar.

Node-RED hjälper redan IBM att limma samman bevis för konceptdemonstrationer för kunder. Företaget körde nyligen Node-RED-flöden på Raspberry Pi-kort för att ansluta Arduino-brädor till webbkameror och temperatur-, tryck- och fuktighetssensorer som övervakar en fabriks produktionslinje.

"Naturligtvis kunde vi ha skrivit kod för att fånga allt detta men det hade varit mycket mindre flexibelt, för när du lägger till nya sensorer måste du gå in och ta reda på var du ska lägga till nya kodkoder, " sa O'Leary.

När samma företag hade problem med att byggare kopplade från servern som samlar in dessa data - så att de kunde ansluta sina elverktyg - kunde IBM "på cirka fem minuter" använda Node-RED för att koppla ihop ett system som skickade automatiskt nyckelpersonal om servern gick ner.

"För oss är flexibiliteten värdet, " sade O'Leary, "men andra människor ser olika värde."

För företag som värderar kan sortera data nära var de samlas in på kanten av nätverket, filtrera bort bruset och bara skicka tillbaka relevant information.

"Vad vi har här är något som låter dig driva logik och företagskontroll till kanten av nätverket, ända ner till en Raspberry Pi eller en liten inbäddad Linux-låda, " sa O'Leary.

"Det är ett intressant område. Det passar att köra i kanten av nätverket på grund av dess lätta fotavtryck. Det kan övervaka händelser lokalt och bara skicka något upp till företaget när du behöver, snarare än att behöva skicka all din data upp centrala dataföretagens nav och hantera det där. "

Begränsningar av nod-RED

Node-RED är ett program baserat på node.js, en JavaScript-plattform för serversidan som använder en händelsestyrd, icke-blockerande I / O-modell som är anpassad för att skapa datakrävande realtidsapplikationer som körs över distribuerade enheter.

För att en enhet eller en tjänst ska fungera med Node-RED måste det finnas ett bibliotek eller modul node.js som kan prata med dem.

Men antalet kompatibla tjänster och enheter är omfattande, delvis tack vare en tendens för många moderna plattformar att avslöja sina data och funktionella via öppna API: er som accepterar HTTP-förfrågningar.

Och eftersom Node-RED körs på node.js kan den också gärna köras på en rad mindre kraftfulla enheter, till exempel $ 35 Raspberry Pi.

Vad är nästa för Node-RED?

IBM öppnade Node-RED-plattformen i september och O'Leary sa att IBM har "en whiteboard full av planer, idéer och funktioner för att sakta arbeta oss igenom".

Node-RED är en utvecklande plattform som O'Leary förväntar sig att hitta nya målgrupper när samhället bygger nya verktyg ovanpå.

"Det här är fortfarande inte något som min mamma skulle använda, men det finns säkert många människor som gör det möjligt att göra mer än de trodde att de kunde."

© Copyright 2020 | mobilegn.com