MQTT: Ident von Variablen in Instanz verändert sich

Hallo zusammen
Ich empfange via MQTT die Werte meines Batterie- / Solarsystems aus dem Victron CerboGX. Darunter habe ich auch zwei Werte von „getürkten“ Autoladestationen. Getürkt darum, weil ich mittels einem Script auf dem CerboGX die Leistungswerte meiner Wärmepumpe und diejenigen der Überschussheizung abfrage und als EVCS (Ladestation) darstelle.
Grundsätzlich funktioniert die Datenabfrage von Symcon via MQTT und ich erhalte alle gewünschten Werte.
Ich stelle aber fest, dass sich in Symcon die Ident-Werte von Variablen innerhalb der angelegten MQTT-Instanzen der beiden Ladestationen nach ein paar Mionuten verändern und damit für die weitere Verarbeitung unbrauchbar machen. Komischerweise geschieht dies nur in den beiden Ladestation-Instanzen. Bei allen anderen angelegten Instanzen (und das ist eine Menge) bleibt alles seit dem Anlegen unverändert.

Ein Bild sagt mehr als tausend Worte:


Wie man sieht habe ich die beiden MQTT-Themen „N/c0619ab6d7d0/evcharger/2/Ac/Power“ und „N/c0619ab6d7d0/evcharger/3/Ac/Power“ auf die Instanzen #17829 bzw. #55384 angelegt.


Im Objektbaum sieht man dann auch, dass unter den beiden oben erwähnten Instanzen jeweils auch eine Variable namens „value“ angelegt wurde. Links zu sehen der entsprehchende Ident-Wert.


Ein paar Minuten später ist dann aber der Ident-Wert dieser beiden „value“-Variablen anders.

Das sieht für mich danach aus, als ob (aus welchem Grund auch immer) die Variablen neu angelegt werden. Warum das so ist, kann ich mir nicht erklären. Es ist mir bisher auch nicht gelungen herauszufinden wann genau die Änderung geschieht. Weil für eine gewisse Zeitspanne funktioniert alles einwandfrei und die Variablen enthalten auch immer den aktuellen Wert. Da die Daten via MQTT übertragen werden ändern sich die Werte oft alle paar Sekunden.

Ich verwende IP-Symcon 8.0, SymBox (arm64), 18.03.2025, 893fb0f4efa7.

Du meinst nicht den Ident, sondern die Objekte ID / Variable ID.
Die Spalte Ident wird bei dir gar nicht angezeigt im Screenshot und wird für die Variablen sehr wahrscheinlich immer gleich bleiben „value“.

Der Grund warum die Variablen gelöscht und neu angelegt werden kann daran liegen, dass der Typ der Variable sich z.b. von String auf integer auf float geändert hat.

Leider zeigen deine Screenshots weder den Typ noch den Wert der Variablen.

Aber das JSON zeigt eindeutig das Values ein String ist "0" und nicht 0 was ein integer wäre.
Michael

Hallo @Nall-chan
Korrekt, ich meine die Objekte ID / Variable ID.

Sorry, habe nicht bemerkt, dass ein Teil des Screenshoot abgeschnitten wurde.
Du liegst in der Tat richtig mit deiner Vermutung. Der Typ der Variable verändert sich tatsächlich ! Das ist mir bisher gar nicht aufgefallen.

Wenn der Wert 0 gesendet wird verändert sich der Variablen-Typ in String. Bei einer Zahl in Integer. Das liegt offensichtlich daran, dass vom CerboGX der Wert 0 tatsächlich als String gesendet wird. Ich hab das mal im Debug verifiziert:

MQTT-Debug

Gibt es in Symcon eine Möglichkeit damit umzugehen ?
Wenn ich in der Instanzkonfiguration „Variablen sperren“ auf aktiv setze, passiert genau das, was in der Klammer steht und der Wert wird nicht auf 0 geändert.

Manchmal findet man die Lösung bei der Beschreibung des Problems …
Ich habe das Problem in meinem Skript auf dem CerboGX gelöst und verhindert, dass der Wert 0 als String gesendet wird. Er kommt jetzt ebenfalls als Integer.

MQTT-Debug_1

Leider ist es jetzt zu dunkel, bzw. die Solarleistung ist nicht mehr genügend um auch die Überschussleistung und damit Werte > 0 zu testen … :frowning:

1 „Gefällt mir“