DDF-Handbuch / Anhang

FAQ & Troubleshooting

Ein Wert wird nicht oder falsch gesetzt, obwohl die Formel richtig aussieht.

Meist fehlt ein ;. Jede einzelne Formel muss mit ; abgeschlossen sein. Der Interpreter trennt Anweisungen nur am ;, Zeilenumbrüche werden beim Laden zu Leerzeichen. Aus

ITEM.POWER:=R.0.FLOAT
ITEM.ENERGY:=R.2.FLOAT/1000;

wird so die eine ungültige Anweisung ITEM.POWER:=R.0.FLOAT ITEM.ENERGY:=R.2.FLOAT/1000;. Typische Folgen: Das erste Item bleibt leer oder hat einen falschen Wert, die folgende Anweisung wird nicht ausgeführt, und bei Bedingungen greift der falsche Zweig.

So prüfen Sie:

  • Jede Zuweisung und jeder Funktionsaufruf endet mit ;.
  • ENDIF;, ENDSWITCH;, ENDFOR; haben ein ;.
  • Die letzte Anweisung einer einzeiligen Zelle hat ebenfalls ein ; ("""SUBSCRIBE.F:=1;""").
  • Mit DEBUG(…); direkt hinter der verdächtigen Stelle sehen Sie, ob sie erreicht wird.

Auch in Original-DDF kommt der Fehler vor. In der LEDSTRIP-DDF steht z. B. in einem Effektzweig CF1 := STP+ 2 ohne ;.

Das Gerät liefert keine Werte (.Q bleibt 0).
  • MODBUS: IP/Port, Unit-ID (SLAVE), Funktionscode (FC3 vs. FC4) und Adressoffset prüfen.
  • Seriell: Baudrate, Parität, Stoppbits. Bei SERCOM zusätzlich die Delimiter.
  • REST: DEBUG(R.HTTP_CODE, R.URL);. Ist DOMAIN mit http:// angegeben?
  • MQTT: .MQTT_CONNECTION, Broker-URL tcp://…:1883, Topic-Schreibweise.
FLOAT-Werte sind unsinnig groß oder klein.

Die Wortreihenfolge ist falsch. WORDORDER umstellen (und ggf. BYTEORDER).

Mein Schreibwert kommt nicht am Gerät an.

Die WFORMULA muss die Sendedaten setzen und <ALIAS>.F := 1;. Die Schreibfunktion braucht einen gültigen Funktionscode (FC6/FC16) bzw. eine Methode.

Der *INIT-Block wird ignoriert.

Der Loader kennt *INIT nicht. Verwenden Sie DEFAULT in *ITEM oder eine Formel mit Merker (IF init == 0 THEN … init := 1; ENDIF;).

Meine SVG-Vorlage wird nicht gezeichnet.
  • alias steht nicht im <svg>-Tag oder ist anders geschrieben als im paintSVG-Aufruf.
  • paintSVG hat weniger als 7 Parameter.
  • Im SVG steht ein ", das das CSV-Feld beendet.
  • GUI.setWindow fehlt oder passt nicht zur Kachel.
Ein Element wird nicht angezeigt.

Prüfen Sie visibility (Ausdruck = 0?), nicht unterstützte Elemente (<image>, <tspan>, <use>), Transformationen außer rotate und Platzhalter in d/points (werden nicht ersetzt).

fillEllipse zeichnet nichts.

Mit weniger als 7 Parametern wird nicht gefüllt. Verwenden Sie GUI.fillEllipse(x,y,w,h,farbe,0,farbe);.

fillSvgPathD füllt nicht.

Die Füllfarbe braucht ein Alpha-Byte > 1, z. B. 0xFF2DB42D.

Texte sind zu groß oder zu klein.

font-size aus CSS-Klassen wird durch 1,4 geteilt, als Attribut nicht. In GUI.text wird die Höhe mit der Skalierung gedämpft. Verwenden Sie relative Größen über $.GUI.FONTLABEL * Faktor.

Klicks öffnen trotzdem die Detailseite.

In SVGEVENT muss $.MOUSE.HANDLED := 1; gesetzt werden.

OCPP-Station bleibt bei der RFID-Autorisierung hängen.

Die Formel AUTHORIZE muss CP.AUTHORIZE_STATE auf 1 oder -1 setzen.

Signatur ungültig.

Nach dem Signieren wurde die Datei verändert (auch Leerzeichen/Zeilenenden), oder *SIGNATURE ist nicht die erste Sektion.

SAVE_JSON speichert nicht.

Der Aufruf ist auf 2× pro Stunde begrenzt.

GUI.showInputDialog öffnet nichts oder kennt das Format nicht.

Der Parameter muss ein bereits geladener varmap-Alias sein (wie bei $.VAL.<alias>), relativ ('roomtemp') oder absolut ('systems.demo.roomtemp'). Vorher z. B. mit $.ISVAL.… prüfen bzw. den Alias lesen.

Wie blende ich Bedienelemente je nach Anmeldeberechtigung aus?

Nutzen Sie $.GUI.LOGINLEVEL: 0 nicht angemeldet, 1 User, 2 Techniker (Parameterebene), 3 Installateur. Beispiel – Edit-Symbol ab Techniker:

IF $.GUI.LOGINLEVEL >= 2 THEN
    GUI.paintSVG('Edit',0,0,40,40,0,'X','');
ENDIF;
Die Kachel zeigt einen roten Text statt der Grafik.

Die SVGANIMATE-Formel ist ungültig. Das Widget zeigt bis zu drei Zeilen der Parser-Fehlermeldung. Prüfen Sie fehlende ;, ungeschlossene IF/ENDIF und Tippfehler in Funktionsnamen. Ein ungültiges SVGEVENT erzeugt keine solche Anzeige.