Seite 1 von 1

[V4.0.1] HTTP-API: Antwort in XML-Struktur/Text auswerten?

Verfasst: Fr Jun 21, 2024 12:51 am
von AndererStefan
Hallo zusammen,

ich betreibe zu Hause noch Reste eines Homematic Smarthomes mit einer CCU2 und ein paar Funksteckdosen. Auf der CCU2 läuft (evtl. aufgrund irgendwelcher Plugins?) eine HTTP-API.

Wie ich die Steckdosen über die HTTP-API schalten könnte, habe ich bereits herausgefunden. Wie ich den Schaltstatus abfragen kann, ebenfalls. Wo ich gerade nicht weiterkomme ist die Übersetzung der HTTP-Antwort in ein KNX-Objekt.
Die Antwort auf meine Statusabfrage lautet:

Code: Alles auswählen

<xml><exec>/http://192.168.1.20:8181/alchy.exe</exec><sessionId></sessionId><httpUserAgent>User-Agent: Privately used Timberwolf Server HTTP-API Daemon, Designed by service@elabnet.de</httpUserAgent><sagt>false</sagt></xml>
Ich würde gerne den String "false/true" zwischen <sagt> und </sagt> auswerten und in ein KNX-Objekt DTP 1.* umwandeln. Wie kann ich das erreichen?

Die Umstellung/Nachrüstung der CCU2 um einen MQTT-Client würde die Kommunikation vermutlich einfacher machen, aber auf der CCU laufen ein paar komplizierte Logiken, dass ich das System nicht anfassen möchte. In einem älteren Thread war der Stand "XML Dekodieren geht noch nicht, kommt vielleicht später." Gibt es da inzwischen ein Update oder gar eine Lösung?

Viele Grüße
Stefan

Re: [V4.01] HTTP-API: Antwort in XML-Struktur/Text auswerten?

Verfasst: Fr Jun 21, 2024 5:43 am
von gbglace
Ganz nativ mit dem TWS habe ich da hier noch nichts gelesen.
Wenn die Strategie aber klar definiert ist die CCU möglichst komplett vom TWS abzulösen, würde ich persönlich auf dem TWS z.N.neinen NodeRed Container anlegen und dort die Übersetzung der XML auf z.B. MQTT machen lassen.
Auch wenn NR direkt KNX könnte, wäre der Weg via MQTT aber eben näher am Ziel es später im TWS aufzulösen. Du könntest es es auch extremer lösen und per API in dem TWS holen und das Ergebnis als String per MQTT an NR weiter reichen dort das auflösen und per MQTT an den TWS in einem binärem Signal zurück. Diese Weiche kann dann schnell ausgebaut werden wenn der TWS das XML direkt zerlegen kann.

Aber wo ich das gerade so tippe. Schaue mal in dem Logikmodulen bei Textmodulen nach. Da gibt es mittlerweile ja auch welche die einen Text nach Text durchsuchen können. Wenn die zwei Ergebnisse für An/AUs da bekannt sind ist das da ggf eine Lösung. Ein solchen Text Sucher für den Status AN und es wäre der binäre Status. Das ist dann noch nicht die direkte Dekodierung am API Objekt aber nativ im TWS.

Re: [V4.01] HTTP-API: Antwort in XML-Struktur/Text auswerten?

Verfasst: Fr Jun 21, 2024 9:54 am
von AndererStefan
Hallo Göran,

der letzte Ansatz nach Durchsuchen des Texts klingt gut, da sehr einfach und übersichlich. Nur leider klappt es nicht.
Kann es sein, dass die Länge der Eingabestrings auf 20 Zeichen begrenzt ist? Im Doktormodus kann ich jedenfalls nicht mehr als 20 Zeichen eingeben. Ist das die richtige Logik?

Bild

Wenn ich in einem Test-String manuell "true" zwischen ein paar Zeichen und/oder xml-Tags verstecke klappt es immerhin.

EDIT: Die Such-Funktion beschränkt sich sogar auf die 15 Zeichen, die man im roten Vorschaufenster sieht. Wird das "true" in der Vorschau hinten abgeschnitten schlägt auch die Funktion auf "false" um.

Viele Grüße
Stefan

Re: [V4.0.1] HTTP-API: Antwort in XML-Struktur/Text auswerten?

Verfasst: So Jun 23, 2024 12:35 pm
von AndererStefan
Hi,

da ich mit den String-Werkzeugen nicht weiterkam, habe ich es mit node-red im Docker-Container versucht.
Mit den entsprechenden Homematic- und KNX-Ultimate nodes war es eigentlich recht einfach das umzusetzen.
Off Topic
OT, aber als Hilfe für andere:
Falle 1: Ich habe node-red-contrib-ccu für die Verbindung zur CCU2 genutzt. Beim Eintragen der IP-Adresse der CCU2 passiert Auto-Discovery und der Adresse wird die Seriennummer/Bezeichnung angefügt. Das muss man wieder löschen!
Falle 2: Für die Verbindung zu KNX habe ich KNX-Ultimate 2.5.1 genutzt. Beim Eintragen des KNX-Gateways funktionierte bei mir (das mag an spezifischen Netzwerkeigenschaften liegen) die DNS-Auflösung nicht. Mit IP-Adresse gings dann.
Allerdings machte sich das zunächst in der CPU-Auslastung des TWS bemerkbar. Die Load-Average erhöhte sich von ~ 0,4 auf >1,5, mit häufigen Spikes der CPU-Auslastung von 30%, ohne dass eigentlich viel zu tun gewesen wäre. Es lag klar am node-red Container (getestet durch Anhalten) und eventuell dem ganzen Rumprobieren? Abschließend hatte ich alle Flows gelöscht und meine Test-Verbindung eines Homematic-Datenpunktes zu einer KNX-GA neu erstellt. Danach hat sich die Load wieder normalisiert.

Also für mich ist node-red im Container auf dem TWS damit erstmal eine Lösung um meine Homematic-Steckdosen ins KNX zu bekommen. So ganz schön finde ich die Lösung derzeit nicht, da es etwas unübersichtlicher ist, als alles zentral im TWS zu managen. Ich denke, ich würde mich mit der Zeit daran gewöhnen, aber hinsichtlich Wartbarkeit (v.a. durch andere) ist eine zentrale Schnittstelle schöner.

Daher meine Fragen an Elabnet (@StefanW ):
a) Gibt es Pläne (bzw. Bedarf) die HTTP-API auf die Auswertung von xml zu erweitern?
b) Sind Logikbausteine möglich bzw. geplant die mit längeren Strings umgehen können, oder ggf. gar spezielle Logik-Bausteine um xlm-Strukuren auswerten zu können?
Sorry, jetzt wirds etwas visionär:
c) Habt ihr schon überlegt, ob ihr node-red nativ in den TWS einbinden und einen direkten Zugriff auf das Objekt-System des TWS könnt/wollt?
d) Gibt es Pläne für eine direkte Homematic-Schnittstelle? (Ich kenne aber den HM-Markanteil nicht und ob das wirtschaftlich interessant ist. Technisch/optisch/preislich sind die Geräte nicht schlecht, die CCU2/CCU3 Oberfläche aber aus der Zeit gefallen.)

Einen schönen Sonntag,
Stefan