Seite 1 von 1

[V3.5.1] Grundsatzfrage zu Logik beim publish von JSON-Daten (WD-2316)

Verfasst: So Okt 22, 2023 11:52 am
von rowitech
Hallo Forum,

ich habe mich jetzt tagelang durch Wiki, Anleitungen und Forum gewühlt und es ist mir fast ein bißchen peinlich, aber ich habe wohl noch Grundsätzliches nicht verstanden. Ich würde gern meine LaMetric per MQTT [1] ansprechen. Dafür muss ich etwas wie das hier senden:

Code: Alles auswählen

{
  "frames" : [ 
    {
      "icon": "794",
      "text": "Hello!"
    }
  ]
}
Wenn ich das empfangen wollte, könnte ich einen Selektor nutzen, das wäre die "leichtere" Seite. Aber ich möchte das senden. Das Wiki sagt unter [2] für MQTT, dass JSON nur gelesen werden kann. Also gehe ich davon aus, dass ich mir jetzt den JSON-String Zeichen für Zeichen zusammenbauen sollte. Also alles bis zur 794 und ggfs. dem Text muss ich dann händisch bauen. Also die Logikfunktionen nutzen. Der Multiplexer wäre da meine Wahl, aber hier schaffe ich es nicht, feste Textblöcke statisch abzulegen, ich kann nur Quellen angeben (die ich dafür natürlich nicht habe, sollte ich diese dann irgendwo anlegen, und wo?). Und ist das überhaupt der richtige Ansatz?

Es gibt so viele Beiträge über JSON und MQTT, aber dort sind die Ersteller schon viel weiter und versuchen komplexe Operationen. Ich bin gedanklich noch am Anfang und wahrscheinlich übersehe ich einfach etwas Wesentliches und brauche eine Schubs in die richtige Richtung. Genau dafür wäre ich sehr dankbar.

Beste Grüße,
Rolf

[1] https://help.lametric.com/support/solut ... y-data-diy
[2] https://elabnet.atlassian.net/wiki/spac ... g+mit+MQTT

Re: [V3.5.1] Grundsatzfrage zu Logik beim publish von JSON-Daten

Verfasst: So Okt 22, 2023 1:00 pm
von MrWilson
Hallo Rolf,

in deinem verlinkten Wiki Beitrag steht:" Aktuell können Selektoren die ein Array erzeugen oder die Array-Schreibweise verwenden nicht zum Senden von Daten genutzt werden."
Somit kommst du erstmal nicht weiter.

Deine Vorgehensweise ist aber grundsätzlich richtig. Wenn du einen Multiplexer anlegst, dann kannst du beispielweise bei Eingang 1 die Eingangsfunktion von "Keine" auf Parameter stellen und gibst dann deinen festen Wert ein. Der Selektor wird über die Eingangsfunktion auf "0" gestellt und du musst dir dann einen Trigger überlegen. Bei Werten, die sich nicht ändern trigger ich z.B. jede Minute.

Das machst du in deinem Beispiel für icon und text. Einer von beiden löst dann die Abfrage aus.

Grüße

Willy

Re: [V3.5.1] Grundsatzfrage zu Logik beim publish von JSON-Daten

Verfasst: So Okt 22, 2023 4:37 pm
von rowitech
Hallo Willy,

vielen Dank! Würde ich dann als Wert tatsächlich "{ xyz..." eingeben, also das JSON haarklein und nicht nur die Variablen darin?

Grüße,
Rolf

Re: [V3.5.1] Grundsatzfrage zu Logik beim publish von JSON-Daten

Verfasst: So Okt 22, 2023 4:55 pm
von MrWilson
Nein, nur die Variablen. Diese werden dann einzeln mit deiner MQTT Abfragen verknüpft. Jede Abfrage hat einen Selektor und daraus wird das JSON gebildet.
Deinem Beispiel folgend legst du zwei publizierende Transaktionen an

frames[0].icon

und

frames[0].text

Diese werden mit deinen Logiken vernüpft, aber wie bereits geschrieben, durch das Array funktioniert das nicht.

Als Alternative kannst du auch beim "App Level Topic hinzufügen" anstatt JSON auf String stellen und dann über deinen Multiplexer dein komplettes JSON übergeben. Das funktioniert unter 3.5.1 aber nur bis 32 Zeichen . Die Zeichenbegrenzung wurde mit 4 IP2 aufgehoben.

Re: [V3.5.1] Grundsatzfrage zu Logik beim publish von JSON-Daten

Verfasst: So Okt 22, 2023 5:10 pm
von rowitech
Vielen Dank, da gab es noch andere JSON-Möglichkeiten mit der LaMetric, vielleicht bekomme ich da noch etwas passendes hin, ansonsten wird die V4.0 helfen, wenn sie da ist.

Re: [V3.5.1] Grundsatzfrage zu Logik beim publish von JSON-Daten (WD-2316)

Verfasst: Do Nov 09, 2023 2:33 pm
von ms20de
Hinweis:

Senden von Arrays wird ab der nächsten Insider Version (4.0 IP 5) enthalten sein.

Hier schon mal die Dokumentation dazu:
https://elabnet.atlassian.net/l/cp/sJcgQC13

Viele Grüße,
Matthias