MQTT Client Konfigurator - Variablen-Typ richtig anlegen

Hi,

der mqtt-Client-Konfigurator legt immer String-Variablen an, statt auf den den letzten Value zu schauen und den richtigen Variablen-Typ zu verwenden. Das ist besonders bei seeehr vielen Variablen doch sehr zeitaufwändig und ärgerlich insb. wenn man selber erstmal den Typen nachsehen muss, da auch der letzte Value nicht übernommen wird beim Variable anlegen und man sonst erst auf den nächsten Wert warten muss. Auch dies wäre eine Verbesserung. Die Werte sind dem Konfigurator ja bekannt, sollte also kein Problem darstellen.

1 „Gefällt mir“

Ja, das hatte ich auch schon lange mal angeregt.
oder wenn eine automatische Erkennung zu aufwändig ist dann doch zumindest das wesentlich öfter benötigte Double oder Integer als Default nehmen.
Jedesmal laufe ich in die gleich Falle.

schöne Grüße
Bernhard

gettype() sollte schon zu 95% richtig sein

Ich dachte wir tun dies bereits. Ansonsten sollte das kein Problem sein es zu erweitern. Und definitiv sinnvoll.

paresy

2 „Gefällt mir“

Beim JSON Decoder glaube ich ist es so. Aber hier könnte das wirklich nicht fehlen.
Michael

richtig, der JSON-Decoder macht es… nagut, der hat auch nicht wirklich ne Wahl :smiley: aber Einzel-Variablen aus mqtt leider nicht… und den letzten Wert übernehmen wäre auch sooo nice… ist ja fast wie Weihnachten und Ostern zusammen :smiley:

Typ-Erkennung kommt zur 7.1. Boolean erlauben wir aktuell „true“ und „false“. Integer alles mit ausschließlich Zahlen. Float alles mit Zahlen, Punkt und Komma.

Das wäre cool, aber dafür müsste das PHP-SDK erweitert werden. Und das ist immer etwas aufwendiger :slight_smile:

paresy

Magst du mir das erklären. Frage aus Entwicklerinteresse.

Der Konfigurator kann keine variablen von neu erstellten Instanzen beschreiben. Das ganze erstellen macht ja die Konsole ohne dem Wissen der Konfigurator Instanz. Deswegen müsste man dies im statusVariables Feld der Configurator Konfiguration mitgeben und die Konsole müsste dies auswerten und setzen.

paresy

OK, aber weiß der Konfigurator nicht welche Variablen er gerade angelegt hat und kann dann ein Update auf den Value machen? Es geht ja um einzelne mqtt-Felder, keine JSON-Struktur, also heisst der Wert unter der Instanze immer Value oder?

Ein Konfigurator ist, wie der Name schon sagt, zum konfigurieren. Er verarbeitet keine Werte und kann auch nicht Variablen von anderen Instanzen setzen.
Das ist Aufgabe der jeweiligen Instanz.
Michael

Wie Michael schon korrekt sagte - der Konfigurator erstellt die Instanz. Aber beeinflusst die variablen nicht.

paresy

OK, verstehe… aber könnte die Client-Instance die Daten nicht beim anlegen aktiv von Splitter-Instance, oder wer auch immer die Daten kennt, abrufen? Oder kennt die nur der Konfigurator? Die Splitterinstanz abonniert ja schon alles oder?

Wenn es retained wäre evtl. ja. Aber das ist vom Aufwand her mit Kanonen auf Spatzen schiessen. Das SDK erweitern ist die elegante Lösung.

paresy

Also das mit den Strings scheint auch in Symcon 8.0 noch so zu sein ?

BSB-LAN schickt da per MQTT z.B.:
{„BSB-LAN1“:{„status“:{„8700“:„1.6“}}}
{„BSB-LAN1“:{„id“:8138,„name“:„Kaskaden-Vorlauftemperatur-Istwert“,„value“: „41,9“,„desc“: „“,„unit“: „°C“,„error“: 0}}
{„BSB-LAN1“:{„status“:{„10017“:„1.6“}}}
{„BSB-LAN1“:{„status“:{„8138“:„46.1“}}}
{„BSB-LAN1“:{„status“:{„8700“:„1.6“}}}
{„BSB-LAN1“:{„status“:{„8138“:„46.1“}}}
{„BSB-LAN1“:{„status“:{„710“:„23.0“}}}
{„BSB-LAN1“:{„status“:{„720“:„1.20“}}}
{„BSB-LAN1“:{„status“:{„2903“:„2 - Energiepreis“}}}
{„BSB-LAN1“:{„status“:{„2904“:„2.0“}}}
{„BSB-LAN1“:{„status“:{„2910“:„8.0“}}}
{„BSB-LAN1“:{„status“:{„3264“:„50“}}}
{„BSB-LAN1“:{„status“:{„3267“:„12“}}}
{„BSB-LAN1“:{„status“:{„8050“:„14.02.2023 08:38:00“}}}
{„BSB-LAN1“:{„status“:{„8051“:„186 - Ström’wächter Verbraucher“}}}

Daraus macht Symcon:

(Var. 19565 / 8138 liefert ja noch ne Menge mehr im MQTT mit, in der Variable steht aber nur 41,9 ohne Einheiten.)

Ich hab nicht heraus gefunden, wie ich aus den automatisch angelegten Variablen etwas anderes als Strings machen könnte…
Beim Bearbeiten der Variable ist das Dropdown ausgegraut, String lässt sich nicht ändern…
grafik

Was mach ich falsch?

Nö, die liefert nicht mehr.

Oder meinst du das hier?

Das ist aber nicht Status…
Michael

Hallo,
stimmt, der Wert 8138 ist nicht status… Das hatte ich einfach aus den Rohdaten vom Mosquitto kopiert…

ID 54633 habe ich über den Konfigurator angelegt.
Der Rest lief dann über die ankommenden Daten rein.

Mein Problem ist, dass alle Variablen in Symcon als String angelegt werden und ich sie nicht auf z.B. Float umstellen kann.
Mit Strings lassen sich halt keine Grafiken machen…

Das JSON liefert ja auch nur Strings. Und keine int oder float.
Das liegt aber am Payload vom Sender und nicht an Symcon.
Alternativ musst du in der Instanz MQTT Client Gerät den Typ von JSON auf String ändern und dann mit einem Script selber das JSON zerlegen, konvertieren und in Variablen schreiben.
Michael