Jeder der sich mit den Tasmota-Rules beschäftigt und arbeitet wird sicher auch schon die mathematischen Funktionen der Rules gefunden bzw. benutzt haben.
Im Prinzip werden hier die 4 Grundrechenarten unterstützt, wie:
ADDx (addieren)
SUBx (subtrahieren)
MULTx (multiplizieren)
Wer aber ein DIFFx sucht wird vergebens suchen, sondern statt dessen nur eine SCALEx finden. Aber wie arbeite man nun mit SCALEx?
Zuerst sei erwähnt das x für die Variable steht in die das Ergebnis geschrieben wird. Mit einem SCALE1 wird das Ergebnis in VAR1 geschrieben, bei einem SCALE2 in VAR2 usw.
Laut Tasmota wird mit diesem Befehl ein Wertbereich zu einem anderen im Verhältnis der mitgegebenen Parametern umgerechnet
Syntax:SCALEx <WERT>,<vom kleinsten Wert>,<vom höchsten Wert>,<zum kleinsten Wert>,<zum höchsten Wert>
Fallbeispiel:
Ein PWM-Slider gibt z.B. einen Wert zwischen 0 - 100 aus. Möchte ich aber nur einen Bereich von z.B. 70 - 90 verwenden dann erhalte ich diesen in Variable VAR1mit:
SCALE1 <SLIDERVALUE>,0,100,70,90
In dem Beispiel wäre das auch eine Prozentumrechnung. 70 entspricht 0%, 90 wären 100%, stelle ich den Slider in die Mitte also 50% kommt als Ergebnis in VAR1:80
Wer sich an's Bruchrechnen erinnert dem fällt auf das Teilen ja nicht anderes als ein Verhältnis ist das ich "umskalieren" kann. Bsp.: 1/3 oder 1:3 sagt aus: 1 Teil vom Ganzen das aus 3 Teilen besteht.
12:3=4 enspricht dann SCALE1 12,0,3,0,1 ergibt VAR1 4
12 ist der zu teilende Wert, 0 ist "vom Minimum" (alle Teile weg), 3 ist "vom Maximum" (alle Teile da), 0 ist "zum Minimum" (alle Teile weg), 1 "zum Maximum" (1 Teil da)
Bei 2/3:
SCALEx <WERT>,0,3,0,2
Oder halbieren (1/2):
SCALEx <WERT>,0,2,0,1
Oder 5000:325 (also 1/325 von 5000)
SCALEx 5000,0,325,0,1
Oder 5000:325*2 (oder 2/325 von 5000)
SCALEx 5000,0,325,0,2
Ich denke mal die Beispiele machen SCALE ein wenig überschaubarer, viel Spaß damit