Administrationsseite***0-1Visueditor***2Visuelemente***1002Variablen, Funktionen und Formeln

In allen hellgrün hinterlegten Eingabefeldern der folgenden Einstellungen können Variablen, Funktionen und Formeln auf der Grundlage des dem Visu-Element zugewiesenen Steuerungs-KOs (hellgrün hinterlegt) zugewiesen werden: Variablen, Funktionen und Formeln müssen von geschweiften Klammern umschlossen werden. Beispielsweise repräsentiert die Angabe "{#}" den KO-Wert, die Angabe "{round(12.34)}" repräsentiert den Aufruf der Funktion round(12.34) und die Angabe "{round(#)}" repräsentiert den gerundeten KO-Wert. Innerhalb einer Eigenschaft können beliebig viele Variablen, Funktionen und Formeln genutzt werden, z.B. "{#} ist stets ungleich {round(#*2)}". Auch ein Verschachteln ist möglich, z.B. "{#} ist stets gleich {sqrt(pow(#,2))}".

Variablen

Grundsätzlich ist die einzig verfügbare Variable der KO-Wert des dem Visu-Element zugewiesenen Steuerungs-KOs. Bei einigen Visuelementen sind u.U. weitere Variablen verfügbar, diese werden in der jeweiligen Hilfe gesondert erläutert.

Funktionen

Mit Hilfe von Funktionen können diverse Berechnungen oder String-Manipulationen vorgenommen werden (siehe Funktionsreferenz). Hinweis: Mit Hilfe der String-Funktion split() bzw. str_split() kann ein speziell zusammengesetztes KO (z.B. durch einen entsprechenden Logikbaustein) in mehrere Teile zerlegt werden. Dadurch ist es möglich mit nur einem Steuerungs-KO verschiedene Parameter zu übergeben (z.B. X- und Y-Werte für eine Translation). Beispiel (KO-Wert="23|45"):

Formeln

Mit Hilfe von Formeln können Variablen oder Rückgabewerte von Funktionen weiteren Berechnungen unterzogen werden.

Funktionsreferenz

Folgende Funktionen stehen für diverse Berechnungen oder String-Manipulationen zu Verfügung:
Funktion Beschreibung Beispiel
Allgemeine mathematische Funktionen
können sich sowohl auf den KO-Wert, als auch auf einen beliebigen anderen Wert beziehen
abs(x) absoluter Wert von x {abs(#)}
floor(x) x abrunden {floor(#)}
ceil(x) x aufrunden {ceil(#)}
pow(x,y) x mit y potenzieren (x hoch y) {pow(#,2)}
sqrt(x) Quadratwurzel von x {sqrt(#)}
log(x) natürlicher Logarithmus von x {log(#)}
sin(x) Sinus von x (im Bogenmaß) {sin(#*3.1415927/180)}
cos(x) Cosinus von x (im Bogenmaß) {cos(#*3.1415927/180)}
tan(x) Tangens von x (im Bogenmaß) {tan(#*3.1415927/180)}
round(x) x runden {round(#)}
fixed(x,anz) x auf eine feste Anzahl (anz) von Nachkommastellen bringen {fixed(#,2)}
Allgemeine String-Funktionen
können sich sowohl auf den KO-Wert, als auch auf einen beliebigen anderen Wert beziehen
str_left(x,n) n Zeichen von links des Strings x ausgeben {str_left('EDOMI',3)}
str_right(x,n) n Zeichen von rechts des Strings x ausgeben {str_right('EDOMI',3)}
str_mid(x,pos,n) n Zeichen ab der Position pos des Strings x ausgeben (pos beginnt mit 0) {str_mid('EDOMI',5,3)}
str_split(x,pos,sep) zerlegt den String x per Default bei jedem Vorkommen des Zeichens "|" und gibt den Teilstring mit dem Index pos zurück (beginnend bei 0) str_split('11|22|33|44',2) gibt 33 zurück str_split('A-B-C-D',2,'-') gibt "C" zurück
str_len(x) gibt die Anzahl der Zeichen des Strings x zurück {str_len('EDOMI')}
str_replace(x,string1,string2) ersetzt jedes Vorkommen von string1 im String x durch string2 {str_replace('HS4','HS','EDOMI')}
str_lcase(x) wandelt den String x in Kleinbuchstaben um {str_lcase('EDOMI')}
str_ucase(x) wandelt den String x in Großbuchstaben um {str_ucase('edomi')}
str_trim(x) entfernt "whitespace" am Anfang und Ende des Strings x {str_trim(' EDOMI ')}
str_stringornum(x) überprüft den String x auf seinen Datentyp und gibt entweder einen STRING zurück oder einen FLOAT-Wert str_stringornum('edomi') gibt den String 'edomi' zurück str_stringornum('123.45') gibt die Zahl 123.45 zurück
KO-String-Funktionen
beziehen sich immer auf den KO-Wert
left(n) n Zeichen von links des KO-Werts ausgeben {left(3)}
right(n) n Zeichen von rechts des KO-Werts ausgeben {right(3)}
mid(pos,n) n Zeichen ab der Position pos des KO-Werts (String) ausgeben (pos beginnt mit 0) {mid(5,3)}
split(pos,sep) zerlegt den KO-Wert per Default bei jedem Vorkommen des Zeichens "|" und gibt den Teilstring mit dem Index pos zurück (beginnend bei 0) KO-Wert="11|22|33|44": split(2) gibt 33 zurück KO-Wert="A-B-C-D": split(2,'-') gibt "C" zurück
len() gibt die Anzahl der Zeichen des KO-Wertes zurück {len()}
replace(string1,string2) ersetzt jedes Vorkommen von string1 durch string2 {replace('HS','EDOMI')}
lcase() wandelt den KO-Wert in Kleinbuchstaben um {lcase()}
ucase() wandelt den KO-Wert in Großbuchstaben um {ucase()}
trim() entfernt "whitespace" am Anfang und Ende des KO-Werts {trim()}
stringornum(x) überprüft den String x auf seinen Datentyp und gibt entweder einen STRING zurück oder einen FLOAT-Wert stringornum('edomi') gibt den String 'edomi' zurück stringornum('123.45') gibt die Zahl 123.45 zurück
Sonstige KO-Funktionen
beziehen sich immer auf den KO-Wert (sofern nicht anders angegeben)
hsvrgb() KO-Wert (Hex-String, z.B. "A1B2C1") von HSV in RGB umwandeln {hsvrgb()}
hsvlight(mode) KO-Wert (Hex-String, z.B. "A1B2C1") von HSV in RGBA umwandeln Der Parameter "mode" legt fest, ob der Alphawert aus dem HSV-Wert abgeleitet werden soll (false oder kein Parameter) oder ob die resultierende Farbe stets mit maximaler Opazität berechnet werden soll (true oder 1), solange der Alphawert >0 ist. Hinweis: Durch den Alphawert (Transparenz) kann ein Visuelement z.B. die Farbeinstellung einer RGB-Leuchte realistischer wiedergeben: Eine ausgeschaltete Leuchte ergibt somit nicht Schwarz, sondern 100% Transparenz (also quasi "unsichtbar"). {hsvlight()} oder {hsvlight(true)}
rgblight(mode) KO-Wert (Hex-String, z.B. "A1B2C1") von RGB in RGBA umwandeln Der Parameter "mode" legt fest, ob der Alphawert aus dem RGB-Wert abgeleitet werden soll (false oder kein Parameter) oder ob die resultierende Farbe stets mit maximaler Opazität berechnet werden soll (true oder 1), solange der Alphawert >0 ist. Hinweis: Durch den Alphawert (Transparenz) kann ein Visuelement z.B. die Farbeinstellung einer RGB-Leuchte realistischer wiedergeben: Eine ausgeschaltete Leuchte ergibt somit nicht Schwarz, sondern 100% Transparenz (also quasi "unsichtbar"). {rgblight()} oder {rgblight(true)}
colorcalc(value,mode[,koValue]) KO-Wert (RGB- oder HSV-Hex-String, z.B. "A1B2C1") mit einem weiteren RGB- oder HSV-Hex-String verrechnen Der Parameter "value" repräsentiert den zu verrechnenden RGB- oder HSV-Hex-String. Der Parameter "mode" bestimmt die Art der Rechenoperation:
  • 0 = Addition
  • 1 = Subtraktion
  • 2 = Multiplikation
  • 3 = Division
Der optionale(!) Parameter "koValue" ersetzt ggf. den KO-Wert, d.h. wird dieser Parameter angegeben, wird nicht der KO-Wert als Grundlage für die Berechnung verwendet, sondern der Wert "koValue". Die Funktion erwartet stets 3 Hex-Werte, z.B. in der Form "RRGGBB" oder "HHSSVV". Fehlende Werte werden entweder durch die entsprechende Stelle des KO-Werts ersetzt oder durch "00". Wichtig: Die Berechnung wird für jede der 3 Stellen getrennt durchgeführt, d.h. "000001" + "0000ff" (Überlauf) wird zu dem Ergebnis "0000ff" führen (nicht etwa "000100"). Das Ergebnis der jeweiligen Stelle wird stets im Bereich 00..ff (0..255) liegen.
KO-Wert="a0b0c0": {colorcalc('010203',0)} gibt "a1b2c3" zurück KO-Wert="a1b2c3": {colorcalc('010203',1)} gibt "a0b0c0" zurück KO-Wert="a0": {colorcalc('010203',0)} gibt "a10000" zurück KO-Wert="a0b0c0": {colorcalc('01',0)} gibt "a1b0c0" zurück KO-Wert="a0xyc0": {colorcalc('010203',0)} gibt "a100c3" zurück KO-Wert="a0b0c0": {colorcalc('01xy03',0)} gibt "a1b0c3" zurück KO-Wert="EDOMI": {colorcalc('010203',0,'a0b0c0')} gibt "a1b2c3" zurück (der KO-Wert wird hier ignoriert, da "koValue" angegeben wurde)
range(minValue,maxValue,Range) Diese Funktion rechnet den KO-Wert linear in einen anderen Wertebereich um:
  • minValue/maxValue: Wertebereich des KOs (z.B. -100..100)
  • Range: Wertebereich des zu berechnenden Wertes (z.B. führt die Angabe von 50 zu einem Ergebnis 0..50)
Hinweis: Liegt der KO-Wert ausserhalb der Grenzwerte (minValue/maxValue), wird der Wert entsprechend korrigiert. Diese Funktion kann z.B. genutzt werden, um den "Knopf" eines Schiebereglers***1002-13 zu positionieren (weitere Hinweise: siehe dort).
KO-Wert="50": {range(0,100,50)} gibt "25" zurück KO-Wert="50": {range(0,100,-50)} gibt "-25" zurück KO-Wert="0": {range(-100,100,50)} gibt "25" zurück
polarX(minValue,maxValue, minAngle,maxAngle,Radius) polarY(minValue,maxValue, minAngle,maxAngle,Radius) Diese Funktionen liefern die polaren X- bzw. Y-Koordinaten des KO-Werts zurück (die resultierenden X-/Y-Koordinaten liegen somit auf einer Kreisbahn):
  • minValue/maxValue: Wertebereich des KOs (z.B. -100..100)
  • minAngle/maxAngle: Winkelbereich der zu berechnenden Polar-Koordinate (z.B. 45..315)
  • Radius: Radius der zu berechnenden Polar-Koordinate
Wichtig:
  • Der Winkel 0 Grad befindet sich auf 6-Uhr-Position, positive Winkel werden im Uhrzeigersinn erwartet.
  • Der Mittelpunkt der resultierenden Kreisbahn ist stets X:Radius,Y:Radius (nicht X:0,Y:0).
Hinweis: Liegt der KO-Wert ausserhalb der Grenzwerte (minValue/maxValue), wird der Wert entsprechend korrigiert. Diese Funktion kann z.B. genutzt werden, um den "Knopf" eines Drehreglers***1002-11 zu positionieren (weitere Hinweise: siehe dort).
KO-Wert="45": {polarX(0,100,0,360,50)} gibt "34.55" zurück KO-Wert="45": {polarY(0,100,0,360,50)} gibt "2.45" zurück