NEU! UPGRADE IP 11 verfügbar!
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

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

Wissen, Planung & Diskussion zur MQTT Unterstützung im Timberwolf Server.
Stellt uns hier Eure MQTT Projekte und Ideen vor.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
rowitech
Reactions:
Beiträge: 69
Registriert: So Sep 18, 2022 5:50 pm
Hat sich bedankt: 81 Mal
Danksagung erhalten: 20 Mal

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

#1

Beitrag 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
Zuletzt geändert von ms20de am Do Nov 09, 2023 2:30 pm, insgesamt 2-mal geändert.
Timberwolf 3500XL, ID 1079, ETS6 (Home), zumeist MDT-Komponenten

MrWilson
Reactions:
Beiträge: 232
Registriert: Do Dez 27, 2018 2:19 pm
Wohnort: Borgsdorf
Hat sich bedankt: 44 Mal
Danksagung erhalten: 146 Mal

#2

Beitrag 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
TWS 2500 ID: 341 + PBM ID: 463, VPN offen, Reboot nur nach Absprache

Ersteller
rowitech
Reactions:
Beiträge: 69
Registriert: So Sep 18, 2022 5:50 pm
Hat sich bedankt: 81 Mal
Danksagung erhalten: 20 Mal

#3

Beitrag 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
Timberwolf 3500XL, ID 1079, ETS6 (Home), zumeist MDT-Komponenten

MrWilson
Reactions:
Beiträge: 232
Registriert: Do Dez 27, 2018 2:19 pm
Wohnort: Borgsdorf
Hat sich bedankt: 44 Mal
Danksagung erhalten: 146 Mal

#4

Beitrag 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.
TWS 2500 ID: 341 + PBM ID: 463, VPN offen, Reboot nur nach Absprache

Ersteller
rowitech
Reactions:
Beiträge: 69
Registriert: So Sep 18, 2022 5:50 pm
Hat sich bedankt: 81 Mal
Danksagung erhalten: 20 Mal

#5

Beitrag 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.
Timberwolf 3500XL, ID 1079, ETS6 (Home), zumeist MDT-Komponenten

ms20de
Elaborated Networks
Reactions:
Beiträge: 995
Registriert: Sa Aug 11, 2018 9:14 pm
Hat sich bedankt: 281 Mal
Danksagung erhalten: 500 Mal

#6

Beitrag 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
[ Timberwolf Entwicklung ]

TWS 2400 ID:102 VPN offen, Reboot auf Nachfrage
Antworten

Zurück zu „MQTT“