Der 2. Teil von Marcel Morés Vortrags über die LowCode-Plattform “Node-Red” stellte geeignete Vorgehensweisen für die Intergration von Node-Red mit FileMaker vor.

Beim Januar-Stammtisch ging es im 1. Teil zunächst darum, Node-Red als Plattform in seinen Grundzügen vorzustellen. Ähnlich wie “Claris-Connect” handelt es sich um eine LowCode-Plattform, die als Schnittstelle zwischen FileMaker und Web-APIs seine Dienste verrichten kann, um die Anbindung an fremde Dienste oder auch an Hardware (Stichwort IoT “Internet of Things”) zu vereinfachen.

Node-Red Aufbau

Node-Red ist in seinen Grundzügen ein Message-Broker, der automatisiert JSON-Nachrichten zwischen unterschiedlichen Sendern und Empfängern verarbeitet. Dabei gibt es Trigger, die Ereignisse auslösen und eine Anzahl von Grund-Elementen, mit denen diese Nachrichten transformiert, geroutet und mit Steuer-Befehlen für Endpunkte angereichert werden können. Umgekehrt können auch Datenquellen angezapft und die Ergebnisse in Form von JSON-Nachrichten ausgegeben werden.

Die Funktionsabläufe werden als “Flows” bezeichnet. Diese kann man in einer graphischen Web-Oberfläche aus sogenannten “Nodes” zusammenklicken und untereinander verbinden. Sobald der “Flow” deployed ist, kümmert sich der Node-Red Serverdienst im Hintergrund um die Überwachung der Trigger und die Verarbeitung der Nachrichten.

Was Node-Red dabei besonders macht ist die Tatsache, dass es inzwischen mehr als 3.000 Plugins gibt, mit denen man spezifische Funktionen bzw. Anbindungen an externe Dienste oder Geräte einfach einbinden kann. Die Plugins lassen sich über die Web-Oberfläche suchen und direkt per Mausklick auf dem eigenen Server installieren. Eine aussagekräftige Beschreibungsseite und die eingebaute Hilfe-Dokumentation vermitteln schnell einen Eindruck, was das jeweilige Plugin macht und wie die Nachrichtenverarbeitung bzgl. Ein- und Ausgabe-Parametern erfolgt.

Da es sich bei Node-Red um ein OpenSource Projekt handelt, sind einerseits alle grundlegenden Basis-Dienste frei verfügbar. So auch die vielen Plugins, die größtenteils aus der Node-Red OpenSoure Community bereit gestellt wurden. Andererseits wird das ursprünglich von IBM entwickelte Framework, das auf dem JavaScript Server NodeJS basiert, professionell betreuet mit umfangreicher Dokumentation und zahlreichen Beispielen. Dazu kommt ein reich gefülltes Community-Forum auf der offiziellen Node-Red Seite und endlos viele Tutorials, Code-Beispiele und Projekte, die sich zuhauf im Netz ergoogeln lassen. Unter Strich also ideale Voraussetzungen für einen relativ schmerzfreien Einstieg in das Thema LowCode-Plattformen.

Node-Red ist für alle gängigen Betriebssysteme zum Download verfügbar. Außerdem gibt es spezialisierte Cloud-Hosting-Anbieter, auf denen eigene Anwendungen betrieben werden können.

Marcel zeigte im ersten Teil seines Vortrags die grundlegende Funktionsweise der Plattform. Dazu gab es ein paar eindrucksvolle Beispiele:

  • Abfrage der neuesten Einträge aus dem FileMaker Forum + Darstellung in einer Tabelle
  • Abfrage von Wetter-Daten aus der Tagesschau-Seite + Darstellung auf einem Dashboard
  • Abfrage von strukturierten Wetterdaten über die openweathermap.org API
  • Steuerung der Raumbeleuchtung eines Philips Hue-Systems über ein einfaches Dashboard
  • Einbindung der Signale eines Bewegungsmelders und auslösen eines Scripts auf einem FileMaker Server, wenn der Sensor anschlägt
  • Ansteuerung einer FileMaker Lösung aus Node-Red über das FileMaker Data API
  • Verwendung eines Node-Red Dashboard auf dem iPhone mit automatischer Synchronisierung

Projekt: FileMaker Server Dashboard

Während des Januar-Stammtischs kam außerdem spontan die Idee auf, ein FileMaker Server Dashboard mit Node-Red zu realisieren und die Logfiles des FileMaker Servers live auszulesen und zu verarbeiten.

Die Ergebnisse stellte Marcel nun nochmal in ausgereifter Form vor. Dabei werden über einen sog. “Tail”-Node die jeweils neusten Log-Ereignisse aus den Server-Logfiles ermittelt und dann auf zweierlei Weise weiter verarbeitet. Auf einem Node-Red Dashboard werden in Echtzeit 3 Tabellen mit den Ergebnissen das Event-Logs, Access-Logs und Data API-Logs angezeigt. Außerdem werden die Nachrichten per Data API zurück in eine auf dem FileMaker Server gehostete Datenbank geschrieben. Hier tauchen dann ebenfalls quasi in Echtzeit die neusten Einträge aus allen FMServer-Logfiles als Datensätze auf. Eine kleine GUI, die für das iPhone optimiert ist, erlaubt die gefilterte Darstellung von Server-Ereignissen auf einem iPhone mit FileMaker Go.

Möglich macht das ein Node-Red Plugin für die FileMaker Data API, welches unter dem Namen “node-red-contrib-filemaker” im Plugin-Verzeichnis kostenlos zur Verfügung steht. Das Plugin stellt alle Methoden und Aufrufe der FileMaker Data API als einzelne Nodes innerhalb der Node-Red Oberfläche zur Verfügung. Es muss dann lediglich einmal die Server-Adresse und die Credentials für den Zugriff auf die per Data API freigegebene Datenbank hinterlegt werden, anschließend kümmert sich das Plugin um das komplette Session-Handling und die Übermittlung der erforderlichen Parameter. Voraussetzung ist allerdings ein gültiges SSL-Zertifikat auf Seiten des FileMaker Servers.

Die Beispiel-Datei zum Auslesen der Server Logfiles steht zusammen mit dem Node-Red Flow und einer kleinen Anleitung zur Installation und Inbetriebnahme zum Download für alle Interessierten zur Verfügung.


REST API mit Node-Red

Für die Integration von FileMaker Lösungen auf Client-Seite erläuterte Marcel die Möglichkeit, mit 3 Klicks in der Node-Red Oberfläche einen REST API Endpunkt zu definieren:

  1. HTTP-Eingabe-Node hinzufügen und benennen, dies ist zugleich die URL unter welcher der REST API Endpunkt aufrufbar ist
  2. Datenobjekt einfügen, welches eine JSON-Nachricht erzeugt
  3. HTTP Antwort-Node hinzufügen. Dieser gibt das JSON-Objekt zurück.

Ist der API Endpunkt auf diese Weise definiert und deployed, lässt er sich sofort im Browser ausprobieren.

Nun ist natürlich ein leichtes, aus einer FileMaker Datenbank heraus die definierte URL aufzurufen und mit dem Script-Befehl “aus URL einfügen” das Ergebnis des Aufrufs in eine FileMaker-Variable zu übernehmen. Mit der JSONGetElement Funktion lassen sich dann die einzelnen Werte aus der JSON-Nachricht auslesen und weiter verarbeiten.

Definiert man den REST API Endpunkt in Node-Red als “GET”-Request (ist per Default voreingestellt), so lassen sich der URL einfach die Eingabe-Werte aus FileMaker per URL-Parameter anhängen.

Im Beispiel wurde gezeigt, wie FileMaker aus einem Datenfeld einen Ortsnamen holt und in einem URL Aufruf verpackt: http://Server-IP/wetterapi/?ort=Hannover Der Node-Red Flow liest diesen Ort-Parameter aus der URL wieder aus, verpackt ihn in ein JSON-Objekt mit den Eingabe-Parametern der openweathermap.org API, fragt den aktuellen Wetterbericht dort ab, liest das Ergebnis-JSON des Wetter-Dienstes ein, übernimmt die gewünschten Daten in ein eigenes JSON-Objekt und liefert dieses zurück an die FileMaker Datenbank. Dort werden die Ergebniswerte aus der JSON-Antwort ausgelesen und in entsprechende Felder auf dem Datensatz-Layout geschrieben.

Es ist somit sehr einfach möglich, komplexe API-Abfragen an Node-Red zu delegieren und nur die gewünschten Ergebniswerte in einem selbst definierten Format an die FileMaker Lösung auszuliefern.

URL-Aufrufe aus FileMaker können in Node-Red natürlich nicht nur fremde Web-APIs abfragen, sondern auf dem gleichen Weg auch Gerätedaten (z.B. von einer Digitalwaage oder einem Bewegungssensor) empfangen oder Geräte per URL-Trigger anweisen etwas zu tun (z.B. das Licht anschalten oder das Garagentor öffnen).

Der Phantasie sind quasi keine Grenzen gesetzt!


Node-Red Plattform

Nicht unbedingt erstaunlich, dass es bereits zahlreiche fertige Projekte zu den unterschiedlichsten Themenbereichen in der Node-Red Community gibt, aus dessen Erfahrungen man sich schnell die richtigen Einstiegspunkte für eigene Ideen ableiten kann. Ein besonders intensiv vertretener Bereich ist das Thema “Heim-Automatisierung”, wo sich Node-Red durch die Integration des IoT-Standards MQTT zum Universal-Tool für Geräte-Steuerungen aller Art gemausert hat.

Da Node-Red auch prima auf dem Linux eines kleinen Raspberry Pi für knapp 40,- EUR läuft ist es quasi prädestiniert, als LowCost Server zahlreiche Aufgaben in unterschiedlichstem Kontexten zu übernehmen.

Der Funke sprang jedenfalls über und einige Teilnehmer des FileMaker Stammtisches haben sich spontan verabredet, das Thema Node-Red und FileMaker weiter aktiv auszutesten und eigene Projekte damit umzusetzen.

Russell Watson hat noch während des Abends einen Slack-Channel dafür bereit gestellt und eine Einladung an alle Teilnehmer verschickt. Bereits am nächsten Morgen herrschte reger Austausch auf Slack und die ersten Gehversuche für die Installation eines eigenen Node-Red Servers wurden ausgetauscht und mit Hilfestellungen, ScreenShots und Beispiel-Dateien unterfüttert.

Ein Anfang ist gemacht und man darf gespannt sein, welche Projektideen und Erfahrungen aus dem Node-Red Abenteuer uns bei den nächsten Stammtisch-Runden begegnen.


Node-Red Ressourcen

Ein Dokument mit hilfreichen Links zu Dokumentationen, Beispielen und Tutorials für den Einstieg in Node-Red gibt es hier zum Download:

Node-Red + FileMaker Starthilfe und Link-Sammlung
https://www.dropbox.com/s/u46jlu172i0pbqd/Node-Red%20%2B%20FileMaker%20Starthilfe%20und%20Link-Sammlung.rtf?dl=0

Beispieldatei: FileMaker Server Dashboard
https://www.dropbox.com/s/9paaisvv7c34qpd/FMServerLogs-Demo-v1.4.zip?dl=0

Node Red Plugin FileMaker Data API
https://flows.nodered.org/node/node-red-contrib-filemaker


LowCode Plattformen

Der Markt scheint inzwischen reif zu sein für das Thema LowCode Plattformen und hier gehört Node-Red derzeit noch zu den Platzhirschen, wo bereits die kritische Masse an Community und Tools für einen universellen Einsatz entstanden ist.

Darüber hinaus sind inzwischen zahlreiche andere Player (so auch seit kurzem Amazon mit Honeycode) dabei, den Markt zu erobern:

https://nodered.org
https://www.claris.com/de/connect/
https://zapier.com/
https://invisioncommunity.com/news/product-updates/45-zapier-brings-integration-with-over-2000-web-apps-r1194/
https://crosser.io/blog/posts/2018/august/key-differences-between-node-red-and-crosser-in-industrial-iot/
https://de.appian.com
https://www.honeycode.aws/
http://appinventor.mit.edu

https://www.gartner.com/reviews/market/enterprise-low-code-application-platform


Downloads