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

[Frage] [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: 1298
Registriert: Sa Aug 11, 2018 9:14 pm
Hat sich bedankt: 376 Mal
Danksagung erhalten: 780 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
Antworten

Zurück zu „Logikengine & Logik-Editor“