Logikbaustein: XML-/JSON-Parser

Getting started

Geschätzte Lektüre: 6 Minuten 9 Ansichten

XML-/JSON-Parser – Benutzerhandbuch

1. Zweck

Der Logikbaustein extrahiert Texte und Zahlen aus XML- oder JSON-Daten. Die Auswahl erfolgt mit XPath-Ausdrücken. Damit lassen sich beispielsweise Werte aus Wetterdiensten, Smart-Home-Schnittstellen oder eigenen Webservices auf Datenpunkte legen und in weiteren Logiken verwenden.

Unterstützt werden:

  • erster Treffer als Text oder Zahl,
  • mehrere Treffer als verketteter Text,
  • Summe, Minimum oder Maximum mehrerer Zahlen,
  • Skalierung numerischer Ergebnisse,
  • Textvorsatz und frei wählbarer Trenner.

Der Baustein ist ein eigenständiges TerraBytes-Paket für Gira X1/L1.

2. Installation und Inbetriebnahme

  1. Das signierte Paket TerraBytes.XmlJsonParser-<Version>.zip im Gira Project Assistant (GPA) installieren.
  2. XML-/JSON-Parser auf ein Logikblatt ziehen.
  3. Eingangskodierung auf XML oder JSON einstellen.
  4. Anzahl der Pfade und Ausgänge auf den benötigten Wert von 1 bis 50 setzen.
  5. Je Ausgang Pfad, Auswahlart und gegebenenfalls Skalierung, Textvorsatz oder Trenner konfigurieren.
  6. Den Eingang XML oder JSON und die benötigten Ausgänge verbinden.
  7. Zuerst in der GPA-Simulation und anschließend auf dem X1/L1 testen.

3. Eingang

Eingang Typ Beschreibung
XML oder JSON Text Vollständiges XML- oder JSON-Dokument. Bezeichnung und erwartetes Format richten sich nach Eingangskodierung.

Wenn ein Dienst beide Formate anbietet, ist XML vorzuziehen: XML ist das native Eingabeformat des Parsers und vermeidet Einschränkungen der JSON-zu-XML-Abbildung.

4. Datenausgänge

Ausgang Typ Beschreibung
Ausgang 1 … n Any Ergebnis des zugehörigen Pfads. Der konkrete Wert ist Text oder Fließkommazahl.
Laufzeitfehler Text Meldet ungültige Pfade, nicht lesbare Eingaben oder Konvertierungsfehler. Der betroffene Datenausgang bleibt bei einem Fehler unverändert.

Benannte HTML-Zeichen werden in Textausgaben dekodiert, zum Beispiel wird &auml; zu ä. Ein Any-Ausgang wird beim Verbinden mit einem nachfolgenden Eingang entsprechend dessen Porttyp automatisch konvertiert, soweit GPA diese Konvertierung unterstützt.

5. Fachliche Parameter

Eingangskodierung

Legt fest, ob XML- oder JSON-Daten erwartet werden.

Anzahl der Pfade und Ausgänge

Legt 1 bis 50 unabhängige XPath-Auswertungen und die gleiche Anzahl Datenausgänge an.

Pfad 1 … n

XPath-Ausdruck für den jeweiligen Ausgang. XPath-Indizes beginnen bei 1.

Für JSON gelten zusätzlich:

  • Jeder Pfad beginnt mit /root.
  • JSON-Arrays werden als item-Elemente abgebildet.
  • JSON-Schlüssel, die keine gültigen XML-Namen sind, können auf dem X1/L1 einen Laufzeitfehler auslösen. Ein Schlüssel wie "3h" sollte vor dem Parser in einen gültigen Namen geändert werden.

Art der Pfadauswahl 1 … n

Auswahlart Ergebnis bei Treffern Ergebnis ohne Treffer
Erster Treffer als Text erster Wert als Text Laufzeitfehler; Ausgang unverändert
Erster Treffer als Zahl erster Wert als Zahl Laufzeitfehler; Ausgang unverändert
Alle Treffer als verketteter Text alle Texte mit Trenner leerer Text
Alle Treffer als summierte Zahl Summe aller Zahlen 0
Minimum aller Treffer als Zahl kleinste Zahl Laufzeitfehler; Ausgang unverändert
Maximum aller Treffer als Zahl größte Zahl Laufzeitfehler; Ausgang unverändert

Skalierungsfaktor 1 … n

Nur für numerische Auswahlarten. Das Ergebnis wird mit diesem Faktor multipliziert. Leer oder 1 lässt den Wert unverändert. Beispiel: Milliwatt werden mit 0,001 in Watt umgerechnet.

Textvorsatz 1 … n

Nur bei Erster Treffer als Text. Der Text wird vor den gefundenen Wert gesetzt.

Text-Trenner 1 … n

Nur bei Alle Treffer als verketteter Text. Der Text wird zwischen den Treffern eingefügt.

6. Beispiele

6.1 Einfaches XML: Temperatur und Status

Eingabe:

<sensor>
  <name>Außenfühler</name>
  <temperature>21.7</temperature>
  <online>true</online>
</sensor>
Ausgang Pfad Auswahlart Ergebnis
1 /sensor/name Erster Treffer als Text Außenfühler
2 /sensor/temperature Erster Treffer als Zahl 21,7
3 /sensor/online Erster Treffer als Text true

6.2 JSON mit Objekt und Array

Eingabe:

{
  "room": "Küche",
  "values": [19.5, 20.0, 20.5]
}
Ausgang Pfad Auswahlart Zusatz Ergebnis
1 /root/room Erster Treffer als Text Textvorsatz Raum: Raum: Küche
2 /root/values/item Alle Treffer als verketteter Text Trenner / 19.5 / 20 / 20.5
3 /root/values/item Maximum aller Treffer als Zahl 20,5

6.3 XML mit Attribut, Filter und Skalierung

Eingabe:

<devices>
  <device name="Pumpe" active="true"><power>12500</power></device>
  <device name="Licht" active="false"><power>800</power></device>
</devices>
Ausgang Pfad Auswahlart Zusatz Ergebnis
1 /devices/device[@active="true"]/@name Alle Treffer als verketteter Text Trenner , Pumpe
2 /devices/device[@name="Pumpe"]/power Erster Treffer als Zahl Faktor 0,001 12,5

6.4 Summe und Minimum einer Wettervorhersage

Für ein OpenWeatherMap-XML-Dokument können die ersten vier Prognosewerte so ausgewählt werden:

  • Niederschlag: /weatherdata/forecast/time[position()<5]/precipitation/@value
  • Temperatur: /weatherdata/forecast/time[position()<5]/temperature/@value

Für Niederschlag eignet sich Alle Treffer als summierte Zahl. Für den Temperaturverlauf kann Alle Treffer als verketteter Text mit dem Trenner | oder Minimum aller Treffer als Zahl verwendet werden.

6.5 FRITZ!Box Smart Home

Typische Pfade für die XML-AHA-Schnittstelle:

  • offene Kontakte: /devicelist/device[./alert/state="1"]/name
  • Schaltstatus: /devicelist/device[./name="Steckdose 1"]/switch/state
  • Leistung: /devicelist/device[./name="Steckdose 1"]/powermeter/power

Die Leistung wird in Milliwatt geliefert. Mit dem Skalierungsfaktor 0,001 entsteht Watt.

7. Lizenzparameter und Statusausgänge

Parameter Bedeutung
ActivationCode Aktivierungscode für den ProductCode XmlJsonParser
OfflineToken Optionaler signierter Offline-Nachweis
OfflineProfile Lizenzprofil PrivateBusiness oder Partner
ReleaseChannel Updatekanal StableBeta oder Rc
Ausgang Bedeutung
LicenseStatus Ergebnis der Lizenzprüfung
LicenseOwner Lizenzinhaber
UpdateAvailable Kennzeichnet ein verfügbares Update
LatestVersion Neueste angebotene Version
DownloadUrl Bezugsadresse des Updates
OfflineExpiresAt Ablaufzeitpunkt des Offline-Tokens

In der GPA-Simulation wird der Baustein automatisch freigeschaltet. Auf dem Zielgerät ist eine passende Lizenz für XmlJsonParser erforderlich.

8. Fehlerbehebung

  • Laufzeitfehler meldet ungültiges XML/JSON: Das vollständige Dokument mit einem Validator prüfen und die richtige Eingangskodierung wählen.
  • Pfad findet keinen Wert: Pfad zunächst auf ein einzelnes, sicher vorhandenes Element reduzieren; XPath zählt ab 1.
  • JSON-Array bleibt leer: Zwischen Arrayname und Wert fehlt wahrscheinlich /item.
  • JSON funktioniert in der Simulation, nicht auf X1/L1: Schlüssel auf gültige XML-Namen prüfen, besonders Namen, die mit einer Zahl beginnen.
  • Zahl kann nicht gelesen werden: Eingabewert muss eine XML-kompatible Zahl mit Dezimalpunkt enthalten.
  • Ausgang ändert sich bei einem Fehler nicht: Das ist beabsichtigt; die Ursache steht am Ausgang Laufzeitfehler.
  • Lizenz nicht aktiv: ProductCode, Aktivierungscode, Gerätebindung und Netzwerkzugang prüfen.

9. Datenschutz und Netzwerk

Die Parserfunktion führt selbst keine HTTP-Anfragen aus; Daten müssen von einem anderen Baustein bereitgestellt werden. Nur die Lizenzprüfung kommuniziert mit dem TerraBytes-Lizenzdienst.

Die mitgelieferte Datei Help/XmlJsonParser.html enthält dieselbe fachliche Referenz und wird im GPA direkt am Baustein angezeigt.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Antimanual

Ask our AI support assistant your questions about our platform, features, and services.

You are offline
Chatbot Avatar
What can I help you with?
WeCreativez WhatsApp Support
Unser Team ist hier, um auf Deine Fragen zu antworten! Gebe Deine Telefon Nr. inkl. Landesvorwahl ohne + ein. Beispiel: 49152999999
👋 Hi, wie können wir helfen?