Beschreibung
Logikbaustein, der Werte per JSONPath aus einem JSON-Text liest. Der JSON-Text kommt von einem anderen Baustein (Web-Request, MQTT Subscribe, Datei) an den Eingang. Der Baustein behandelt auch Sonderfälle sauber: null, Schlüssel aus Ziffern ("12101"), Zahlen als Text, Listen (Arrays) und Schlüssel mit Punkt.
- Gerät
- Gira X1
- Version
- 1.0.0
- Lizenz
- Ein Schlüssel je X1 (MAC-Adresse), dauerhaft nutzbar
- Thema
- Kommunikation
Anleitung
Eingang und Parameter
| Name | Bedeutung |
|---|---|
| JSON | der JSON-Text. Jeder neue Text wird gelesen und alle Pfade werden ausgewertet |
| Anzahl Pfade | 1 bis 20, Vorgabe 3 |
| Pfad 1…n | JSONPath-Ausdruck, siehe unten. Ein leerer Pfad wird ignoriert. Eine Änderung eines Pfads wertet das letzte JSON neu aus |
| Lizenzschlüssel | Schlüssel für diesen X1, siehe „Lizenz“ |
Ausgänge
| Ausgang | Bedeutung |
|---|---|
| JSON gültig | 1, wenn der letzte Text gelesen werden konnte |
| Text 1…n | Wert des ersten Treffers als Text |
| Zahl 1…n | Wert des ersten Treffers als Zahl, wenn er eine hat |
| Treffer 1…n | Anzahl der Treffer, 0 = nicht gefunden |
| Lizenzstatus, Debug | Lizenzprüfung bzw. Fehler im JSON oder in einem Pfad |
Bei keinem Treffer bleiben „Text“ und „Zahl“ auf dem letzten Wert, „Treffer“ wird 0. Ist das JSON ungültig, bleiben alle Ausgänge stehen, „JSON gültig“ wird 0 und „Debug“ nennt die Stelle („JSON ungültig: … (Zeichen 17)“).
Was wie ausgegeben wird
| JSON-Wert | Text | Zahl |
|---|---|---|
| Zeichenkette | der Inhalt (Ersatzschreibweisen wie \", \n, ä aufgelöst) |
die Zahl, wenn der Text wie eine aussieht ("12.5") |
| Zahl | wie im JSON geschrieben | der Wert (zu große Zahlen wie 1e999 haben keinen Zahlenwert) |
true / false |
true / false |
1 / 0 |
null |
leer | keine Ausgabe |
| Objekt, Liste | der JSON-Text dieses Teils | keine Ausgabe |
JSONPath
| Schreibweise | Bedeutung |
|---|---|
$ |
Wurzel. $.main.temp ist der Schlüssel temp im Objekt main |
$.a.b, a.b, .a.b |
ohne $ gilt der Pfad ab der Wurzel |
$['a.b'], $["a.b"] |
Schlüssel in Klammern, nötig bei Punkt oder Leerzeichen im Namen |
$.12101 |
Schlüssel aus Ziffern sind normale Namen |
$.list[0], $.list[-1] |
Element einer Liste, -1 ist das letzte |
$.list[*], $.obj.* |
alle Elemente bzw. Werte. „Treffer“ zählt sie, „Text“/„Zahl“ nennen den ersten |
$..id |
den Schlüssel id auf jeder Ebene |
$.list[?(@.id==801)].main |
Filter: Elemente, deren Feld id gleich 801 ist. Vergleiche == != < <= > >= mit Text in '…', Zahl, true, false oder null. [?(@.main)] prüft nur, ob das Feld da ist |
Nicht unterstützt sind Bereiche ([1:3]), mehrere Elemente in einer Klammer ([0,1]), Funktionen und mehrere Bedingungen in einem Filter. Ein Filter mit mehreren Bedingungen wie [?(@.a && @.b)] meldet keinen Fehler, sondern liefert 0 Treffer. Textvergleiche sind genau (Groß- und Kleinschreibung zählen).
Gelesen werden bis zu 64 Ebenen. Eine Byte-Order-Mark (unsichtbares Kennzeichen für UTF-8 am Textanfang) ist erlaubt.
Beispiel
{"main":{"temp":12.5},"weather":[{"id":500,"main":"Rain"},{"id":801,"main":"Clouds"}],"rain":null}
| Pfad | Text | Zahl | Treffer |
|---|---|---|---|
$.main.temp |
12.5 |
12,5 | 1 |
$.weather[1].main |
Clouds |
1 | |
$.weather[?(@.id>=800)].main |
Clouds |
1 | |
$.weather[*].id |
500 |
500 | 2 |
$.rain |
leer | 1 | |
$.snow |
(unverändert) | (unverändert) | 0 |
Lizenz
Der Lizenzschlüssel wird im GPA (Gira Projekt Assistent) im Parameter „Lizenzschlüssel“ eingetragen. Der Baustein prüft ihn beim Start auf dem X1, offline und gebunden an die MAC-Adresse des X1. Der Ausgang „Lizenzstatus“ zeigt das Ergebnis, bei einem Schlüssel für ein anderes Gerät auch die MAC-Adresse dieses X1. Ohne gültigen Schlüssel bleibt der Baustein untätig. In der Simulation des GPA am PC läuft er ohne Lizenzprüfung, damit sich Logikblätter testen lassen.
Den Schlüssel erhältst du beim Kauf über smolabs.de.
Verwendetes Icon: wie „MQTT Publish“.
Changelog
Version 1.0.0
- Erste Version.





Rezensionen
Es gibt noch keine Rezensionen.