Blockly – Zeichenfolge parsen

In dieser Artikelserie möchte ich das Thema Blockly in ioBroker näher erklären. Im Artikel zeige ich, wie Du eine Zeichenfolge parsen und einen entsprechenden Wert extrahieren kannst.

Bei manchen Sensoren oder Aktoren werden mehrere Informationen in einem Datenpunkt gespeichert. Dabei werden die verschiedenen Informationen mit einem Trennzeichen verkettet als Zeichenfolge gespeichert. Bei einem Vibrationssensor hatte ich z.B. folgende Werte in einem Datenpunkt stehen:

100,60,22

Wenn ich nun aus dieser Zeichenfolge z.B. nur den ersten Wert verarbeiten möchte, muss ich hier ein entsprechenden Parser aufbauen um den Wert zu extrahieren. Wir haben es hier mit einem wirklich sehr einfachen Parsing zu tuen, da wir dazu einfach die Zeichenfolge mittels dem Komma zerlegen und in eine Liste schreiben können. Für den Artikel habe ich folgenden Datenpunkt angelegt:

 

Im Datenpunkt „Datenpunkte.0.Test.TestString“ wird die Zeichenfolge „100,60,20“ gespeichert. Für diesen Datenpunkt erstellen wir uns nun ein Blockly-Trigger, mit dem wir das String-Parsing durchführen können. Bevor mit dem eigentlichen Parsing beginnen hier der Trigger mit einer Ausgabe in das ioBroker Log:

 

Im Log sehen wir nun die folgende Ausgabe:

 

Im nächsten Schritt erweitern wir nun das Script um die Funktionalität zum „Parsen“ des Strings. Dazu erstellen wir uns im ersten Schritt mit dem Block „setze … auf“ eine neue Liste, welche die einzelnen Elemente der Zeichenfolge aufnehmen soll. Gefüllt wird die Liste über den Block „Liste aus Text erstellen“. Dem Block übergeben wir dazu den neuen Wert des Datenpunktes (Wert) sowie das Trennzeichen „,“. Der Block erstellt nun eine Liste mit den Elementen des Strings. Nun können wir mit dem Block „In der Liste“ auf die Variable „StringDetails“ zugreifen und das 1. Element auswählen. Die Liste ist 1-basiert.

 

 

Im ioBroker Log sehen wir nun die Ausgabe des 1. Elements der Liste.

 

So einfach können wir auch mit Blockly Zeichenfolgen zerlegen. Ich hoffe Dir gefällt der Artikel. Ich freue mich über Deinen Kommentar oder Fragen 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

Ein Gedanke zu „Blockly – Zeichenfolge parsen

  • 3. März 2020 um 22:19
    Permalink

    Hallo
    Ich versuche gerade das Script nach zu bauen , aber ich komme nicht weiter. Würde die Möglichkeit bestehen, das Script zu Exportieren ? Ich hatte so etwas mal von irgendwo raus kopiert aber ich wollte mit Blockly arbeiten und ich bekomme bei diesem Script eine Warnung.
    Danke und grüsse von der Spree

    const idJson = ‚mqtt.1.Zutritt.RFID‘; // ID des Datenpunktes mit dem JSON-String eintragen !
    const idUid = ‚rfid.username‘; // Name des uid-Datenpunktes

    createState(idUid, “, {type: ’string‘}); // Datenpunkt erstellen

    on(idJson, function(dp) { // triggert bei Änderung des JSON-Strings
    var obj = JSON.parse(dp.state.val);
    setState(idUid, obj.username, true);
    });

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.