Hallo Georg,
vielen Dank, auch an deine KI.
Freut mich, dass diese Aufgabe zur Verbesserung der KI-Vorlage beitragen konnte.
Das Problem mit Jahr und Datum ist somit gelöst - aber das hatte ich ja auch selbst schon erkannt und beseitigt.
Das Problem mit den Leerzeichen bleibt leider weiterhin bestehen:
Hier hat deine KI das gemacht, was ChatGPT bei mir auch immer macht: sie tut so, als habe sie das Problem erhakannt, schreibt etwas dazu, ändert vielleicht die Syntax - aber das Problem bleibt bestehen.
Deine KI hat geschrieben, dass das Problem dadurch gelöst werden kann, dass eindeutige Formate für die PRINTF-Funktion vorgegeben werden. Das hat sie aber auch schon vorher getan, in der ersten Version der Syntax. Hier wurde die Syntax also nicht verbessert.
Die hat lediglich die zwei KONKAT-Funktionen zu einer einzigen zusammengefügt. Das löst aber das Leerzeichen-Problem auch nicht.
Ich verstehe weiterhin nicht, warum dieses Leerzeichen-Problem in dieser Custom-Logik auftritt. Ich kann es gezielt reproduzieren: wenn ich z. B. den Präfix-String im Level in zwei einzelne Strings aufteile
Code: Alles auswählen
[ "$Konst_Prefix1", "string,16", "w;0x088E;" ],
[ "$Konst_Prefix2", "string,16", "8;0x" ],
und diese dann weiter unten wieder zusammensetze, dann erscheint dazwischen ebenfalls ein Leerzeichen.
Wenn ich eine neue KONKAT-Logik erstelle und diese beiden Strings als Eingänge habe, dann funktioniert es ohne Leerzeichen:
Und was die Bestandteile des Datum-Uhrzeit-Strings anbetrifft: im Screenshot des Doktormodus (letzter Beitrag) sieht man ja schon, dass die Teilstrings In diesem Fall $L_gc_MinMin_Str) kein Leerzeichen am Ende enthalten (zumindest nicht in der Grafana-Tabelle; wenn ich den Text selektiere dann sehe ich dort nur die zwei Zeichen, kein leerzeichen davor oder dahinter.
Es bleibt also weiterhin mysteriös, woher die Leerzeichen in dem Gesamtstring kommen. Denn, wie gesagt, in einer anderen Custom-Logik, mit der ich mir MQTT-Befehle für die Heizung zusammensetze, bastelt KONKAT keine Leerzeichen hinzu:
Code: Alles auswählen
{
"Level": [
[
"$Value",
"integer",
0
],
[
"$Address",
"string,32",
""
],
[
"$Length",
"integer",
1
],
[
"$Delay",
"float",
5
],
[
"$StringWrite",
"string",
"write;"
],
[
"$StringRead",
"string",
"read;"
],
[
"$StringFormat",
"string",
";%d"
],
[
"$Str_Value",
"string",
""
],
[
"$Str_Length",
"string",
"1"
],
[
"$Str_Factor",
"string",
";1"
],
[
"$OutWrite",
"string,32",
""
],
[
"$OutRead",
"string,32",
""
],
[
"$DoRead",
"bool",
false
],
[
"$ConstTrue",
"bool",
true
],
[
"$ConstFalse",
"bool",
false
],
[
"$VAR<Inhibit?>",
"bool",
false
]
],
"Module": [
[
"Break", [
"$VAR<Inhibit?>"
]
],
[
"Printf",
"$Value",
"$StringFormat",
"$Str_Value"
],
[
"Printf",
"$Length",
"$StringFormat",
"$Str_Length"
],
[
"Concat", [
"$StringWrite",
"$Address",
"$Str_Length",
"$Str_Value"
],
"$OutWrite"
],
[
"Concat", [
"$StringRead",
"$Address",
"$Str_Length",
"$Str_Factor"
],
"$OutRead"
],
[
"Monoflop",
"$ConstTrue",
"$ConstFalse",
"-$DoRead",
"$Delay",
0
],
[
"SendExplicit",
"$DoRead",
"$OutRead",
1
]
],
"Input": [
[
"Eingang",
"Eingangswert",
"$Value",
"c"
],
[
"Adresse",
"Viessmann-Adresse (hex-Format, z. B. 0x1234)",
"$Address",
"u"
],
[
"Verzögerung",
"Abfrageverzögerung [s]",
"$Delay",
"u"
]
],
"Output": [
[
"Wert setzen",
"Text für Schreibbefehl",
"$OutWrite",
"c"
],
[
"Wert abfragen",
"Text für Lesebefehl",
"$OutRead",
"x"
]
]
}
Vielen Dank und viele Grüße
Falk