Hauptversion V 4.5 - Awakening Beast veröffentlicht

Bild

Verehrte Nutzer des Timberwolf Servers. Wir haben die neue Hauptversion 4.5 für alle Modelle des Timberwolf Servers freigegeben.

Diese neue Version enthält insgesamt 24 neue Funktionen, 72 größere Verbesserungen und 28 wichtige Fehlerkorrekturen


Darunter die Timberwolf VISU in modernisiertem Look mit vielen Erweiterungen wie Rollladen-Widget, Detailseiten mit 20 Schaltern / Werten, Tabellen & Logs, verbessertertem Verknüpfungsassistent, Secure KNX im Busmonitor sowie Dekodierung weiterer DPT, komplett überarbeitete Darstellung der phys. Einheiten, einem stark erweitertem Logik Manager mit grafischer Darstellung der Logik Zellen, einer Unterstützung für HTTP-/REST-API als Server, dem Im- und Export von Geräteprofilen im MQTT sowie HTTP-/REST-API Manager und viele weitere Detailverbesserungen inkl. Lizenzmanagement.

Foren Diskussion: viewtopic.php?f=8&t=6050

Release Notes im Wiki: https://elabnet.atlassian.net/wiki/x/AYBLyQ

[Beantwortet] [V4.5] Regex-Ausdrücke nur als Parameter, nicht im Level?

Informationen und Diskussionen über Logik-Engine und Logik-Editor
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten
Benutzeravatar

Ersteller
speckenbuettel
Beiträge: 427
Registriert: Mo Jun 27, 2022 9:30 am
Hat sich bedankt: 328 Mal
Danksagung erhalten: 255 Mal

[V4.5] Regex-Ausdrücke nur als Parameter, nicht im Level?

#1

Beitrag von speckenbuettel »

Hallo,

mir ist an mehreren Stellen aufgefallen, dass sich Custom-Logiken nicht speichern lassen (ohne konkrete Fehlermeldung im Editor) oder nicht fehlerfrei ausgeführt werden, wenn ich Regex-Ausdrücke im Level definieren.
Als Input (Parameter) funktioniert es dann einwandfrei.

Liegt das vielleicht an den Sonderzeichen, die in Regex-Ausdrücken oft enthalten sind?

Ein Beispiel ist diese Logik:

Bild

Code: Alles auswählen


{
    "Level": [
        [
            "$InResponse",
            "string,64",
            ""
        ],
        [
            "$Pre_Logeintrag",
            "string",
            "Heizung: Anlagenzeit synchronisiert ("
        ],
        [
            "$Post_Logeintrag",
            "string",
            ")"
        ],
        [
            "$OutLogeintrag",
            "string,128",
            "Heizung: Anlagenzeit synchronisiert"
        ],
        [
            "$ReturnCode",
            "string",
            ""
        ],
        [
            "$Address",
            "string",
            ""
        ],
        [
            "$Value",
            "string,32",
            ""
        ],
        [
            "$RegexExpression",
            "string,32",
            ""
        ],
		[
		    "$RegexHasMatch",
		    "bool",
		    false
	    ],
        [
            "$VAR<Inhibit?>",
            "bool",
            false
        ]
    ],

    "Module": [
        [
            "Break", [
                "$VAR<Inhibit?>"
                ]
        ],
        [
            "Regex",
                "$InResponse",
                "$RegexExpression",
                "$RegexHasMatch",
                0,
                "$ReturnCode",
                "$Address",
                "$Value",
                0,
                0
        ],
        [
            "Concat", [
                "$Pre_Logeintrag",
                "$Value",
                "$Post_Logeintrag"
                ],
                "$OutLogeintrag"
        ],
        [
            "SendExplicit",
                "$RegexHasMatch",
                "$OutLogeintrag",
                0
        ]
    ],

    "Input": [
        [
            "Rückmeldung",
            "Rückmeldung vom Optolink-Splitter",
            "$InResponse",
            "a"
        ],
        [
            "Regex",
            "Regulärer Ausdruck",
            "$RegexExpression",
            "u"
        ],
        [
            "Inhibitor",
            "Ausführung der Logik sperren",
            "$VAR<Inhibit?>",
            "u"
        ]
    ],

    "Output": [
        [
            "Logeintrag",
            "Logeintrag",
            "$OutLogeintrag",
            "x"
        ]
    ]

}
Die habe ich erst zum Laufen gebracht, nachdem ich den Text von $RegexExpression aus dem Level herausgenommen habe und als Parameter übergebe.

Der Fehler lauten:

Bild

Dabei fehlt hier keine Klammer, den Ausdruck habe ich auf der Seite regex101.com getestet.

Wenn der gleiche Regex-Ausdruck als Parameter übergeben wird, dann erscheint die Fehlermeldung nicht.

Vielen Dank und viele Grüße
Falk
Vielen Dank und viele Grüße
Falk

TWS 3500M ID:810 - VPN aktiv - Reboot nach Absprache
1-Wire, KNX (MDT u. a.), EnOcean (Eltako u. a.), Gira TKS, ekey multi

ms20de
Elaborated Networks
Elaborated Networks
Beiträge: 1299
Registriert: Sa Aug 11, 2018 9:14 pm
Hat sich bedankt: 376 Mal
Danksagung erhalten: 784 Mal

#2

Beitrag von ms20de »

Hallo Falk,

kannst du bitte auch deine Regex noch Posten damit wir das untersuchen können.

Viele Grüße,
Matthias
[ Timberwolf Entwicklung ]

TWS 2400 ID:102 VPN offen, Reboot auf Nachfrage
TWS 3500 ID:695 VPN offen, Bitte kein Reboot ohne Absprache
Benutzeravatar

Ersteller
speckenbuettel
Beiträge: 427
Registriert: Mo Jun 27, 2022 9:30 am
Hat sich bedankt: 328 Mal
Danksagung erhalten: 255 Mal

#3

Beitrag von speckenbuettel »

Hallo Matthias,

sorry, hätte ich schon gleich oben schreiben sollen.

In dieser Logik lautet der Regex-Ausdruck:

Code: Alles auswählen

^(1);(0x088E);((Mo|Di|Mi|Do|Fr|Sa|So) .+)$
In einer ähnlichen Logik (für die Heizung):

Code: Alles auswählen

^(\d+);(0x[0-9a-fA-F]+);(.+)$
Beide funktionieren einwandfrei auf der Seite regex101, die im Wiki zum Testen von Regex-Ausdrücken genannt wird. Und beide funktionieren einwandfrei als Parameter über den Input, aber nicht, wenn ich sie im Level deklariere.

Vielen Dank und viele Grüße
Falk
Vielen Dank und viele Grüße
Falk

TWS 3500M ID:810 - VPN aktiv - Reboot nach Absprache
1-Wire, KNX (MDT u. a.), EnOcean (Eltako u. a.), Gira TKS, ekey multi

Robert_Mini
Beiträge: 3910
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1281 Mal
Danksagung erhalten: 2224 Mal

#4

Beitrag von Robert_Mini »

Kannst du die nicht funktionierende Logik auch posten?
Ich nehme an du hast den Regex-String zwischen 2 “ “ gesetzt?

Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

ms20de
Elaborated Networks
Elaborated Networks
Beiträge: 1299
Registriert: Sa Aug 11, 2018 9:14 pm
Hat sich bedankt: 376 Mal
Danksagung erhalten: 784 Mal

#5

Beitrag von ms20de »

Hallo Falk,

nach unseren Tests ist das Problem die Angabe des String Levels auf 32 Zeichen im Custom Logik Code.
Dadurch wird der angegebene Initalwert abgeschnitten. Die Regex ist dann nur noch ^(1);(0x088E);((Mo|Di|Mi|Do|Fr|S.
Das ist die Ursache, warum der Regex Baustein einen Fehler meldet mit fehlender Klammer.

Fehlerhafte Version:

Code: Alles auswählen

[
    "$RegexExpression",
     "string,32",
      "^(1);(0x088E);((Mo|Di|Mi|Do|Fr|Sa|So) .+)$"
],
Gute Version:

Code: Alles auswählen

[
    "$RegexExpression",
     "string",
      "^(1);(0x088E);((Mo|Di|Mi|Do|Fr|Sa|So) .+)$"
],
Wenn die Länge des Initalwerts bekannt ist und sich auch nicht ändert, muss keine Länge angeben werden. Diese wird dann automatisch ermittelt. Alternativ könnte man auch string,64 angeben und es würde auch funktionieren.

Wir prüfen ob es einfach machbar ist diese Art vom Fehler direkt im Logik-Editor abzufangen.

Viele Grüße,
Matthias
[ Timberwolf Entwicklung ]

TWS 2400 ID:102 VPN offen, Reboot auf Nachfrage
TWS 3500 ID:695 VPN offen, Bitte kein Reboot ohne Absprache
Antworten

Zurück zu „Logikengine & Logik-Editor“