|

Low-Code mit Node-Red: Mehr als nur IoT und Kinderspielzeug

Try it!

Im Zuge von winterlichen Home-Automation-Experimenten mit MQTT und HomeAssistant bin ich auf dieses Tool gestoßen. Ich glaube, dass es in bestimmten Fällen für uns Webentwickler ein hilfreiches Tool sein kann, auch wenn es auf den ersten Blick ein bisschen aussieht wie ein Kinderspielzeug.

Was ist Node-Red?

Node-Red ist eine baukastenartige Entwicklungsumgebung, die auf Node.js läuft. Für uns tastaturorientierte Entwickler erfordert das etwas Umgewöhnung, denn Node-Red ist aus einzelnen „Nodes“ aufgebaut, die sich auf einer Oberfläche („Flow“) durch Drag-and-Drop anordnen lassen. Die Nodes können dann miteinander verbunden werden, um das gewünschte Ergebnis zu erzielen.

Für was kann man das gebrauchen?

Dadurch, dass das Ganze ereignisgesteuert funktioniert, eignet es sich natürlich prima für iOT-Anwendungen. Aber so ein Ereignis kann auch eine HTTP-Request, ein Websocket oder ein Zeitpunkt sein, was Node-Red extrem vielseitig einsetzbar macht. Durch die Vielzahl an integrierten bzw. einbindbaren Libraries stehen praktisch alle Türen offen. Theoretisch würde sich damit sogar ein ganzes Backend laufen lassen. Für uns interessant wäre vermutlich aber eher die Verwendung als kleiner Service, oder als Middleware, die schnell mal zusammengeklickt und in einem Docker Container verwendet werden kann.

Fertige Libraries/Integrationen gibt es zum Beispiel für:

  • WebSocket
  • SQL/SQLite
  • GrapQL
  • MongoDB
  • Telegram
  • Moment.js
  • Parser für JSON, YAML, CSV etc.

„Ich will aber richtig programmieren.“

Naja, das macht man da ja auch. Die UI ist nur eine Abstraktionsebene über dem eigentlichen Code. Im Grunde genommen hat man immer das Objekt msg bzw. msg.payload, das durch die Nodes durchgereicht wird und von jeder Node entsprechend manipuliert oder genutzt wird. Im eingebauten Debugger kann man die Objekte dann auch richtig inspizieren.
Wem das nicht reicht, der kann sich auch eine function-Node schnappen und ein ganz normales JavaScript reinschreiben.

Was ist mit externen Libraries?

Geht auch, ist aber ein wenig umständlich (siehe dieses Beispiel). Es ist sinnvoll, zu suchen, ob jemand schonmal für die Library einen Wrapper für Node-Red geschrieben hat, wie z.B. node-red-contrib-moment für moment.js.

Will haben! Wie geht das?

Klone einfach dieses Repo und mache docker-compose up.

Hier findest du noch mehr Guides zum Aufsetzen von Node-Red.