Text Prozessor
Mit dem Text Prozessor werden Details aus den über den Eingang zur Verfügung gestellten, beliebigen Texten extrahiert und weiter gesendet. Dazu stehen reguläre Ausdrücke und JSON Pfaddefinitionen zur Verfügung. Auf diese Weise ist werden z. B. Ausgaben des Logikelements HTTP-Abfrage verarbeitet.
Inhalt
Ein- und Ausgänge
Eingänge
GATE (siehe Logikelemente | Datenpunkt-Gate)
IN
Eingang für den zu verarbeitenden Text
Ausgänge
OUT 1 ...
Bis zu 20 Ausgänge die jeweils das Ergebnis eines JSON-Pfads oder eines regulären Ausdrucks ausgeben.
Konfiguration
Die Auswertung der Textelemente geschieht über den Konfigurationsdialog, welcher über das Zahnradsymbol im Feld "Ausgänge" in den Parametern zur Verfügung steht. Hier können die verschiedenen, gefilterten Elemente auf die jeweiligen Ausgänge weitergegeben werden.

Im oberen Teil der Konfiguration haben Sie die Möglichkeit den Texttyp auszuwählen und einen Beispieltext zu hinterlegen, um die unten stehenden Auswertungen zu testen.
Texttyp
Als Texttyp stehen mehrere zur Auswahl:
Klartext (text/plain)
JSON (application/json)
XML (text/xml)
HTML (text/html)
Die Auswahl des Texttyp beeinflusst die mögliche Auswahl bei "Selektor" in der der darunter stehende Tabelle für die Ausgangskonfiguration und stellt eine Hilfe dar. So ist bei der Texttyp Auswahl "JSON" es bspw. möglich dort JSON Pfade anzugeben. Die Auswahl des Texttyps hat keinen Einfluss auf die eigentliche Funktion.
Ausgangskonfiguration
Pro Ausgang existiert eine Zeile mit welcher über die jeweiligen Muster/Pfade die gewünschte Elemente aus dem Text gefiltert werden können. Die jeweiligen Ergebnisse zum angegebenen Text sehen Sie in der rechten Spalte. Im Beispiel handelt es sich um eine Ausgabe von Openweathermap, die im JSON-Format vorliegt. Jedem Ausgang wird ein Datentyp zugewiesen in den der gefundene Wert gewandelt wird. Ist die Ausgabe im gewählten Datentyp nicht möglich, wird nichts ausgegeben. Wird zu einem Ausgang kein Ergebnis ermittelt, wird ebenfalls nichts ausgegeben.
Angabe eines JSON Pfades
JSON kennt zur Strukturierung nur Objekte und Arrays. Objekte adressieren ihre Eigenschaften durch Schlüssel und werden durch geschweifte Klammern (" { } ") definiert. Arrays sind eine Aneinanderreihung von Werten und werden durch eckige Klammern (" [ ] ") definiert. Mögliche Werte sind:
Boolsche Werte (true / false)
Zahlen
Zeichenketten (durch Anführungszeichen eingerahmter Text)
Arrays (können Werte jeden Typs enthalten)
Objekte (können Werte jeden Typs enthalten)
Beispiel:
{
"coord": {
"lon": -0.13,
"lat": 51.51
},
"weather": [
{
"id": 300,
"main": "Drizzle",
"description": "light intensity drizzle",
"icon": "09d"
}
],
"base": "stations",
"main": {
"temp": 280.32,
"pressure": 1012,
"humidity": 81,
"temp_min": 279.15,
"temp_max": 281.15
},
"visibility": 10000,
"wind": {
"speed": 4.1,
"deg": 80
},
"clouds": {
"all": 90
},
"dt": 1485789600,
"sys": {
"type": 1,
"id": 5091,
"message": 0.0103,
"country": "GB",
"sunrise": 1485762037,
"sunset": 1485794875
},
"id": 2643743,
"name": "London",
"cod": 200
}
Mögliche Pfade:
weather[0].id
ergibt "300"clouds.all
ergibt "90"name
ergibt "London"
Es ist z.B. auch möglich einen JSON Pfad mit einem Array-Index ("[2]") zu beginnen, wenn das übergebene JSON entsprechend strukturiert ist.
Geben Sie Ausgangsdatentyp Text an, können als Ergebnis auch JSON-Strukturen ausgegeben werden. Zu oben genanntem Beispiel ergäbe der Pfad "clouds
" das Ergebnis "{"all": 90}
".
Angabe eines regulären Ausdrucks
Mit regulären Ausdrücken ist es möglich nahezu jeden Text nach gewünschten Stellen zu durchsuchen und diese zu extrahieren.
Nicht jeder Web-Dienst liefert seine Ergebnisse in einfach zu verarbeitendem JSON.
Beispiel:
LightNo=1
LightState=1
RED=255
GREEN=255
BLUE=255
LightNo=2
LightState=0
RED=255
GREEN=0
BLUE=0
Möchten Sie z.B. wissen, welchen Status die Lampe mit der ID 2 hat wären folgende Ausdrücke erforderlich:
Genereller Schalt-Status
LightNo=2[\s\S]*?LightState=([01])
mit dem Ergebnis 0Roter Kanal
LightNo=2[\s\S]*?RED=(\d+)
mit dem Ergebnis255
Grüner Kanal
LightNo=2[\s\S]*?Green=(\d+)
mit dem Ergebnis0
Blauer Kanal
LightNo=2[\s\S]*?BLUE=(\d+)
mit dem Ergebnis0
Über LightNo=2
definieren Sie den Start der Suche. Der Teil [\s\S]*?
gibt an, dass mehr oder weniger jedes Zeichen ("whitespace" und "non whitespace" Werte) in beliebiger Menge kommen kann. Der letzte Teil definiert dann den jeweils zu suchenden Wert. Im Fall des generellen Status LightState=([01])
. Der in den runden Klammern geschriebene Teil, derjenige welcher am Ende ausgegeben werden soll. Das in eckigen Klammern geschriebene [01]
gibt die möglichen Werte an, die als gültig angesehen werden. Bei den Farbwerten ist es das \d+
, welches nur angibt, dass es eine Zahl oder mehr sein müssen.
Eine gute Hilfe zum Testen von regulären Ausdrücken ist die Seite https://regex101.com/. Dort findet man eine gute Unterstützung durch die enthaltene Referenz und kann seine regulären Ausdrücke ausprobieren und verbessern.
Wenn Sie mehrere Ausdrücke durch oder ("|") verknüpfen oder mehrere Suchgruppen definieren wird immer nur der erste gefundene Wert ausgegeben. Bitte verwenden Sie pro zu suchendem Wert einen eigenen regulären Ausdruck.