Alle kan kode med Node-RED

ADVARSEL: Tonen i denne blogpost kan næsten ikke undgå at blive lidt lummer, for jeg er ellevild med Node-RED. ❤️

Jeg har en ambition for Danmark:

I dagens Danmark kan måske 1-2% af befolkningen sætte sig ned og lave programmer til at løse de mest monotone dele af deres arbejdsopgaver.

Jeg tror på, at man vil kunne øge denne andel til måske 15-30% uden at skulle vente en generation eller to, men ved at lave og tilbyde let tilgængelige værktøjer.

Disse værktøjer vil være robotter, sensorer og aktuatorer i den fysiske verden kombineret med software med grader af intelligens fra simpel logik til komplekse machine learning “hjerner”.

Jeg tror at Node-RED kan være et centralt værktøj i realiseringen af denne ambition.

Men… hvad er det der Node-RED som har gjort dig så vild i varmen, Uffe?

Jeg er glad for at du spørger, Uffe.

Hvad er Node-RED?

Node-RED er en open-source platform udviklet af IBMs Emerging Technologies group til at lave visuel flow-programmering af Internet of Things (IoT) systemer. Flow-baseret programmering blev opfundet først i 1970’erne, så det er absolut ikke en ny opfindelse.

Node-RED er bygget på Node.js og deraf fornavnet.

I Node-RED editoren laver man flows og sub-flows. Flows består typisk af en input-trigger, nogle mellemliggende beslutninger eller processeringer og noget output.

Man binder alle disse noder (der var den igen) sammen med virtuelle ledninger på skærmen og skaber derved flows.

En trigger kan være noget så simpelt som en knap, en timer, eller et HTTP-endpoint (dvs. en URL der kaldes fra browser eller en service på nettet) eller ændringer i et twitter-feed eller en besked på en Slack kanal, en ændring af en temperatur på et pillefyr, eller ….

Hvis du har 5 minutter, så se Nick O’Leary, en af skaberne af Node-RED, vise et par eksempler:

Hvad skal der til?

Node-RED kan køre på små og store systemer, alt fra Raspberry Pi over Windows, Mac og Linux computere til Amazon Webservices og IBMs Watson supercomputer.

Alt afhængig af hvor det kører, kan man udvide Node-RED med pakker af nye noder. De fleste af de mange pakker, der findes, kan køre hvor som helst, men nogle af dem giver mulighed for at interagere direkte med det miljø, hvor Node-RED kører.

F.eks. findes der en pakke til Raspberry Pi, hvor man fra Node-RED kan læse og skrive direkte til benene i GPIO stikket på Raspberry Pi’en og derved direkte styre eller måle på elektronik – og dermed verden!

Hvis man kører Node-RED på IBMs BlueMix platform, kan man direkte tilgå funktioner på IBM Watson supercomputeren, f.eks. Semantisk analyse af tekster, Tale-til-Tekst og Tekst-til-Tale oversættelse, Tone analyse, Utrænet mønster detektering, Personlighedsprofilering (som sandsynligvis hjalp Donald Trump med at blive valgt), billedanalyse og mange flere. Ret vildt!

OK Uffe, men nu er du nødt til at blive lidt mere konkret. Kan du komme med nogle eksempler på hvad man KAN man med Node-RED?

Ja for dælen, det kan du tro…

Pillefyret … igen

Jeg har hooket mit træpillefyr op til Node-RED og får nu events ind ca. hvert 5. minut med målinger af, hvor mange træpiller der er tilbage, og hvor varmt vandet der kommer ud af fyret er.

For hver måling vil jeg gerne kunne se den vist på et “speedometer” (gauge) og på en graf over tid.Node-RED dashboard til Uffes pillefyr

Det har jeg gjort med Dashboard pakken, der giver nem mulighed for at lave en web-baseret brugergrænseflade i Node-RED.

Node-RED flow fra Uffes pillefyr

DET var nemt, ik?

I stedet for, at jeg skal holde øje med grafen hele tiden, kunne det være fedt hvis jeg kunne få en push-besked på min telefon, når pillestanden falder under et bestemt niveau.

Node-RED flow fra Uffes pillefyr incl. push-besked

Det lavede jeg ved at trække en Switch node ind og skrive “> 55” i den. Jeg har nemlig fundet frem til, at hvis jeg får besked om, at der snart mangler træpiller, når der er 55 cm fra sonaren ned til træpillerne, har jeg ca. 24 timer til at tage mig sammen til at få hældt 80-100kg træpiller på.

Min Switch node har to udgange: en der bliver aktiveret, når der er målt mere end 55 cm, og en der får besked, når der er kortere. På den første har jeg trukket en Pushover node ind. Den sender en push-besked til Pushover app’en på min telefon. Den anden Switch-udgang skriver bare teksten ud i en log-fil.

Jeg vil også gerne gemme målingerne, så jeg har trukket en AWS DynamoDB node ind også. Easy-peasy.

Philips Hue

Det første stykke med IoT mange mennesker får indenfor døren derhjemme er pærer fra Philips Hue eller lignende, hvor man fra en app kan tænde og slukke, skrue op og ned og bestemme farven på sit lys.

Der er (selvfølgelig) nogen, der har lavet en Node-RED pakke, der giver adgang til at styre ens Hue pærer. Det kunne være en tidsstyring, baseret på hvornår solen står op og går ned, eller baseret på ens kalender.

Jeg har lavet en web-UI til mine Hues, som ret sikkert bliver tilpasset med tiden.

Node-RED flow til styring af Philips Hue

Bil speedometer

Jeg er ret glad for min Volvo, men må indrømme, at jeg drømmer om at skifte den ud med en Tesla en gang. For at komme lidt tættere på, byggede jeg en CarPuter af en RaspberryPi, en 7″ touch-skærm, en USB GPS-modtager og lidt gammelt Meccano legetøj.

Den kører selvfølgelig Node-RED, og jeg viser hastigheden og højden over havet (fordi jeg kan) i to gauges på en Dashboard side. (Undskyld billedkvaliteten, men jeg lover det er taget på privat vej).

Node-RED dahboard i Uffes CarPuter med Raspberry Pi og Touch-skærm og GPS

CarPuteren kan en masse mere, men det skriver jeg om en anden dag. 🤖

Future Finance Hackathon

Da jeg for nogle uger siden deltog i Future Finance Hackathon hos Spar Nord Bank (og vores team vandt 2. pladsen YAY!), byggede vi løsningen med og omkring Node-RED.

Der viste vi bl.a. hvordan man kan bygge Node-RED ind i netbanken, så bankkunder og bankrådgiverne i samarbejde kan programmere flows der hjælper kunderne med deres økonomi.

Her er et eksempel på et flow, der hver d. 20. i måneden checker om man har minimum 3000kr på sin lønkonto, og hvis ikke får kunden en venlig push-besked og en besked på en Slack kanal.

Node-RED flow integreret i SparNords netbank, med AdvisoRED (mockup)

DET system kommer jeg også helt sikkert til at skrive meget mere om. 🇩🇰

Kan Node-RED alt?

Node-RED er ikke perfekt, men det er i mine øjne et fantastisk godt værktøj der har brede anvendelsesmuligheder og har potentialet til at rykke os et godt stykke nærmere på en befolkning, der kan programmere sig ud af hverdagsproblemer.

Jeg ser en ENORM værdi i, at man lynhurtigt kan lave prototyper af selv rimeligt komplekse integrationer, funktioner og systemer med Node-RED, og derved hurtigt kan få sine tossede afprøvet og sit liv forbedret.

Tag et kig på Node-REDs hjemmeside eller tag fat i mig hvis jeg skal give en demonstration over en kop kaffe.