Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Info

Eine Zeichenkette auftrennen oder auf bestimmten Inhalt prüfen

Tipp

Verfügbar ab Firmware Version 4.1 Insider Preview 1

Inhalt dieser Seite
richtet sich an

Status
colourRed
titleExperten

Über Protokolle wie MQTT und HTTP-/Rest-API werden Dezimalzahlen oft als Zeichenkette übergeben und nicht als binär kodierter übergeben oft Zeichenketten, die mehrere Daten gleichzeitig enthalten. Mit diesem RegEx-Modulbaustein können aus einer Zeichenfolge die darin enthaltenen Daten (= andere Zeichenketten) durch eine Filtersuche (sog. “reguläre Ausdrücke”) extrahiert werden. Dieser Modulbaustein ist damit unter anderem auch für das Zerlegen von XML geeignet.

Insofern die extrahierte Zeichenketten Zahlen enthalten, sind als lesbarer Text kodiert, jedoch nicht als binärer Zahlenwert. Im Timberwolf Server können mathematische Operationen nur mit binär kodierten Zahlenwerten ausgeführt werden, daher ist eine Wandlung von Zeichenkette (“String”) in eine Ganzzahl oder eine Fließkommazahl meist sinnvoll. Zudem werden für Fließkommazahlen nur 8 Byte für die Speicherung benötigtHierfür stehen separate Modulbausteine für entsprechende Wandelung zur Verfügung.

Syntax

["Regex","$In","$Expression", "$HasMatch", "$Match", "$Group1", "$Group2", "$Group3", "$Group4", "$Group5"]

Funktion

Die Eingangszeichenkette "$In" wird anhand des regulären Ausdrucks (Regex“Regex”) in "$Expression" verarbeitet. Das Ergebnis wird in den Ausgangslevel Ausgangsleveln bereitgestellt.

Eingänge

  • "$In" Zeichenkette auf die der reguläre Ausdruck angewendet werden soll (String)

  • "$Expression" regulärer Ausdruck im PCRE2 Format (String)

Ausgänge

  • $HasMatch Wahrheitswert der aussagt, ob der reguläre Ausdruck für die übergebene Zeichenkette zu einem Ergebnis geführt hat (zu filternde Zeichenkette wurde in der Quel-Zeichenkette gefunden)

  • $Match Der Teil der übergebene Zeichenkette, welcher zum Ergebnis geführt hat

  • $Group1 bis $Group5 Über Gruppierungskonstrukte im regulären Ausdruck können Teile des Inhalts aufgezeichnet werden. Die mehrere Abschnitte der Quell-Zeichenkette parallel ausgefiltert und diese Ergebnisse von bis zu fünf aufzeichnenden separaten Gruppen können über dieses die entsprechenden Ausgänge abgerufen übergeben werden.

Besonderheiten

  • Es werden nur Zeichenketten mit 8 Bit pro Zeichen korrekt verarbeitet (ASCII, ANSI, UTF-8)

  • Die Regulären Ausdrücke können auf https://regex101.com/ (Extern, Englisch) entwickelt und getestet werden. Der Flavor ist auf PCRE2 (PHP >=7.3) und die Function auf Match zu stellen.
    ⚠️ Die “Copy to clipboard” Funktion kopiert zusätzlich die Trenner (Standard /) und die Optionen, diese werden von Modulbaustein nicht erwartet. Kopieren Sie nur den regulären Ausdruck für den Eingang in diesen Logik-Modul.

  • Für die korrekte Funktion des Moduls müssen die Anzahl der verarbeitbaren Zeichen für jedes beteiligte (Länge der Zeichenkette) für JEDEN der beteiligten String Level auf den jeweiligen Anwendungsfall angepasst werden.
    Ist ein Sollte die maximal erlaubte Länger für einen Level zu kurz gewählt worden sein, dann wird die jeweilige Zeichenkette bei der Ein- bzw. Ausgabe aus dem Modul abgeschnitten, was zu unerwarteten Ergebnissen führen kann.
    Eine hohe Anzahl von sehr Leveln mit langen Leveln möglichen Zeichenketten führt zu einem erhöhtem Ressourcen Verbrauch im Speicher und bei der Bearbeitung, selbst wenn diese Level nicht mit Inhalt gefüllt werden.

  • Werden Zahlenwerte Zahlen in Zeichenketten über die diese Regex-Funktion ermittelt, dann können diese über die separaten Module STR->INT und STR->FLOAT aus der Textkodierung (Level String) in eine Zahlenkodierung (Level Integer oder Level Float) umgewandelt werden.

Anwendungen

  • XML Daten verarbeiten

  • Werte aus Loxone Webservices verarbeiten

  • Zeichenketten auftrennen

  • Komplexe Statusrückmeldungen auf Fehler prüfen

Beispiele

Entsprechendes Logik-Modul