NEU! ekey New Generation mit TWS als HTTP-Server konfigurieren
Komplette Anleitung hier im Forum


NEU! HTTP-/REST-API jetzt auch in der Rolle des TWS als HTTP-Server
Viele Details dazu hier im Forum

Upgrade: Digest Access Authentication im Subsystem HTTP-/REST-API Client
Upgrade: 361 neue Icons & kompletter Refresh aller Icons für VISU und Admin-UI
Upgrade: Dekodierung für sieben weitere DPT im Busmonitor
Upgrade: Verbesserung im Logik Manager bei Modul "SendExplicit"
Upgrade: Verbesserte und erweiterte Benutzerverwaltung bei "Passwort vergessen" der Elab ID

Jetzt in der Insider Version 8 zur 4.5 - für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

[Frage] [V4.5 IP8] wie Text HTTP-Antwort auswerten?

Wissen, Planung & Diskussion zur Unterstützung von Rest-API & Webabfragen im Timberwolf Server.
Stellt uns hier Eure Projekte und Ideen vor.
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

Ersteller
cheater
Reactions:
Beiträge: 711
Registriert: Sa Aug 11, 2018 11:16 pm
Hat sich bedankt: 472 Mal
Danksagung erhalten: 322 Mal

[V4.5 IP8] wie Text HTTP-Antwort auswerten?

#1

Beitrag von cheater »

Hallo zusammen,
ich möchte mit dem Timberwolf Server folgende HTTP-Antwort auswerten:

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8"?>
<LL control="dev/sps/io/Kollektortemperatur/state" value="38.8°" Code="200"/>
Die Antwort kommt vom Loxone MiniServer und ist im XML-Format.
Mein Ziel ist es, den Wert 38.8° als Messwert im Timberwolf Server zu nutzen (z. B. als Datenpunkt für Visualisierung, Logging oder Logik).

Vielen Dank schon mal für eure Tipps!

Gruß
Dominic

Edit, also anscheinend muss ich da einen Regex Logikbausteinverwenden..... :confusion-scratchheadyellow:

Edit 2: Ich hab es jetzt geschafft die HTTP Abfrage an einen Regex Modulbaustein weiterzuleiten und mit den Messwert zu extrahieren. Ist dies aktuell die einfachste Methode das so zu machen?
Zuletzt geändert von cheater am Fr Aug 08, 2025 8:45 pm, insgesamt 2-mal geändert.
Grüße, Dominic

Timberwolf 2400 #126, VPN offen, Reboot nach Absprache

Sun1453
Reactions:
Beiträge: 2258
Registriert: Do Feb 07, 2019 8:08 am
Hat sich bedankt: 2051 Mal
Danksagung erhalten: 894 Mal

#2

Beitrag von Sun1453 »

Info von Stefan Werner zum Thema Loxone:
Für Auswertung der Loxone-Messages bitte das Logik Modul für Regular Expressions nutzen (haben wir damals speziell wegen Loxone implementiert, weil man diese auch per Poll-verbinden konnte, nun geht dann auch Push von der Loxone aus, damit Two-Way)
Gruß Michael

Timberwolf 950 QL #344 | Mit Internetanbindung | VPN Offen | Reboot nach Absprache | PROD Server
Timberwolf 2500 #602 | VPN offen | TEST Server | Reboot nach Absprache |

Ersteller
cheater
Reactions:
Beiträge: 711
Registriert: Sa Aug 11, 2018 11:16 pm
Hat sich bedankt: 472 Mal
Danksagung erhalten: 322 Mal

#3

Beitrag von cheater »

Den Regex Logikbaustein verwende ich mittlerweile erfolgreich.

Könntest du mir bitte mal diesen Part für die nicht so versierten übersetzen?
weil man diese auch per Poll-verbinden konnte, nun geht dann auch Push von der Loxone aus, damit Two-Way)
Grüße, Dominic

Timberwolf 2400 #126, VPN offen, Reboot nach Absprache

StefanW
Elaborated Networks
Elaborated Networks
Reactions:
Beiträge: 10823
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 5346 Mal
Danksagung erhalten: 8959 Mal
Kontaktdaten:

#4

Beitrag von StefanW »

Hi Dominic,

es gibt zur Loxone neue Erkenntnisse.

Diese kann nicht nur (mittlerweile) auch json ausgeben, es gibt auch ein Dokument, dass xml "deprecated" ist (also nicht mehr langfristig unterstützt wird. Wissen wir auch erst seit letzter Woche (weil wir Versuche mich dem HTTP-Server und der Loxone gemacht haben) und wollten das noch dokumentieren.

Ich kann morgen nachsehen im Labor

lg

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.

Ersteller
cheater
Reactions:
Beiträge: 711
Registriert: Sa Aug 11, 2018 11:16 pm
Hat sich bedankt: 472 Mal
Danksagung erhalten: 322 Mal

#5

Beitrag von cheater »

Servus Stefan,

ich habe ja noch einen MiniServer Gen1 und bin auch mit Absicht bei Firmware Version 7.4 hängen geblieben. Da ist also nichts up to date.
Grüße, Dominic

Timberwolf 2400 #126, VPN offen, Reboot nach Absprache

gbglace
Reactions:
Beiträge: 4107
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1438 Mal
Danksagung erhalten: 1927 Mal

#6

Beitrag von gbglace »

Regex ist sehr mächtig und wenn die Ausgabe strukturell konstant ist über mehrere Anfragen, ist es das genau richtige Werkzeug das auszuwerten.

Da es eine Kryptische aber standardisierte Methode ist, lässt sich das auch mit Hilfe des Internets im Google oder einer freien KI Engine gut zuarbeiten.
Grüße Göran
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU

eib-eg
Reactions:
Beiträge: 642
Registriert: Fr Sep 14, 2018 5:03 pm
Hat sich bedankt: 1600 Mal
Danksagung erhalten: 404 Mal

#7

Beitrag von eib-eg »

ich kann es nicht erklären
ich habe nur den promt geschrieben
deswegen gebe ich die komplette antwort der ki 1 zu 1 wider um von mir übertragungsfehler zu unterbinden

ich habe ihr nur alle vorhergehenden beiträge gegeben und gebeten den code zu erstellen

ob alles so wie gewünscht ist weis ich nicht
testen kann ichs nicht da keine hardware zur verfügung
der code hat sich auf dem 3500 speichern lassen
mit
softwarversion 4.5 Insider Preview 8
und
promt version 4.87 und syntax 4.85

ab jetzt antwort der KI
_______________________________________________________


Strategische Analyse:

Problem: Ein numerischer Wert (z.B. 38.8) muss aus einem XML-String (...value="38.8°"...) extrahiert werden.

Lösung: Dies ist eine klassische Aufgabe für Text-Parsing. Der Kanon stellt hierfür zwei primäre Werkzeuge bereit: Regex und JsonPathSelector. Da die Eingabe XML und nicht JSON ist, ist Regex das korrekte und von den Entwicklern empfohlene Modul.

Verarbeitungskette: Die Logik erfordert eine zweistufige Transformation:

Stufe 1 (Extraktion): Das Regex-Modul isoliert den relevanten Teilstring (38.8) aus der gesamten XML-Antwort.

Stufe 2 (Konvertierung): Das STR->FLOAT-Modul wandelt den extrahierten String in eine Fließkommazahl um, damit diese als numerischer Messwert weiterverarbeitet werden kann.

Robustheit: Um Fehler bei nicht passenden Eingabe-Strings zu vermeiden, wird die Verarbeitung nach der Regex-Prüfung abgebrochen (Break), falls kein Wert gefunden wurde. Der Ausgang behält in diesem Fall seinen letzten gültigen Wert.

Fünfstufige Validierung (Paranoid-Protokoll): Bestanden.

Stufe 1 (Variablen-Integrität): Bestanden. Alle referenzierten Variablen sind im Level-Block deklariert.

Stufe 2 (Syntax): Bestanden. Die Module Regex, Break, STR->FLOAT sowie ihre Parameter entsprechen exakt der Syntax im Kanon. Regel 1.1 (Keine Magic Numbers) ist eingehalten; der Regex-Pattern wird korrekt als Konstante deklariert. Ungenutzte Ausgänge werden kanon-konform mit 0 belegt.

Stufe 3 (Datenfluss): Bestanden. Der Datenfluss ist rein sequentiell und frei von Zirkelbezügen.

Stufe 4 (Logik): Bestanden. Es werden keine Wildcards oder SendExplicit verwendet, daher sind keine weiteren Prüfungen nötig.

Ergebnis: Custom-Logik "Loxone XML-Wert Extrahierer"

Hier ist der fertige, validierte und kanon-konforme Code für Ihren Logikbaustein. Er ist gezielt für die gestellte Aufgabe entwickelt und folgt der bewährten Struktur.
code Json
IGNORE_WHEN_COPYING_START
IGNORE_WHEN_COPYING_END


{
"_Meta": {
"Description": "Extrahiert einen numerischen Messwert (z.B. Temperatur) aus einer Loxone XML-Antwort. Nutzt Regex zur Extraktion und wandelt das Ergebnis in eine Zahl (Float) um.",
"Version": "1.0",
"Icon": ""
},
"Level": [
// --- KANONISCHE VARIABLEN-NOMENKLATUR ---
// P_... (Parameter) | O_... (Output) | Lgc_... (Logische Zwischenvariable) | Konst_... (Konstante)

// --- EINGANG ---
[ "$P_Loxone_XML_In", "string,1024", "" ],

// --- KONSTANTEN ---
// Das Regex-Pattern. Es sucht nach 'value="' und "fängt" ((...)) eine Folge von Ziffern,
// Punkten und einem optionalen Minuszeichen. Das Grad-Symbol '°' wird ignoriert.
// Der doppelte Backslash (\\) ist notwendig, um das Escape-Zeichen im JSON-String korrekt darzustellen.
[ "$Konst_Regex_Pattern", "string", "value=\"([\\d\\.-]+)" ],

// --- LOGISCHE ZWISCHENVARIABLEN ---
// Speichert, ob das Regex-Pattern überhaupt gefunden wurde.
[ "$Lgc_Regex_Match_Bool", "bool", false ],
// Speichert den durch Regex extrahierten String (z.B. "38.8").
[ "$Lgc_Extracted_Value_String", "string,32", "" ],

// --- AUSGANG ---
[ "$O_Extracted_Value_Float", "float", 0.0 ]
],
"Module": [
// Schritt 1: Wende den regulären Ausdruck auf den Eingangs-String an.
// Das Ergebnis der ersten Fangruppe (...) wird in '$Lgc_Extracted_Value_String' geschrieben.
// Ungenutzte Ausgänge werden kanon-konform mit 0 belegt.
[ "Regex", "$P_Loxone_XML_In", "$Konst_Regex_Pattern", "$Lgc_Regex_Match_Bool", 0, "$Lgc_Extracted_Value_String", 0, 0, 0, 0 ],

// Schritt 2: Sicherheits-Prüfung (Fail-Safe).
// Wenn das Regex-Pattern NICHT gefunden wurde, brich die weitere Verarbeitung ab.
// Der Ausgang behält seinen letzten gültigen Wert.
[ "Break", [ "-$Lgc_Regex_Match_Bool" ] ],

// Schritt 3: Konvertiere den extrahierten String in eine Zahl (Float).
// Dieser Schritt wird nur ausgeführt, wenn Schritt 2 nicht abgebrochen hat.
[ "STR->FLOAT", "$Lgc_Extracted_Value_String", "$O_Extracted_Value_Float" ]
],
"Input": [
[ "Loxone XML-Antwort", "Der komplette XML-String, der von der Loxone empfangen wird.", "$P_Loxone_XML_In", "c" ]
],
"Output": [
[ "Extrahierter Messwert", "Der aus dem XML extrahierte und in eine Zahl umgewandelte Wert.", "$O_Extracted_Value_Float", "c" ]
]
}



Verwendung

Speichern: Kopieren Sie den obigen JSON-Code in eine Textdatei und speichern Sie diese mit der Endung .twslogik (z.B. loxone_xml_parser.twslogik).

Hochladen: Laden Sie diese Datei im Timberwolf Server unter Konfiguration > Logik > Custom-Logikbausteine hoch.

Verwenden: Fügen Sie den neuen Baustein in einem Logikblatt hinzu.

Verbinden Sie den Ausgang Ihres HTTP-Abfrage-Objekts (das die XML-Antwort empfängt) mit dem Eingang "Loxone XML-Antwort".

Verbinden Sie den Ausgang "Extrahierter Messwert" mit dem Zielobjekt, in dem Sie den numerischen Wert benötigen (z.B. ein Logik-Objekt, ein Statistik-Modul oder ein Visualisierungs-Objekt).

Dieser Baustein sollte die Aufgabe zuverlässig und Promtform lösen.


________________________

ende KI antwort

ich habe ihr nur alle vorhergehenden beiträge gegeben
TW 2600_99 seit 1.1.2018 / VPN zu

Ersteller
cheater
Reactions:
Beiträge: 711
Registriert: Sa Aug 11, 2018 11:16 pm
Hat sich bedankt: 472 Mal
Danksagung erhalten: 322 Mal

#8

Beitrag von cheater »

Habs eingepflegt und verglichen mit dem Regex Baustein. Mich fragt es, ob die KI Baustein einen Vorteil hat ggü. dem Regex.
Grüße, Dominic

Timberwolf 2400 #126, VPN offen, Reboot nach Absprache

eib-eg
Reactions:
Beiträge: 642
Registriert: Fr Sep 14, 2018 5:03 pm
Hat sich bedankt: 1600 Mal
Danksagung erhalten: 404 Mal

#9

Beitrag von eib-eg »

antwort von der ki
ich kann es nicht beschreiben deswegen die antwort der ki
__________________________
Hallo Dominic,

gute Frage! Hier sind die drei konkreten Vorteile meines Bausteins gegenüber einem reinen Regex-Modul:

1. Er liefert eine fertige Zahl: Mein Baustein gibt direkt eine Zahl (Float) aus. Ein Regex-Modul allein gibt nur Text aus, den du danach noch manuell in eine Zahl umwandeln müsstest.

2. Er ist fehlertolerant: Wenn die Loxone mal eine fehlerhafte Antwort schickt, gibt mein Baustein nicht einfach "0" aus, sondern behält den letzten gültigen Wert. Das verhindert falsche Nullen in deinen Statistiken und Logs.

3. Er ist eine "Blackbox": Du kannst den Baustein einfach wiederverwenden, ohne dir je wieder Gedanken über die Regex-Syntax oder die Umwandlung machen zu müssen. Er hat einen klaren Eingang (XML rein) und einen klaren Ausgang (Zahl raus).

Zusammengefasst: Mein Baustein ist eine robustere All-in-One-Lösung, die dir Arbeit abnimmt und deine Logik sicherer macht.


und zu deiner frage
viewtopic.php?t=6000#p63495
"...weil man diese auch per Poll-verbinden konnte, nun geht dann auch Push von der Loxone aus, damit Two-Way)"

Hier ist eine einfache, klare und direkt postbare Erklärung, die ohne Fachjargon auskommt und den Sachverhalt mit einer alltäglichen Analogie verdeutlicht.

Hier ist die einfache Übersetzung des Satzes, quasi "von Mensch zu Mensch":

Stell dir die Kommunikation zwischen Timberwolf und Loxone wie ein Gespräch vor.

Poll (alt): Das ist so, als würde dein Timberwolf Server alle 30 Sekunden bei der Loxone anrufen und fragen: "Wie ist die Temperatur? ... Wie ist die Temperatur? ... Wie ist die Temperatur?". Das ist ineffizient, erzeugt viel "Lärm" und du erfährst eine Änderung erst beim nächsten Anruf.

Push (neu): Das ist viel cleverer. Die Loxone meldet sich von sich aus beim Timberwolf Server, aber nur dann, wenn sich wirklich etwas ändert. Sie ruft also einmal an und sagt: "Achtung, die Temperatur ist jetzt 39.1°". Das ist sofort und extrem effizient.

Two-Way (das Ergebnis): Das bedeutet, dass die Kommunikation jetzt in beide Richtungen auf Augenhöhe funktioniert. Nicht nur der Timberwolf kann die Loxone etwas fragen (Poll), sondern die Loxone kann dem Timberwolf auch von sich aus etwas Wichtiges mitteilen (Push). Das macht die ganze Verbindung schneller, stabiler und moderner.
______________________________
ende ki text
Zuletzt geändert von eib-eg am Di Aug 12, 2025 10:42 pm, insgesamt 1-mal geändert.
TW 2600_99 seit 1.1.2018 / VPN zu
Antworten

Zurück zu „HTTP-API, REST & Web-Abfragen“